27.3 MSMQアクセスサービスルーチンのインタフェース
インタフェース領域は,COBOLプログラムとMSMQシステムとの間で情報をやり取りするための連絡領域です。インタフェース領域に必要な情報を設定してサービスルーチンを呼び出し,また,処理結果をインタフェース領域から取得します。
MSMQアクセスサービスルーチンで使用するインタフェース領域の形式を次に示します。
記述形式 |
内容 |
C R E A T E |
D E L E T E |
O P E N |
C L O S E |
S E N D |
R E C V |
L O C A T E |
---|---|---|---|---|---|---|---|---|
01 データ名01. |
CALL文のUSINGで指定するインタフェース領域の名前 |
|||||||
02 データ名02 PIC X(8). |
MSMQのエラーコード※1 |
△ |
△ |
△ |
△ |
△ |
△ |
△ |
02 データ名03 PIC S9(9) USAGE COMP. |
詳細コード※2 |
△ |
△ |
△ |
△ |
△ |
△ |
△ |
02 データ名04 PIC X. |
検索強制終了フラグ (0:無効,1:有効) |
○ |
||||||
02 データ名05 PIC X. |
アクセスモード (1:RECEIVE,2:SEND) |
○ |
||||||
02 データ名06 PIC X(2). |
メッセージクラス |
△ |
||||||
02 データ名07 PIC S9(9) USAGE COMP. |
受信待ち時間 |
○ |
||||||
02 データ名08 PIC 9(4) USAGE COMP. |
優先順位(0〜7) |
○ |
△ |
|||||
02 データ名09 PIC X. |
配信方法 (0:高速,1:回復可能) |
○ |
△ |
|||||
02 データ名10 PIC X. |
ジャーナリング (0:無効,1:有効) |
○ |
△ |
|||||
02 データ名11 PIC X. |
配信不能メッセージ (0:無効,1:有効) |
○ |
△ |
|||||
02 データ名12 PIC X. |
データ変換フラグ (0:無効,1:有効) |
○ |
○ |
|||||
02 データ名13 PIC X(102). |
予約領域 |
× |
× |
× |
× |
× |
× |
× |
戻り値 |
詳細コード |
エラーの要因 |
該当する サービスルーチン |
対処 |
---|---|---|---|---|
2 |
1 |
受信メッセージのラベルが不正である。 |
CBLMQRECEIVEMSG |
メッセージのラベルをテキストデータとして正しい値で再送信し,メッセージを再受信する。 (サービスルーチンの動作) サービスルーチンは,受信したメッセージのラベルをテキストデータに変換しないで格納した。 |
2 |
バイナリデータとして送信されたメッセージを受信し,テキストデータへの変換に失敗した。 |
CBLMQRECEIVEMSG |
(サービスルーチンの動作) サービスルーチンは,受信したメッセージデータをテキストデータに変換しないで格納した。 |
|
3 |
テキストデータとして送信されたメッセージを受信したが,テキストデータへの変換に失敗した。 |
CBLMQRECEIVEMSG |
メッセージをテキストデータとして正しい値で再送信し,再受信する。 (サービスルーチンの動作) サービスルーチンは,受信したメッセージデータをテキストデータに変換しないで格納した。 |
|
4 |
受信メッセージのラベルが不正である。かつ,テキストデータとして送信されていないメッセージを受信し,テキストデータへの変換に失敗した。 |
CBLMQRECEIVEMSG |
(サービスルーチンの動作) サービスルーチンは,受信したメッセージのラベル,およびメッセージデータをテキストデータに変換しないで格納した。 |
|
5 |
受信メッセージのラベルが不正である。かつ,テキストデータとして送信されたメッセージを受信したが,テキストデータへの変換に失敗した。 |
CBLMQRECEIVEMSG |
メッセージのラベル,およびメッセージデータをテキストデータとして正しい値で再送信し,再受信する。 (サービスルーチンの動作) サービスルーチンは,受信したメッセージのラベル,およびメッセージデータをテキストデータに変換しないで格納した。 |
|
6 |
検索したキューのパス名が不正である。 |
CBLMQLOCATE |
検索したキューのパス名をテキストデータとして正しい値で再作成し,再度キューのパス名を検索する。 (サービスルーチンの動作) サービスルーチンは,検索したキューのパス名をテキストデータに変換しないで格納した。 |
|
7 |
検索したキューのパス名が長過ぎる。 |
CBLMQLOCATE |
検索したキューのパス名が,絶対パスで256バイト以下になるようにキューを再作成し,再度キューのパス名を検索する。 (サービスルーチンの動作) サービスルーチンは,検索したキューのパス名の先頭256バイトだけを格納した。 |
|
-2 |
40 |
キューをオープンしていない。 |
CBLMQCLOSE CBLMQSENDMSG CBLMQRECEIVEMSG |
|
41 |
キューをクローズしていない。 |
CBLMQCREATE CBLMQDELETE CBLMQOPEN CBLMQLOCATE |
キューをクローズしてからサービスルーチンを呼び出す。 |
|
42 |
キューのパス名の検索が終了していない。 |
CBLMQCREATE CBLMQDELETE CBLMQOPEN CBLMQCLOSE CBLMQSENDMSG CBLMQRECEIVEMSG |
CBLMQLOCATEサービスルーチンでの検索を終了してから,ほかのMSMQアクセスサービスルーチンを呼び出す。 |
|
50 |
インタフェース領域の必ず設定する項目に,規定の値が設定されていない。 |
CBLMQOPEN CBLMQSENDMSG CBLMQRECEIVEMSG CBLMQLOCATE |
引数で指定したインタフェース領域に,規定の値を設定してサービスルーチンを呼び出す。 |
|
51 |
データパラメタのデータ長が不正である。 |
CBLMQCREATE CBLMQDELETE CBLMQOPEN CBLMQSENDMSG CBLMQLOCATE |
引数で指定したデータパラメタ領域のデータ長に正しい値を設定してサービスルーチンを呼び出す。 |
|
52 |
データパラメタのデータが不正である。 |
CBLMQCREATE CBLMQDELETE CBLMQOPEN CBLMQSENDMSG CBLMQLOCATE |
引数で指定したデータパラメタ領域のメッセージデータに正しい値を設定してサービスルーチンを呼び出す。 |
|
60 |
コード変換のための環境が整っていない(Unicode機能を使用する場合)。 |
CBLMQCREATE CBLMQDELETE CBLMQOPEN CBLMQCLOSE CBLMQSENDMSG CBLMQRECEIVEMSG CBLMQLOCATE |
コード変換ライブラリが正しくインストールされているか,または使用するコード変換ライブラリが前提バージョンを満たしているかを確認する。 |
|
61 |
コード変換中にエラーが発生した(Unicode機能を使用する場合)。 |
CBLMQCREATE CBLMQDELETE CBLMQOPEN CBLMQCLOSE CBLMQSENDMSG CBLMQRECEIVEMSG CBLMQLOCATE |
UCS-4の範囲(UCS-2の範囲を含む)の文字コードを使用しているか確認する。 |
|
99 |
サービスルーチンを実行するためのメモリが不足している。 |
CBLMQOPEN CBLMQSENDMSG CBLMQRECEIVEMSG CBLMQLOCATE |
削除できるプログラムなどを削除して再実行する。 |
|
負数 |
上記以外の予期しないエラーを検出した。 |
CBLMQCREATE CBLMQDELETE CBLMQOPEN CBLMQCLOSE CBLMQSENDMSG CBLMQRECEIVEMSG CBLMQLOCATE |
当社保守員に連絡する。このとき,詳細コードの値,ソースファイル,登録集原文,およびコンパイルリストファイルが資料として必要になる。 |
- 規則
-
-
インタフェース領域は,最初のMSMQアクセスサービスルーチンを呼び出す前に次の値で初期化しておく必要があります。
・英数字項目:SPACE(ただし,予約領域はLOW-VALUE)
・数字項目:ZERO
-
- コーディング例
-
MSMQアクセスサービスルーチンのインタフェース領域のコーディング例を次に示します。
01 CBLMQINF. 02 MSMQ-ERRCD PIC X(8) VALUE SPACE. 02 DETAIL-CD PIC S9(9) USAGE COMP VALUE ZERO. 02 LOCATE-END PIC X VALUE SPACE. 02 QUEUE-ACCESS PIC X VALUE SPACE. 02 MQMSG-CLASS PIC X(2) VALUE SPACE. 02 MQMSG-TIMEOUT PIC S9(9) USAGE COMP VALUE ZERO. 02 MQMSG-PRIORITY PIC 9(4) USAGE COMP VALUE ZERO. 02 MQMSG-DELIVERY PIC X VALUE SPACE. 02 MQMSG-JOURNAL PIC X VALUE SPACE. 02 MQMSG-DEADLETTER PIC X VALUE SPACE. 02 MSGDATA-CONV PIC X VALUE SPACE. 02 CBLMQ-RESERVE PIC X(102) VALUE LOW-VALUE.