dc_mcf_reply - 応答メッセージの送信(C言語)
形式
ANSI C,C++の形式
#include <dcmcf.h>
int dc_mcf_reply(DCLONG action, DCLONG commform, char *resv01,
char *mapname, char *senddata, DCLONG sdataleng,
char *nextap, DCLONG opcd)
K&R版Cの形式
#include <dcmcf.h>
int dc_mcf_reply(action, commform, resv01, mapname, senddata,
sdataleng, nextap, opcd)
DCLONG action;
DCLONG commform;
char *resv01;
char *mapname;
char *senddata;
DCLONG sdataleng;
char *nextap;
DCLONG opcd;
機能
メッセージを入力した端末に応答送信するメッセージのうち,一つのセグメントを送信要求します。必要なセグメントの数だけ送信要求を呼び出すことで,一つの論理メッセージを応答送信できます。
送信できる一つのセグメントの最大長は,32000バイトまでです。
継続問い合わせ応答の処理形態で,nextapの指定は,最初のセグメントだけ有効です。また,dc_mcf_contend関数を呼び出す場合,nextapはヌル文字を指定してください。
送信領域の形式を次に示します。
TP1/NET/XMAP3の論理端末に応答する場合は,XMAP3で作成した出力論理マップ(拡張子が「.h」のファイル)を#includeで取り込み,出力論理マップの先頭アドレスをsenddataに指定します。出力論理マップの詳細については,マニュアル「画面・帳票サポートシステム XMAP3 プログラミングガイド 帳票編」,マニュアル「画面・帳票サポートシステム XMAP3 プログラミングガイド 画面編」,マニュアル「XMAP3 Version 5 画面・帳票サポートシステム XMAP3 プログラミングガイド」,またはマニュアル「XMAP3 Version 5 画面・帳票サポートシステム XMAP3 開発ガイド」を参照してください。コーディング例については,「付録G.1 コーディング例」を参照してください。
UAPで値を設定する引数
●action
送信する論理メッセージのセグメントと,使用するバッファ形式などを次の形式で指定します。
{DCMCFESI|DCMCFEMI}〔|{DCMCFSEQ|DCMCFNSEQ}〕|DCMCFBUF2〔|DCMCFLMAP〕
●commform
DCNOFLAGSを設定します。
●resv01
ヌル文字を設定します。
●mapname
マップ名を6文字以内で設定します。必ずヌル文字で終了させてください。
●senddata
応答送信領域を設定します。TP1/NET/XMAP3の論理端末画面に応答送信する場合は,出力論理マップの先頭アドレスを設定します。先頭セグメントまたは中間セグメントの応答送信後,応答メッセージの送信の終了を連絡する場合にも必ず設定してください。
●sdataleng
応答送信するセグメント長を設定します。TP1/NET/XMAP3の論理端末画面に応答送信する場合は,応答送信する論理マップ可変部・定数部の長さを設定します。先頭セグメントまたは中間セグメントの応答送信後,応答メッセージの送信の終了を連絡する場合には,0を設定してください。
●nextap
継続問い合わせ応答の処理形態で,次の端末入力メッセージによって起動するMHPを変更する場合に,そのアプリケーション名をヌル文字を含め最大9文字で設定します。
アプリケーション名を設定しない場合は,ヌル文字を設定します。
継続問い合わせ応答を引き継いだエラーイベントで,ヌル文字を設定した場合,継続問い合わせ応答を終了します(アプリケーションを起動した場合以外)。
その他の処理形態の場合は,ヌル文字を設定してください。
●opcd
DCNOFLAGSを設定します。
リターン値
リターン値 | リターン値 (数値) | 意味 |
---|---|---|
DCMCFRTN_00000 | 0 | 正常に終了しました。 |
DCMCFRTN_71002 | -12002 | メッセージキューへの出力処理中に障害が発生しました。 |
メッセージキューが閉塞されています。 | ||
メッセージキューが割り当てられていません。 | ||
セグメント長に32000バイトを超える値を設定しています。 | ||
MCFが終了処理中のため,応答メッセージの送信を受け付けられません。 | ||
DCMCFRTN_71003 | -12003 | メッセージキューが満杯です。 |
DCMCFRTN_71004 | -12004 | メッセージを格納するバッファをメモリ上に確保できませんでした。 |
DCMCFRTN_71108 | -12108 | 応答メッセージを送信しようとしましたが,応答送信先の管理テーブルを確保できませんでした。 |
プロセスのローカルメモリが不足しています。 | ||
DCMCFRTN_72000 | -13000 | <MHPの実行でリターンした場合>
|
<SPPの実行でリターンした場合> SPPではdc_mcf_reply関数を呼び出せません。 | ||
DCMCFRTN_72001 | -13001 | 該当する論理端末には,応答メッセージを送信できません。 |
DCMCFRTN_72005 | -13005 | 先頭セグメントまたは中間セグメントを送信するdc_mcf_reply関数で,長さが0バイトのセグメントを送信しています。 |
DCMCFRTN_72008 | -13008 | actionに最終セグメント(DCMCFEMI)を指定したdc_mcf_reply関数を,2回以上呼び出しました。 |
応答型のMHPからdc_mcf_execap関数を呼び出して応答型のほかのMHPを開始したあとで,dc_mcf_reply関数を呼び出しました。 | ||
継続問い合わせ応答型のMHPからdc_mcf_execap関数を呼び出して継続問い合わせ応答型のほかのMHPを開始したあとで,dc_mcf_reply関数を呼び出しました。 | ||
DCMCFRTN_72011 | -13011 | 継続問い合わせ応答中でないMHPが,次に起動するアプリケーション名を指定して,dc_mcf_reply関数を呼び出しました。 |
DCMCFRTN_72016 | -13016 | resv01に設定した値が間違っています。 |
mapnameに設定したマップ名が8文字を超えています。 | ||
opcdに設定した値が間違っています。 | ||
引数に設定した値に間違いがあります。 | ||
DCMCFRTN_72026 | -13026 | actionに設定したセグメント種別(DCMCFESIまたはDCMCFEMI)の値が間違っています。 |
DCMCFRTN_72041 | -13041 | 単一セグメントを送信するdc_mcf_reply関数で,長さが0バイト,またはマイナス値のセグメントを送信しています。 |
DCMCFRTN_72044 | -13044 | dc_mcf_contend関数を呼び出したあとで,次に起動するアプリケーション名を指定してdc_mcf_reply関数を呼び出しました。 |
DCMCFRTN_72045 | -13045 | nextapに,アプリケーション属性定義(mcfaalcap)で継続問い合わせ応答型と定義していないMHPのアプリケーション名を設定しています。 |
DCMCFRTN_72046 | -13046 | nextapにアプリケーション名を設定したdc_mcf_reply関数を,2回以上呼び出しました。 |
DCMCFRTN_72047 | -13047 | nextapに設定したアプリケーション名は,アプリケーション属性定義(mcfaalcap)に定義されていません。 |
上記以外 | - | プログラムの破壊などによる,予期しないエラーが発生しました。 |