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

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

3.1.5 dc_mcf_resendメッセージの再送

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

(1) 形式

ANSI C,C++ の形式
 
#include<dcmcf.h>
int dc_mcf_resend(DCLONG action,DCLONG commform,char *rtermnam,
                  char *resv01, DCLONG oseqid, DCLONG orgseq,
                  char *otermnam, char *resv02, char *resv03,
                  char *resv04, DCLONG opcd)
 
K&R版C の形式
 
#include<dcmcf.h>
int dc_mcf_resend(action,commform,rtermnam,resv01,oseqid,
                  orgseq,otermnam,resv02,resv03,resv04,opcd)
DCLONG action;
DCLONG commform;
char   *rtermnam;
char   *resv01;
DCLONG oseqid;
DCLONG orgseq;
char   *otermnam;
char   *resv02;
char   *resv03;
char   *resv04;
DCLONG opcd;
 

(2) 機能

以前に送信したメッセージを,再び送信します。再送するメッセージは,以前に送信したメッセージとは別の,新しいメッセージとして扱います。どのメッセージを再送するかは,次に示す送信済みメッセージの情報で選択できます。

対象としたメッセージが以前に送信されていない場合は,dc_mcf_resend関数はリターン値DCMCFRTN_NOMSGを返します。また,メッセージキュー(ディスクキュー)内に対象のメッセージがない場合もリターン値DCMCFRTN_NOMSGを返します。このため,使用するメッセージキューの種別ではディスクキューを指定するとともに,メッセージキューファイルの容量および保持メッセージ(メッセージキューサービス定義のquegrpコマンドの-mオプションで指定)に余裕を持った値を設定してください。

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

(4) リターン値

リターン値 リターン値
(数値)
意味
DCMCFRTN_00000 0 正常に終了しました。
DCMCFRTN_NOMSG -11904 該当するメッセージがありません。
DCMCFRTN_BUF_SHORT -11905 再送するメッセージのセグメントの長さが,UAP共通定義(mcfmuap -e)で指定した値を超えています。
DCMCFRTN_71002 -12002 メッセージキューへの出力処理中に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
MCFが終了処理中のため,メッセージの再送を受け付けられません。
DCMCFRTN_71003 -12003 メッセージキューが満杯です。
DCMCFRTN_71004 -12004 メッセージを格納するバッファを,メモリ上に確保できませんでした。
DCMCFRTN_71108 -12108 メッセージを再送しようとしましたが,再送先の管理テーブルを確保できませんでした。
プロセスのローカルメモリが不足しています。
DCMCFRTN_72000 -13000 <MHPの実行でリターンした場合>
  • 先頭セグメントを受信するdc_mcf_receive関数を呼び出す前に,dc_mcf_resend関数を呼び出しています。
  • 非トランザクション属性のMHPから,dc_mcf_resend関数を呼び出しています。
<SPPの実行でリターンした場合>
トランザクションでないSPPの処理から,dc_mcf_resend関数を呼び出しました。
DCMCFRTN_72001 -13001 rtermnamまたはotermnamに設定した論理端末名称が間違っています。
dc_mcf_resend関数を呼び出せない論理端末を設定しています。
DCMCFRTN_72016 -13016 actionに設定したメッセージ種別(DCMCFNORMまたはDCMCFPRIO)の値が間違っています。
opcdに設定した値が間違っています。
oseqidに設定した値が間違っています。
resv01,resv02,resv03,およびresv04に設定した値が間違っています。
引数に設定した値に間違いがあります。
DCMCFRTN_72017 -13017 actionに設定した出力通番の要否(DCMCFSEQまたはDCMCFNSEQ)の値が間違っています。
DCMCFRTN_72024 -13024 commformに設定した値が間違っています。
上記以外 プログラムの破壊などによる,予期しないエラーが発生しました。
(凡例)
−:該当しません。

(5) 注意事項

メッセージの再送時には,MCFマネジャ定義のUAP共通定義(mcfmuap)の-eオプションおよび-lオプションの指定値に注意してください。

-eオプション
-eオプションでは,dc_mcf_resend関数で使用する作業領域の大きさを指定します。再送するメッセージのセグメントがこの作業領域より大きい場合,dc_mcf_resend関数はメッセージを再送しないで,リターン値DCMCFRTN_BUF_SHORTを返します。このため,-eオプションでは,セグメントの最大長よりも大きな値を設定しておいてください。
-lオプション
-lオプションでは,通番に関して指定します。指定内容によっては,メッセージキューファイル内に同じ通番を持つメッセージが同時に存在する場合があります。同じ通番を持つメッセージが存在する場合は,どのメッセージを再送するかは保証できません。