Hitachi

OpenTP1 Version 7 メッセージキューイングアクセス機能 TP1/Message Queue Access 使用の手引


付録A 理由コード

TP1/Message Queue Accessでは,マニュアル「TP1/Message Queue プログラム作成リファレンス」に記載されている理由コードのほかに,表A-1で示す理由コードが出力される可能性があります。理由コードの詳細については,上記のマニュアルを参照してください。

また,次の理由コードでは,マニュアル「TP1/Message Queue プログラム作成リファレンス」に記載されている以外の要因である可能性があります。

理由コード一覧を,次の表に示します。

表A‒1 理由コード一覧

値(10進数)

値(16進数)

説明

2003L

X'000007D3'

MQRC_BACKED_OUT

要因

トランザクションをコミットするために,MQCMIT命令またはMQDISC命令が呼び出されましたが,トランザクションがコミットされないでロールバックしました。

対処

dc_trn_unchained_commit()でエラーが発生しました。

上記関数が失敗した要因を示すメッセージをメッセージログファイルで確認し,TP1/Server Baseのマニュアルを参照して対処してください。

2026L

X'000007EA'

MQRC_MD_ERROR

要因

JavaインタフェースのMQMessageクラス.accountingTokenが次のどれかの理由で不正です。

  • 32バイト未満のbyte型配列を指定して,MQQueue.getメソッドが発行されました。

  • 32バイト未満のbyte型配列を指定し,MQPutMessageOptions.optionsに次に示すどちらかのオプションを指定して,MQQueue.putメソッドが発行されました。

    ・MQPMO_PASS_IDENTITY_CONTEXT

    ・MQPMO_PASS_ALL_CONTEXT

  • すべて0で設定された32バイト未満のbyte型配列を指定して,MQQueue.putメソッドが発行されました。

対処

MQMessageクラスのaccountingToken変数に,32バイトのbyte型配列を指定してください。

2058L

X'0000080A'

MQRC_Q_MGR_NAME_ERROR

要因

次の場合に,この理由コードを返します。

  • MQCONN命令でName引数に指定された値が不正か,または未知の値の場合

    ただし,不正なName引数を検出できないことがあります。検出されないときの動作は保証しません。

  • 不正な環境変数によって正しいサーバに接続できない場合

対処
  • 影響がなければ,Name引数に空白を指定してください。または,使用中の名称が正しいか確認してください。

  • Name引数ポインタが正しいか確認してください。

  • 環境変数DCMQCSRVHOSTNAME,DCMQCSRVHOSTIP,DCMQCSRVSERVNAME,DCMQCSRVPORTの接続先が正しいことを確認してください。

  • 環境変数にDCMQCDEFCON=Yを設定し,非XAライブラリを使用しているAPでは,Name引数に空白を指定しないでください。

  • 接続先情報定義ファイルに設定しているキューマネジャ名のどちらかを指定してください。

2059L

X'0000080B'

MQRC_Q_MGR_NOT_AVAILABLE

要因

MQCゲートウェイサーバに空きがない場合,MQCONN命令がこの理由コードを返します。

MQCサーバとMQCクライアントのバージョンが対応していない場合,MQCONN命令がこの理由コードを返す場合があります。

MQDISC命令発行時にMQCゲートウェイサーバで後処理をするため,直後に発行されたMQCONN命令がこの理由コードを返す場合があります。

対処

必要な数のMQCゲートウェイサーバが起動しているかどうか確認してください。

MQCサーバとMQCクライアントが対応バージョンであるかどうか確認してください。

MQDISC命令/MQCONN命令を繰り返し発行するUAPを使用した場合は,MQCONN命令のリトライ発行処理をしてください。

2123L

X'0000084B'

MQRC_OUTCOME_MIXED

要因

現在のトランザクションに,次のどちらかが発生しました。

  • トランザクションをコミットするために,MQCMIT命令またはMQDISC命令が呼び出されましたが,トランザクションがコミットされないでロールバックしました。

  • トランザクションをロールバックするために,MQBACK命令が呼び出されましたが,トランザクションの結果が不明です。

対処

dc_trn_unchained_commit()またはdc_trn_unchained_rollback()でエラーが発生しました。

上記関数が失敗した要因を示すメッセージをメッセージログファイルで確認し,TP1/Server Baseのマニュアルを参照して対処してください。

