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インタフェースの機能を実現します。

送信できるメッセージの一つのセグメント長は,32キロバイトまでです。ただし,プロトコルによって,実際の最大長が小さいことがあります。詳細については,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。

通信記述項に設定する項目

FOR句

一方送信メッセージを示す OUTPUT を指定します。

STATUS KEY句

ステータスコードを受け取りたいときに指定します。この指定を省略した場合は ,ステータスコードを受け取れません。

SYMBOLIC TERMINAL句

起動するアプリケーション名を設定したデータ項目を指定します。

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秒に開始)までです。時刻はローカルタイムで指定します。

指定を省略した場合は,即時起動となります。

一定の時間間隔で起動時間に達したかどうかを監視するので,ACTIVE句に設定した時間と実際の起動時間には誤差が生じます。時間監視の精度は,MCF通信構成定義mcfttimの-tオプションのbtimオペランドに指定した時間監視間隔の値に依存します。

通信文に指定する項目

一意名1

起動するアプリケーションプログラムに渡す,メッセージセグメント送信領域を示すデータ項目を指定します。開始させるMHPに渡すセグメントの形式を次に示します。

[図データ]

WITH句

起動するアプリケーションプログラムに渡すセグメントが,論理メッセージの最終セグメントかどうかを指定します。

ESI:先頭セグメント,中間セグメントの場合。
EMI:最終セグメントの場合。渡すメッセージが単一セグメントの場合もEMIを設定します。
一意名2:次の値を設定したデータ項目。
'1' … ESI(先頭セグメント,中間セグメント)
'2' … EMI(最終セグメント ,または単一セグメント)

指定を省略した場合は,EMI(最終セグメント,または単一セグメント)が仮定されます。

ステータスコード

ステータスコード意味
00000正常に終了しました。
71002メッセージキューへの入出力処理時に障害が起こりました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
セグメント長に32000バイトを超える値を設定しています。
MCFが終了処理中のため,アプリケーションプログラムを起動するSEND文を受け付けられません。
71003メッセージキューが満杯です。
71004メッセージを格納するバッファをメモリ上に確保できませんでした。
71008アプリケーションプログラムを起動しようとしましたが,送信先の管理テーブルが確保できませんでした。
プロセスのローカルメモリが不足しています。
72000<MHPの実行でリターンした場合>
アプリケーションプログラムを起動するSEND文を使った位置が間違っています。MHPで先頭セグメントを受信する前に,アプリケーションプログラムを起動するSEND文を使っています。
<SPPの実行でリターンした場合>
トランザクションでないSPPの処理から,アプリケーションプログラムを起動するSEND文を使っています。
72001設定したアプリケーション名は,MCFで定義していません。
アプリケーション名が間違っています。
MCFマネジャ定義の通信サービス定義(mcfmcname定義コマンド)に,アプリケーション起動プロセス名を指定していません。
アプリケーション起動プロセスに対応するMCFアプリケーション定義の環境定義(mcfaenv定義コマンドの-pオプション)に,アプリケーション起動プロセス識別子を指定していません。
アプリケーション環境定義(mcfaenv定義コマンドの-pオプション)で指定したアプリケーション起動プロセス識別子と,アプリケーション起動プロセスの通信構成定義(mcftenv定義コマンド)で指定する識別子が一致していません。
<非応答型のMHPを起動する場合>
  • 起動先アプリケーションのアプリケーション属性定義の,論理端末(mcfaalcap定義コマンドの-nオプションのlnameオペランド)に値を指定していません。
  • 起動先アプリケーションのアプリケーション属性定義に指定した論理端末を,アプリケーション起動プロセスの通信構成定義(mcftalcle定義コマンド)に定義していません。
  • 起動先アプリケーションのアプリケーション属性定義に指定した論理端末が,一方送信型(=send)ではありません。
  • 起動先アプリケーションのアプリケーション属性定義で指定した論理端末は,アプリケーション起動を使えません。
<応答型 および継続問い合わせ応答型のMHPを起動する場合>
  • 起動先アプリケーションのアプリケーション属性定義に,内部通信路(mcfaalcap定義コマンドの-nオプションのcnameオペランド)を指定していません。
  • 起動先アプリケーションのアプリケーション属性定義に指定した内部通信路を,アプリケーション起動プロセスの通信構成定義(mcftpsvr定義コマンドの-cオプション)に定義していません。
  • アプリケーション起動プロセスの通信構成定義(mcftalcle定義コマンド)に,問い合わせ型論理端末(=request)を指定していません。
<SPPからアプリケーションを起動する場合>
  • アプリケーション起動プロセス識別子を,起動元のUAPのユーザサービス定義 またはユーザサービスデフォルト定義のmcf_psv_idオペランドに指定していません。
  • 起動元のUAPのユーザサービス定義 またはユーザサービスデフォルト定義のmcf_psv_idオペランドに指定しているアプリケーション起動プロセス識別子が,アプリケーション起動プロセスの通信構成定義(mcftenv定義コマンドの-sオプション),およびアプリケーション環境定義(mcfaenv定義コマンドの-pオプション)で指定しているアプリケーション起動プロセス識別子と一致していません。
  • 起動元のUAPのユーザサービス定義 またはユーザサービスデフォルト定義のmcf_mgridオペランドに指定しているMCFマネジャ識別子が,アプリケーション起動プロセスが属しているMCFマネジャの識別子と一致していません。
72005WITH句に'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を起動しています。
72023ACTIVE句のTIMEに設定したデータ名3の内容が空白です。
72024FOR句に設定した値が間違っています。
72026WITH句に設定した値が間違っています。
72041アプリケーションプログラムを起動するSEND文が間違っています。単一セグメントで,送信セグメント長に4バイト以下の値を設定しています。
72044継続問い合わせ応答を終了したあとで,次に起動するアプリケーション名を指定して,アプリケーションプログラムを起動するSEND文を使っています。
72108データ名9で指定した値は,設定できる値の範囲を超えています。
72109継続問い合わせ応答型(type = cont)のMHPを,タイマ起動で起動しました。
77001起動しようとするアプリケーションに対応する論理端末(LE)は,処理中で使える状態ではありません。または,そのほかの要因で使える状態ではありません。
上記以外プログラムの破壊などによる,予期しないエラーが起こりました。

注意事項

  1. MCFマネジャ定義のUAP共通定義(mcfmuap -c order)の指定によって,アプリケーションプログラムの起動順序が異なりますので注意してください。
  2. 一つのサービス関数で,TAMまたはDAMファイルの更新とアプリケーションプログラムを起動するSEND文を使い,起動先のアプリケーションで更新後のTAMまたはDAMファイルを参照させたい場合,TAMまたはDAMファイルを排他ありで参照してください。排他なしで参照した場合,更新前のデータが入力されることがあります。