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

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

CBLDCMCF('SENDRECV')同期型メッセージの送受信(COBOL言語)

形式

PROCEDURE DIVISIONの指定

 
CALL   'CBLDCMCF'  USING 一意名1 一意名2 一意名3 一意名4
 

DATA DIVISIONの指定

 
01  一意名1.
    02  データ名A    PIC X(8)  VALUE 'SENDRECV'.
    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.
    02  データ名H    PIC X(4).
    02  データ名I    PIC X(4)  VALUE SPACE.
    02  データ名J    PIC X(4)  VALUE SPACE.
    02  データ名K    PIC X(4)  VALUE SPACE.
    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.
    02  データ名M6   PIC X(1)  VALUE SPACE.
    02  データ名M7   PIC X(1).
    02  データ名N    PIC X(14)  VALUE LOW-VALUE.
01  一意名2.
    02  データ名O    PIC X(4)  VALUE 'IO  '.
    02  データ名P    PIC X(8).
    02  データ名Q    PIC X(8)  VALUE SPACE.
    02  データ名R    PIC X(8)  VALUE SPACE.
    02  データ名T    PIC X(28)  VALUE LOW-VALUE.
01  一意名3.
    02  データ名U    PIC 9(x)  COMP.
    02  データ名V    PIC X(x).
    02  データ名W    PIC X(n).
01  一意名4.
    02  データ名X    PIC 9(x)  COMP.
    02  データ名Y1   PIC X(x)  VALUE SPACE.
    02  データ名Y2   PIC X(1).
    02  データ名Z    PIC X(n).
 

機能

同期型でメッセージを送信したあと,同期型でメッセージを受信します。送信するメッセージも受信するメッセージも,一つのセグメントで構成されます。

メッセージを受信すると,CBLDCMCF('SENDRECV')は相手システムからの応答を待ちます。応答が届くと,そのメッセージを受信します。

セグメントを送信する領域(一意名3で示す領域)の形式を次に示します。

[図データ]

セグメントを受信する領域(一意名4で示す領域)の形式を次に示します。

[図データ]

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

●データ名A

同期型メッセージの送受信を示す要求コード「VALUE 'SENDRECV'」を設定します。

●データ名C,データ名D

空白を設定します。

●データ名G

セグメントを受信する領域の長さを設定します。

●データ名H

単一セグメントを示す「VALUE 'EMI△'」を設定します。

●データ名I,データ名J,データ名K,データ名L,データ名M1,データ名M2,データ名M3

空白を設定します。

●データ名M4

0を設定します。

●データ名M5

CBLDCMCF('SENDRECV')を呼び出してから終了するまでの最大時間を設定します。0を設定した場合,MCFマネジャ定義のUAP共通定義で指定した,同期送受信監視時間(mcfmuap -t sndrcvtim)が設定されます。

負の値を設定した場合は,時間を監視しません。

●データ名M6

空白を指定します。

●データ名M7

使用するバッファ形式を指定します。

VALUE '1'
バッファ形式1を使用する場合に設定します。
VALUE '2'
バッファ形式2を使用する場合に設定します。
空白
省略されたものとして,「VALUE '1'」(バッファ形式1)が設定されます。

●データ名N

MCFで使用する領域です。

●データ名O

同期型メッセージの送受信を示す「VALUE 'IO△△'」を設定します。

●データ名P

メッセージを出力して応答を入力する論理端末名称を設定します。論理端末名称は最大8バイトの長さです。8バイトに満たない名称を設定する場合は,後ろを空白で埋めてください。

●データ名Q,データ名R

空白を設定します。

●データ名T

MCFで使用する領域です。

●データ名U

【バッファ形式1の場合】 PIC 9(9)
送信するメッセージのセグメントの長さを設定します。
【バッファ形式2の場合】 PIC 9(4)
送信するメッセージのセグメントの長さ+4を設定します。

●データ名V

【バッファ形式1の場合】 PIC X(8)
【バッファ形式2の場合】 PIC X(2)
MCFで使用する領域です。

●データ名W

送信メッセージのセグメントを設定します。

●データ名Y1

【バッファ形式1の場合】 PIC X(7)
【バッファ形式2の場合】 PIC X(1)
空白を設定します。

●データ名Y2

MCFで使用する領域です。

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

●データ名B

ステータスコードが,5けたの数字で返されます。

●データ名E

