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〕

DCMCFESI
先頭セグメントまたは中間セグメントを応答送信する場合に設定します。
DCMCFEMI
単一セグメントまたは最終セグメントを応答送信する場合や,先頭セグメントまたは中間セグメントの応答送信後に応答メッセージの送信の終了を連絡する場合に設定します。
DCMCFSEQ
出力通番を付ける場合に設定します。
DCMCFNSEQ
出力通番を付けない場合に設定します。
DCMCFBUF2
バッファ形式2のバッファを示すDCMCFBUF2を設定します。
DCMCFLMAP
論理マップの情報だけを使用してマッピングをする場合に設定します。論理マップと物理マップの両方の情報を使用する場合は設定しません。

●commform

DCNOFLAGSを設定します。

●resv01

ヌル文字を設定します。

●mapname

マップ名を6文字以内で設定します。必ずヌル文字で終了させてください。

●senddata

応答送信領域を設定します。TP1/NET/XMAP3の論理端末画面に応答送信する場合は,出力論理マップの先頭アドレスを設定します。先頭セグメントまたは中間セグメントの応答送信後,応答メッセージの送信の終了を連絡する場合にも必ず設定してください。

●sdataleng

応答送信するセグメント長を設定します。TP1/NET/XMAP3の論理端末画面に応答送信する場合は,応答送信する論理マップ可変部・定数部の長さを設定します。先頭セグメントまたは中間セグメントの応答送信後,応答メッセージの送信の終了を連絡する場合には,0を設定してください。

●nextap

継続問い合わせ応答の処理形態で,次の端末入力メッセージによって起動するMHPを変更する場合に,そのアプリケーション名をヌル文字を含め最大9文字で設定します。

アプリケーション名を設定しない場合は,ヌル文字を設定します。

継続問い合わせ応答を引き継いだエラーイベントで,ヌル文字を設定した場合,継続問い合わせ応答を終了します(アプリケーションを起動した場合以外)。

その他の処理形態の場合は,ヌル文字を設定してください。

●opcd

DCNOFLAGSを設定します。

リターン値

リターン値リターン値
(数値)
意味
DCMCFRTN_000000正常に終了しました。
DCMCFRTN_71002-12002メッセージキューへの出力処理中に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
セグメント長に32000バイトを超える値を設定しています。
MCFが終了処理中のため,応答メッセージの送信を受け付けられません。
DCMCFRTN_71003-12003メッセージキューが満杯です。
DCMCFRTN_71004-12004メッセージを格納するバッファをメモリ上に確保できませんでした。
DCMCFRTN_71108-12108応答メッセージを送信しようとしましたが,応答送信先の管理テーブルを確保できませんでした。
プロセスのローカルメモリが不足しています。
DCMCFRTN_72000-13000<MHPの実行でリターンした場合>
  • 先頭セグメントを受信するdc_mcf_receive関数を呼び出す前に,dc_mcf_reply関数を呼び出しています。
  • 応答型でないMHPから,dc_mcf_reply関数を呼び出しています。
<SPPの実行でリターンした場合>
SPPではdc_mcf_reply関数を呼び出せません。
DCMCFRTN_72001-13001該当する論理端末には,応答メッセージを送信できません。
DCMCFRTN_72005-13005先頭セグメントまたは中間セグメントを送信するdc_mcf_reply関数で,長さが0バイトのセグメントを送信しています。
DCMCFRTN_72008-13008actionに最終セグメント(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-13016resv01に設定した値が間違っています。
mapnameに設定したマップ名が8文字を超えています。
opcdに設定した値が間違っています。
引数に設定した値に間違いがあります。
DCMCFRTN_72026-13026actionに設定したセグメント種別(DCMCFESIまたはDCMCFEMI)の値が間違っています。
DCMCFRTN_72041-13041単一セグメントを送信するdc_mcf_reply関数で,長さが0バイト,またはマイナス値のセグメントを送信しています。
DCMCFRTN_72044-13044dc_mcf_contend関数を呼び出したあとで,次に起動するアプリケーション名を指定してdc_mcf_reply関数を呼び出しました。
DCMCFRTN_72045-13045nextapに,アプリケーション属性定義(mcfaalcap)で継続問い合わせ応答型と定義していないMHPのアプリケーション名を設定しています。
DCMCFRTN_72046-13046nextapにアプリケーション名を設定したdc_mcf_reply関数を,2回以上呼び出しました。
DCMCFRTN_72047-13047nextapに設定したアプリケーション名は,アプリケーション属性定義(mcfaalcap)に定義されていません。
上記以外プログラムの破壊などによる,予期しないエラーが発生しました。
(凡例)
-:該当しません。