Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス COBOL言語編


RECEIVE − メッセージの受信

〈このページの構成〉

名称

メッセージの受信

形式

DATA DIVISION(通信記述項)の指定

CD 通信記述名
   FOR {INPUT|I-O}
 〔STATUS KEY IS データ名1〕
 〔SYMBOLIC TERMINAL IS データ名2〕
 〔MESSAGE DATE IS データ名3〕
 〔MESSAGE TIME IS データ名4〕.
 
01 一意名1.
   02 データ名5  PIC  9(4) COMP.
   02 データ名6  PIC  X(2).
   02 データ名7  PIC  X(n).

PROCEDURE DIVISION(通信文)の指定

RECEIVE 通信記述名
   〔FIRSTSEGMENT
       INTO 一意名1.

機能

次に示すCALLインタフェースの機能を実現します。

受信できる一つのセグメントの最大長は,32,763バイトまでです。ただし,プロトコルによって,実際の最大長が小さいことがあります。詳細については,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。

また,相手システムから通信プロトコルを介して送られたメッセージを受信する場合,通信プロトコルによってRECEIVE文の文法が異なります。相手システムからのメッセージを受信するRECEIVE文の文法についても,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。

通信記述項に設定する項目

FOR句

次のうちどちらかを指定します。

INPUT:問い合わせ以外のメッセージの受信

I-O:問い合わせメッセージの受信

STATUS KEY句

ステータスコードを受け取りたいときに指定します。省略した場合は,ステータスコードを受け取りません。

SYMBOLIC TERMINAL句

入力元の論理端末名称を参照するデータ項目を指定します。

MESSAGE DATE句

メッセージを受信した日付を参照するデータ項目を指定します。「YYMMDD」(YY:西暦の下2けた MM:月 DD:日)の形式で参照できます。

MESSAGE TIME句

メッセージを受信した時刻を参照するデータ項目を指定します。「HHMMSS00」(HH:時 MM:分 SS:秒 00は固定)の形式で参照できます。

通信文に指定する項目

FIRST

先頭セグメントを受信するときに指定します。

一意名1

セグメントを受信するデータ項目を指定します。自システムから送信したメッセージの場合,受け取れるセグメントの最大長は32,000バイトです。相手システムから送信されたメッセージの場合,受け取れるセグメントの最大長は通信プロトコル対応製品別で異なります。

[図データ]

また,ユーザタイマ監視を設定したときに指定したメッセージを受信する領域(一意名1で示す領域)の形式を次に示します。

[図データ]

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

受信領域の長さより短いセグメントを受信しました。余りの受信領域には空白が設定されます。

71000

先頭セグメントを受信するRECEIVE文を2回以上実行しています。中間セグメントおよび最終セグメントを受信する場合は,FIRSTを指定しないでRECEIVE文を実行してください。

71001

メッセージの最終セグメントを受信したあとで,次のセグメントを受信するRECEIVE文を実行しています。直前に実行したRECEIVE文でメッセージはすべて受信しました。

このステータスコードが返されたあとに,再びRECEIVE文を実行した場合は,ステータスコード「72000」が返されます。

71002

メッセージキューへの入出力処理時に障害が起こりました。

メッセージキューが閉塞されています。

72000

<MHPの実行でリターンした場合>

先頭セグメントを受信するRECEIVE文を実行する前に,中間セグメントおよび最終セグメントを受信するRECEIVE文を実行しています。先頭セグメントを受信する場合は,FIRSTを指定してRECEIVE文を実行してください。

ステータスコード「71000」が返されたあとで,RECEIVE文を実行しています。

<SPPの実行でリターンした場合>

SPPではRECEIVE文を実行できません。

72001

SYMBOLIC TERMINAL句に設定した論理端末名称が間違っています。

RECEIVE文を実行できない論理端末を設定しています。

72013

受信領域の長さを超えるセグメントを受信しました。受信領域の長さを超えた部分は切り捨てられました。

バッファ形式2の場合で,32,767バイトを超えるセグメントを受信しました。32,767バイトを超えた部分は切り捨てられました。

72020

SYNCHRONOUS MODE句に設定した値が間違っています。

72024

FOR句に設定した値が間違っています。

72036

セグメントを受信する領域(一意名1)の長さが不足しています。5バイト以上の領域を確保してください。

上記以外

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