5.4.6 入力メッセージ編集UOC
入力メッセージ編集UOCは,一方受信メッセージまたは同期送受信の受信メッセージの編集をするUOCです(論理メッセージをユーザ任意の形式に編集します)。また,受信した論理メッセージを基に,ユーザ任意のサービス名を決定できます。
UOCは,UAPを起動するメッセージのセグメントを受信すると起動します。ただし,UAPからUAP(タイマトランザクションなど)を起動する場合は,このUOCは起動しません。
入力メッセージ編集UOCはプロトコル種別がTCP/IP,またはUDPの場合に使用できます。
- 〈この項の構成〉
(1) 入力メッセージの編集(一方受信メッセージおよび同期送受信の受信メッセージ)
受信したメッセージが格納されている受信バッファ,および定義で指定した編集バッファをリスト形式で引き渡します。UOCでは,これらのバッファを使用して,入力メッセージを編集できます。
UAPに通知するメッセージのセグメントは,受信バッファまたは編集バッファのどちらかに格納されたセグメントを使用できます。どちらを使用するかは,UOCから返されるリターンコードによって選択できます。
また,入力メッセージが不要な場合は,入力メッセージを破棄できます。
入力メッセージは,プロトコル種別がTCP/IPの場合はメッセージの先頭から,UDPの場合は制御ヘッダの先頭から引き渡します。制御ヘッダについては,「5.2 ee_mcp_send - 非同期一方送信メッセージの送信」の「UAPで値を設定する引数」を参照してください。
(2) サービス名の決定(一方受信メッセージ)
入力メッセージ編集UOCが登録されている場合,論理メッセージの受信と同時にサービス名を決定できます。
UOCでサービス名を決定する場合,サービス名の形式は,サービス名格納領域の先頭から,'\0'の手前までの1〜31バイトの識別子です。先頭から32バイト目までに'\0'がないときは,サービス名を不正として,エラートランザクション(ERRTRN1)を起動します。ただし,エラートランザクション(ERRTRN1)に通知するサービス名は先頭から31文字で31文字目に「*」を設定します。
(3) 入力メッセージプライオリティの決定(一方受信メッセージ)
入力メッセージ編集UOCが登録されている場合,入力メッセージのプライオリティ(優先度)を決定できます。
UOCで優先指定をした場合,該当するサービス(入力キュー)に登録されている通常メッセージよりも,優先的にアプリケーションを起動します。入力メッセージ編集UOCが登録されていない場合は,すべて通常メッセージ扱いになります。
(4) UOCパラメタ不正の場合の処理
UOCで設定したパラメタに不正があった場合,MCPはメッセージログを出力します。そのあと,MCP後処理トランザクションを起動して,論理端末を閉塞します。
(5) UOCリターン処理
UOCからEEMCP_UOC_MSG_NGでエラーリターンした場合,MCPはメッセージログを出力して,MCP後処理トランザクションを起動します。
(6) メッセージの破棄(一方受信メッセージ)
UOCからEEMCP_UOC_MSG_DESTRUCTでリターンした場合,MCPは入力メッセージを破棄します。サービスは起動しません。
同期送受信の受信メッセージの場合,破棄は指定しないでください。破棄を指定した場合,正常にメッセージを受信したとして扱います(EEMCP_UOC_MSG_OK_RCVと同じ扱いです)。