dc_mcf_send - メッセージの送信(C言語)
形式
ANSI C,C++の形式
#include <dcmcf.h>
int dc_mcf_send(DCLONG action, DCLONG commform, char *termnam,
char *mapname, char *senddata, DCLONG sdataleng,
char *pagecdat, DCLONG opcd)
K&R版Cの形式
#include <dcmcf.h>
int dc_mcf_send(action, commform, termnam, mapname, senddata,
sdataleng, pagecdat, opcd)
DCLONG action;
DCLONG commform;
char *termnam;
char *mapname;
char *senddata;
DCLONG sdataleng;
char *pagecdat;
DCLONG opcd;
機能
MCFで管理する論理端末に送信するメッセージのうち,一つのセグメントを送信要求します。必要なセグメントの数だけ送信要求を呼び出すことで,一つの論理メッセージを送信できます。
送信できる一つのセグメントの最大長は,32000バイトまでです。
送信領域の形式を次に示します。
TP1/NET/XMAP3の論理端末に送信する場合は,XMAP3で作成した出力論理マップ(拡張子が「.h」のファイル)を#includeで取り込み,出力論理マップの先頭アドレスをsenddataに指定します。出力論理マップの詳細については,マニュアル「画面・帳票サポートシステム XMAP3 プログラミングガイド 帳票編」,マニュアル「画面・帳票サポートシステム XMAP3 プログラミングガイド 画面編」,マニュアル「XMAP3 Version 5 画面・帳票サポートシステム XMAP3 プログラミングガイド」,またはマニュアル「XMAP3 Version 5 画面・帳票サポートシステム XMAP3 開発ガイド」を参照してください。コーディング例については,「付録G.1 コーディング例」を参照してください。
UAPで値を設定する引数
●action
送信するセグメント,優先か一般か,出力通番を付けるかどうか,使用するバッファ形式,および通知イベントを通知させるかどうかを,次の形式で設定します。
{DCMCFESI|DCMCFEMI}〔|{DCMCFNORM|DCMCFPRIO}〕〔|{DCMCFSEQ|DCMCFNSEQ}〕
|DCMCFBUF2〔|DCMCFLMAP〕〔|DCMCFSEVT〕
●commform
分岐送信を示す,DCMCFOUTを設定します。
●termnam
出力先の論理端末名称を設定します。論理端末名称は最大8バイトの長さです。論理端末名称の最後にはヌル文字を付けてください。
●mapname
マップ名を6文字以内で設定します。省略すると論理端末定義(mcftalcle)の-pオプションで設定したデフォルトマップ名が有効になります。必ずヌル文字で終了させてください。
●senddata
送信するセグメントの内容を設定した領域を設定します。TP1/NET/XMAP3の論理端末に送信する場合は,出力論理マップの先頭アドレスを設定します。メッセージの送信の終了を連絡する場合で,セグメントの内容がないときも,必ず設定してください。
●sdataleng
送信するセグメントの長さを設定します。TP1/NET/XMAP3の論理端末画面に送信する場合は,送信する論理マップ可変部・定数部の長さを設定します。先頭セグメントまたは中間セグメントの送信後,メッセージの送信の終了を連絡する場合には,0を設定してください。
●pagecdat
ページ制御機能を使ってPAGECモジュールの内容を変更する場合,ページ制御情報を設定したテーブルのアドレスを設定します。先頭セグメント送信時に設定したアドレスが有効となります。中間セグメントまたは最終セグメント送信時にアドレスを設定しても無効です。ページ制御機能を利用しない場合は,ヌルアドレスを設定してください。
ページ制御情報テーブルの形式は次のとおりです。
typedef struct {
int pagec_id;
char *pagec_name;
char *pagec_tbl;
int resv;
} PAGEC_DAT;
typedef struct {
unsigned short jst_pagec_leng; ……… PAGECインタフェース領域長
unsigned char jst_pagec_face; ……… 印刷面指定
unsigned char jst_pagec_stacctl; …… スタッカスライド動作指定
unsigned char jst_pagec_hopper[2]; … ホッパ選択
unsigned char jst_pagec_rsv1[2]; …… 予備1
unsigned char jst_pagec_stacker[2]; … スタッカ選択
unsigned char jst_pagec_rsv2[2]; …… 予備2
unsigned char jst_pagec_rsv3[2]; …… 予備3
unsigned char jst_pagec_rsv4[2]; …… 予備4
unsigned char jst_pagec_rsv5[8]; …… 予備5
unsigned char jst_pagec_rsv6[8]; …… 予備6
} JST_PAGEC_TABLE;
●opcd
DCNOFLAGSを設定します。
リターン値
リターン値 | リターン値 (数値) | 意味 |
---|---|---|
DCMCFRTN_00000 | 0 | 正常に終了しました。 |
DCMCFRTN_71002 | -12002 | メッセージキューへの出力処理中に障害が発生しました。 |
メッセージキューが閉塞されています。 | ||
メッセージキューが割り当てられていません。 | ||
セグメント長に32000バイトを超える値を設定しています。 | ||
MCFが終了処理中のため,メッセージの送信を受け付けられません。 | ||
DCMCFRTN_71003 | -12003 | メッセージキューが満杯です。 |
DCMCFRTN_71004 | -12004 | メッセージを格納するバッファをメモリ上に確保できませんでした。 |
DCMCFRTN_71108 | -12108 | メッセージを送信しようとしましたが,送信先の管理テーブルが確保できませんでした。 |
プロセスのローカルメモリが不足しています。 | ||
DCMCFRTN_72000 | -13000 | <MHPの実行でリターンした場合> 先頭セグメントを受信するdc_mcf_receive関数を呼び出す前に,dc_mcf_send関数を呼び出しています。 |
<SPPの実行でリターンした場合> トランザクションでないSPPの処理から,dc_mcf_send関数を呼び出しています。 | ||
DCMCFRTN_72001 | -13001 | termnamに設定した論理端末名称が間違っています。 |
termnamに設定した論理端末名称は,定義されていません。 | ||
該当する論理端末には一方送信メッセージを送信できません。 | ||
DCMCFRTN_72005 | -13005 | 先頭セグメントまたは中間セグメントを送信するdc_mcf_send関数で,長さが0バイトのセグメントを送信しています。 |
DCMCFRTN_72016 | -13016 | actionに設定したメッセージ種別(DCMCFNORMまたはDCMCFPRIO)の値が間違っています。 |
actionに設定した値が間違っています。 | ||
mapnameで設定したマップ名が8文字を超えています。 | ||
pagec_idに設定した値が間違っています。 | ||
PAGEC名が7文字を超えています。 | ||
opcdに設定した値が間違っています。 | ||
引数に設定した値に間違いがあります。 | ||
DCMCFRTN_72017 | -13017 | actionに設定した出力通番の要否(DCMCFSEQまたはDCMCFNSEQ)の値が間違っています。 |
DCMCFRTN_72024 | -13024 | commformに設定した値が間違っています。 |
DCMCFRTN_72026 | -13026 | actionに設定したセグメント種別(DCMCFESI,DCMCFEMI)の値が間違っています。 |
DCMCFRTN_72041 | -13041 | 単一セグメントを送信するdc_mcf_send関数で,長さが0バイト,またはマイナス値のセグメントを送信しています。 |
上記以外 | - | プログラムの破壊などによる,予期しないエラーが発生しました。 |