Hitachi

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


SEND − メッセージの送信(データ操作言語)

〈このページの構成〉

形式

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

CD  通信記述名
   FOROUTPUTI-O}
 〔STATUS  KEY  IS  データ名1〕
 〔SYMBOLIC  TERMINAL  IS  データ名2〕
 〔SYNCHRONOUS MODE  IS  {SYNCASYNC|データ名6}〕
 〔SWITCHING MODE IS {NORMALPRIOR|データ名7}〕
 〔DETAIL MODE IS データ名10〕.

DATA DIVISION(データ記述項)の指定

01  一意名1.
    02  データ名A   PIC 9(4)  COMP.
    02  データ名B   PIC X(2).
    02  データ名C1  PIC X(12)  VALUE LOW-VALUE.
    02  データ名C2  PIC X(4).
    02  データ名C3  PIC X(2)  VALUE LOW-VALUE.
    02  データ名C4  PIC X(2).
    02  データ名C5  PIC X(4)  VALUE LOW-VALUE.
    02  データ名C6  PIC X(n).

PROCEDURE DIVISION(通信文)の指定

SEND  通信記述名  FROM  一意名1
    〔WITHEMI|一意名2}〕.

機能

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

送信できるメッセージの一つのセグメントの最大長は,制御ヘッダの24バイトを含めて32000バイトです。単一セグメントだけ扱えます。

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

[図データ]

相手IPアドレスと相手ポート番号の設定方法については,「2.1.3 通信相手のアドレスの指定」を参照してください。

UAPで値を設定する項目

●FOR 句

次のどちらかの値を設定します。

OUTPUT

一方送信メッセージの送信

I-O

同期型メッセージの送信または一方送信メッセージの送信

一方送信メッセージの送信を行う場合,UAP共通定義(mcfmuap -c)のnoansreplyオペランドにyesを指定してください。noを指定した場合,SEND文はステータスコード(72000)を返します。

●SYMBOLIC TERMINAL 句

論理端末名称を設定したデータ項目を設定します。データ名2に出力先の論理端末名称を設定します。論理端末名称は最大8バイトの長さです。8バイトに満たない場合,論理端末名称の後ろを空白で埋めてください。

●SYNCHRONOUS MODE 句

非同期型でメッセージを送信するか,同期型でメッセージを送信するかを設定します。

SYNC

同期型メッセージの送信

同期型メッセージの送信のとき設定します。

ASYNC

非同期型メッセージの送信

一方送信メッセージの送信のとき設定します。

データ名6

次の値を設定したデータ項目

'0'または'△':非同期型メッセージの送信

'1':同期型メッセージの送信

省略した場合は,ASYNC(非同期型メッセージの送信)が設定されます。

●SWITCHING MODE 句

一方送信メッセージの場合に,一般か優先かを設定します。

NORMAL

一般の一方送信メッセージ

PRIOR

優先の一方送信メッセージ

データ名7

次の値を設定したデータ項目

'0'または'△':一般の一方送信メッセージ

'1':優先の一方送信メッセージ

省略した場合およびFOR句にI-Oを設定した場合は,NORMAL(一般の一方送信メッセージ)が設定されます。

●DETAIL MODE 句

非同期型のメッセージの送信の場合に,出力通番を付けるかどうかを設定します。データ名10に次のどちらかを設定します。

データ名10

次の値を設定したデータ項目

'0'または'△':出力通番を付けます。

'1':出力通番を付けません。

省略した場合およびFOR句にI-Oを設定した場合は,出力通番を付けません。

●データ名A

送信するセグメントの長さ+28(制御ヘッダ,データ名A,データ名B)を設定します。

●データ名B

MCFで使用する領域です。

●データ名C1

予備領域です。

●データ名C2

送信相手のIPアドレスを設定します。

設定方法については,「2.1.3 通信相手のアドレスの指定」を参照してください。

●データ名C3

予備領域です。

●データ名C4

送信相手のポート番号を設定します。

設定方法については,「2.1.3 通信相手のアドレスの指定」を参照してください。

●データ名C5

予備領域です。

●データ名C6

送信するセグメントの内容を設定します。一つのセグメントで31976バイトまで送信できます。

●WITH句

送信するセグメントが単一の論理メッセージであることを設定します。

EMI

単一セグメントを設定します。

一意名2

次の値を設定したデータ項目

'2':EMI(単一セグメント)

指定を省略した場合は,EMI(単一セグメント)を設定します。

OpenTP1から値が返される項目

●STATUS KEY 句

ステータスコードを受け取りたい場合に設定します。省略した場合は,ステータスコードを受け取れません。データ名1にステータスコードが返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

71002

メッセージキューへの出力処理中に障害が発生しました。

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

メッセージキューが割り当てられていません。

データ名Aに32004バイトを超える値を設定しています。

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

71003

メッセージキューが満杯です。

71004

メッセージを格納するバッファをメモリ上に確保できませんでした。

71108

メッセージを送信しようとしましたが,送信先の管理テーブルが確保できませんでした。

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

72000

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

  • 先頭セグメントを受信するRECEIVE文を実行する前に,SEND文を実行しています。

  • FOR句にI-Oを設定した一方送信メッセージを送信するSEND文を実行していますが,UAP共通定義(mcfmuap -c)のnoansreplyオペランドにnoを指定しています。

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

  • トランザクションでないSPPの処理から,一方送信メッセージを送信するSEND文を実行しています。

  • SPPでは,FOR句にI-Oを設定した一方送信メッセージを送信するSEND文を実行できません。

72001

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

SYMBOLIC TERMINAL句に設定した論理端末名称は,定義されていません。

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

72017

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

72018

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

72020

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

72024

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

72026

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

72041

データ名Aに0から4バイト,またはマイナス値を設定しています。

73001

出力先の論理端末で障害が発生しました。

73010

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

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

73011

データ名Aに5以上28以下の値を設定しています。

73019

システムに対する送信時に障害が発生しました。

73020

出力先の論理端末は閉塞しています。

上記以外

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

注意事項