- 「メインフレーム・コンピューター」で遊ぼう - http://www.arteceed.net -

STCとバッチJOBでJCLを共用する方法

同じ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 *で直接指定できればなぁって思ったことはありませんか?

    //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 の決定」に載っています。