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:

  1. 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

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

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

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

    ReplyDelete