Hitachi

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


CBLDCMCF('EXECAP ') − アプリケーションプログラムの起動(COBOL言語)

〈このページの構成〉

形式

PROCEDURE DIVISIONの指定

CALL 'CBLDCMCF' USING 一意名1 一意名2 一意名3

DATA DIVISIONの指定

01 一意名1.
   02 データ名A  PIC X(8) VALUE 'EXECAP  '.
   02 データ名B  PIC X(5).
   02 FILLER    PIC X(3).
   02 データ名C  PIC X(4) VALUE SPACE.
   02 データ名D  PIC X(4) VALUE SPACE.
   02 データ名E  PIC 9(8).
   02 データ名F  PIC 9(8).
   02 データ名G  PIC 9(9) COMP VALUE ZERO.
   02 データ名H  PIC X(4).
   02 データ名I  PIC X(4) VALUE SPACE.
   02 データ名J  PIC X(4) VALUE SPACE.
   02 データ名K  PIC X(4) VALUE SPACE.
   02 データ名L  PIC X(8) VALUE SPACE.
   02 データ名M  PIC X(4) VALUE SPACE.
   02 データ名N  PIC X(8).
   02 データ名O1 PIC X(4) VALUE SPACE.
   02 データ名O2 PIC 9(9) COMP VALUE ZERO.
   02 データ名O3 PIC 9(9) COMP VALUE ZERO.
   02 データ名O4 PIC X(1) VALUE SPACE.
   02 データ名O5 PIC X(1). 
   02 データ名P  PIC X(14) VALUE LOW-VALUE.
01 一意名2.
   02 データ名Q  PIC X(4) VALUE SPACE.
   02 データ名R  PIC X(8) VALUE SPACE.
   02 データ名S  PIC X(8) VALUE SPACE.
   02 データ名T  PIC X(6) VALUE SPACE.
   02 データ名U  PIC X(2) VALUE SPACE.
   02 データ名V  PIC X(28) VALUE LOW-VALUE.
01 一意名3.
   02 データ名W  PIC 9(x) COMP.
   02 データ名X  PIC X(x).
   02 データ名Y  PIC X(n).

機能

CBLDCMCF('EXECAP△△')は,TP1/NET/OSAS-NIFの場合,相手システムのアプリケーションプログラムを起動します。

また,システム内の通信ではUAP(SPPまたはMHP)から,データ名Nに設定したアプリケーション名のMHPを開始させます。

MHPに渡すメッセージの一つのセグメントの最大長は,32000バイトです。

SPPからCBLDCMCF('EXECAP△△')を呼び出す場合は,SPPがトランザクションとして処理していることと,そのSPPのメインプログラムでMCF環境のオープン文を呼び出していることが前提です。

システム内のアプリケーションプログラムの起動については,マニュアル「OpenTP1 プログラム作成の手引」またはマニュアル「OpenTP1 プログラム作成リファレンス COBOL言語編」を参照してください。

開始させるMHPに渡すセグメントの領域(一意名3で示す領域)の形式を次に示します。

[図データ]

UAPで値を設定するデータ領域

●データ名A

アプリケーションプログラムの起動を示す要求コード「VALUE 'EXECAP△△'」を設定します。

●データ名C,データ名D

空白を設定します。

●データ名E,データ名F

MCFで使用する領域です。

●データ名G

0を設定します。

●データ名H

開始させるMHPに渡すセグメントが,論理メッセージの最終セグメントかどうかを設定します。次のどちらかの値を設定してください。

VALUE 'ESI△'

先頭セグメントまたは中間セグメントを渡す場合に設定します。この値を設定したCBLDCMCF('EXECAP△△')文を呼び出した場合は,そのあとに必ずデータ名Hに「VALUE 'EMI△'」を設定したCBLDCMCF('EXECAP△△')文を呼び出してください。

VALUE 'EMI△'

最終セグメントを渡す場合,および論理メッセージが単一セグメントの場合に設定します。さらに,先頭セグメントまたは中間セグメントの引き渡し後,メッセージの引き渡しの終了を連絡する場合にもこの値を設定してください。

●データ名I,データ名J,データ名K,データ名L,データ名M

空白を設定します。

●データ名N

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

●データ名O1

空白を設定します。

●データ名O2,データ名O3

0を設定します。

●データ名O4

空白を設定します。

●データ名O5

使用するバッファ形式を設定します。

VALUE '1'

バッファ形式1を使用する場合に設定します。

VALUE '2'

バッファ形式2を使用する場合に設定します。

空白

省略されたものとして,「VALUE '1'」(バッファ形式1)が設定されます。

●データ名P

MCFで使用する領域です。

●データ名Q,データ名R,データ名S,データ名T,データ名U

空白を設定します。

●データ名V

MCFで使用する領域です。

●データ名W

【バッファ形式1の場合】 PIC 9(9)

起動するMHPに渡すセグメントの長さを設定します。先頭セグメントの引き渡し後,メッセージの引き渡しの終了を連絡する場合で,セグメントの内容がないときは,0を設定してください。

【バッファ形式2の場合】 PIC 9(4)

起動するMHPに渡すセグメントの長さ+4を設定します。

先頭セグメントの引き渡し後,メッセージの引き渡しの終了を連絡する場合で,セグメントの内容がないときは,4を設定してください。

●データ名X

【バッファ形式1の場合】 PIC X(8)

【バッファ形式2の場合】 PIC X(2)

MCFで使用する領域です。

●データ名Y

起動するMHPに渡すセグメント内容を設定します。

先頭セグメントの引き渡し後,メッセージの引き渡しの終了を連絡する場合で,セグメントの内容がないときも必ず設定してください。

OpenTP1から値が返されるデータ領域

●データ名B

ステータスコードが,5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

