Hitachi

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


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

〈このページの構成〉

形式1(論理端末へ送信するメッセージを設定して,送信要求する場合)

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

CD  通信記述名
    FOR  {OUTPUT|I-O}
  〔STATUS  KEY  IS データ名1〕
  〔SYMBOLIC  TERMINAL  IS データ名2〕
  〔MAP  NAME  IS データ名5〕
  〔SYNCHRONOUS  MODE  IS {ASYNC|データ名6}〕
  〔SWITCHING  MODE  IS {NORMAL|PRIOR|データ名7}〕
  〔NEXT  TRANSACTION  IS データ名8〕
  〔DETAIL  MODE  IS データ名10〕
  〔MAPPING  MODE  IS データ名13〕.

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

01 一意名1.
    02 データ名A  PIC  9(4) COMP.
    02 データ名B  PIC  X(2).
    02 データ名C  PIC  X(n).

PROCEDURE DIVISION(通信文)の指定

SEND  通信記述名  FROM  一意名1
    〔WITH  {ESI|EMI|一意名2}〕.

形式2(先頭セグメントの送信後,メッセージ送信の終了を連絡する場合)

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

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

PROCEDURE DIVISION(通信文)の指定

SEND  通信記述名  WITH  EMI.

機能

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

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

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

[図データ]

TP1/NET/XMAP3の論理端末に送信する場合は,XMAP3で作成した出力論理マップをCOPY文で取り込み,一意名1として指定します。出力論理マップの詳細については,マニュアル「XMAP3 Version 5 画面・帳票サポートシステム XMAP3 プログラミングガイド」,またはマニュアル「XMAP3 Version 5 画面・帳票サポートシステム XMAP3 開発ガイド」を参照してください。コーディング例については,「付録H.1 コーディング例」を参照してください。

UAPで値を設定する項目

●FOR句

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

OUTPUT

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

I-O

応答メッセージの送信

●SYMBOLIC TERMINAL句

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

●MAP NAME句

マップ名を設定したデータ項目を設定します。データ名5にマップ名を設定します。マップ名は最大6バイトの長さです。6バイトに満たない場合,マップ名の後ろを空白で埋めてください。

MAP NAME句を省略,または,データ名5に空白を設定した場合は,論理端末定義(mcftalcle -p)のdflmapオペランドで指定したデフォルトマップ名を使用します。

●SYNCHRONOUS MODE句

非同期型でのメッセージ送信を示す,次のどちらかの値を指定してください。

ASYNC

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

データ名6

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

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

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

●SWITCHING MODE句

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

NORMAL

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

PRIOR

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

データ名7

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

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

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

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

●NEXT TRANSACTION句

<継続問い合わせ応答形態の場合>

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

NEXT TRANSACTION句を省略,または,データ名8に空白を設定した場合は,実行中のアプリケーションを次のメッセージ受信時に再び起動します。

応答メッセージの送信を行うSEND(メッセージの送信)文を呼び出すサービスでDISABLE(継続問い合わせ応答の終了)文を呼び出す場合はNEXT TRANSACTION句を省略,または,データ名8に空白を設定してください。

継続問い合わせ応答を引き継いだエラーイベントで応答メッセージの送信を行うSEND(メッセージの送信)文を呼び出す際に,NEXT TRANSACTION句を省略,または,データ名8に空白を設定した場合,継続問い合わせ応答を終了します。ただし,継続問い合わせ応答を引き継いだエラーイベントで,SEND(アプリケーションプログラムの起動)文を呼び出して継続問い合わせ応答型のアプリケーションを起動し,起動先のアプリケーションで応答メッセージの送信を行うSEND(メッセージの送信)文を呼び出す際に,NEXT TRANSACTION句を省略,または,データ名8に空白を設定した場合,継続問い合わせ応答を終了しないで,SEND(アプリケーションプログラムの起動)文を呼び出したときに設定した継続問い合わせ応答型のアプリケーションを次のメッセージ受信時に再び起動します。

<継続問い合わせ応答形態以外の場合>

NEXT TRANSACTION句を省略,または,データ名8に空白を設定します。

●DETAIL MODE句

出力通番を付けるかどうかを設定します。データ名10に次のどちらかを設定します。