2195L

X'00000893'

MQRC_UNEXPECTED_ERROR

要因

次のどれかの場合,この理由コードを返すときがあります。

  • 環境変数の設定に問題があります。

  • MQCサーバの環境に問題があります。

  • MQCONN命令で,プロセスが使用できるファイル記述子の最大数を超えています。

対処

システムログにエラーメッセージが出力されている場合,出力されたメッセージに従って障害要因を取り除いてください。

MQCサーバのログにエラーメッセージが出力されている場合,出力されたメッセージに従ってMQCサーバの障害要因を取り除いてください。

2206L

X'0000089E'

MQRC_MSG_ID_ERROR

要因

JavaインタフェースのMQMessageクラス.messageIdが次のどれかの理由で不正です。

  • 24バイト未満のbyte型配列を指定して,MQQueue.getメソッドが発行されました。

  • 24バイト未満のbyte型配列を指定し,MQPutMessageOptions.optionsにMQPMO_NEW_MSG_IDオプションを指定して,MQQueue.putメソッドが発行されました。

  • すべて0で設定された24バイト未満のbyte型配列を指定して,MQQueue.putメソッドが発行されました。

対処

MQMessageクラスのmessageId変数に,24バイトのbyte型配列を指定してください。

2207L

X'0000089F'

MQRC_CORREL_ID_ERROR

要因

JavaインタフェースのMQMessageクラス.correlationIdが次のどちらかの理由で不正です。

  • 24バイト未満のbyte型配列を指定して,MQQueue.getメソッドが発行されました。

  • 24バイト未満のbyte型配列を指定し,MQPutMessageOptions.optionsにMQPMO_NEW_CORREL_IDオプションを指定して,MQQueue.putメソッドが発行されました。

対処

MQMessageクラスのcorrelationId変数に,24バイトのbyte型配列を指定してください。

2258L

X'000008D2'

MQRC_GROUP_ID_ERROR

要因

JavaインタフェースのMQMessageクラス.groupIdが次のどれかの理由で不正です。

  • MQMessage.setVersion(MQC.MQMD_VERSION_2)を実行した上で,24バイト未満のbyte型配列を指定して,MQQueue.getメソッドが発行されました。

  • MQMessage.setVersion(MQC.MQMD_VERSION_2)を実行した上で,24バイト未満のbyte型配列を指定し,MQPutMessageOptions.optionsにMQPMO_LOGICAL_ORDERオプション,MQMessage.messageFlagsに次に示すどれかのオプションを指定して,MQQueue.putメソッドが発行されました。

    ・MQMF_SEGMENTATION_ALLOWED

    ・MQMF_MSG_IN_GROUP

    ・MQMF_LAST_MSG_IN_GROUP

    ・MQMF_SEGMENT

    ・MQMF_LAST_SEGMENT

  • MQMessage.setVersion(MQC.MQMD_VERSION_2)を実行した上で,すべて0で設定された24バイト未満のbyte型配列を指定し,MQMessage.messageFlagsに次に示すどれかのオプションを指定して,MQQueue.putメソッドが発行されました。

    ・MQMF_SEGMENTATION_ALLOWED

    ・MQMF_MSG_IN_GROUP

    ・MQMF_LAST_MSG_IN_GROUP

    ・MQMF_SEGMENT

    ・MQMF_LAST_SEGMENT

対処

MQMessageクラスのgroupId変数に,24バイトのbyte型配列を指定してください。

6100L

X'000017D4'

MQRC_REOPEN_EXCL_INPUT_ERROR

排他入力用キューのため,再オープンできません。

要因

オープンオブジェクトに正しいImqObject open optionsがなく,一つまたは複数の追加オプションが必要です。暗黙の再オープンが必要ですが,キューが排他的入力用にオープンになっているためにクローズできませんでした。また,クローズすると,キューが現在アクセス権のあるプロセスまたはスレッドによって再オープンされる前に,別のプロセスまたはスレッドによってアクセスされる可能性があります。

対処

暗黙の再オープンが必要でなくなるように,発生する可能性のある事態をすべて扱えるようにするため,open optionsを明示的に設定します。

6101L

X'000017D5'

MQRC_REOPEN_INQUIRE_ERROR