71002

メッセージキューへの入出力処理時に障害が発生しました。

メッセージキューが閉塞されています。

メッセージキューが割り当てられていません。

バッファ形式1の場合はデータ名Wに32000バイトを超える値を設定しています。バッファ形式2の場合はデータ名Wに32004バイトを超える値を設定しています。

MCFが終了処理中のため,データ名Nに設定したMHPを起動できません。

71003

メッセージキューが満杯です。

71004

メッセージを格納するバッファをメモリ上に確保できませんでした。

71108

MHPを開始しようとしましたが,開始しようとしたMHPの管理テーブルを確保できませんでした。

プロセスのローカルメモリが不足しています。

72000

<MHPの実行でリターンした場合>

先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に,CBLDCMCF('EXECAP△△')を呼び出しています。

<SPPの実行でリターンした場合>

トランザクションの処理でないSPPから,CBLDCMCF('EXECAP△△')を呼び出しています。

72001

データ名Nに設定したアプリケーション名は,MCFで定義されていません。

データ名Nに設定したアプリケーション名が間違っています。

MCFマネジャ定義の通信サービス定義(mcfmcname)に,アプリケーション起動プロセス名またはMCF通信プロセス名を指定していません。

アプリケーション起動プロセス,またはMCF通信プロセスに対応するアプリケーション環境定義(mcfaenv -p)に,アプリケーション起動プロセス識別子を指定していません。

アプリケーション環境定義(mcfaenv -p)で指定したアプリケーション起動プロセス識別子と,アプリケーション起動プロセス,またはMCF通信プロセスのMCF環境定義(mcftenv -s)で指定する識別子が一致していません。

<論理端末名称を指定してアプリケーションを起動する場合>

  • 起動先アプリケーションのアプリケーション属性定義(mcfaalcap -n)のlnameオペランドに論理端末を指定していません。

  • 起動先アプリケーションのアプリケーション属性定義(mcfaalcap -n)のlnameオペランドに指定した論理端末を,MCF通信プロセスの論理端末定義(mcftalcle)に定義していません。

  • 起動先アプリケーションのアプリケーション属性定義に指定した論理端末が,request型論理端末またはsend型論理端末ではありません。

  • 起動先アプリケーションのアプリケーション属性定義で指定した論理端末は,アプリケーション起動を使えません。

<コネクションIDを指定してアプリケーションを起動する場合>

  • 起動先アプリケーションのアプリケーション属性定義(mcfaalcap -n)のcnameオペランドにコネクションIDを指定していません。

  • 起動先アプリケーションのアプリケーション属性定義(mcfaalcap -n)のcnameオペランドに指定したコネクションIDを,MCF通信プロセスのコネクション定義(mcftalccn)に定義していません。

  • MCF通信プロセスの論理端末定義(mcftalcle)に,request型論理端末を指定していません。

<SPPからアプリケーションを起動する場合>

  • アプリケーション起動プロセス識別子を起動元のUAPのユーザサービス定義,またはユーザサービスデフォルト定義のmcf_psv_idオペランドに指定していません。

  • 起動元のUAPのユーザサービス定義,またはユーザサービスデフォルト定義のmcf_psv_idオペランドに指定しているアプリケーション起動プロセス識別子が,アプリケーション起動プロセス,またはMCF通信プロセスのMCF環境定義(mcftenv -s),およびアプリケーション環境定義(mcfaenv -p)で指定しているアプリケーション起動プロセス識別子と一致していません。

  • 起動元のUAPのユーザサービス定義,またはユーザサービスデフォルト定義のmcf_mgridオペランドに指定しているMCFマネジャ識別子が,アプリケーション起動プロセスが属しているMCFマネジャの識別子と一致していません。

72005

<データ名HでVALUE 'ESI△'を設定した場合>

バッファ形式1の場合はデータ名Wに0バイト,またはマイナス値を設定しています。バッファ形式2の場合はデータ名Wに0から4バイト,またはマイナス値を設定しています。

72007

CBLDCMCF('REPLY△△△')をすでに呼び出した応答型(type=ans)のMHPから,応答型のMHPをCBLDCMCF('EXECAP△△')で起動させています。

CBLDCMCF('REPLY△△△')をすでに呼び出した継続問い合わせ応答型(type=cont)のMHPから,継続問い合わせ応答型のMHPをCBLDCMCF('EXECAP△△')で起動させています。

72009

応答型(type=cont)のMHPから,CBLDCMCF('EXECAP△△')で応答型のMHPを2回以上起動させています。

継続問い合わせ応答型(type=cont)のMHPから,CBLDCMCF('EXECAP△△')で継続問い合わせ応答型のMHPを2回以上起動させています。

72011

継続問い合わせ応答型(type=cont)でないMHPから,CBLDCMCF('EXECAP△△')で継続問い合わせ応答型のMHPを起動させています。

72016

データ名O1,データ名O2,データ名O3に設定した値が間違っています。

データ名Pに設定した値が間違っています。

データ名Vに設定した値が間違っています。

72024

データ名Qに設定した値が間違っています。

72026

データ名Hに設定した値が間違っています。

72028

データ名Aに設定した値が間違っています。

72041

<データ名HでVALUE 'EMI△'を設定した場合>

  • バッファ形式1の場合はデータ名Wに0バイト,またはマイナス値を設定しています。バッファ形式2の場合はデータ名Wに0から4バイト,またはマイナス値を設定しています。

  • データ名HにVALUE 'ESI△'を設定したCBLDCMCF('EXECAP△△')を呼び出さないで,メッセージの引き渡しの終了を連絡しています。

77001

起動しようとするアプリケーションに対応する論理端末は,現在仕掛り中で使用できません。または,使用できる論理端末がありません。

上記以外

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