同じJCLをある時はJOBとして、またある時はSTCタスクとして起動方法を使い分けることもできます(ESA V5以降のMVSでサポートされます)。
従来STCタスクを起動する場合は、その起動用プロシージャーをシステム・プロシージャー・ライブラリーに登録しました。プロシージャ自身はSTARTコマンドで直接STCタスクとして実行するか、他のジョブJCLから呼び出して実行する必要がありました。しかし、現在ではマスタースケジューラーの起動プロシージャであるMSTJCLnn(SYS1.PARMLIBに入っている)にIEFJOBS DDステートメントを定義することで、そこで指定された区分データセット内のジョブ用JCLメンバーをSTARTコマンドで直接実行することができます。また、そのメンバーをSTARTコマンドでなくJES2にサブミットすればJOBとして実行することもできます。STARTコマンドでSTCタスクとして実行した時のジョブ名は、JCLのJOBステートメントに指定されている名前になります。IEFJOBSに登録する場合、JCLはJOBステートメントを使用してあくまでも通常のJOB用に作ります。PROCステートメントで始めてはなりません。
JES2が起動された後、同じ名前のメンバーがIEFJOBSとJES2のPROC00の両方にあればIEFJOBS側が使用されます。この方法だと、STCタスクであってもストリーム内データ(DD *)が利用できます。STCタスクで動かすが、SYSINデータをDD *で直接指定できればなぁって思ったことはありませんか?(*1)
1 2 3 4 5 6 7 8 9 |
//MSTJCL00 JOB MSGLEVEL=(1,1),TIME=1440 // EXEC PGM=IEEMB860,DPRTY=(15,15) //STCINRDR DD SYSOUT=(A,INTRDR) //TSOINRDR DD SYSOUT=(A,INTRDR) //IEFJOBS DD DSN=USR1.JCL,DISP=SHR //IEFPDSI DD DSN=SYS1.PROCLIB,DISP=SHR //IEFPARM DD DSN=SYS1.PARMLIB,DISP=SHR //SYSUADS DD DSN=SYS1.UADS,DISP=SHR //SYSLBC DD DSN=SYS1.BRODCAST,DISP=SHR |
詳細は、z/OS MVS JCL解説書の「開始済みタスクのソースJCL の決定」に載っています。
*1 z/OS V1R13からは、カタログ・プロシージャー内にもDD *ステートメントを定義できるようになっている。