分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/OSAS-NIF編

[目次][用語][索引][前へ][次へ]

3.2.5 CBLDCMCF('RESEND ')メッセージの再送

<この項の構成>
(1) 形式
(2) 機能
(3) UAPで値を設定するデータ領域
(4) OpenTP1から値が返されるデータ領域
(5) ステータスコード
(6) 注意事項

(1) 形式

PROCEDURE DIVISION の指定
 
CALL 'CBLDCMCF' USING 一意名1 一意名2 一意名3
 
DATA DIVISION の指定
 
01 一意名1.
   02 データ名A  PIC X(8) VALUE 'RESEND '.
   02 データ名B  PIC X(5).
   02 FILLER    PIC X(3).
   02 データ名C  PIC X(4) VALUE SPACE.
   02 データ名D  PIC X(4) VALUE SPACE.
   02 データ名E  PIC 9(8).
   02 データ名F  PIC 9(8).
   02 データ名G  PIC 9(9) COMP VALUE ZERO.
   02 データ名H  PIC X(4) VALUE SPACE.
   02 データ名I  PIC X(4) VALUE SPACE.
   02 データ名J  PIC X(4).
   02 データ名K  PIC X(4).
   02 データ名L  PIC X(8) VALUE SPACE.
   02 データ名M1 PIC X(4) VALUE SPACE.
   02 データ名M2 PIC X(8) VALUE SPACE.
   02 データ名M3 PIC X(4) VALUE SPACE.
   02 データ名M4 PIC 9(9) COMP VALUE ZERO.
   02 データ名M5 PIC 9(9) COMP VALUE ZERO.
   02 データ名M6 PIC X(1) VALUE SPACE.
   02 データ名M7 PIC X(1) VALUE SPACE.
   02 データ名N  PIC X(14) VALUE LOW-VALUE.
01 一意名2.
   02 データ名O  PIC X(4) VALUE 'OUT '.
   02 データ名P  PIC X(8).
   02 データ名Q  PIC X(8) VALUE SPACE.
   02 データ名R  PIC X(8) VALUE SPACE.
   02 データ名S  PIC X(28) VALUE LOW-VALUE.
01 一意名3.
   02 データ名T  PIC X(8).
   02 データ名U  PIC X(4).
   02 データ名V  PIC 9(9) COMP.
   02 データ名W  PIC X(4).
   02 データ名X  PIC X(12) VALUE LOW-VALUE.
 

(2) 機能

以前に送信したメッセージを,再び送信します。再送するメッセージは,以前に送信したメッセージとは別の,新しいメッセージとして扱います。どのメッセージを再送するかは,次に示す送信済みメッセージの情報で選択できます。

対象としたメッセージが以前に送信されていない場合は,CBLDCMCF('RESEND△△')はステータスコード70904を返します。また,メッセージキュー(ディスクキュー)内に対象のメッセージがない場合もステータスコード70904を返します。このため,使用するメッセージキューの種別ではディスクキューを指定するとともに,メッセージキューファイルの容量および保持メッセージ(メッセージキューサービス定義のquegrpコマンドの-mオプションで指定)に余裕を持った値を設定してください。

(3) UAPで値を設定するデータ領域

(4) OpenTP1から値が返されるデータ領域

(5) ステータスコード

ステータスコード 意味
00000 正常に終了しました。
70904 該当するメッセージがありません。
70905 再送するメッセージのセグメントの長さが,UAP共通定義(mcfmuap -e)で指定した値を超えています。
71002 メッセージキューへの出力処理中に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
MCFが終了処理中のため,メッセージの再送を受け付けられません。
71003 メッセージキューが満杯です。
71004 メッセージを格納するバッファをメモリ上に確保できませんでした。
71108 メッセージを再送しようとしましたが,再送先の管理テーブルが確保できませんでした。
プロセスのローカルメモリが不足しています。
72000 <MHPの実行でリターンした場合>
  • 先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に,CBLDCMCF('RESEND△△')を呼び出しています。
  • 非トランザクション属性のMHPからCBLDCMCF('RECEIVE△')を呼び出しています。
<SPPの実行でリターンした場合>
トランザクションでないSPPの処理から,CBLDCMCF('RESEND△△')を呼び出しまています。
72001 データ名Pまたはデータ名Tに設定した論理端末名称が間違っています。
CBLDCMCF('RESEND△△')を呼び出せない論理端末を設定しています。
72016 データ名Jに設定した値が間違っています。
データ名M4に設定した値が間違っています。
データ名Uに設定した値が間違っています。
データ名N,データ名S,データ名Xに設定した値が間違っています。
72017 データ名Kに設定した値が間違っています。
72019 データ名M6に設定した値が間違っています。
72024 データ名Oに設定した値が間違っています。
72028 データ名Aに設定した値が間違っています。
上記以外 プログラムの破壊などによる,予期しないエラーが発生しました。

(6) 注意事項

メッセージの再送時には,MCFマネジャ定義のUAP共通定義(mcfmuap)の-eオプションおよび-lオプションの指定値に注意してください。

-eオプション
-eオプションでは,CBLDCMCF('RESEND△△')で使用する作業領域の大きさを指定します。
再送するメッセージのセグメントがこの作業領域より大きい場合,CBLDCMCF('RESEND△△')はメッセージを再送しないで,ステータスコード70905を返します。このため,-eオプションでは,セグメントの最大長よりも大きな値を設定しておいてください。
-lオプション
-lオプションでは,通番に関して指定します。この内容によっては,メッセージキューファイル内に同じ通番を持つメッセージが同時に存在する場合があります。同じ通番を持つメッセージが存在する場合は,どのメッセージを再送するかは保証できません。