TSOコマンドは、通常端末を利用するフォアグラウンド・セッションで使用しますが、サブミットされたバッチ・ジョブでも使うことができます。これがTSOのバックグラウンド・セッションです。
TSOセッションをバッチで実行するJCL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// JOB Statement //********************************************************************* //* Sample JCL - TSO BATCH SESSION //* ============================== //********************************************************************* //TSOBATCH EXEC PGM=IKJEFT01,REGION=4096K,PARM='1st Execute Command' //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * TSOコマンド、CLIST、REXX Exec...をここに書く 例) LISTALC STATUS SYSNAMES LISTCAT LEVEL(MY) ALL // |
プログラム名は、MSPではKEQEFT01、VOS3ではJETTFT01となります。最低限必要なDD名は、SYSTSPRTとSYSTSINです。SYSTSINには入力となるコマンドなどを、SYSTSPRTには実行されたコマンドなどの処理結果が出力されます。コマンドによっては追加のDD文が必要です。PARMパラメーターで、TSOセッション開始後に最初に実行するコマンドを指定することができます。PARMパラメーターでコマンド名を指定した場合、1つしかコマンドを実行しないからと言ってSYSTSIN DD文を省略できるわけではありません。ただし、DUMMYにすることはできます。
なお、バックグラウンド・セッションでは、LOGONコマンドは使用しません。デフォルトのユーザー属性を使用して実行されます。ただし、RACFを導入した環境ではサブミット元のTSOユーザーIDやJOB文のUSERパラメーターでユーザーが識別されます。
複数のコマンドを実行する時、途中のコマンドがエラーで終了(ABENDを除く)しても、後続のコマンドは実行されます。MVSでは、IKJEFT01の代わりにIKJEFT1Aまたは1Bを指定できます。IKJEFT1Aは、コマンドやプログラムがシステムABENDした場合、セッションは異常終了します。ユーザーABENDの場合は、処理は途中で打ち切られるものの、セッション自体は正常終了します。CLIST以外のコマンド、プログラム、REXX execが0以外のコードで完了した場合、セッションはそこで終了します。IKJEFT1Bでは、ユーザーABENDであってもセッションは異常終了し、CLISTが0以外のコードで完了してもセッションは終了します。
※IKJEFT1Bに関しての説明は、マニュアル(TSO/Eユーザーズガイド)の間違い。実際には、IKJEFT1Aと同じでCLISTの0以外のコードでは終了しない。同じマニュアルでも、TSO/Eカスタマイズ・ガイドには終了しないと書いてある。なおユーザーズ・ガイドはz/OS V1R10のマニュアルでは記述が変わっている。
どのTMPプログラムを使うかは、実行するコマンドの種類や組み合わせ、後続に実行するステップの有無などによって選べばいいでしょう。