Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/TCP/IP編


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

〈このページの構成〉

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01  一意名1.
    02  データ名A    PIC X(8)  VALUE 'RECVSYNC'.
    02  データ名B    PIC X(5).
    02  FILLER       PIC X(3).
    02  データ名C    PIC X(4).
    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)  VALUE SPACE.
    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 SPACE.
    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  データ名Y    PIC X(n).
注※

負の値を設定する場合,「PIC S9(9) COMP」としてください。

機能

相手システムから同期型でメッセージを受信します。相手システムから送信されるメッセージは,常に一つのセグメントで構成されます。

受信できるメッセージの一つのセグメントの最大長は,1メガバイトです。

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

[図データ]

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

●データ名A

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

●データ名C

「VALUE 'FRST'」を設定します。

●データ名D

空白を設定します。

●データ名G

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

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

空白を設定します。

●データ名M4

0を設定します。

●データ名M5

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

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

注意事項

監視時間の精度は秒単位です。また,タイマ定義(mcfttim -t)のbtimオペランドで指定する時間の間隔でタイムアウトが発生したかどうかを監視しています。このため,設定した監視時間と実際にタイムアウトを検出する時間には秒単位の誤差が生じます。そのため,タイミングによっては,設定した監視時間よりも短い時間でタイムアウトすることがあります。監視時間が小さくなるほど,誤差の影響を受けやすくなりますので,監視時間は3(単位:秒)以上の値の設定を推奨します。

●データ名M6

空白を設定します。

●データ名M7

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

VALUE '1'

バッファ形式1を使用する場合に設定します。

VALUE '2'

バッファ形式2を使用する場合に設定します。

空白

省略されたものとして,「VALUE '1」(バッファ形式1)が設定されます。

●データ名N

MCFで使用する領域です。

●データ名O

空白を設定します。

●データ名P

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

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

空白を設定します。

●データ名T

MCFで使用する領域です。

●データ名V

【バッファ形式1の場合】 PIC X(8)

【バッファ形式2の場合】 PIC X(2)

MCFで使用する領域です。

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

●データ名B

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

●データ名E

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

●データ名F

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

●データ名U

【バッファ形式1の場合】 PIC 9(9)

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

【バッファ形式2の場合】 PIC 9(4)

受信したセグメントの長さ+4が返されます。

●データ名Y

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

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

71001

メッセージの最終セグメントを受け取ったあとで,次のセグメントを受信するCBLDCMCF('RECVSYNC')を呼び出しています。直前に呼び出したCBLDCMCF('RECVSYNC')でメッセージはすべて受信しました。このステータスコードが返されたあとに,再びCBLDCMCF('RECVSYNC')を呼び出した場合は,ステータスコード72000が返されます。

71002

MCFが終了処理中のため,メッセージの受信を受け付けられません。

71108

メッセージ受信に必要な管理テーブルが確保できませんでした。

プロセスのローカルメモリが不足しています。

72000

先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に,CBLDCMCF('RECVSYNC')を呼び出しています。

72001

データ名Pに設定した論理端末名称が間違っています。

データ名Pに設定した入力元の論理端末名称は,MCFで定義していません。

CBLDCMCF('RECVSYNC')を呼び出せない論理端末を設定しています。

<問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用している(コネクション定義(mcftalccn -l)のreplymsgオペランドにyesを指定)場合>

問い合わせ応答中または継続問い合わせ応答中のため受け付けられません。

72012

MCFバッファグループ定義のバッファ長が不足しました。

MCF通信プロセスは相手システムからメッセージを受信しましたが,UAPへの応答連絡でRPC通信の送信可能な上限値を超えました。

72013

データ名Gの指定値を超えるセグメントを受信しました。データ名Gの指定値を超えた部分は切り捨てられました。

<バッファ形式2の場合>

32763バイトを超えるセグメントを受信しました。32763バイトを超えた部分は切り捨てられました。

72016

データ名Nまたはデータ名Tに設定した値が間違っています。

データ名Qに設定した値が間違っています。

データ名M7に設定した値が間違っています。

72024

データ名Oに設定した値が間違っています。

72025

データ名Cに設定した値が間違っています。

72028

データ名Aに設定した値が間違っています。

72036

データ名Gの指定値が不足しています。バッファ形式1の場合は9バイト以上,バッファ形式2の場合は5バイト以上の領域を確保してください。

73001

データ名M5に60秒を加算した時間が経過しましたが,MCF通信プロセスからの応答がありません。

前回の通信から無通信監視時間(コネクション定義(mcftalccn -k)のnotrftimeオペランド指定値)が経過しましたが,相手システムからの通信がありません。

相手システムからメッセージを受信しましたが,受信バッファを確保できませんでした。

入力元の論理端末でMCF通信プロセスの内部障害が発生しました。

73002

コネクション再確立時の未送信メッセージの送信抑止機能を使用している(論理端末定義(mcftalcle -d)のreplacemsgオペランドにdiscardを指定)場合に,MHPでメッセージ受信後にコネクションが再確立されたため,受信を取り消しました。

73005

データ名M5に設定した時間が経過しましたが,論理端末からの応答がありません。

73010

入力メッセージ編集UOCで障害が発生しました。

メッセージの読み込み時に障害が発生しました。

73015

指定した論理端末は,ほかのUAPで仕掛り中です。

73018

データ名M5に設定した値が間違っています。

730200

入力元の論理端末は停止しています。

上記以外

プログラムの破壊などによる,予期しないエラーが発生しました。