Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Financial Service Platform プログラム作成の手引


1.7.5 TP1/FSP(全銀RC)関数のコールタイミングについて

製品略称

API名

トランザクション種別

TP1/EE

MCP

TP1/FSP

MI

ME

MN

E1

E2

E3

E4

ES

ER

TM

RL

UT

CU

JI

BS

TZ

TP1/FSP

全銀RC

ee_zrc_snd_message

×

×

×

×

×

×

×

×

×

×

×

×

ee_zrc_snd_response

×

×

×

×

×

×

×

×

×

×

×

×

×

×

ee_zrc_errtrns

×

×

×

×

×

×

×

×

×

×

×

×

×

×

×

(凡例)

○:発行可

△:一部発行可(詳細は,各コマンドの説明を参照)

×:発行可能なトランザクションではないため発行不可

発行不可のタイミングで関数を発行するとエラーとなり,APIはリターン値に「EEZRCER_CONDITION」または「EEZRCER_ALREADY」を設定してリターンします。

〈この項の構成〉

(1) 送信関数(ee_zrc_snd_message)

一部発行可のトランザクション種別について,次の表に示します。

トランザクション種別

内容

発行可否

MN

ee_zrcから始まるTP1/FSP(全銀RC)のサービス

×

上記以外

RL

ee_zrcから始まるTP1/FSP(全銀RC)のサービス

×

上記以外

(凡例)

○:発行可

×:発行不可

発行不可のタイミングで関数を発行するとエラーとなり,APIはリターン値に「EEZRCER_CONDITION」を設定してリターンします。

機能

全銀RCセンタへ情報メッセージを送信します。

形式

ANSI C,C++の形式

#include <eezrc.h>
int  ee_zrc_snd_message(char *termnam, char *senddata, int sdataleng, char *lcn, int mcp_rtn);

UAPで値を設定する引数

termnam

出力先の論理端末名を設定します。論理端末名の長さは最大8バイトです。論理端末名の後ろにはヌル文字を付けてください。

senddata

送信するセグメントの内容を設定した領域を設定します。

sdataleng

送信するセグメントの長さを設定します。設定できる値は65〜1,564になります

(サブレイヤヘッダ16バイト,業務プロトコルヘッダ48バイト,テキスト長最大1,500バイト)。

図1‒52 送信するセグメントの長さ

[図データ]

サブレイヤヘッダと業務プロトコルヘッダについてはTP1/FSP(全銀RC)が電文を作成します。MCP使用領域,サブレイヤヘッダ,業務プロトコルヘッダ,テキスト部の全体の領域を確保し,テキスト部に情報をセットして関数をコールしてください。

lcn

送信する電文のLCN番号をキャラクタ形式2バイトで設定します。

TP1/FSP(全銀RC)で値を設定する引数

mcp_rtn

リターン値がEEZRCER_MCPSENDの場合,エラーとなったee_mcp_send関数のリターン値を設定します。

ee_zrc_snd_message関数のリターン値

リターン値

意味

EEZRC_OK

正常に終了しました。

EEZRCER_MCPSEND

ee_mcp_send関数でエラーが発生しました(mcp_rtn引数を参照可能)。

EEZRCER_TERM_HOLD

termnamに設定した論理端末名が閉塞中です。

EEZRCER_CON_CLOSE

termnamに設定した論理端末名に該当するTCPコネクションが切断中です。

EEZRCER_ARGUMENT

senddataに設定した値が間違っています。

EEZRCER_LCN_WAIT

lcnに設定したLCN番号は送達管理待ち状態です。

EEZRCER_MESSAGE_TOO_BIG

sdatalengにプロトコル最大長を超える値を設定しています。

EEZRCER_MESSAGE_TOO_SHORT

sdatalengに64以下の値を設定しています。

EEZRCER_LE_NAME

termnamに設定した値が間違っています。

EEZRCER_MCPRTN

mcp_rtnに設定した値が間違っています。

