2.4.2 分岐送信形態のメッセージ
send関数によって指定されたメッセージを一方送信メッセージとして出力キューに登録します。TP1/NET/XMAP3は,この一方送信メッセージを取り出して表示印刷サービスに送信します。
入力元論理端末へメッセージを送信する場合,応答メッセージを優先します。一方送信メッセージは,応答メッセージをすべて送信したあとに送信します。
画面に対するメッセージの場合は,一方送信メッセージが送信済みであることを出力キューに連絡します。これを送信完了処理と呼びます。プリンタに対するメッセージの場合は,TP1/NET/XMAP3は表示印刷サービスからの送信後印刷完了イベントを待ちます。そのイベントを受け取ったあと,プリンタの排他を解除してから一方送信メッセージが送信済みであることを出力キューに連絡します。UAPは,表示印刷サービスの属性を意識しないで送信要求できます。
次の場合,その論理端末に対する一方送信メッセージの送信が抑止されます。
-
論理端末からcont型,ans型のアプリケーションに対するメッセージを受信した場合
-
論理端末定義(mcftalcle -K)のkeyboardオペランドでaplockを指定し,かつunlockオペランドでautoを指定した論理端末からnoans型のアプリケーションに対するメッセージを受信した場合
画面に対する分岐送信形態を次の図に示します。
プリンタに対する分岐送信形態を次の図に示します。
プリンタに対する分岐送信形態の場合,send関数で送信完了通知イベント(SCMPEVT)および送信障害通知イベント(SERREVT)を通知することを指定すると,送信完了および送信障害を通知します。送信が正常に終了したとき,SCMPEVTを通知します。また,一方送信メッセージ取り出しから印刷完了イベント受信までの間で障害となった場合,SERREVTを通知します。
送信完了および送信障害を通知する場合の注意事項を次に示します。
-
本来は,すべての送信メッセージに対するイベント通知の指定が必要ですが,イベントスケジュール処理集中の原因となりますので,次のように運用してください。
-
グループ送信で,論理端末定義(mcftalcle)の-yオプションの指定値が1グループの最大送信メッセージ数以上で,かつ-xオプションでexcnt=0を指定した場合,グループ最終メッセージでイベント通知を指定すれば,SCMPEVTで全メッセージの送信完了を知ることができます。
ただし,SERREVTは通知されない場合があります。
-
グループ先頭メッセージにもイベント通知を指定すれば,SERREVTで送信障害の発生を知ることができます。この場合,SCMPEVTは先頭と最終のメッセージに対応して二つ通知されます。また,SERREVTも二つ通知される場合があります。
-
-
再送要求のとき,イベント通知の有無は変更できません。
-
オンライン終了中は,イベントは通知されません。
-
イベント通知順は,必ずしもsend関数の発行順になるとは限りません。
-
メッセージセグメントは設定されません。イベントを処理するMHPでは,イベント情報内の出力通番を参照して処理を行ってください。
出力通番は,送信メッセージ通番編集UOCであらかじめ取得しておく必要があります。なお,出力通番はsend関数の発行順に採番されるため,グループ送信時でもグループ内で連番になるとは限りません。
-
送信障害通知されたメッセージも,障害回復によって正常に印刷されることがあります。また,プリンタによっては,正常に印刷されても送信障害通知となることがあります。
-
代行送信した場合,メッセージ受信関数の入力元論理端末名称には,代行先論理端末名称が設定されます。また,イベント情報の出力先論理端末名称およびコネクション名は,代行先論理端末名称になります。
-
画面属性の論理端末に対するイベント通知の指定は無効になります。