特性の検査が必要なため,再オープンできません。

要因

オープンオブジェクトに正しいImqObject open optionsがなく,一つまたは複数の追加オプションが必要です。暗黙の再オープンが必要ですが,オブジェクトの一つまたは複数の特性をクローズ前に動的に検査する必要があるため,クローズできませんでした。また,open optionsにMQOO_INQUIREが組み込まれていません。

対処

MQOO_INQUIREを組み込むよう,open optionsを明示的に設定します。

6102L

X'000017D6'

MQRC_REOPEN_SAVED_CONTEXT_ERR

状態を保存するため,再オープンできません。

要因

オープンオブジェクトに正しいImqObject open optionsがなく,一つまたは複数の追加オプションが必要です。暗黙の再オープンが必要ですが,キューがMQOO_SAVE_ALL_CONTEXTでオープンになっているためにクローズができませんでした。または消去されるGETが直前に実行されています。これによって,保存された状態情報がオープンキューと関連づけられるため,この情報はクローズによって破棄されます。

対処

暗黙の再オープンが必要でなくなるように,発生する可能性のある事態をすべて扱えるようにするため,open optionsを明示的に設定します。

6103L

X'000017D7'

MQRC_REOPEN_TEMPORARY_Q_ERROR

一時キューのため,再オープンできません。

要因

オープンオブジェクトに正しいImqObject open optionsがなく,一つまたは複数の追加オプションが必要です。暗黙の再オープンが必要ですが,キューが定義タイプMQQDT_TEMPORARY_DYNAMICのローカルキューであるため,クローズができませんでした。このローカルキューはクローズによって破棄されます。

対処

暗黙の再オープンが必要でなくなるように,発生する可能性のある事態をすべて扱えるようにするため,open optionsを明示的に設定します。

6104L

X'000017D8'

MQRC_ATTRIBUTE_LOCKED

属性がロックされています。

要因

あるオブジェクトがオープンになっているとき,またはImqQueueManagerオブジェクトの場合はそのオブジェクトが接続されているときに,そのオブジェクトの属性の値を変更しようとしました。このような場合,特定の属性を変更できません。属性値を変更する前に,必要に応じてオブジェクトのクローズまたは切断をしてください。

MQINQコールを実行するために,オブジェクトが予想に反して,しかも暗黙的に接続されたか,オープンされたか,またはその両方が行われた可能性があります。どのメソッド呼び出しによって,MQINQコールが発生したかどうかを判別してください。

対処

ImqObject open optionsにMQOO_INQUIREを組み込み,それらのオプションをもっと早い時期に設定します。

6105L

X'000017D9'

MQRC_CURSOR_NOT_VALID

ブラウズカーソルがありません。

要因

オープンキューのためのブラウズカーソルが暗黙の再オープンによって最後に使用されてから,無効になっています。

対処

暗黙の再オープンが必要でなくなるように,発生する可能性のある事態をすべて扱えるようにするため,ImqObject open optionsを明示的に設定します。

6106L

X'000017DA'

MQRC_ENCODING_ERROR

コード化に誤りがあります。

要因

メッセージ項目のコード化は,ペーストするためにMQENC_NATIVEでなければなりません。

6107L

X'000017DB'

MQRC_STRUC_ID_ERROR

構造体IDに誤りがあります。

要因

メッセージ項目の構造体IDは,データポインタで始まる4文字から派生したものですが,欠落しているか,その項目がペーストされるオブジェクトのクラスと矛盾しています。

6108L

X'000017DC'

MQRC_NULL_POINTER

ヌルポインタが渡されました。

要因

ヌルでないポインタが必要であるか,暗黙に指定されているのにヌルポインタが与えられました。

6109L

X'000017DD'

MQRC_NO_CONNECTION_REFERENCE

接続がありません。

要因

connection referenceはヌルです。ImqQueueManagerオブジェクトへの接続が必要です。

6110L

X'000017DE'

MQRC_NO_BUFFER

バッファがありません。

要因

使用可能なバッファがありません。ImqCacheオブジェクトの場合は,割り当てることができなく,発生するはずのないオブジェクト状態に内部矛盾があることを示しています。

6111L

X'000017DF'

MQRC_BINARY_DATA_LENGTH_ERROR

データ長が不正です。

要因

