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

入力メッセージ編集UOCは,受信した論理メッセージをユーザ任意の形式に変換します。そして受信した論理メッセージを基に,ユーザ任意のアプリケーション名を決定できます。

UOCは,HSC1手順またはHSC2手順(非同期モード)の場合,UAPを起動するメッセージの最終セグメントを受信すると起動します。HSC2手順(同期モード)の場合は,相手システムとの接続が完了したとき,または最終セグメントを受信したときに起動します。ただし,MCFイベント発生時とUAPからのアプリケーションプログラム起動時には,UOCは起動しません。また,アプリケーション名は,相手システムとの回線が接続されたときだけに決定します。

ユーザは,MCFメイン関数でUOC関数アドレスを設定します。また,必要に応じてMCF通信構成定義(mcftalccn -e)で,メッセージ編集用バッファグループ番号を定義します。

また,通常テキスト受信時,通常テキストのデータはEBCDIKコードのため,必要であれば,JIS8コードに変換するようにUOCを作成してください。

<この項の構成>
(1) 入力メッセージの編集
(2) アプリケーション名の決定
(3) UOCエラーリターン処理
(4) UOCパラメタ不正の場合の処理
(5) OpenTP1への組み込み方法

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

受信したメッセージが格納されている受信バッファ,およびMCF通信構成定義で指定した編集バッファをリスト形式で引き渡します。UOCでは,これらのバッファを使用して,入力メッセージの編集ができます。

また,UAPに通知するメッセージのセグメントは,受信バッファ,または編集バッファのどちらかに格納されたものを使用できます。どちらのセグメントを使用するかは,UOCから返されるリターンコードによって選択できます。

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

該当するMCFに入力メッセージ編集UOCが登録されている場合,論理メッセージの受信と同時にアプリケーション名を決定できます。

UOCでアプリケーション名を決定する場合,アプリケーション名の形式は,アプリケーション名格納領域の先頭から,'¥0'の手前までの1~8バイトの英数字です。先頭から9バイト目までに'¥0'がないときは,アプリケーション名を不正とし,不正アプリケーション名検出通知イベント(ERREVT1)を起動します。

UOCが登録されていない,または登録されていてもアプリケーション名を決定しない場合,MCF通信構成定義で指定したアプリケーション名を採用します。MCF通信構成定義でも指定されていないときは,アプリケーション名を不正とし,不正アプリケーション名検出通知イベント(ERREVT1)を起動します。

HSC2手順(同期モード)の場合,相手システムとの回線接続時に,起動するアプリケーション名を決定します。回線接続中のメッセージ受信中には,このUOCでアプリケーション名の変更はできません。

アプリケーション名の決定の処理を次の図に示します。

図5-2 アプリケーション名の決定の処理

[図データ]

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

UOCからDCMCF_UOC_MSG_NGでリターンした場合,TP1/NET/HSCは相手システムには通知しません。MCFはメッセージログを出力し,障害通知イベント(CERREVT)を起動します。

UOCで障害を検出し,エラー処理UAPを起動したい場合は,ユーザ任意のエラー処理UAPのアプリケーション名を設定します。このとき,MCFにはDCMCF_UOC_MSG_OK(_RCV)でリターンします。この場合,MCFは正常なメッセージとして処理するため,受信メッセージの破棄などの障害処理はしません。

(4) UOCパラメタ不正の場合の処理

UOCで設定したパラメタに不正があった場合,MCFはメッセージログを出力し,障害通知イベント(CERREVT)を起動します。

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

スタート関数(dc_mcf_svstart)を発行するMCFメイン関数に,作成したUOCの関数アドレスを設定します。入力メッセージ編集UOCの関数アドレスは任意に決められます。UOC関数をコンパイルして生成したUOCオブジェクトファイルを,UOC関数を登録したMCFメイン関数と結合して,TP1/NET/HSCの実行形式プログラムを生成します。MCFメイン関数の詳細については,「8.2 MCFメイン関数の作成」を参照してください。