Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス COBOL言語編


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

〈このページの構成〉

名称

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

形式1(起動するアプリケーションへ渡すメッセージを設定して,アプリケーション起動する場合)

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

CD  通信記述名
    FOR  OUTPUT  PROGRAMSTATUS  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  PROGRAMSTATUS  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秒に開始)までです。時刻はローカルタイムで指定します。

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

注意事項
  • 経過時間指定のタイマ起動の場合

    時間監視の精度は秒単位です。また,タイマ定義(mcfttim -t)のbtimオペランドで指定する時間監視間隔で起動するかどうかを監視しています。このため,データ名9に設定した経過時間と実際に起動する時間には秒単位の誤差が生じます。そのため,タイミングによっては,設定した監視時間よりも短い時間で起動することがあります。監視時間が小さくなるほど,誤差の影響を受けやすくなりますので,監視時間は3(単位:秒)以上の値の設定を推奨します。

  • 時刻指定のタイマ起動の場合

    時間監視の精度は秒単位です。また,タイマ定義(mcfttim -t)のbtimオペランドで指定する時間監視間隔で起動するかどうかを監視しています。このため,データ名9に設定した時刻と実際に起動する時刻には秒単位の誤差が生じます。

通信文に指定する項目

一意名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マネジャの識別子と一致していません。

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)は,処理中で使える状態ではありません。または,そのほかの要因で使える状態ではありません。

上記以外

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

注意事項

  1. MCFマネジャ定義のUAP共通定義(mcfmuap -c order)の指定によって,アプリケーションプログラムの起動順序が異なりますので注意してください。

  2. 一つのサービス関数で,TAMまたはDAMファイルの更新とアプリケーションプログラムを起動するSEND文を使い,起動先のアプリケーションで更新後のTAMまたはDAMファイルを参照させたい場合,TAMまたはDAMファイルを排他ありで参照してください。排他なしで参照した場合,更新前のデータが入力されることがあります。