メッセージを受信した日付がYYYYMMDD(YYYY:西暦年 MM:月 DD:日)の形式で返されます。

●データ名F

メッセージを受信した時刻がHHMMSS00(HH:時 MM:分 SS:秒 00は固定)の形式で返されます。

●データ名X

【バッファ形式1の場合】 PIC 9(9)
受信したセグメントの長さが返されます。
【バッファ形式2の場合】 PIC 9(4)
受信したセグメントの長さ+4が返されます。

●データ名Z

受信したセグメントの内容が返されます。

相手システムから送信されるセグメントの最大長は32763バイトです。

ステータスコード

ステータスコード 意味
00000 正常に終了しました。
71002 メッセージキューへの入出力処理時に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
データ名Uに32000バイトを超える値を設定しています。
MCFが終了処理中のため,メッセージの送受信を受け付けられません。
71003 メッセージキューが満杯です。
71004 メッセージを格納するバッファをメモリ上に確保できませんでした。
71108 メッセージを送信しようとしましたが,送信先の管理テーブルが確保できませんでした。
プロセスのローカルメモリが不足しています。
72000 先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に,CBLDCMCF('SENDRECV')を呼び出しています。
72001 データ名Pに設定した論理端末名称が間違っています。
CBLDCMCF('SENDRECV')を呼び出せない論理端末を設定しています。
72013 データ名Gの指定値を超えるセグメントを受信しました。データ名Gの指定値を超えた部分は切り捨てられました。
<バッファ形式2の場合>
32763バイトを超えるメッセージ(セグメント)を受信しました。
32763バイトを超えた部分は切り捨てられました。
72016 データ名M4に設定した値が間違っています。
データ名M7に設定した値が間違っています。
データ名Nまたはデータ名Tに設定した値が間違っています。
72019 データ名M6に設定した値が間違っています。
72024 データ名Oに設定した値が間違っています。
72026 データ名Hに設定した値が間違っています。
72028 データ名Aに設定した値が間違っています。
72036 データ名Gの指定値が不足しています。バッファ形式1の場合は9バイト以上,バッファ形式2の場合は5バイト以上の領域を設定してください。
72041 バッファ形式1の場合はデータ名Uに0以下の値を設定しています。バッファ形式2の場合はデータ名Uに4以下の値を設定しています。
73001 出力先の論理端末で障害が発生しました。
73005 データ名M5に設定した時間が経過しましたが,論理端末からの応答がありません。
73010 入力または出力メッセージ編集UOCで障害が発生しました。
メッセージの読み込み時に障害が発生しました。
メッセージの編集エラーが発生しました。
73015 出力先の論理端末は,ほかのUAPで仕掛り中です。
73018 データ名M5に設定した値が間違っています。
73020 出力先の論理端末は停止しています。
77001 指定したコネクショングループ内に使用できるコネクションがありません。
77301 送信セグメント長と,「制御情報+パラメタ+ユーザデータ」のサイズが一致していません。
77302 制御情報のサイズの設定が間違っています。
77303 転送手順の設定が間違っています。
77304 サービスプリミティブコードの設定が間違っています。
77310 パラメタ情報サイズの設定が間違っています。
77311 Initiating-TPSU-Titleに設定した値が間違っています。
77312 Recipient-AP-Titleに設定した値が間違っています。
77313 Recipient-TPSU-Titleに設定した値が間違っています。
77314 Functional-Unitsに設定した値が間違っています。
77315 Quality-of-Serviceに設定した値が間違っています。
77316 Application-Context-Nameに設定した値が間違っています。
77317 Confirmationに設定した値が間違っています。
77318 Resultに設定した値が間違っています。
77321 Confirmation-Urgencyに設定した値が間違っています。
77330 ユーザデータのサイズが間違っています。
77331 APDUの連結状態が間違っています。
77332 ユーザデータのサイズが設定されていません。
77333 ユーザデータが設定できません。
77350 サービスプリミティブの発行順が間違っています。
サービスプリミティブの連結数が超過しています。
77433 相手からのメッセージによって,ダイアログが未確立になりました。
77436 相手からのメッセージによって,ダイアログを解放しています。
77437 相手からのメッセージによって,ハンドシェイクが応答待ちになりました。
77491 相手からのメッセージによって,エラー処理中です。
上記以外 プログラムの破壊などによる,予期しないエラーが発生しました。