SEND − アプリケーションプログラムの起動
- 〈このページの構成〉
形式1(起動するアプリケーションへ渡すメッセージを設定して,アプリケーション起動する場合)
DATA DIVISION(通信記述項)の指定
CD 通信記述名 FOR OUTPUT PROGRAM 〔STATUS KEY IS データ名1〕 SYMBOLIC TERMINAL IS データ名2 〔ACTIVE {INTERVAL|TIME} IS データ名9〕. 01 一意名1. 02 データ名10 PIC 9(4) COMP. 02 データ名11 PIC X(2). 02 データ名12 PIC X(n). 01 一意名2. 02 データ名13 PIC X(1).
PROCEDURE DIVISION(通信文)の指定
SEND 通信記述名 FROM 一意名1 〔WITH {ESI|EMI|一意名2}〕.
形式2(最終セグメント以外のセグメントの引き渡し要求後,メッセージ引き渡しの終了を連絡する場合)
DATA DIVISION(通信記述項)の指定
CD 通信記述名 FOR OUTPUT PROGRAM 〔STATUS KEY IS データ名1〕 SYMBOLIC TERMINAL IS データ名2.
PROCEDURE DIVISIONの指定
SEND 通信記述名 WITH EMI.
機能
次に示すCALLインタフェースの機能を実現します。
-
CBLDCMCF('EXECAP ') アプリケーションプログラムの起動
送信できるメッセージの一つのセグメント長は,32キロバイトまでです。ただし,プロトコルによって,実際の最大長が小さいことがあります。詳細については,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。
通信記述項に設定する項目
●ACTIVE句
アプリケーションプログラムをタイマ起動で起動する場合に指定します。
INTERVAL:経過時間指定のタイマ起動。
TIME:時刻指定のタイマ起動。
- データ名9:
-
- 経過時間指定のタイマ起動の場合
-
アプリケーションプログラムを起動するSEND文を使ってから,何時間何分何秒後にMHPを開始させるかを設定します。時間は「HHMMSS00」(HH:時間,MM:分,SS:秒 00は固定)の形式で設定します。設定できる時間の範囲は,'00000100'(1秒後に開始)から '99595900'(99時間59分59秒後に開始)までです。
- 時刻指定のタイマ起動の場合
-
MHPを開始させる時刻を設定します。時刻は「HHMMSS00」(HH:時 ,MM:分,SS:秒 00は固定)の形式で設定します。設定できる時刻の範囲は,'00000000'(0時0分0秒に開始)から '23595900'(23時59分59秒に開始)までです。時刻はローカルタイムで指定します。
指定を省略した場合は,即時起動となります。
- 注意事項
-
-
経過時間指定のタイマ起動の場合
時間監視の精度は秒単位です。また,タイマ定義(mcfttim -t)のbtimオペランドで指定する時間監視間隔で起動するかどうかを監視しています。このため,データ名9に設定した経過時間と実際に起動する時間には秒単位の誤差が生じます。そのため,タイミングによっては,設定した監視時間よりも短い時間で起動することがあります。監視時間が小さくなるほど,誤差の影響を受けやすくなりますので,監視時間は3(単位:秒)以上の値の設定を推奨します。
-
時刻指定のタイマ起動の場合
時間監視の精度は秒単位です。また,タイマ定義(mcfttim -t)のbtimオペランドで指定する時間監視間隔で起動するかどうかを監視しています。このため,データ名9に設定した時刻と実際に起動する時刻には秒単位の誤差が生じます。
-
通信文に指定する項目
ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
正常に終了しました。 |
71002 |
メッセージキューへの入出力処理時に障害が起こりました。 |
メッセージキューが閉塞されています。 |
|
メッセージキューが割り当てられていません。 |
|
セグメント長に32,000バイトを超える値を設定しています。 |
|
MCFが終了処理中のため,アプリケーションプログラムを起動するSEND文を受け付けられません。 |
|
71003 |
メッセージキューが満杯です。 |
71004 |
メッセージを格納するバッファをメモリ上に確保できませんでした。 |
71008 |
アプリケーションプログラムを起動しようとしましたが,送信先の管理テーブルが確保できませんでした。 |
プロセスのローカルメモリが不足しています。 |
|
72000 |
<MHPの実行でリターンした場合> アプリケーションプログラムを起動するSEND文を使った位置が間違っています。MHPで先頭セグメントを受信する前に,アプリケーションプログラムを起動するSEND文を使っています。 |
<SPPの実行でリターンした場合> トランザクションでないSPPの処理から,アプリケーションプログラムを起動するSEND文を使っています。 |
|
72001 |
設定したアプリケーション名は,MCFで定義していません。 |
アプリケーション名が間違っています。 |
|
MCFマネジャ定義の通信サービス定義(mcfmcname定義コマンド)に,アプリケーション起動プロセス名を指定していません。 |
|
アプリケーション起動プロセスに対応するMCFアプリケーション定義の環境定義(mcfaenv定義コマンドの-pオプション)に,アプリケーション起動プロセス識別子を指定していません。 |
|
アプリケーション環境定義(mcfaenv定義コマンドの-pオプション)で指定したアプリケーション起動プロセス識別子と,アプリケーション起動プロセスの通信構成定義(mcftenv定義コマンド)で指定する識別子が一致していません。 |
|
<非応答型のMHPを起動する場合>
|
|
<応答型 および継続問い合わせ応答型のMHPを起動する場合>
|
|
<SPPからアプリケーションを起動する場合>
|
|
72005 |
WITH句に'ESI'(先頭セグメント,または中間セグメント)を設定したアプリケーションプログラムの起動で,送信セグメント長に5バイト未満の値を設定しています。 |
72007 |
応答型(type = ans)のMHPで,応答メッセージを送信したあとで,応答型のMHPを起動しています。 |
継続問い合わせ応答型(type = cont)のMHPで,応答メッセージを送信したあとで,継続問い合わせ応答型のMHPを起動しています。 |
|
72009 |
応答型(type = ans)のMHPを,2回以上起動しています。 |
継続問い合わせ応答型(type = cont)のMHPを,2回以上起動しています。 |
|
72011 |
応答型(type = ans)でないMHPから,応答型のMHPを起動しています。 |
継続問い合わせ応答型(type = cont)でないMHPから,継続問い合わせ応答型のMHPを起動しています。 |
|
72023 |
ACTIVE句のTIMEに設定したデータ名3の内容が空白です。 |
72024 |
FOR句に設定した値が間違っています。 |
72026 |
WITH句に設定した値が間違っています。 |
72041 |
<メッセージが単一セグメントの場合> データ名10に0から4バイト,またはマイナス値を設定しています。 |
<メッセージが複数セグメントの場合> WITH句に'ESI'を設定したアプリケーションプログラムを起動するSEND文を呼び出さないで,メッセージ引き渡しの終了を連絡しています。 |
|
72044 |
継続問い合わせ応答を終了したあとで,次に起動するアプリケーション名を指定して,アプリケーションプログラムを起動するSEND文を使っています。 |
72108 |
データ名9で指定した値は,設定できる値の範囲を超えています。 |
72109 |
継続問い合わせ応答型(type = cont)のMHPを,タイマ起動で起動しました。 |
77001 |
起動しようとするアプリケーションに対応する論理端末(LE)は,処理中で使える状態ではありません。または,そのほかの要因で使える状態ではありません。 |
上記以外 |
プログラムの破壊などによる,予期しないエラーが発生しました。 |
注意事項
-
MCFマネジャ定義のUAP共通定義(mcfmuap -c order)の指定によって,アプリケーションプログラムの起動順序が異なりますので注意してください。
-
一つのサービス関数で,TAMまたはDAMファイルの更新とアプリケーションプログラムを起動するSEND文を使い,起動先のアプリケーションで更新後のTAMまたはDAMファイルを参照させたい場合,TAMまたはDAMファイルを排他ありで参照してください。排他なしで参照した場合,更新前のデータが入力されることがあります。