ログオンプロシージャー
ログオンプロシージャー
ログオンプロシージャーはユーザーがTSOにログオンするためのプログラムと、初期状態で割り当てるデータセットを定義したJCLです。JES2によって変換・解釈され、TSOユーザー空間におけるLOGON処理時に使用されます。EXEC文で指定されるプログラムはTMPの初期設定ルーチンであり、名前はIKJEFT01(MSPではKEQEFT01、VOS3ではJETTFT01)と決まっています。
ログオン・プロシージャはユーザーごとに変更することが可能で、デフォルトで割り当てるデータセットを変更することができます。MVSがデフォルトで提供するのがIKJACCNT(MSPではKEQACCNT、VOS3ではSYSPROC)であり、SYS1.PROCLIBに登録されています。IKJACCNTは主にシステム保守・管理者用のユーザーIDであるIBMUSER(MSPではTSSUSER、VOS3ではSYSUSER)で使用されます。多くのセンターではこのIKJACCNTを基にユーザー専用のログオン・プロシージャを作成し、そちらを使用します。
TSOではバッチジョブと違い、ユーザーが処理に使用するデータセットはコマンドなどで必要の都度割り当てることができます。そのため、JCLで割り当てるデータセットはデータ処理用のものではなく、TSOセッションを制御するための必要最小限のものが定義されることが多いです。この場合、データ処理用のデータセットはプログラムを実行するCLIST(コマンドプロシージャー)側でアロケーションされます。
ログオンプロシージャー名はTSOユーザー空間のステップ名としても使われます(プロシージャーステップ名はVTAM端末LU名となります)。
ログオンプロシージャーの例
//USRACCNT PROC //USRACCNT EXEC PGM=IKJEFT01,DYNAMNBR=256 //STEPLIB DD DISP=SHR,DSN=ISP.SISPLOAD //SYSPROC DD DISP=SHR,DSN=USR1.CMDPROC // DD DISP=SHR,DSN=SYS1.CMDPROC //SYSHELP DD DISP=SHR,DSN=SYS1.HELP //SYSLBC DD DISP=SHR,DSN=SYS1.BRODCAST //SYSPRINT DD TERM=TS,SYSOUT=* //SYSTERM DD TERM=TS,SYSOUT=* //SYSIN DD TERM=TS
TSOにログオンする際に利用できるログオンプロシージャーの名前は、ユーザーアカウントと共に登録され、予め登録されたプロシージャー名でなければ指定することができないようになっています。そのため新たなログオンプロシージャーを作成しても、それを自由に使用することは出来ません。また登録済みログオンプロシージャーは通常は複数ユーザーで共用しますから、既存のプロシージャーの内容を変更すると、他のユーザーにも影響を与えます。バッチジョブのJCLと異なり、利用者が自由に定義したり、変更したりする性質のものではないのです。定義内容の修正や、DD文の追加などが必要であればシステム管理者に依頼します。
バッチによるTSOセッションの実行例
TSOセッションはバッチジョブとして実行することもできます。この場合は、ログオンプロシージャーをJOBのJCLとして実行すればよいのです。実行するコマンドやCLISTは、端末入力の代わりに、SYSTSIN DD文に定義したデータセット内に記述します。たいていの場合、DD * として、JCL内ストリームデータとして記述されます。
// JOB Statement PROC文の代わりにJOB文を指定 //TSOBATCH EXEC PGM=IKJEFT01 //SYSTSPRT DD SYSOUT=* 必須のDD文 //SYSPROC DD DISP=SHR,DSN=MY.CLIST 追加のDD文 //SYSTSIN DD * 必須のDD文 ALLOC DD(SYSUT1) DA('MY.TESTDATA') TSOコマンドの実行 %MYCLIST1 CLISTの実行 //