2111 (083F) (RC2111): MQRC_SOURCE_CCSID_ERROR
説明
文字データの変換元であるコード化文字セット ID が無効であるか、サポートされていません。
これは、MQGET 呼び出しにおいて、MQGMO_CONVERT オプションが GetMsgOpts パラメーターに指定されている場合に起こる可能性があります。
エラーのあったコード化文字セット ID は、取り出されているメッセージ内の CodedCharSetId フィールドです。 この場合、メッセージ・データは変換されずに戻され、 MsgDesc パラメーターの CodedCharSetId および Encoding フィールドの値は、戻されたメッセージの値に設定され、呼び出しは MQCC_WARNING で完了します。
メッセージに 1 つ以上の MQ ヘッダー構造体 (MQCIH、MQDLH、MQIIH、MQRMH) が含まれており、メッセージ内の CodedCharSetId フィールドに、キュー名として有効な文字のための SBCS 文字が含まれない文字セットが指定されている場合にも、MQGET 呼び出しで発生することがあります。 そのような文字を含む MQ ヘッダー構造体は無効であるため、メッセージは変換なしで返されます。 unicode 文字セット UTF-16 が、そのような文字セットの例です。
メッセージが複数の部分で構成されており、それぞれが独自のCodedCharSetIdおよびEncodingフィールドによって記述されている場合 (例えば、MQFMT_DEAD_LETTER_HEADER という形式名のメッセージ)、一部は変換され、その他の部分は変換されないことがあります。 ただし、さまざまなCodedCharSetIdフィールドおよびEncodingフィールドに返される値は、常に関連するメッセージ・データを正しく記述しています。
この理由コードは、MQXCNVC 呼び出しでも戻されることがあります。エラーのあるコード化文字セット ID は、SourceCCSIDパラメーターです。 SourceCCSIDパラメーターに無効な値またはサポートされていない値が指定されているか、SourceCCSIDパラメーター・ポインターが無効です。 (無効なパラメーター・ポインターを必ず検出できるわけではありません。 検出されなかった場合は予測不可能な結果が発生します。)
この理由コードは、呼び出しを発行しているアプリケーションで言語環境プログラム (LE) が使用されておらず、メッセージ・プロパティー名とストリング・プロパティー値に CCSID 値 MQCCSI_APPL (-3) が定義されている場合に、MQSETMP/MQINQMP/MQDLTMP 呼び出しで発生する場合もあります。
完了コード
MQCC_WARNING または MQCC_FAILED
プログラマー応答
メッセージが書き込まれたときに指定された文字セット ID、または MQXCNVC 呼び出しで SourceCCSID パラメーターに指定された文字セット ID を確認してください。 それが正しい場合には、キュー・マネージャー変換のサポートの対象となっている文字セットかどうかを調べてください。 指定した文字セットについてキュー・マネージャー変換がサポートされていない場合は、アプリケーションによって変換を行う必要があります。
この理由コードが、CCSID を MQCCSI_APPL (-3) に指定している非 LE アプリケーション・プログラムで MQSETMP/MQINQMP/MQDLTMP 呼び出しが発行されたために発生している場合、アプリケーションを変更して、プロパティー名またはプロパティー・ストリング値がエンコードされるように、アプリケーションで使用される CCSID 値を指定する必要があります。
アプリケーションは、 MQCCSI_APPL の再定義で説明されている正しい CCSID を使用して MQCCSI_APPL (-3) の値をオーバーライドするか、 MQCHARV または類似の構造体でテキスト・ストリングをエンコードするために使用される明示的な CCSID 値を設定する必要があります。