Friday, October 1, 2010

SQLCODE -331

Recently I altered a tablespace CCSID from EBCDIC to UNICODE. This tablespace had a PLAN_TABLE in it. After altering the tablespace, I couldn't retrieve certain rows from this PLAN_TABLE. I started getting SQLCODE -331. The message appeared like this:

"CHARACTER CONVERSION CANNOT BE PERFORMED BECAUSE A STRING, POSITION43 CANNNOT BE CONVERTED FROM 367 TO 37, REASON 12"

Position 43 refers to column IBM_REQUIRED_DATA in the PLAN_TABLE. As a short term solution, I spaced out the value in this column and it fixed it. However, it kept appearing for different programs/queries. So, I altered the table column attribute for IBM_REQUIRED_DATA from "FOR SBCS DATA" to "FOR BIT DATA". It fixed the problem.

3 comments:

Anonymous said...

Thanks for the post.

Please visit this link below for Mainframe Interview Questions Answers

Please visit this link below for Mainframe Interview Questions Answers

Thanks
John

Kumaresh T said...

Thanks for the comments John, I visited your website, I'm not able to comment though. Anyway, you've a wonderful website. Thanks !!

Anonymous said...

Nice Post. For other SQL abends you can refer the following links

http://mainframewizard.com/content/sql-codes