キューイング・セッション

ログオン・マネージャー・アプリケーションが よく知られています。一般的に、選択画面をユーザーに送信するデフォルト・アプリケーションとしてセットアップされます。ユーザーが宛先アプリケーション選択を指定すると、ログオン・マネージャーは一般的に OPTCD=PASS を指定した CLSDST マクロを宛先アプリケーションに発行します。 宛先アプリケーションとの新規セッションが開始されます。 ログオン・マネージャー・セッションは、新規セッションの BIND が行われることを示して Telnet に送信される特殊な UNBIND によってクローズされます。Telnet はその特殊な UNBIND を受信してから、通常の UNBIND を受信した場合のクリーンアップを行う代わりに、次の BIND を待ちます。ユーザーが宛先アプリケーションからログオフ時、Telnet は、再び初期データベースのルックアップ処理を実行する (この結果、ログオン・マネージャーとのセッションが行われる) か、接続をドロップかのいずれかを行います。どちらを行うかは、LUSESSIONPEND がコーディングされているかどうかによって決まります。オリジナル・アプリケーションをログオフすると、Telnet は、LU ACB をオープン にしたままにする代わりに、通常のクローズ機能を実行します。

多くのログオン・マネージャーは、Telnet ではなく実際の端末をサポートするように作成されて いて、CLSDST-PASS を発行した直後に SIMLOGON OPTCD=Q を発行します。 SIMLOGON Q をコーディングすると、 ログオン要求が VTAM® キューに追加されます。 最初にキューに入ったアプリケーションが、最初 に VTAM キューから出るアプリケーションになります。ユーザーが宛先アプリケーションからログオフした直後に、VTAM は (ログオン・マネージャーに代わって) 端末 LU (またはクライアントを表す Telnet LU) とのセッションを要求します。 この機能は実際の端末では非常に役立ちますが、Telnet では、ログオン・マネージャーがデフォルト・アプリケーションである場合にタイミングの問題が生じます。 この場合、Telnet および VTAM の両方が、結局セッション要求を出すことになります。

ALLOWAPPL または RESTRICTAPPL の QSESSION オプションは、 このタイミングの問題を解決するために使用されます。このステートメントをログオン・マネージャー用に コーディングした場合、宛先アプリケーション から UNBIND が到着しても Telnet は通常のクローズ処理を実行しません。 Telnet は、LU ACB をオープンのままにして、キューに入れられた SIMLOGON によって生成される、ログオン・マネージャーからの BIND を 待ちます。BIND が到着すると、Telnet はアプリケーション名がオリジナルのログオン・マネージャー であることを確認して、セッションのセットアップを完了します。

SIMLOGON をキューに入れないアプリケーションに対して QSESSION が指定されるか、オリジナル・アプリケーションがリサイクルされたので SIMLOGON がキューから削除される場合、Telnet は、決して着信しない BIND を待機します。 このため、接続はハングしたように見えます。このハング状態を防ぐために、宛先アプリケーション UNBIND が受信されると、タイマー期限のセットを開始できます。 Telnet は、指定された期間、QSESSION アプリケーションからの BIND を待機します。タイマーの有効期限が切れ、セッションが何もない場合、Telnet は、QSESSION パラメーターが指定されていなかった場合と同じように、接続をクリーンアップします。

QSESSION パラメーターの例として、APPL1、APPL2、および APPL3 が それぞれ VTAM 内に定義されているものとします。 APPL1 は、CLSDST-PASS の後に SIMLOGON-Q を発行します。以下の Telnet ステートメントによって、接続はアプリケーションにアクセスでき、どれが QSESSION アプリケーションであるかを定義することができます。

ALLOWAPPL APPL1 QSESSION,3
ALLOWAPPL APPL*

このクライアントは、最初に APPL1 にログオンします。APPL1 は、 APPL2 への CLSDST-PASS、および SIMLOGON-Q を発行します。最後に、APPL2 は APPL3 に対して CLSDST-PASS を発行します。 APPL3 セッションが終了すると、VTAM は APPL1 BIND を Telnet に送信します。キューに入れられた SIMLOGON が削除されると、Telnet は、APPL3 から UNBIND を受信してから 3 秒後にクリーンアップを続行します。 APPL1 セッションが終了すると、ACB はクローズされ、Telnet は、初期データベース・ルックアップを再度実行するか、接続をクローズするかのいずれかを行います。どちらを行うかは、LUSESSIONPEND がコーディングされているかどうかによって決まります。

2 番目の例として、APPL2 も、APPL3 に対して CLSDST-PASS を発行した後、SIMLOGON-Q を発行するものとします。直前の例のように、APPL3 セッションが終了すると、VTAM は APPL1 BIND を Telnet に送信します。キューに入れられた SIMLOGON が削除されると、Telnet は、APPL3 から UNBIND を受信してから 3 秒後にクリーンアップを続行します。 APPL1 セッションが終了すると、VTAM は APPL2 BIND を Telnet に送信します。APPL2 SIMLOGON-Q は、VTAM で APPL1 SIMLOGON-Q の後でキューに入れられています。