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

[目次][用語][索引][前へ][次へ]

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

<この項の構成>
(1) 形式
(2) 機能
(3) UAPで値を設定する引数
(4) リターン値

(1) 形式

ANSI C, C++ の形式
 
#include <dcmcf.h>
int dc_mcf_execap(DCLONG action, DCLONG commform, char *resv01,
                  DCLONG active, char *apnam, char *comdata,
                  DCLONG cdataleng)
 
K&R版C の形式
 
#include <dcmcf.h>
int dc_mcf_execap(action,commform,resv01,active,apnam,comdata,
                  cdataleng)
DCLONG          action;
DCLONG          commform;
char            *resv01;
DCLONG          active;
char            *apnam;
char            *comdata;
DCLONG          cdataleng;
 

(2) 機能

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

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

SPPからdc_mcf_execap関数を呼び出す場合は,SPPがトランザクションとして処理していることと,そのSPPのメイン関数でdc_mcf_open関数を呼び出していることが前提です。

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

開始させるMHPに渡すメッセージのセグメント形式を次に示します。Lは,バッファ形式1の場合は8バイト,バッファ形式2の場合は4バイトです。

[図データ]

(3) UAPで値を設定する引数

(4) リターン値

リターン値 リターン値
(数値)
意味
DCMCFRTN_00000 0 正常に終了しました。
DCMCFRTN_71002 -12002 メッセージキューへの入出力処理時に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
セグメント長に32000バイトを超える値を設定しています。
MCFが終了処理中のため,apnamに設定したMHPを起動できません。
DCMCFRTN_71003 -12003 メッセージキューが満杯です。
DCMCFRTN_71004 -12004 メッセージを格納するバッファをメモリ上に確保できませんでした。
DCMCFRTN_71108 -12108 apnamに設定したアプリケーション名のMHPを開始しようとしましたが,開始しようとしたMHPの管理テーブルを確保できませんでした。
プロセスのローカルメモリが不足しています。
DCMCFRTN_72000 -13000 <MHPの実行でリターンした場合>
先頭セグメントを受信するdc_mcf_receive関数を呼び出す前に,dc_mcf_execap関数を呼び出しました。
<SPPの実行でリターンした場合>
トランザクションの処理でないSPPから,dc_mcf_execap関数を呼び出しました。
DCMCFRTN_72001 -13001 apnamに設定したアプリケーション名は,MCFで定義されていません。
apnamに設定したアプリケーション名が間違っています。
MCFマネジャ定義の通信サービス定義(mcfmcname)に,アプリケーション起動プロセス名またはMCF通信プロセス名を指定していません。
アプリケーション起動プロセスまたはMCF通信プロセスに対応するMCFアプリケーション定義の環境定義(mcfaenv -p)に,アプリケーション起動プロセス識別子を指定していません。
アプリケーション環境定義(mcfaenv -p)で指定したアプリケーション起動プロセス識別子と,アプリケーション起動プロセスまたはMCF通信プロセスのMCF通信構成定義(mcftenv -s)で指定する識別子が一致していません。
<論理端末名称を指定してアプリケーションを起動する場合>
  • 起動先アプリケーションのアプリケーション属性定義(mcfaalcap -n)のlnameオペランドに論理端末を指定していません。
  • 起動先アプリケーションのアプリケーション属性定義(mcfaalcap -n)のlnameオペランドに指定した論理端末を,MCF通信プロセスのMCF通信構成定義(mcftalcle)に定義していません。
  • 起動先アプリケーションのアプリケーション属性定義に指定した論理端末が,request型論理端末またはsend型論理端末ではありません。
  • 起動先アプリケーションのアプリケーション属性定義で指定した論理端末は,アプリケーション起動を使えません。
DCMCFRTN_72001 -13001 <コネクションIDを指定してアプリケーションを起動する場合>
  • 起動先アプリケーションのアプリケーション属性定義(mcfaalcap -n)のcnameオペランドにコネクションIDを指定していません。
  • 起動先アプリケーションのアプリケーション属性定義(mcfaalcap -n)のcnameオペランドに指定したコネクションIDを,MCF通信プロセスのMCF通信構成定義(mcftalccn)に定義していません。
  • MCF通信プロセスのMCF通信構成定義(mcftalcle)に,request型論理端末を指定していません。
<SPPからアプリケーションを起動する場合>
  • アプリケーション起動プロセス識別子を起動元のUAPのユーザサービス定義,またはユーザサービスデフォルト定義のmcf_psv_idオペランドに指定していません。
  • 起動元のUAPのユーザサービス定義,またはユーザサービスデフォルト定義のmcf_psv_idオペランドに指定しているアプリケーション起動プロセス識別子が,アプリケーション起動プロセス,またはMCF通信プロセスのMCF通信構成定義(mcftenv -s),およびアプリケーション環境定義(mcfaenv -p)で指定しているアプリケーション起動プロセス識別子と一致していません。
  • 起動元のUAPのユーザサービス定義,またはユーザサービスデフォルト定義のmcf_mgridオペランドに指定しているMCFマネジャ識別子が,アプリケーション起動プロセスが属しているMCFマネジャの識別子と一致していません。
DCMCFRTN_72005 -13005 先頭セグメントまたは中間セグメントを渡すdc_mcf_execap関数で,長さが0バイトのセグメントを渡しています。
DCMCFRTN_72007 -13007 dc_mcf_reply関数をすでに呼び出した応答型(type=ans)のMHPから,応答型のMHPをdc_mcf_execap関数で起動させています。
dc_mcf_reply関数をすでに呼び出した継続問い合わせ応答型(type=cont)のMHPから,継続問い合わせ応答型のMHPをdc_mcf_execap関数で起動させています。
DCMCFTRN_72009 -13009 応答型(type=ans)のMHPから,dc_mcf_execap関数で応答型のMHPを2回以上起動させています。
継続問い合わせ応答型(type=cont)のMHPから,dc_mcf_execap関数で継続問い合わせ応答型のMHPを2回以上起動させています。
DCMCFTRN_72011 -13011 応答型(type=ans)のMHPから,dc_mcf_execap関数で応答型のMHPを2回以上起動させています。
継続問い合わせ応答型(type=cont)でないMHPから,dc_mcf_execap関数で継続問い合わせ応答型のMHPを2回以上起動させています。
DCMCFRTN_72016 -13016 actionに設定した値が間違っています。
resv01に設定した値が間違っています。
引数に設定した値に間違いがあります。
DCMCFRTN_72024 -13024 commformに設定した値が間違っています。
DCMCFRTN_72026 -13026 actionに設定したセグメント種別(DCMCFESIまたはDCMCFEMIを設定)の値が間違っています。
DCMCFRTN_72041 -13041 単一セグメントを渡すdc_mcf_execap関数で,長さが0バイトのセグメントを渡しています。
DCMCFRTN_77001 -18001 起動しようとするアプリケーションに対応する論理端末は,現在仕掛り中で使用できません。または,使用できる論理端末がありません。
上記以外 プログラムの破壊などによる,予期しないエラーが発生しました。
(凡例)
−:該当しません。