dc_mcf_execap
名称
アプリケーションプログラムの起動
形式
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;
機能
UAP(SPP,またはMHP)から,apnamに設定したアプリケーション名のMHPを起動させます。トランザクション終了後またはサービス関数終了後,すぐに起動させることも,設定した時間経過後に起動させることもできます。
SPPからdc_mcf_execap関数を呼び出した場合は,SPPがトランザクションとして処理していることと,そのSPPのメイン関数でdc_mcf_open関数を呼び出していることが前提です。
MHPからdc_mcf_execap関数でMHPを起動させる場合,起動されたMHPで受け取るメッセージ入力元の論理端末名称は,最初に受信したメッセージ中の名称になります。さらに,そのMHPからdc_mcf_execap関数を呼び出した場合も,受け取るメッセージ入力元の論理端末名称は,最初にメッセージを受信したときの名称が引き渡されます。
SPPからdc_mcf_execap関数でMHPを起動する場合,起動されたMHPで受け取るメッセージ入力元の論理端末名称は「*」となります。さらに,そのMHPからdc_mcf_execap関数を呼び出した場合も,受け取るメッセージ入力元の論理端末名称は「*」となります。
送信できるメッセージの一つのセグメント長は,32キロバイトまでです。ただし,プロトコルによって,実際の最大長が小さいことがあります。詳細については,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。
起動させるMHPに渡すメッセージのセグメント形式を次に示します。Lは,バッファ形式1の場合は8バイト,バッファ形式2の場合は4バイトです。
UAPで値を設定する引数
●action
起動させるMHPに渡すセグメントが論理メッセージの最終セグメントかどうか,MHPをいつ起動させるか,および使うバッファ形式を,次の形式で設定します。
{DCMCFESI|DCMCFEMI}〔|{DCMCFJUST|DCMCFINTV|DCMCFTIME}〕
〔|{DCMCFBUF1|DCMCFBUF2}〕
●commform
DCNOFLAGSを設定します。
●resv01
ヌル文字を設定します。
●active
設定できる値の範囲は,0(0時0分0秒に開始)から86399(23時59分59秒に開始)までです。
activeに設定した値は,タイマ起動の場合にだけ有効となります。即時起動の場合は,activeに設定した値は無視されます。
一定の時間間隔で起動時間に達したかどうかを監視するので,activeに設定した時間と実際の起動時間には誤差が生じます。時間監視の精度は,MCF通信構成定義mcfttimの-tオプションのbtimオペランドに指定した時間監視間隔の値に依存します。
●apnam
起動させるMHPのアプリケーション名を設定します。アプリケーション名は最大8バイトです。アプリケーション名の最後にはヌル文字を付けます。
●comdata
起動させるMHPに渡す,メッセージのセグメントの内容を設定します。先頭セグメント,または中間セグメントの送信後,メッセージの送信の終了を連絡する場合にも,必ず設定してください。
●cdataleng
起動させるMHPに渡すセグメントの長さを設定します。先頭セグメント,または中間セグメントの送信後,メッセージの送信の終了を連絡する場合には,0を設定します。
リターン値
リターン値 | リターン値(数値) | 意味 |
---|---|---|
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の実行でリターンした場合> actionにDCMCFFRSTを設定したdc_mcf_receive関数を呼び出す前に,dc_mcf_execap関数を呼び出しています。 |
<SPPの実行でリターンした場合> トランザクションでないSPPの処理から,dc_mcf_execap関数を呼び出しています。 | ||
DCMCFRTN_72001 | -13001 | 設定したアプリケーション名は,MCFで定義していません。 |
アプリケーション名が間違っています。 | ||
MCFマネジャ定義の通信サービス定義(mcfmcname定義コマンド)に,アプリケーション起動プロセス名を指定していません。 | ||
アプリケーション起動プロセスに対応するMCFアプリケーション定義の環境定義(mcfaenv定義コマンドの-pオプション)に,アプリケーション起動プロセス識別子を指定していません。 | ||
アプリケーション環境定義(mcfaenv定義コマンドの-pオプション)で指定したアプリケーション起動プロセス識別子と,アプリケーション起動プロセスの通信構成定義(mcftenv定義コマンド)で指定する識別子が一致していません。 | ||
<非応答型のMHPを起動する場合>
| ||
<応答型および継続問い合わせ応答型のMHPを起動する場合>
| ||
<SPPからアプリケーションを起動する場合>
| ||
DCMCFRTN_72005 | -13005 | actionでDCMCFESIを設定したdc_mcf_execap関数で,メッセージのセグメント長に1バイト未満の値を設定しています。 |
DCMCFRTN_72007 | -13007 | dc_mcf_reply関数をすでに呼び出した 応答型(type=ans)のMHPから,応答型のMHPをdc_mcf_execap関数で起動させています。 |
dc_mcf_reply関数をすでに呼び出した 継続問い合わせ応答型(type=cont)のMHPから,継続問い合わせ応答型のMHPを dc_mcf_execap関数で起動させています。 | ||
DCMCFRTN_72009 | -13009 | 応答型(type=ans)のMHPから,dc_mcf_execap関数で応答型のMHPを2回以上起動させています。 |
継続問い合わせ応答型(type=cont)のMHPから,dc_mcf_execap関数で継続問い合わせ応答型のMHPを2回以上起動させています。 | ||
DCMCFRTN_72011 | -13011 | 応答型(type=ans)でないMHPから,dc_mcf_execap関数で応答型のMHPを起動させています。 |
継続問い合わせ応答型(type=cont)でないMHPから,dc_mcf_execap関数で継続問い合わせ応答型のMHPを起動させています。 | ||
DCMCFRTN_72016 | -13016 | actionに設定できない値を設定しています。 |
resv01に設定した値がヌル文字になっていません。 | ||
actionに設定したアプリケーション起動の方法が間違っています。 | ||
設定した引数が間違っています。 | ||
DCMCFRTN_72024 | -13024 | commformにDCNOFLAGSを設定していません。 |
DCMCFRTN_72026 | -13026 | actionのセグメント種別(最終セグメント DCMCFEMI,または最終セグメント以外 DCMCFESI)に設定した値が間違っています。 |
DCMCFRTN_72041 | -13041 | 最終セグメント以外(DCMCFESI)を設定したdc_mcf_execap関数を呼び出していないアプリケーションに,最終セグメント(DCMCFEMI送信セグメント長=0)を設定したdc_mcf_execap関数を呼び出しています。 |
DCMCFRTN_72044 | -13044 | dc_mcf_contend関数をすでに呼び出した 継続問い合わせ応答型(type=cont)のMHPから,dc_mcf_execap関数で 継続問い合わせ応答型のMHPを起動させています。 |
DCMCFRTN_72108 | -13108 | activeに設定できる範囲の値を超えています。 |
DCMCFRTN_72109 | -13109 | MCFアプリケーション定義で継続問い合わせ応答型(type=cont)と指定したMHPを,タイマ起動のdc_mcf_execap関数で起動させようとしています。 |
DCMCFRTN_77001 | -18001 | 起動しようとしたアプリケーションに対応する論理端末(LE)は,処理中で使えません。または使える論理端末がありません。 |
上記以外 | プログラムの破壊などによる,予期しないエラーが起こりました。 |
注意事項