Hitachi

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


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

〈このページの構成〉

形式1(セグメントの内容を設定して送信する場合)

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

CD 通信記述名
   FOR {OUTPUT PROGRAMOUTPUTI-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  データ名C   PIC X(n).
01  一意名3.
    02  データ名D   PIC 9(4)  COMP.
    02  データ名E   PIC X(2).
    02  データ名F   PIC X(n).

PROCEDURE DIVISION(通信文)の指定

SEND 通信記述名 FROM 一意名1
     〔WITH {ESIEMI|一意名2}〕
     〔BEFORE RECEIVING MESSAGE INTO 一意名3〕.

形式2(セグメントの内容を設定しないで,メッセージの送信の終了だけ連絡する場合)

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

CD 通信記述名
   FOR {OUTPUT PROGRAMOUTPUTI-O}
   〔STATUS KEY IS データ名1〕
   〔SYMBOLIC TERMINAL IS データ名2〕
   〔SWITCHING MODE IS {NORMALPRIOR|データ名7}〕.

PROCEDURE DIVISION(通信文)の指定

SEND 通信記述名 WITH EMI.

機能

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

注※

単一セグメントだけ扱えます。

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

[図データ]

同期型メッセージの送受信の場合,セグメントを受信する領域(一意名3で示す領域)も設定します。

セグメントを受信する領域の形式を次に示します。

[図データ]

UAPで値を設定する項目

●FOR句

次のどれかを設定します。

OUTPUT PROGRAM

アプリケーションプログラムの起動

OUTPUT

メッセージの送信

I-O

応答メッセージの送信,または同期型メッセージの送受信

●SYMBOLIC TERMINAL句

FOR句の設定内容によって,次のどれかを設定します。

OUTPUT PROGRAM

アプリケーション名を設定したデータ項目を設定します。データ名2に起動するアプリケーション名を設定します。アプリケーション名は最大8バイトの長さです。8バイトに満たない場合,アプリケーション名の後ろを空白で埋めてください。

OUTPUT

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

I-O

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

●SYNCHRONOUS MODE句

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

SYNC

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

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

ASYNC

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

メッセージの送信または応答メッセージの送信のとき設定します。

データ名6

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

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

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

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

●SWITCHING MODE句

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

NORMAL

一般のメッセージ送信

PRIOR

優先のメッセージ送信

データ名7

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

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

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

省略した場合および非応答型のアプリケーションから応答メッセージを送信した場合は,NORMAL(一般のメッセージ送信)が設定されます。

●DETAIL MODE句

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

データ名10

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

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

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

省略した場合および非応答型のアプリケーションから応答メッセージを送信した場合は,出力通番を付けません。

●データ名A

送信するセグメントの長さ+4を設定します。

●データ名B

MCFで使用する領域です。

●データ名C

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

●データ名E

MCFで使用する領域です。

●WITH句

送信するセグメントを設定します。非同期型のメッセージ送信の場合だけ設定します。

ESI

先頭セグメントまたは中間セグメントの送信

EMI

最終セグメントまたは単一セグメントの送信

一意名2

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

'1':ESI(先頭セグメントまたは中間セグメントの送信)

'2':EMI(最終セグメントまたは単一セグメントの送信)

省略した場合は,EMI(最終セグメントまたは単一セグメントの送信)が設定されます。

なお,同期型メッセージの送受信の場合は,EMIを指定するか,または指定を省略してください。

●BEFORE句

同期型メッセージの送受信の場合,セグメントを受信するデータ項目(一意名3)を設定します。メッセージの送信,または,応答メッセージの送信の場合,BEFORE句を省略します。

OpenTP1から値が返される項目

●STATUS KEY句

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

●データ名D

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

●データ名F

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

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

71002

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

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

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

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

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

71003

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

71004

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

71108

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

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

72000

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

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

  • 非応答型のアプリケーションからの問い合わせ応答をしない(UAP共通定義(mcfmuap -c)のnoansreplyオペランドにnoを指定)場合に,非応答型のアプリケーションから応答メッセージを送信しています。

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

トランザクションでないSPPの処理から,SEND文を呼び出しています。

SPPでは応答メッセージを送信するSEND文を呼び出せません。

72001

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

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

SEND文を呼び出せない論理端末を設定しています。

設定したアプリケーション名は,定義されていません。

アプリケーション名が間違っています。

MCFマネジャ定義の通信サービス定義(mcfmcname)に,アプリケーション起動プロセス名またはMCF通信プロセス名を指定していません。

アプリケーション起動プロセス,またはMCF通信プロセスに対応するアプリケーション環境定義(mcfaenv -p)に,アプリケーション起動プロセス識別子を指定していません。

アプリケーション環境定義(mcfaenv -p)で指定したアプリケーション起動プロセス識別子と,アプリケーション起動プロセス,またはMCF通信プロセスのMCF環境定義(mcftenv -s)で指定する識別子が一致していません。

<論理端末名称を指定してアプリケーションを起動する場合>

  • 起動先アプリケーションのアプリケーション属性定義(mcfaalcap -n)のlnameオペランドに論理端末を指定していません。

  • 起動先アプリケーションのアプリケーション属性定義(mcfaalcap -n)のlnameオペランドに指定した論理端末を,MCF通信プロセスの論理端末定義(mcftalcle)に定義していません。

  • 起動先アプリケーションのアプリケーション属性定義に指定した論理端末が,request型論理端末またはsend型論理端末ではありません。

  • 起動先アプリケーションのアプリケーション属性定義で指定した論理端末はアプリケーション起動を使えません。

<コネクションIDを指定してアプリケーションを起動する場合>

  • 起動先アプリケーションのアプリケーション属性定義(mcfaalcap -n)のcnameオペランドにコネクションIDを指定していません。

  • 起動先アプリケーションのアプリケーション属性定義(mcfaalcap -n)のcnameオペランドに指定したコネクションIDを,MCF通信プロセスのコネクション定義(mcftalccn)に定義していません。

  • MCF通信プロセスの論理端末定義(mcftalcle)に,request型論理端末を指定していません。

<SPPからアプリケーションを起動する場合>

  • アプリケーション起動プロセス識別子を起動元のUAPのユーザサービス定義,またはユーザサービスデフォルト定義のmcf_psv_idオペランドに指定していません。

  • 起動元のUAPのユーザサービス定義,またはユーザサービスデフォルト定義のmcf_psv_idオペランドに指定しているアプリケーション起動プロセス識別子が,アプリケーション起動プロセス,またはMCF通信プロセスのMCF環境定義(mcftenv -s),およびアプリケーション環境定義(mcfaenv -p)で指定しているアプリケーション起動プロセス識別子と一致していません。

  • 起動元のUAPのユーザサービス定義,またはユーザサービスデフォルト定義のmcf_mgridオペランドに指定しているMCFマネジャ識別子が,アプリケーション起動プロセスが属しているMCFマネジャの識別子と一致していません。

72005

<WITH句にESIを設定またはWITH句に1を設定した一意名2を設定した場合>

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

72007

応答型(type=ans)のMHPで,応答メッセージを送信したあとで,応答型のMHPを起動しています。

継続問い合わせ応答型(type=cont)のMHPで,応答メッセージを送信したあとで,継続問い合わせ応答型のMHPを起動しています。

72008

応答メッセージの最終セグメントを送信するSEND文を呼び出したあとに,再び応答メッセージを送信するSEND文を呼び出しています。

SEND文を呼び出して応答型(type=ans)のMHPを起動させたあとに,応答メッセージを送信するSEND文を呼び出しています。

72009

応答型(type=ans)のMHPを2回以上起動しています。

継続問い合わせ応答型(type=cont)のMHPを2回以上起動しています。

72011

応答型(type=ans)でないMHPから,応答型のMHPを起動させています。

継続問い合わせ応答型(type=cont)でないMHPから,継続問い合わせ応答型のMHPを起動しています。

72013

データ名Fのサイズを超えるセグメントを受信しました。データ名Fのサイズを超えた部分は切り捨てられました。

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

72017

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

72018

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

72020

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

72024

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

72026

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

72036

データ名Fのサイズが不足しています。5バイト以上の領域を確保してください。

72041

<WITH句を省略またはWITH句にEMIを設定またはWITH句に2を設定した一意名2を設定した場合>

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

<メッセージの送信の終了を連絡した場合>

WITH句にESIを設定またはWITH句に1を設定した一意名2を設定したSEND文を呼び出さないで,メッセージの送信の終了を連絡しています。

72044

継続問い合わせ応答型のアプリケーションはサポートしていません。

72045

継続問い合わせ応答型のアプリケーションはサポートしていません。

72047

継続問い合わせ応答型のアプリケーションはサポートしていません。

73001

同期型送受信監視時間(mcfmuap -t sndrcvtim)に60秒を加算した時間が経過しましたが,MCF通信プロセスからの応答がありません。

SEND文を呼び出したあとで,論理端末の閉塞またはコネクションの解放が発生しました。

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

73002

論理端末が閉塞されています。

73004

メッセージの送信処理中にタイムアウトが発生しました。

73005

メッセージの受信処理中にタイムアウトが発生しました。

73008

運用コマンドまたは障害による論理端末閉塞処理中に,SEND文を呼び出しました。

73009

論理端末閉塞解除処理中に,SEND文を呼び出しました。

73010

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

73015

出力先の論理端末は,ほかのUAPで仕掛り中です。

73018

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

77001

起動しようとするアプリケーションに対応する論理端末は,現在仕掛り中で使用できません。または,使用できる論理端末がありません。

上記以外

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