'0'または'△'

出力通番を付けます。

'1'

出力通番を付けません。

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

●MAPPING MODE句

マッピングモードを設定します。データ名13に次のどちらかを設定します。

'2'

論理マップだけでマッピングする場合に設定します。

'2'以外

論理マップと物理マップの情報でマッピングする場合に設定します。

省略した場合は,論理マップと物理マップの情報でマッピングします。

●データ名A

出力論理マップの長さ(論理マップ固定部の長さ+論理マップ可変部・定数部の長さ)を設定します。

●データ名B

送信完了通知イベントおよび送信障害通知イベントを設定します。データ名Bとビットの設定値の関係を次に示します。

AIX,HP-UXの場合

[図データ]

送信完了通知イベントおよび送信障害通知イベントの要否は,データ名Bの領域の24ビットに設定します。

  • 領域の24ビットに1を設定すると,送信完了通知イベントおよび送信障害通知イベントを通知させます。ただし,これらのイベントを処理するMHPをアプリケーション属性定義(mcfaalcap)で指定していない場合は無効です。

  • 領域の24ビットに0を設定すると,送信完了イベントおよび送信障害通知イベントを通知させません。

Linux,Windowsの場合

[図データ]

送信完了通知イベントおよび送信障害通知イベントの要否は,データ名Bの領域の212ビットに設定します。

  • 領域の212ビットに1を設定すると,送信完了通知イベントおよび送信障害通知イベントを通知させます。ただし,これらのイベントを処理するMHPをアプリケーション属性定義(mcfaalcap)で指定していない場合は無効です。

    メッセージが複数のセグメントで構成される場合,先頭セグメント送信時の指定が有効になります。

  • 領域の212ビットに0を設定すると,送信完了イベントおよび送信障害通知イベントを通知させません。

●データ名C

送信するセグメントの内容(論理マップ可変部・定数部に出力する内容)を設定します。

●WITH句

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

ESI

先頭セグメントの場合に設定します。

EMI

単一セグメントまたは先頭セグメントの送信後にメッセージ送信の終了を連絡する場合に設定します。

一意名2

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

'1':ESI(先頭セグメント)

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

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

OpenTP1から値が返される項目

●STATUS KEY句

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

ステータスコード

ステータスコード

意味

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文を実行できない論理端末を設定しています。

<応答メッセージの送信を行う(FOR句にI-Oを設定し,かつ,SYNCHRONOUS MODE句を省略またはSYNCHRONOUS MODE句にASYNCを設定またはSYNCHRONOUS MODE句に0もしくは空白を設定したデータ名6を設定)場合>

入力元論理端末は,応答メッセージの送信をサポートしていません。

SYNCHRONOUS MODE句にSYNCが設定されているか,データ名6に'1'が設定されています。

72005

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

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

72008

応答型のアプリケーションからSEND(アプリケーションプログラムの起動)文を呼び出して応答型のアプリケーションを起動したあとで,SEND(応答メッセージの送信)文を呼び出しています。

継続問い合わせ応答型のアプリケーションからSEND(アプリケーションプログラムの起動)文を呼び出して継続問い合わせ応答型のアプリケーションを起動したあとで,SEND(応答メッセージの送信)文を呼び出しています。

72011

継続問い合わせ応答型でないアプリケーションが,次起動アプリケーションを設定して,SEND文を呼び出しています。

72017

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

72018

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

72020

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

72024

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

72026

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

72037

通信文にBEFORE句が設定されています。

72041

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

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

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

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

72044

DISABLE文を呼び出したあとで,次起動アプリケーションを設定してSEND文を呼び出しています。

72045

NEXT TRANSACTION句に継続問い合わせ応答型でないアプリケーションのアプリケーション名を設定して応答メッセージを送信するSEND文を呼び出しています。

72046

NEXT TRANSACTION句に設定したアプリケーション名が異なる応答メッセージの送信を行うSEND文を2回以上呼び出しています。

72047

NEXT TRANSACTION句にアプリケーション属性定義(mcfaalcap)に定義されていないアプリケーション名を設定して応答メッセージを送信するSEND文を呼び出しています。

73001

メッセージ出力先論理端末に障害が発生しました。

上記以外

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