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〕.
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インタフェースの機能を実現します。
-
応答メッセージの送信 CBLDCMCF('REPLY△△△')
-
メッセージの送信 CBLDCMCF('SEND△△△△')
送信できるメッセージの一つのセグメントの最大長は,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の実行でリターンした場合>
|
<SPPの実行でリターンした場合>
|
|
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 |
メッセージ出力先論理端末に障害が発生しました。 |
上記以外 |
プログラムの破壊などによる,予期しないエラーが発生しました。 |