2進データの長さが,ターゲット属性の長さと矛盾しています。すべての属性にとってゼロが正しい長さです。

  • MQ_ACCOUNTING_TOKEN_LENGTHは,accounting tokenの正しい長さです。

  • MQ_CORREL_ID_LENGTHは,correlation idの正しい長さです。

  • MQ_GROUP_ID_LENGTHは,group idの正しい長さです。

  • MQ_MSG_ID_LENGTHは,message idの正しい長さです。

  • MQ_OBJECT_INSTANCE_ID_LENGTHは,instance idの正しい長さです。

  • MQ_TRAN_INSTANCE_ID_LENGTHは,transaction instance idの正しい長さです。

6112L

X'000017E0'

MQRC_BUFFER_NOT_AUTOMATIC

バッファはシステムによって管理されていません。

要因

ユーザによって定義・管理されるバッファのサイズは変更できません。ユーザ定義バッファは,置換または回収するしかありません。バッファはシステムによって管理されていないと,サイズを変更できません。

6113L

X'000017E1'

MQRC_INSUFFICIENT_BUFFER

バッファが不十分です。

要因

データポインタの後ろに,要求を受け入れるだけの使用可能なバッファスペースが十分にありません。これは,バッファのサイズが変更できないためと考えられます。

6114L

X'000017E2'

MQRC_INSUFFICIENT_DATA

データが不十分です。

要因

データポインタの後ろに,要求を受け入れるだけのデータが十分にありません。

6115L

X'000017E3'

MQRC_DATA_TRUNCATED

データが切り捨てられました。

要因

あるバッファから別のバッファにコピーするときに,データが切り捨てられました。次のどれかの要因が考えられます。

  • ターゲットバッファのサイズを変更できません。

  • どれかのバッファをアドレス指定するときに問題があります。

  • 代替用のバッファと置き換えられてサイズが小さくなっています。

6116L

X'000017E4'

MQRC_ZERO_LENGTH

ゼロの長さが指定されました。

要因

正の長さが必要であるか,または暗黙に指定されているのにゼロの長さが与えられました。

6117L

X'000017E5'

MQRC_NEGATIVE_LENGTH

負の長さが指定されました。

要因

ゼロまたは正の長さが必要であるか,または暗黙に指定されているのに負の長さが与えられました。

6118L

X'000017E6'

MQRC_NEGATIVE_OFFSET

負のオフセットが指定されました。

要因

ゼロまたは正のオフセットが必要であるか,または暗黙に指定されているのに負のオフセットが与えられました。

6119L

X'000017E7'

MQRC_INCONSISTENT_FORMAT

フォーマットが矛盾しています。

要因

メッセージ項目の形式が,その項目がペーストされるオブジェクトのクラスと矛盾しています。

6120L

X'000017E8'

MQRC_INCONSISTENT_OBJECT_STATE

オブジェクトが矛盾しています。

要因

オープンになっているオブジェクトと,参照される,接続されていないImqQueueManagerオブジェクトとが矛盾しています。

6121L

X'000017E9'

MQRC_CONTEXT_OBJECT_NOT_VALID

オブジェクトがありません。

要因

ImqPutMessageOptions context referenceが有効なImqQueueオブジェクトを参照しません。該当するオブジェクトは,直前に破棄されました。

6122L

X'000017EA'

MQRC_CONTEXT_OPEN_ERROR

オブジェクトがオープンできません。

要因

ImqPutMessageOptions context referenceはImqQueueオブジェクトを参照しますが,このオブジェクトをオープンしてコンテキストを確立できませんでした。これは,ImqQueueオブジェクトに不適切なopen optionsがあるためと考えられます。参照されたオブジェクトのreason codeから,原因を調査してください。

6123L

X'000017EB'

MQRC_STRUC_LENGTH_ERROR

データ構造体の長さが不正です。

要因

データ構造体の長さが,その内容と矛盾しています。MQRMHの場合は,長さが固定フィールドとすべてのオフセットデータを含めるのに不十分です。

6126L

X'000017EE'

MQRC_DISTRIBUTION_LIST_EMPTY

配布リストに組み込まれているImqQueueオブジェクトがありません。

要因

配布リストに組み込まれているImqQueueオブジェクトがないため,ImqDistributionListが失敗しました。