EEZRCER_TP1_FUNCTION

OpenTP1内部関数でエラー発生しました。

EEZRCER_ZRC_NOT_DEFINED

全銀RCプロトコルが定義されていません。

EEZRCER_TIMER

タイマ監視の設定でエラーが発生しました。

EEZRCER_LCN

lcnに設定した値が間違っています。

EEZRCER_CONDITION

発行条件が不正です。

  • ee_trn_rollback_mark関数が発行済みです。

  • このAPI関数を呼び出せるトランザクションではありません。

(2) 送達管理電文送信関数

一部発行可のトランザクション種別について,次の表に示します。

トランザクション種別

内容

発行可否

MN

制御ミドル関数データ領域の送達管理メッセージ送信フラグ(データ名BE)がX'01'

上記以外

×

E3

全銀RCサービス拡張トランザクションインタフェース情報の送達管理メッセージ送信フラグがX'01'※1

上記以外

×

(凡例)

○:発行可

×:発行不可

発行不可のタイミングで関数を発行するとエラーとなり,APIはリターン値に「EEZRCER_CONDITION」または「EEZRCER_ALREADY」を設定してリターンします。※2

注※1

送達管理メッセージがすでに送信済みの場合,送達管理メッセージ送信フラグはX'00'となります。

注※2

ee_trn_retry_rollback関数発行前に送達管理電文送信関数を発行し,ee_trn_retry_rollback関数発行後に再度,送達管理電文送信関数を発行した場合,APIはリターン値に「EEZRCER_ALREADY」を設定してリターンします。

機能

全銀RCセンタへ送達管理メッセージを送信します。

形式

ANSI C,C++の形式

#include <eezrc.h>
int  ee_zrc_snd_response(char rsp_type, EELONG flags);

UAPで値を設定する引数

rsp_type

送信する送達管理メッセージの応答種別を次の形式で指定します。

EEZRC_SNDACK:ACKの送達管理メッセージを送信する場合に指定します。

EEZRC_SNDNAK:NAKの送達管理メッセージを送信する場合に指定します。

flags

EENOFLAGSを設定します。

ee_zrc_snd_response関数のリターン値

リターン値

意味

EEZRC_OK

正常に終了しました。

EEZRCER_MCPSEND

MCP電文送信関数でエラーが発生しました。

本エラー時はコネクションを解放します。

EEZRCER_TERM_HOLD

論理端末が閉塞中です。

EEZRCER_CON_CLOSE

TCPコネクションが確立状態ではありません。

EEZRCER_TP1_FUNCTION

OpenTP1内部関数でエラー発生しました。

EEZRCER_ZRC_NOT_DEFINED

全銀RCプロトコルが定義されていません。

EEZRCER_CONDITION

発行条件が不正です。

  • このAPI関数を呼び出せるトランザクションではありません。

  • 情報メッセージではないメッセージに対してこの関数を発行しました。

  • eemcpcn定義-zオプションrspmodeオペランドがautoのコネクションで本関数を実行しました。

EEZRCER_ALREADY

送達管理メッセージは送信済みです。

EEZRCER_ARGUMENT

引数に設定した値が間違っています。

(3) ERRTRNS関数(ee_zrc_errtrns)

業務UAPサービスのERRTRNSサービスでERRTRNSの起動を確認した場合,全銀RCの電文送信に関するERRTRNSであった場合に本関数をコールしてください。

機能

TP1/FSP(全銀RC)にERRTRNSの発生を通知します。TP1/FSP(全銀RC)では送信に失敗したメッセージの送達管理待ちタイマのキャンセル処理を実施します。

形式

ANSI C,C++の形式

void  ee_zrc_errtrns (char *in, EEULONG *in_len, char *out, EEULONG *out_len,
EERPC_INTERFACE_TBL *trninf);
UAPで値を設定する引数
  • in

  • in_len

  • out

  • out_len

  • trninf

業務UAPサービスが受信したERRTRNSの引数情報をそのままセットしてください。