5.1.1 入力メッセージの編集とアプリケーション名の決定
入力メッセージ編集UOCを作成すると,入力メッセージを編集したり,アプリケーション名を決定したりできます。TP1/NET/XMAP3は,UAPを起動するメッセージの最終セグメントを受信すると,入力メッセージ編集UOCを起動します。ただし,MCFイベント発生時とUAPからのアプリケーション起動時は,入力メッセージ編集UOCを起動しません。また,'C'で始まるオンラインコマンドを受信した場合にも,UOCを起動しません。
ユーザは,MCFメイン関数でUOC関数アドレスを設定します。また,コネクション定義(mcftalccn -e)でメッセージ編集用バッファグループ番号と編集バッファ数を定義しておく必要があります。
入力メッセージ編集UOCの処理の流れを次の図に示します。
(1) 次画面名の決定
TP1/NET/XMAP3は,マッピング関数からのリターン情報の次画面名を,次画面名格納領域に設定し,入力メッセージ編集UOCに渡します。UOCで,次画面名を決定する必要がない場合には,次画面名格納領域に次画面名を設定する必要はありません。次画面名が6バイトより長い場合,MCFは次画面名不正としてメッセージログを出力し,該当するメッセージを破棄します。
(2) 入力メッセージの編集
入力メッセージをユーザ任意のメッセージ形式に編集できます。TP1/NET/XMAP3は,入力メッセージが格納されている受信バッファと,コネクション定義(mcftalccn -e)で指定した編集バッファを,リスト形式で入力メッセージ編集UOCに渡します。UOCでは,受信バッファと編集バッファを使って入力メッセージを編集します。受信バッファにあるメッセージをUAPに通知するか,編集バッファにあるメッセージをUAPに通知するかは,UOCからのリターンコードで選択します。
(3) アプリケーション名の決定
アプリケーション名格納領域にアプリケーション名を設定することで,ユーザ独自の方法でアプリケーション名を決定できます。メッセージの先頭からアプリケーション名を取り出し,アプリケーション名格納領域に設定します。ユーザ独自の方法でアプリケーション名を決定する必要がない場合には,アプリケーション名格納領域にアプリケーション名を設定する必要はありません。次の表にアプリケーション名格納領域の初期値を示します。
入力メッセージ編集コール条件 |
アプリケーション名格納領域の初期値 |
---|---|
継続問い合わせ応答中 |
前回の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メイン関数の作成」を参照してください。