Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/XMAP3編


5.1.1 入力メッセージの編集とアプリケーション名の決定

入力メッセージ編集UOCを作成すると,入力メッセージを編集したり,アプリケーション名を決定したりできます。TP1/NET/XMAP3は,UAPを起動するメッセージの最終セグメントを受信すると,入力メッセージ編集UOCを起動します。ただし,MCFイベント発生時とUAPからのアプリケーション起動時は,入力メッセージ編集UOCを起動しません。また,'C'で始まるオンラインコマンドを受信した場合にも,UOCを起動しません。

ユーザは,MCFメイン関数でUOC関数アドレスを設定します。また,コネクション定義(mcftalccn -e)でメッセージ編集用バッファグループ番号編集バッファ数を定義しておく必要があります。

入力メッセージ編集UOCの処理の流れを次の図に示します。

図5‒1 入力メッセージ編集UOCの処理の流れ

[図データ]

〈この項の構成〉

(1) 次画面名の決定

TP1/NET/XMAP3は,マッピング関数からのリターン情報の次画面名を,次画面名格納領域に設定し,入力メッセージ編集UOCに渡します。UOCで,次画面名を決定する必要がない場合には,次画面名格納領域に次画面名を設定する必要はありません。次画面名が6バイトより長い場合,MCFは次画面名不正としてメッセージログを出力し,該当するメッセージを破棄します。

(2) 入力メッセージの編集

入力メッセージをユーザ任意のメッセージ形式に編集できます。TP1/NET/XMAP3は,入力メッセージが格納されている受信バッファと,コネクション定義(mcftalccn -e)で指定した編集バッファを,リスト形式で入力メッセージ編集UOCに渡します。UOCでは,受信バッファと編集バッファを使って入力メッセージを編集します。受信バッファにあるメッセージをUAPに通知するか,編集バッファにあるメッセージをUAPに通知するかは,UOCからのリターンコードで選択します。

(3) アプリケーション名の決定

アプリケーション名格納領域にアプリケーション名を設定することで,ユーザ独自の方法でアプリケーション名を決定できます。メッセージの先頭からアプリケーション名を取り出し,アプリケーション名格納領域に設定します。ユーザ独自の方法でアプリケーション名を決定する必要がない場合には,アプリケーション名格納領域にアプリケーション名を設定する必要はありません。次の表にアプリケーション名格納領域の初期値を示します。

表5‒1 アプリケーション名格納領域の初期値

入力メッセージ編集コール条件

アプリケーション名格納領域の初期値

継続問い合わせ応答中

前回のUAPのdc_mcf_reply関数で指定された次起動アプリケーション名。UAPが次起動アプリケーション名を省略(ヌル文字を指定)した場合は,そのUAPのアプリケーション名を次起動アプリケーション名とします。

上記以外

TP1/NET/XMAP3が入力メッセージの先頭から取り出したアプリケーション名。不正なアプリケーション名の場合は,その文字列を最大9文字セットします。文字列が8文字以内の場合は,文字列のあとにヌル文字('0')が設定されます。

注※

継続問い合わせ応答の初回受信を含みます。

アプリケーション名の形式は,アプリケーション名格納領域の先頭から'0'の手前までの1〜8バイトの英数字です。先頭から9バイト目までに'0'がない場合は,アプリケーション名を不正として,ERREVT1を起動し,受信メッセージを破棄します。

(4) UOCエラーリターン処理

UOCからDCMCF_UOC_MSG_NGでリターンした場合,TP1/NET/XMAP3は該当メッセージを破棄し,メッセージログを出力します。また,その内容をオペレータインジケータに表示します。この場合,MCFイベントは起動しません。

(5) OpenTP1への組み込み方法

スタート関数(dc_mcf_svstart)を発行するMCFメイン関数に,作成したUOCの関数アドレスを設定します。入力メッセージ編集UOCの関数アドレスは任意に求められます。UOCのオブジェクトファイルは,スタート関数を発行するMCFメイン関数をコンパイル・リンケージすれば,TP1/NET/XMAP3の実行形式ファイルに結合されて実行できる状態になります。スタート関数の詳細については,「10.2 MCFメイン関数の作成」を参照してください。