JCL文

本書では、JCL文と各オペランドについて説明します。

1. 概要

以下は、JCL文の一覧です。

JCL文 説明

DD文

ジョブまたはジョブ・ステップで使用するデータセットを定義し、その属性を設定します。

特殊なDD文

特別なDD名を使用するDD文です。

EXEC文

ステップの開始を示し、そのステップの属性を記述します。

EXPAND文

EXEC文のPROCのようにプロシージャを呼び出します。

JOB文

ジョブの開始を示し、そのジョブの属性を記述します。

PEND文

プロシージャの終了を示します。

PROC文

プロシージャの開始を示します。

システム・コマンド文

システム・コマンドを記述します。

空文

ジョブの終了を示します。

段落見出し

インストリーム・データの最終行の直後に位置し、インストリーム・データの最後を示します。

コメント文

コメントを記述します。

2. DD文

ジョブまたはジョブ・ステップで使用するデータセットを定義し、その属性を設定します。

  • 構文

    //[DD名]△¹DD△¹[位置オペランド][,キーワードオペランド]...△¹[コメント]
    //[プロシージャステップ名.DD名]△¹DD△¹[位置オペランド][,キーワードオペランド]...△¹[コメント]
    項目 説明

    DD名

    プロシージャステップ名.DD名

    名前を記述する位置であり、「//」に続く3桁目から記述します。

    DD名を省略した場合、このDDはCONCATED DDと判断します。

    DD名は8文字以内の英数字で、最初の文字は必ず英文字にする必要があります。

    同じステップ内に同じDD名が存在する場合、システムはDDの割り当て時に重複したDD名をランダムなDD名に設定します。ランダムなDD名は、$DD0000$から1ずつ増加させます。

    プロシージャ・ステップ名と一緒にDD名を記述した場合、そのDDはプロシージャ・ステップの同じ名前のDD属性をオーバーライドします。同じ名前のDDがなければ、その名前でDDが追加されます。プロシージャ・ステップ名は8文字以内の英数字で、最初の文字は英文字にします。

    CONCATENATED DDおよびプロシージャ・ステップへの追加とオーバーライドについては、以下で詳しく説明します。

    DD

    オペレーションを記述する位置であり、DD名の後ろに1つ以上の空白を入れて「DD」と記述します。

    [位置オペランド][,キーワードオペランド]

    「DD」の後ろに1つ以上の空白を入れてオペランドを記述します。先にすべての位置オペランドを記述してから、その後にキーワード・オペランドを記述します。

    詳細については、オペランドと各オペランドの節を参照してください。

    [コメント]

    オペランドの次に1つ以上の空白を入れて記述します。コメントは71桁目まで記述できます。すべてのオペランドを省略した場合は、コメントを記述することができません。

CONCATENATED DDおよびプロシージャ・ステップ

以下は、CONCATENATED DD、プロシージャ・ステップへの追加またはオーバーライドについての説明です。

  • CONCATENATED DD

    複数の入力用データセットを論理的に1つのデータセットであるかのように処理して使用することをデータセットの連結といいます。データセットを連結するためにCONCATENATED DDを使用します。

    CONCATENATED DDはDD名を省略する方式で使用しますが、このDDは先に宣言されたDDと論理的に連結されます。JOBCATまたはSTEPCATのようなスペシャルDDも連結して使用できます。

    以下は、3つのデータセットをCONCATENATED DDを使用して論理的に連結した例です。

    //SYSIN DD DSN=TMAX.SYSIN1,DISP=SHR
    //      DD DSN=TMAX.SYSIN2,DISP=SHR
    //      DD DSN=TMAX.SYSIN3,DISP=SHR
  • プロシージャ・ステップへの追加またはオーバーライド

    プロシージャを呼び出すステップで指定したDDはそのステップでは使用されず、呼び出されたプロシージャ内のステップで使用されます。プロシージャを呼び出すステップでDDを指定するときは、そのDDがプロシージャ内のどのステップで使用されるかを明確に指定する必要があります。プロシージャ内のステップは、「//」の後ろにプロシージャ・ステップ名.DD名と指定します。

    プロシージャ・ステップ名を指定しなかった場合は、直前のDDで指定したプロシージャ・ステップ名が使われます。プロシージャ・ステップ名が省略されたDDがステップで最初のDDである場合、そのDDはプロシージャ内の最初のステップで使用されるものと判断します。指定したプロシージャ・ステップ名がプロシージャ内に存在しない場合は、そのDDは使用されません。

    以下は、PSTEP1でDD1が、PSTEP2でDD2が使用される例です。

    //JOB1       JOB
    //TMAXPROC   PROC
    //PSTEP1     EXEC PGM=TMAXSOFT
    //PSTEP2     EXEC PGM=TMAXSOFT
    //           PEND
    //STEP1      EXEC TMAXPROC
    //PSTEP1.DD1 DD DSN=TMAX.DSN,DISP=SHR
    //PSTEP2.DD2 DD DSN=TMAX.DSN2,DISP=SHR
    //

    以下は、DD2のプロシージャ・ステップ名が省略されたが、DD1のプロシージャ・ステップ名がPSTEP2であるため、PSTEP2でDD2が使用される例です。

    //JOB1       JOB
    //TMAXPROC   PROC
    //PSTEP1     EXEC PGM=TMAXSOFT
    //PSTEP2     EXEC PGM=TMAXSOFT
    //           PEND
    //STEP1      EXEC TMAXPROC
    //PSTEP2.DD1 DD DSN=TMAX.DSN,DISP=SHR
    //DD2        DD DSN=TMAX.DSN2,DISP=SHR
    //

    以下は、DD1とDD2のプロシージャ・ステップ名が省略され、TMAXPROCの最初のステップであるPSTEP1で使用された例です。

    //JOB1       JOB
    //TMAXPROC   PROC
    //PSTEP1     EXEC PGM=TMAXSOFT
    //PSTEP2     EXEC PGM=TMAXSOFT
    //           PEND
    //STEP1      EXEC TMAXPROC
    //DD1        DD DSN=TMAX.DSN,DISP=SHR
    //DD2        DD DSN=TMAX.DSN2,DISP=SHR
    //

オペランド

以下は、オペランドについての説明です。各オペランドについての詳細は、該当する節を参照してください。

  • 位置オペランド

    DD文の位置オペランドは、アスタリスク(*)、DATA、DUMMY、DYNAMのいずれかを記述します。

    項目 説明

    アスタリスク(*)とDATA

    インストリーム・データの入力を指定します。DLMオペランドを使用すると、JCL文もインストリーム・データとして取得することができます。

    DUMMY

    ダミー・データセットを指定します。

    DYNAM

    OpenFrameでは構文エラーのみをチェックします。

  • キーワード・オペランド

    項目 説明

    AMP

    OpenFrameでは構文エラーのみをチェックします。

    BURST

    OpenFrameでは構文エラーのみをチェックします。

    CHARS

    データセットを出力する際の出力文字とサイズに関する設定テーブルを指定します。

    CHKPT

    OpenFrameでは構文エラーのみをチェックします。

    COPIES

    SYSOUTデータセットの全体およびページ単位のコピー回数を指定します。

    DATACLAS

    OpenFrameではサポートされません。

    DATATYPE

    OpenFrameではサポートされません。

    DCB

    非VSAMデータセットのDCB(Data Control Block)情報を指定します。

    DDNAME

    DD名を指定し、指定されたDDが出現するまでデータセットの定義を先送りします。

    DEST

    SYSOUTデータセットの出力先を指定します。

    DISP

    データセットの状態および後処理について設定します。

    DLM

    アスタリスク(*)またはDATAオペランドと一緒に使用され、インストリーム・データの終わりを示す区切り文字を指定します。

    DSID

    OpenFrameでは構文エラーのみをチェックします。

    DSNAME/DSN

    データセットの名前を指定します。

    EXPDT

    データセットの有効期限を指定します。

    FCB

    SYSOUTデータセットを出力するプリンターを指定します。出力時にフォーマットが可能です。

    FLASH

    OpenFrameでは構文エラーのみをチェックします。

    FREE

    OpenFrameでは構文エラーのみをチェックします。

    HOLD

    SYSOUTデータセットの出力を保留するか否かを指定します。

    KEYLEN

    新規データセットのキー長を指定します。

    LABEL

    データセットのラベルを指定します。

    LRECL

    新規作成されるデータセットのレコード長を指定します。

    MGMTCLAS

    OpenFrameではサポートされません。

    MODIFY

    SYSOUTデータセットのコピー修飾モジュール名とCHARSオペランドで指定するテーブルのシーケンス番号を指定します。OpenFrameでは構文エラーのみをチェックします。

    OUTLIM

    SYSOUTデータセットに出力できる最大レコード数を指定します。

    PASSWORD

    OpenFrameでは構文エラーのみをチェックします。

    PROTECT

    OpenFrameでは構文エラーのみをチェックします。

    PRTFORM

    OpenFrameでは構文エラーのみをチェックします。

    PRTYPE

    OpenFrameではサポートされません。

    RECFM

    データセットのレコード形式と特性を指定します。

    RETPD

    データセットの保存期限を日数で指定します。

    SPACE

    直接アクセス・ボリュームに新規データセットのスペース割り振り量を指定します。

    STORCLAS

    SMSストレージ・クラスを指定します。

    SUBSYS

    AIMシステムと連携する際にPEDとDIDを指定します。

    SYSOUT

    SYSOUTデータセットの出力属性を指定します。

    TERM

    OpenFrameでは構文エラーのみをチェックします。

    UCS

    OpenFrameでは構文エラーのみをチェックします。

    UNIT

    データセットを割り当てる入出力装置を指定します。

    VOLUME/VOL

    データセットのボリュームを指定します。

2.1. アスタリスク(\*)とDATA

インストリーム・データの入力を指定します。DLMオペランドを使用すると、JCL文もインストリーム・データとして取得することができます。該当するDD文以降にインストリーム・データが現れることを意味します。また、そのDDはインストリーム・データの内容でジョブ・スプールに一時的に作成され、一般的なデータセットと同じように使用されます。

インストリーム・データは、以下のような場合に終わりとして判断します。

  • 段落見出しが現れた場合

  • 入力ストリームの終わり、UNIXファイルでEOFが現れた場合

  • 段落見出し以外の制御文が現れた場合

  • DLMオペランドが指定され、区切り文字が現れた場合

以下は、アスタリスク(*)とDATAの使用方法についての説明です。

  • 構文

    * DATA
  • 注意事項

    アスタリスク(*)の場合は、DLMオペランドを使用できません。

  • 以下は、アスタリスク(*)を使用して、インストリーム・データをSYSINとして使用する例です。

    //SYSIN DD *
    this is sysin data
    /*

    以下は、制御文が現れてインストリーム・データが終了したことを意味する例です。

    //SYSIN DD *
    this is sysin data
    //SYSOUT DD SYSOUT=*

2.2. AMP

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    AMP = 値

2.3. BURST

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    BURST = {YES | Y | NO | N}

2.4. CHARS

データセットを出力する際の出力文字とサイズの設定テーブルを指定します。

  • 構文

    CHARS = {テーブル名}
            {(テーブル名[,テーブル名])}
            {DUMP}
            {(DUMP[,テーブル名])}
    項目 説明

    テーブル名

    データセットを出力する際の出力文字とサイズの設定テーブルを1~4桁の英数字で指定します。

    DUMP

    OpenFrameではDUMPをサポートしていません。

  • 注意事項

    • SYSOUTデータセットの出力でなければ、CHARSオペランドは無視されます。

    • OpenFrameでは、印刷出力のためのCHAR情報を外部プリンター・モジュールに渡すために、ジョブの実行が完了してから保存しています。当情報の使用有無は、外部プリンター・モジュールの必要に応じて異なります。

  • 以下は、外部プリンター・モジュールにCHARS=(TBJ1,TBJ2)の情報を渡す例です。

    //EX1 DD SYSOUT=A,CHARS=(TBJ1,TBJ2)

2.5. CHKPT

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    CHKPT = EOV

2.6. COPIES

SYSOUTデータセット全体およびページ単位のコピー回数を指定します。

  • 構文

    COPIES = (コピー回数[,(グループコピー回数[,グループコピー回数]...)])
    項目 説明

    コピー回数

    SYSOUTデータセットのコピー回数を1~255の符号なし整数で指定します。(デフォルト値: 1)

    グループコピー回数

    SYSOUTデータセットのページ単位のコピー回数を1~255の符号なし整数で指定します。(デフォルト値: 1)

  • 注意事項

    • SYSOUTデータセットの出力でなければ、COPIESオペランドは無視されます。

    • OpenFrameでは、印刷出力のためのCOPIES情報を外部プリンター・モジュールに渡すために、ジョブの実行が完了してから保存しています。当情報の使用有無は、外部プリンター・モジュールの必要に応じて異なります。

  • 以下は、外部プリンター・モジュールにCOPIES=(2,(2,1))の情報を渡す例です。

    //OUTPUT DD SYSOUT=A,COPIES=(2,(2,1))

2.7. DATACLAS

OpenFrameではサポートされません。

2.8. DATATYPE

OpenFrameではサポートされません。

  • 構文

    DATATYPE = ([BIN | FBIN | SRC | TXTYES][,CNV | ,NOCNV][,EXP | ,NOEXP][,IMP | ,NOIMP])

2.9. DCB

非VSAMデータセットのDCB(Data Control Block)情報を指定します。

  • 構文

    DCB = (dcbパラメータ[,dcbパラメータ]...)
    DCB = ({データセット名}                   [,dcbパラメータ]...)
          ({*.DD名}                                       )
          ({*.ステップ名.DD名}                              )
          ({*.ステップ名.プロシージャステップ名.DD名}             )
    • dcbパラメータ

      dcbパラメータ 用途

      BFALN=値

      OpenFrameでは構文エラーのみをチェックします。

      BFTEK=値

      OpenFrameでは構文エラーのみをチェックします。

      BLKSIZE={値|値K|値M}

      最大ブロック長を指定します。

      BLKSIZEオペランドで指定できる最大値は、レコード形式を問わず2097152バイトです。

      • 値: 1~2147483648の符号なし整数を指定します。

      • 値K: 1~2097152の符号なし整数を指定します。値に1024をかけた値を最大ブロック長として指定します。

      • 値M: 1~2048の符号なし整数を指定します。値に1024×1024をかけた値を最大ブロック長として指定します。

      BUFIN=値

      OpenFrameでは構文エラーのみをチェックします。

      BUFL=値

      OpenFrameでは構文エラーのみをチェックします。

      BUFMAX=値

      OpenFrameでは構文エラーのみをチェックします。

      BUFNO=値

      OpenFrameでは構文エラーのみをチェックします。

      BUFOFF=値

      OpenFrameでは構文エラーのみをチェックします。

      BUFOUT=値

      OpenFrameでは構文エラーのみをチェックします。

      BUFSIZE=値

      OpenFrameでは構文エラーのみをチェックします。

      CPRI=値

      OpenFrameでは構文エラーのみをチェックします。

      CYLOFL=値

      OpenFrameでは構文エラーのみをチェックします。

      DEN=値

      OpenFrameでは構文エラーのみをチェックします。

      DIAGNS=値

      OpenFrameでは構文エラーのみをチェックします。

      DSORG={PS|PSU|PO|POU|DA|

      DAU|IS|ISU}

      データセットの構造を指定します。

      • PS: 順次データセットです。

      • PSU: 移動できない順次データセットです。

      • PO: 区分データセットです。

      • POU: 移動できない区分データセットです。

      • DA: 直接データセットです。

      • DAU: 移動できない直接データセットです。

      • IS: 索引データセットです。

      • ISU: 移動できない索引データセットです。

      EROPT=値

      OpenFrameでは構文エラーのみをチェックします。

      FUNC=値

      OpenFrameでは構文エラーのみをチェックします。

      GNCP=値

      OpenFrameでは構文エラーのみをチェックします。

      INTVL=値

      OpenFrameでは構文エラーのみをチェックします。

      IPLTXID=値

      OpenFrameでは構文エラーのみをチェックします。

      KEYLEN=値

      DDオペランドKEYLENの説明と同じです。

      LIMCT=値

      OpenFrameでは構文エラーのみをチェックします。

      LRECL=レコード長

      DDオペランドLRECLの説明と同じです。

      MODE=値

      OpenFrameでは構文エラーのみをチェックします。

      NCP=値

      OpenFrameでは構文エラーのみをチェックします。

      NTM=値

      OpenFrameでは構文エラーのみをチェックします。

      OPTCD=値

      OpenFrameでは構文エラーのみをチェックします。

      PCI=値

      OpenFrameでは構文エラーのみをチェックします。

      PRTSP=値

      OpenFrameでは構文エラーのみをチェックします。

      RECFM=F[B][A|M]

      V[B|S|BS][A|M]

      D[B][A]

      L[A|M]

      U[A|M]

      DDオペランドRECFMの説明と同じです。

      RESERVE=値

      OpenFrameでは構文エラーのみをチェックします。

      RKP=値

      OpenFrameでは構文エラーのみをチェックします。

      STACK=値

      OpenFrameでは構文エラーのみをチェックします。

      THRESH=値

      OpenFrameでは構文エラーのみをチェックします。

      TRTCH=値

      OpenFrameでは構文エラーのみをチェックします。

    • dcbパラメータ以外の項目

      項目 説明

      データセット名

      指定したデータセットのDCB属性を使用することを指定します。

      データセット名は、世代データ・グループ名(GDG)とは異なる必要があります。GDGの特定世代は指定できます。

      指定されたデータセットはカタログされている必要があります。OpenFrameでは、カタログされずにパスされたDD文のデータセット名を使用して参照することはサポートしていません。

      *.DD名

      *.ステップ名.DD名

      *.ステップ名.プロシージャステップ名.DD名

      「*[.ステップ名[.プロシージャステップ名].DD名」の部分を逆方向参照といいます。同一ジョブの先行DD文で指定されたDCB属性を使用することを意味します。

      先行DD文の位置が先行ジョブ・ステップなのか先行プロシージャ・ステップなのかに応じて、各ステップ名またはステップ名とプロシージャ・ステップ名を指定します。逆方向参照が指定するDDが存在しない場合、ジョブはフラッシュとして処理されます。

2.10. DDNAME

DD名を指定し、指定されたDDが出現するまでデータセットの定義を先送りします。以降、指定されたDDのデータセット設定でデータセットを定義します。

DDNAMEにDD名が指定された場合、当該DDは指定されたDDが出てくるまでデータセットの定義を先送りします。指定されたDDが出てきたら、その時点でDDNAMEに指定したDDのデータセットを設定します。指定されたDDは、実際には使用されません。

主にプロシージャを呼び出すステップで使用されます。プロシージャ内でインストリーム・データを使用できないため、プロシージャ内のステップではDDNAMEを利用してデータセットの定義を先送りし、プロシージャを呼び出すステップでDDNAMEに指定したDDを設定して使用します。

以下のJCLでは、プロシージャ内のステップであるPSTEP1でSYSIN DDをOUTSTEP1と定義しておき、これを呼び出すためのステップであるSTEP1でOUTSTEP1を参照してPSTEP1.OUTSTEP1 DDとすることで、インストリーム・データを使用できるようになります。したがって、これらは同じDD属性を持ちます。TMAXSOFTはSYSINでインストリーム・データを取得します。

//JOB1   JOB
//PROC1  PROC
//PSTEP1 EXEC PGM=TMAXSOFT
//SYSIN  DD   DDNAME=OUTSTEP1
//       PEND
//STEP1  EXEC PROC1
//PSTEP1.OUTSTEP1 DD *
instream data
/*
//

以下は、DDNAMEオペランドの使用方法です。

  • 構文

    DDNAME = DD名
    項目 説明

    DD名

    データセット設定を取得するDD名を記号名称で指定します。

  • 注意事項

    • DDNAMEオペランドを使用したDDとDDNAMEオペランドで指定したDDは、同じステップ内に存在する必要があります。プロシージャ内のステップでDDNAMEオペランドを使用した場合は、そのプロシージャを呼び出すステップでDDNAMEオペランドで指定したDDが使用されると認識するため、同じステップ内にあるものと判断します。

    • DDNAMEオペランドを使用したDDは、DDNAMEオペランドで指定したDDより先に現れる必要があります。他のDDで逆方向参照をした場合、DDNAMEオペランドで指定したDDは参照できません。

    • DDNAMEオペランドで指定したDDはスペシャルDD名を使用してはなりません。このDDは、DDNAMEオペランドを使用したDDでのみ使用されるため、スペシャルDDとしての機能は実行できません。

    • DDNAMEオペランドで指定したDDが存在しない場合は、DDNAMEオペランドを使用したDDはダミー・データセットと見なします。

  • 以下は、SYSOUT DDがDD2の内容を参照し、SYSOUTデータセットとなる例です。DD2は参照されるだけで使用されません。

    //STEP1  EXEC PGM=TMAXSOFT
    //SYSOUT DD DDNAME=DD2
    //DD2    DD SYSOUT=*

    以下は、STEP2のINがSTEP1のOUTを逆方法参照する例です。参照される部分は、STEP1のDD2ではなく、STEP1のOUTです。

    //STEP1  EXEC PGM=TMAXSOFT
    //OUT    DD DDNAME=DD2
    //DD2    DD DSN=TEST.DATASET,DISP=(NEW,PASS)
    //STEP2  EXEC PGM=TMAXSOFT
    //IN     DD DSN=*.STEP1.OUT,DISP=(OLD,DELETE)
    //

2.11. DEST

SYSOUTデータセットの出力先を指定します。

  • 構文

    DEST = 出力先
    項目 説明

    出力先

    SYSOUTデータセットの出力先を指定します。

  • 注意事項

    • SYSOUTデータセットの出力でなければ、DESTオペランドは無視されます。

    • OpenFrameでは、印刷出力のためのDEST情報を外部プリンター・モジュールに渡すために、ジョブの実行が完了してから保存しています。当情報の使用有無は、外部プリンター・モジュールの必要に応じて異なります。

  • 以下は、外部プリンター・モジュールにDEST=LOCALの情報を渡す例です。

    //EX1 DD SYSOUT=A,DEST=LOCAL

2.12. DISP

データセットの状態および後処理について設定します。

  • 構文

    DISP = ([NEW] [,DELETE] [,DELETE])
            [OLD] [,KEEP]   [,KEEP])
            [SHR] [,PASS]   [,CATLG])
            [MOD] [,CATLG]  [,UNCATLG])
            [,]   [,UNCATLG]
                  [,]
    • パラメータ1

      データセットの状態を指定します。

      項目 説明

      NEW

      当該ジョブ・ステップで新規作成されたデータセットであることを示します。

      OLD

      当該ジョブ・ステップの前からすでに存在しているデータセットであることを示します。

      SHR

      当該ジョブ・ステップの前からすでに存在しているデータセットであることを示します。また、別のジョブで同時に使用されることを許可します。

      MOD

      データセットを拡張(追加書き込み)することを示します。

      順次データセットを出力でオープンすると、そのまま追加書き込みができます。

      MODパラメータを指定した場合、VOLUMEオペランドでSERパラメータまたはREFパラメータが指定されると、すでにデータセットが作成されているものとして処理します。

      VOLUMEオペランドで上記の指定がない場合、指定したデータセットがパス(PASS)されているか、カタログされていれば、データセットがすでに作成されていると見なします。それ以外の場合は、NEWパラメータの指定と見なします。

    • パラメータ2

      ジョブ・ステップが正常終了した場合(ABENDでない場合)のデータセットの後処理方法を指定します。

      項目 説明

      DELETE

      ジョブ・ステップの終了後、データセットを削除します。

      ボリューム情報をカタログから取得した場合、DELETE処理が正常に終了したときに限ってカタログから削除されます。

      KEEP

      データセットを保存します。ただし、データセットを作成したジョブ・ステップが異常終了(ABEND)した場合、パラメータ3のDELETEパラメータ指定があれば削除されます。

      PASS

      ジョブ・ステップ間のデータセットを使用した後、そのデータセットを後続ジョブ・ステップに渡します。後続ジョブ・ステップでデータセットを受け取った場合、そのデータセットを受け取るDD文にVOLUMEオペランドのSERパラメータまたはREFパラメータを指定してはなりません。

      後続ジョブ・ステップで、PASSパラメータが指定されたデータセットを受け取るのは1回のみ可能です。そのため、データセットを受け取った後、もう一度、後続ジョブ・ステップに渡そうとする場合は、毎回DISPオペランドでPASSパラメータを指定する必要があります。

      1つのジョブで同じデータセット名を持つデータセットが複数存在する場合、特定の時点で複数のデータセットを渡してはなりません。VSAMデータセットは渡すことができません。

      CATLG

      データセットをジョブ・ステップの終了時にカタログします。システムがカタログを参照してデータセットを割り当てた場合、CATLGパラメータの指定があれば、再カタログします。

      UNCATLG

      ジョブ・ステップの終了時にデータセットを保存しますが、カタログからカタログ情報は削除します。

    • パラメータ3

      ジョブ・ステップが異常終了(ABEND)した場合のデータセット処理を指定します。指定できるパラメータは、パラメータ2のPASSパラメータを除いては、パラメータ2と同じです。

  • 注意事項

    • パラメータ1のみ指定する場合、括弧で囲む必要はありません。

    • DISPオペランドを省略した場合、DISP=(NEW,DELETE,DELETE)で処理されます。

    • パラメータ1の指定を省略し、パラメータ2を指定した場合、パラメータ1にNEWが設定されます。

    • パラメータ1のみ指定し、以降のパラメータを省略すると、パラメータ2とパラメータ3は、パラメータ1がNEWの場合はDELETEに、パラメータ1がNEWでない場合はKEEPに指定したのと同じです。

    • パラメータ3を省略すると、パラメータ2に指定した項目をパラメータ3に指定したのと同じになります。

    • 一時データセットを指定する際、DISPオペランドのパラメータ3にどんなパラメータを指定しても、内部でPASSパラメータと見なして処理します。

    • VSAMデータセットは、パラメータ1にNEWを指定してはなりません。

  • 以下は、アクセス・ボリュームに一時データセットを直接作成し、ジョブ・ステップを終了する際に削除する例です。

    //TEMP DD UNIT=DISK,SPACE=(TRK,(5,1))

    以下は、シリアル番号が333333のボリュームに作成されているデータセットORG.SOURCE.TESTの排他的な使用を要求する例です。ジョブ・ステップが終了する際にデータセットをカタログします。

    //DD1 DD DSN=ORG.SOURCE.TEST,UNIT=8598,
    //       DISP=(OLD,CATLG),
    //       VOL=SER=333333

    以下は、既にカタログされているデータセットORG.LIBの排他的な使用を要求する例です。ジョブ・ステップが終了する際にデータセットを削除します。データセットが削除されるだけでなく、カタログからも削除されます。

    //DD2 DD DSN=ORG.LIB.DISP=(OLD,DELETE)

2.13. DLM

DATAオペランドと一緒に使用され、インストリーム・データの終わりを示す区切り文字を指定します。

一般的にインストリーム・データの終わりを意味する段落記号は「/*」で指定します。ただしこの場合、インストリーム・データとして「/*」や「/」で始まるデータは使用できなくなります。DLMオペランドを使用して段落記号を「/*」以外のもので指定すると、インストリーム・データとして「/*」や「//」で始まるデータ、つまりJES JCL文やJCL文も使用できるようになります。

  • 構文

    DLM = 段落記号
    項目 説明

    段落記号

    インストリーム・データの終わりを2桁の英文字で指定します。

  • 以下は、段落記号をAAと指定し、DD1のインストリーム・データとしてOS JCLが使用可能な例です。

    //DD1    DD DATA,DLM=AA
    //JOB1   JOB                        --|
    //STEP1  EXEC PGM=TMAXSOFT            | ---> DD1のインストリームデータ
    //                                  --|
    AA
    //DD2 ...

2.14. DSID

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    DSID = {id}
           {(id[,V])}
    項目 説明

    id

    8文字以内の記号名称で指定します。

2.15. DSNAME/DSN

データセットの名前を指定します。DSNAMEとDSNが同時に指定された場合、DSNAMEに指定された内容が使用されます。「&&」で始まる場合は一時データセットを意味し、アスタリスク(*)で始まる場合は、以前宣言されたDDのデータセット名をそのまま使用することを意味します。

  • 構文

    {DSNAME | DSN} = {データセット名                  }
                     {データセット名(メンバー名)           }
                     {データセット名(世代番号)          }
                     {&&データセット名                }
                     {*.DD名                      }
                     {*.ステップ名.DD名             }
                     {*.ステップ名.プロシージャステップ名.DD名}
    項目 説明

    データセット名

    DDで使用するデータセットの名前を記号名称で指定します。

    データセット名は、「記号名称[.<記号名称>]...」形式で最大44文字まで記述できます。1つの記号名称は最大8文字であり、世代グループ・データセット(GDG)は最大35文字です。

    メンバー名

    データセットのメンバー名をデータセットと一緒に指定します。1~8文字の記号名称で指定します。

    世代番号

    世代グループ・データセットの世代番号を符号と一緒に指定します。

    符号が省略された場合はプラス(+)と見なします。世代番号は、世代グループ・データセットの最大世代番号を超えてはなりません。世代グループ・データセットについては、OpenFrame Base『データセットガイド』を参照してください。

    &&データセット名

    該当するジョブでのみ一時的に使用するデータセットを指定します。

    一時データセットは基本的に桁数を占めているため、長いデータセット名を作成するとエラーが発生することがあります。そのため、一時データセットとして作成するデータセットは、ピリオド(.)なしで<記号名称>で作成することをお勧めします。一時データセットについては、以下で詳しく説明します。

    *.DD名

    *.ステップ名.DD名

    *.ステップ名.プロシージャステップ名.DD名

    「*[.ステップ名[.プロシージャステップ名].DD名」の部分を逆方向参照といいます。同じジョブの先行DD文で指定されたデータセット名を使用することを意味します。先行DD文の位置が先行ジョブ・ステップなのか先行プロシージャ・ステップなのかに応じて、それぞれステップ名またはステップ名とプロシージャ・ステップ名を指定します。

    逆方向参照が指定するDDが存在しない場合は、ジョブはフラッシュで処理されます。

    以下は、前述の「&&データセット名」と関連する一時データセットの説明です。一時データセットは、以下のような形式で作成されます。

    • 「&&データセット名」の場合

      SYSyyddd.Thhmmss.RA000.jobname.データセット名.Hgg
      項目 説明

      yyddd

      ジョブの実行日です。

      hhmmss

      ジョブの実行時間です。

      jobname

      ジョブ名です。

      gg

      01です。

    • DSNオペランドが省略された場合

      SYSyyddd.Thhmmss.RA000.jobname.Rggnnnn
      項目 説明

      yyddd

      ジョブの実行日です。

      hhmmss

      ジョブの実行時間です。

      jobname

      ジョブ名です。

      nnnn

      DDテーブルの順番であり、ジョブ内では一意の番号です。

    • 「&&データセット名」であり、SYSOUTデータセットの場合

      jobid(userid.jobname.jobid.Dnnnnnn.データセット名)
      項目 説明

      userid

      ジョブのユーザー名です。

      jobname

      ジョブ名です。

      jobid

      ジョブのJOBIDです。(JOB00001 ~ JOB99999)

      nnnnnn

      DDテーブルの順番であり、ジョブ内では一意の番号です。

    • DSNオペランドが省略されており、SYSOUTデータセットの場合

      jobid(userid.jobname.jobid.Dnnnnnn)
      項目 説明

      userid

      ジョブのユーザー名です。

      jobname

      ジョブ名です。

      jobid

      ジョブのJOBIDです。(JOB00001 ~ JOB99999)

      nnnnnn

      DDテーブルの順番であり、ジョブ内では一意の番号です。

    • 「&&データセット名」であり、インストリーム・データセットの場合

      jobid(userid.jobname.jobid.Dnnnnnn.データセット名)
      項目 説明

      userid

      ジョブのユーザー名です。

      jobname

      ジョブ名です。

      jobid

      ジョブのJOBIDです。(JOB00001 ~ JOB99999)

      nnnnnn

      DDテーブルの順番であり、ジョブ内では一意の番号です。

    • DSNオペランドが省略されているか、「&&データセット名」形式ではないが、インストリーム・データセットの場合

      jobid(userid.jobname.jobid.Dnnnnnn)
      項目 説明

      userid

      ジョブのユーザー名です。

      jobname

      ジョブ名です。

      jobid

      ジョブのJOBIDです。(JOB00001 ~ JOB99999)

      nnnnnn

      DDテーブルの順番であり、ジョブ内では一意の番号です。

  • 注意事項

    • DSNオペランドを省略すると、該当するDDは一時データセットを使用すると判断しますが、データセットの状態をNEWまたはMODと指定しない場合は、ボリュームを割り当てるものと判断します。

    • DSNオペランドが存在しており、「&&データセット名」形式ではないが、SYSOUTデータセットである場合、ジョブはフラッシュが発生します。

    • SYSOUTデータセットは、DD文のSYSOUTオペランドでクラスまたはアスタリスク(*)が指定されている場合を意味します。

  • 以下は、データセットをTMAX.DATASETに指定する例です。

    //DD1     DD  DSN=TMAX.DATASET,DISP=SHR

    以下は、データセットの長さが44桁を超えた場合に構文エラーが発生する例です。

    //DD1     DD  DSN=TMAX.DATASET.OVERFLOW.LENGTH.COLUMN44.ISOCCUR.PARSE.ERROR

    以下は、データセットとメンバーを指定する例です。

    //DD1     DD  DSN=TMAX.PDSLIB(DATASET),DISP=(NEW,DELETE,DELETE)

    以下は、世代データセットを指定する例です。

    //DD1     DD  DSN=TMAX.GDG(+1),DISP=(NEW,DELETE,DELETE)

    以下は、一時データセットを指定する例です。

    //DD1     DD  DSN=&&TEMP,DISP=(NEW,PASS)

    以下は、一時データセットをSYSOUTデータセットに指定する例です。

    //DD1     DD  DSN=&&TEMP,SYSOUT=*

    以下は、DSNオペランドを省略する例です。

    //DD1     DD  DISP=(NEW,PASS)

    以下は、ステップのデータセット名を参照する例です。例でのDD2のデータセット名は、TMAX.DATASETとなります。

    //DD1     DD  DSN=TMAX.DATASET,DISP=SHR
    //DD2     DD  DSN=*.DD1,DISP=SHR

    以下は、以前のステップのデータセット名を参照する例です。例でのSTEP2 DD1のデータセット名は、TMAX.DATASETとなります。

    //STEP1   EXEC PGM=TMAXSOFT
    //DD1     DD  DSN=TMAX.DATASET,DISP=SHR
    //STEP2   EXEC PGM=TMAXSOFT
    //DD1     DD  DSN=*.STEP1.DD1,DISP=SHR

    以下は、以前のプロシージャ・ステップのデータセット名を参照する例です。例でのSTEP2 DD1のデータセット名は、TMAX.DATASETとなります。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //TMAXPROC PROC
    //PSTEP1   EXEC PGM=TMAXSOFT
    //PDD1     DD   DSN=TMAX.DATASET
    //         PEND
    //STEP1    EXEC TMAXPROC
    //STEP2    EXEC PGM=TMAXSOFT
    //DD1      DD   DSN=*.STEP1.PSTEP1.PDD1

2.16. DUMMY

データセットがダミー・データセットであることを意味します。ダミー・データセットで指定されたDDにデータを記録しても、実際には記録されずに捨てられます。

DSNAME=NULLFILEを設定すると、ダミーを設定したのと同じ機能をします。

  • 構文

    DUMMY
  • 以下は、SYSOUTをダミーに指定する例です。

    //SYSOUT DD DUMMY

2.17. DYNAM

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    DYNAM

2.18. EXPDT

データセットの有効期限を指定します。データセットを最初に作成する際のみ指定できます。

  • 構文

    EXPDT = {yyddd|yyyy/ddd}
    項目 説明

    {yyddd}

    • yy: 2桁の年を指定します。(範囲: 0 ~ 99、1900年代として認識)

    • ddd: 日付を指定します。(範囲: 1~ 366)

    {yyyy/ddd}

    • yyyy: 4桁の年を指定します。(範囲: 1900 ~ 2099)

    • ddd: 日付を指定します。(範囲: 1~ 366)

    EXPDT=99365またはEXPDT=1999/365を指定した場合、永久保存として処理されます。

  • 注意事項

    • LABELオペランドでEXPDTを指定した場合、このオペランドはオーバーライドされて無視されます。

    • OpenFrameでは、データセットの保存期限以内に追加、修正、削除を防止する機能はサポートしていません。期限切れのデータセットをシステムが自動的に削除する機能のみ提供します。

  • 以下は、データセットの有効期限を2010年12月31日に指定する例です。

    //DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),EXPDT=2010/365

2.19. FCB

SYSOUTデータセットを出力するプリンターを指定します。出力時にフォーマットが可能です。

  • 構文

    FCB = fcb-name
    項目 説明

    fcb-name

    1~4文字の記号名称で指定します。

2.20. FLASH

用紙に一定の書式、範囲をあらかじめ印刷する場合に使用するフィルム・オーバーレイの識別名、コピー部数を指定します。OpenFrameでは構文エラーのみをチェックします。

  • 構文

    FLASH = (フィルム識別名〔,コピー部数〕)
    項目 説明

    フィルム識別名

    プリンターが出力を開始する前にオペレータが設定するフィルム・オーバーレイの識別名を1~4文字の英数字で指定します。

    コピー部数

    指定したフィルム・オーバーレイを適用し、コピー部数を1~255の符号なし整数で指定します。(デフォルト値: 255)

  • 注意事項

    • SYSOUTデータセットの出力でなければ、FLASHオペランドは無視されます。

    • OpenFrameでは、印刷出力のためのFLASH情報を外部プリンター・モジュールに渡すために、ジョブの実行が完了してから保存しています。当情報の使用有無は、外部プリンター・モジュールの必要に応じて異なります。

  • 以下は、外部プリンター・モジュールにFLASH=(FLM1,2)の情報を渡す例です。

    //EXF1 DD SYSOUT=A,FLASH=(FLM1,2)

2.21. FREE

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    FREE = {END | CLOSE}

2.22. HOLD

SYSOUTデータセットの出力を保留するかどうかを指定します。

  • 構文

    HOLD = {YES | Y | NO | N}
    項目 説明

    YES| Y| NO| N

    SYSOUTデータセットの出力を保留するかどうかを指定します。

    • YES: SYSOUTデータセットの出力を保留します。

    • NO: SYSOUTデータセットの出力を書き込みます。

  • 注意事項

    SYSOUTデータセットの出力でない場合は、HOLDオペランドは無視されます。

  • 以下は、SYSOUTデータセットの出力状態をHOLDに指定する例です。

    //SYSOUT DD SYSOUT=A,HOLD=YES

2.23. KEYLEN

新規データセットのキー長を指定します。KEYLENはISAMデータセットの作成時のみ有効です。

  • 構文

    KEYLEN = 値
    項目 説明

    データセットのキーの長さです。1~255の値であり、レコード長以下である必要があります。

  • 注意事項

    • ISAMデータセットでなければ、このオペランドは無視されます。

    • DCBオペランドのパラメータにKEYLENが指定された場合、このオペランドはオーバーライドされて無視されます。

  • 以下は、ISAMデータセットのKEYLENを10と指定する例です。

    //DD1 DD DSN=ISAM.NEW.DATASET,DISP=(NEW,CATLG),
    //       KEYLEN=10,DCB=(RECFM=FB,DSORG=IS,LRECL=72)

2.24. LABEL

データセットのラベルを指定します。

  • 構文

    LABEL = ([データセットシーケンス番号][,AL] [,PASSWORD][,IN] [,EXPDT={yyyy/ddd}])
                              [,AUL][,NOPWREAD][,OUT]        {yyddd}
                              [,BLP][,]        [,]   [,RETPD=nnnn]
                              [,LTM]
                              [,NL]
                              [,NSL]
                              [,SL]
                              [,SUL]
                              [,]
    項目 説明

    EXPDT

    ={yyyy/ddd} | {yyddd}

    データセットの有効期限を指定します。

    データセットを最初に作成する際のみ指定できます。指定日以内にデータセットを追加・修正・削除することはできません。

    • yyyy: 4桁の年を指定します。(範囲: 1900 ~ 2099)

    • yy: 2桁の年を指定します。(範囲: 0 ~ 99、1900年代として認識)

    • ddd: 日付を指定します。(範囲: 1~ 366)

    EXPDT=99365またはEXPDT=1999/365を指定した場合、永久保存として処理されます。

    RETPD=nnnn

    データセットの保存期限を日数で指定します。データセットを最初に作成する際にのみ指定できます。

    • nnnn: 0~9999の符号なし整数を指定します。

    有効期限が1999年365日となる値を指定した場合も、永久保存として処理されます。

    OpenFrameではEXPDTとRETPDパラメータのみサポートします。それ以外のパラメータについては、構文エラーのみをチェックして使用しないため、本書では触れません。

  • 注意事項

    • OpenFrameでは、データセットの保存期限以内に追加・修正・削除を防止する機能はサポートしていません。

    • 期限切れのデータセットをシステムが自動的に削除する機能のみ提供します。

  • 以下は、新しいデータセットのMAX.PRESERVEを磁気テープ・ボリュームに作成し、永久保存することを指定する例です。

    //DD2 DD DSN=TMAX.PRESERVE,UNIT=848X-1,
    //       DISP=(,KEEP),VOL=SER=111111,
    //       LABEL=EXPDT=99365

2.25. LRECL

新規作成されるデータセットのレコード長を指定します。

レコード形式が固定長ブロック・レコードあるいはスパン(Span)レコードの場合に必ず指定します。各レコード形式で指定できる最大値は、固定長または長さが未指定のレコードの場合、32760バイトです。

以下は、各レコード形式のレコード長を指定する方法です。

  • レコード長を指定します。

    RECFM={F|FB}
  • 最大レコード長を指定します。4バイトRDWを含む長さです。

    RECFM={V|VB|VS|VBS}
  • 最大レコード長を指定します。

    RECFM=U

以下は、LRECLオペランドの使用方法です。

  • 構文

    LRECL = 値
    項目 説明

    データセットのレコード長であり、1~32761の符号なし整数で指定します。

  • 注意事項

    • DCBオペランドのパラメータにLRECLが指定された場合、このオペランドはオーバーライドされて無視されます。

    • 非VSAMデータセットの最大値は32760です。

  • 以下は、レコード長を70に指定する例です。

    //DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),LRECL=70,DCB=(RECFM=FB)

2.26. MGMTCLAS

OpenFrameではサポートされません。

2.27. MODIFY

SYSOUTデータセットのコピー修飾モジュール名とCHARSオペランドで指定するテーブルのシーケンス番号を指定します。

  • 構文

    MODIFY = (モジュール名[,テーブル番号])
    項目 説明

    モジュール名

    コピー修飾モジュール名を1~4文字の英数字で指定します。

    テーブル番号

    CHARSオペランドで指定されたテーブルのシーケンス番号を英数字で指定します。

  • 注意事項

    • SYSOUTデータセットの出力でなければ、MODIFYオペランドは無視されます。

    • OpenFrameでは、印刷出力のためのMODIFY情報を外部プリンター・モジュールに渡すために、ジョブの実行が完了してから保存しています。当情報の使用有無は、外部プリンター・モジュールの必要に応じて異なります。

  • 以下は、外部プリンター・モジュールにCHARS=(TBJ0,TBJ1)、MODIFY=(TLE2,2)の情報を渡す例です。

    //OUT1 DD SYSOUT=A,CHARS=(TBJ0,TBJ1),
    //        MODIFY=(TLE2,2)

2.28. OUTLIM

SYSOUTデータセットに出力できる最大レコード数を指定します。JCLにOUTLIMオペランドがない場合は、OpenFrame環境設定のtjclrunサブジェクトのDDセクションのOUTLIMキーの値が適用されます。

  • 構文

    OUTLIM = 値
    項目 説明

    0~16777215の符号なし整数を指定します。

  • 注意事項

    OUTLIMを0に設定すると、無制限を意味します。

2.29. PASSWORD

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    PASSWORD = (パスワード,保護コード)

2.30. PROTECT

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    PROTECT = {YES | Y}

2.31. PRTFORM

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    PRTFORM = 値

2.32. PRTYPE

OpenFrameではサポートされません。

  • 構文

    PRTYPE = {LP | PP}

2.33. RECFM

データセットのレコード形式と特性を指定します。OpenFrameでは、以下のレコード形式のみサポートします。

  • 構文

    RECFM={F[B][A|M]}
          {V[B|S|BS][A|M]}
          {D[B][A]}
          {L[A|M]}
          {U[A|M]}
    項目 説明

    A

    ASAコードを含むレコード形式です。

    B

    ブロック・レコード形式です。

    D

    直接アクセス・レコード形式です。

    F

    固定長レコード形式です。

    L

    ライン単位レコード形式です。

    Lレコード形式は、オープン環境でテキスト・ファイルを保存する一般的なレコード形式です。OpenFrameに移行した後、データ連携を円滑に行うために新しく追加したレコード形式です。

    M

    機械制御文字を含むレコード形式です。

    S

    スパン・レコード形式です。

    V

    可変長レコード形式です。

    U

    長さが未指定のレコード形式です。

  • 注意事項

    DCBオペランドのパラメータにRECFMが指定された場合、このオペランドはオーバーライドされて無視されます。

  • 以下は、RECFMをFBに指定する例です。

    //DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),RECFM=FB,LRECL=80

2.34. RETPD

データセットの保存期限を日数で指定します。データセットを最初に作成する際のみ指定できます。

  • 構文

    RETPD = nnnn
    項目 説明

    nnnn

    データセットの保存期限を0~9999の符号なし整数で指定します。

  • 注意事項

    • LABELオペランドでRETPDを指定した場合、このオペランドはオーバーライドされて無視されます。

    • OpenFrameでは、データセットの保存期限以内に追加・修正・削除を防止する機能はサポートしていません。期限切れのデータセットをシステムが自動的に削除する機能のみ提供します

  • 以下は、データセットの有効期限を、現在の日付から30日間を指定する例です。

    //DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),RETPD=30

2.35. SPACE

直接アクセス・ボリュームに新規データセットのスペース割り振り量を指定します。

  • 構文

    SPACE = ({TRK,}(初期値1[,追加値1][,ディレクトリ1])[,RLSE] [,CONTIG][,ROUND])
             {CYL,}       [,]                        [,]    [,MXIG]
             {ブロック長,}                                   [,ALX]
             {レコード長,}                                   [,]

    以下は、パラメータについての説明です。

    パラメータ 説明

    TRK

    スペース割り振り量の初期値および追加値の単位がトラック単位であることを意味します。

    CYL

    スペース割り振り量の初期値および追加値の単位がシリンダー単位であることを意味します。

    ブロック長

    スペース割り振り量の初期値および追加値の単位がブロック単位であることを意味します。

    0~65535の符号なし整数を指定します。

    レコード長

    AVGRECオペランドが指定されるとレコード長として処理されます。

    0~65535の符号なし整数を指定します。

    初期値

    データセットの最初の割り振りサイズを指定します。

    0~16777215の符号なし整数を指定します。

    追加値

    データセットの作成中にスペースが不足して追加する必要がある場合、一度に追加する値を指定します。スペースの追加割り振りが許可される最大回数は、基本的に15回までです。

    OpenFrameでは、非VSAMデータセットの場合、OpenFrame環境設定のdsサブジェクトのDATASET_DEFAULTセクションのNVSM_EXTENT_LIMITキーにスペースの追加割り振りが可能な最大回数を指定できます。

    0~16777215の符号なし整数を指定します。

    ディレクトリ

    区分データセット(PDS)を作成する際、ディレクトリ領域のスペース割り振り量を指定します。0~16777215の符号なし整数を指定します。

    このパラメータが指定された場合、区分データセットとしてのみ見なされます。OpenFrameでは構文チェックのみ行い、実際に指定された値によるスペース割り振りには使用しません。

    説明されていないRLSE、CONTIG、MXIG、ALX、ROUNDパラメーターはサポートされていません。追加値および初期値は省略可能ですが、既存のデータセットに対して DD文を定義する場合には、そのデータセットに設定されている追加値が使用されます。新規に作成するデータセットの場合、初期値は2048M、追加値は0に設定された状態でデータセットが作成されます。

  • 注意事項

    • SPACEオペランドとDDNAME、AMP、DLM、アスタリスク(*)またはDATAオペランドは互いに排他的であるため、同時に指定してはなりません。

    • VSAMデータセットを作成する場合、SPACEオペランドを指定してはなりません。

  • 以下は、JOB1のDD 文で新しく作成するデータセット・データに20トラックを割り振って、データの記録中にスペースが不足したら、そのたびに5トラックずつ追加のスペースを割り振る例です。作成を終了してクローズするとき、未使用スペースを解除することを示しています。OpenFrameではRLSEは無視されます。

    //JOB1 JOB
    //     EXEC PGM=PROG1
    //DS1  DD   DSN=DATA,UNIT=8598,
    //          VOL=SER=A11111,
    //          SPACE=(TRK,(20,5),RLSE)
    //

    以下は、JOB2のDD文で新しく作成する区分データセットに連続した10シリンダーを割り振って、スペースの先頭からディレクトリ用として256バイトのディレクトリ・ブロックを20個割り当てる例です。

    OpenFrameでは、20個のディレクトリ・ブロック数とCONTIGパラメータの指定は無視されます。ディレクトリ・ブロック数が指定されているということから、区分データセットを新しく作成します。

    //JOB2 JOB
    //     EXEC PGM=PROG2
    //DS2  DD   DSN=DATA,UNIT=8598,
    //          VOL=SER=B11111,
    //          SPACE=(CYL,(10,,20),,CONTIG)
    //

2.36. STORCLAS

SMSストレージ・クラスを指定します。ストレージ・クラスを指定すると、OpenFrame環境設定のsmsサブジェクトに設定されたストレージ・クラスに記述されているデータセットのストレージ関連設定を使用します。

smsサブジェクトについての詳細は、OpenFrame Batch『環境設定ガイド』を参照してください。

  • 構文

    STORCLAS = クラス名
    項目 説明

    クラス

    ストレージ・クラスを1~8桁の記号名称で指定します。

  • 注意事項

    OpenFrame環境設定のsmsサブジェクトに指定したストレージ・クラスが設定されていない場合は、エラーが発生します。

  • 以下は、ストレージ・クラスをSTOR01に指定する例です。

    //DD1 DD DSN=NEW.DATASET,DISP=(NEW,CATLG),STORCLAS=STOR01

2.37. SUBSYS

DD名がAIMPEDの場合のみ使用されます。AIMで使用するPEDとDIDを指定します。

  • 構文

    SUBSYS = (AIM,PED名,,DID番号)

2.38. SYSOUT

SYSOUTデータセットの出力属性を指定します。

  • 構文

    SYSOUT = ([クラス][,プログラム名][,書式番号])
              [*]
    項目 説明

    クラス

    SYSOUTデータセットの出力クラスを指定します。出力クラスの属性に応じて、SYSOUTデータセットの出力および出力保留などを指定します。

    SYSOUT出力クラスの設定は、OpenFrame環境設定のtjesサブジェクトのOUTCLASSセクションを参照します。

    アスタリスク(*)

    SYSOUTデータセットの出力クラスをシステム・メッセージ・クラスと同様に設定することを意味します。

    システム・メッセージ・クラスは、JOB文でMSGCLASSオペランドを使用して指定します。

    プログラム名

    内部読み取りまたは外部書き出しを使用してSYSOUTデータセットを出力する場合、そのプログラム名を指定します。

    内部読み取りを使用して出力する場合はINTRDRを指定します。

    書式番号

    SYSOUTデータセットを出力する用紙の書式番号を指定します。

  • 以下は、出力クラスを8、外部書き出しプログラム名をUSERWTR、出力先をGROUPAに指定する例です。この情報を外部プリンター・モジュールに渡します。

    //OUT DD SYSOUT=(8,USERWTR),DEST=GROUPA

2.39. TERM

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    TERM = TS

2.40. UCS

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    UCS = 値

2.41. UNIT

データセットを割り当てる入出力装置を指定します。

  • 構文

    UNIT = ([ddd]       [,個数][,DEFER])
            [/ddd]      [,P]
            [/dddd]     [,]
            [装置タイプ]
            [装置グループ]
    UNIT = AFF = DD名

    OpenFrameでは、最初の形式とパラメータに/dddd、装置タイプ名、装置グループ名のみサポートします。それ以外のパラメータの指定は無視されます。

    項目 説明

    /dddd

    装置番号を指定します。16進数で0000からFFFFまで指定可能です。

    装置タイプ

    装置タイプを指定します。システムは、指定されたタイプの装置から1つを選択します。装置タイプは英数字およびハイフン(-)で構成された1~8の文字列で指定します。

    装置グループ

    装置グループを指定します。装置グループは英数字およびハイフン(-)で構成された1~8の文字列で指定します。

  • 注意事項

    以下の場合、装置情報をシステムが判断できるため、UNITオペランドは省略できます。

    • データセットがカタログされている場合

    • データセットが先行ステップからパスされた場合

    • VOLUME=REFの指定によって、先行DD文またはカタログされているデータセットを参照した場合

    OpenFrameでは、メインフレームの装置を使用するのではなく、UNIX OSのファイル・システム上にデータセットを実装しているため、装置への割り当ては行いません。ただし、このオペランドによって指定される装置情報を記録しておき、以下のような用途で使用します。

    • 装置のタイプ別に異なる処理が必要な場合に活用します。直接アクセス装置なのか、あるいはテープ装置なのかを区分するために使用します。

    • 装置が決まり、ボリュームが確定された場合、決定された装置からボリュームのシリアル番号を確認するときに使用します。

  • 以下は、EXDD1 DD文でボリュームのシリアル番号がVOL001のボリュームに一時データセットを新規作成する例です。3390という装置から、1台の装置を要求しています。

    //EXDD1 DD UNIT=3390,SPACE=(CYL,(1,1,1)),
    //         VOL=SER=VOL001

    以下は、EXDD DD文でVOL001ボリュームに一時データセットを新規作成することをシステムに要求する例です。UNITオペランドではSYSDAという装置グループのうち、1台の装置を割り当てるように要求しています。

    //EXDD DD UNIT=SYSDA,SPACE=(CYL,(1,1)),VOL=VOL001

2.42. VOLUME/VOL

データセットのボリュームを指定します。

  • 構文

    {VOLUME | VOL}
    =([PRIVATE][,RETAIN][,ボリュームの順序番号][,個数][,][SER=ボリュームのシリアル番号]  )
               [,]      [,]                 [SER=(ボリュームのシリアル番号[,ボリュームのシリアル番号]...)]
                                            [REF=[データセット名]]
                                            [REF=*.DD名]
                                            [REF=*.ステップ名.DD名]
                                            [REF=*.ステップ名.プロシージャステップ名.DD名]

    以下は、パラメータについての説明です。

    項目 説明

    SER=ボリュームのシリアル番号、

    SER=(ボリュームのシリアル番号[,ボリュームのシリアル番号]…​)

    データセットを作成するボリューム、またはデータセットが存在するボリュームのシリアル番号を指定します。ボリュームのシリアル番号は1~6桁の引用符付き文字列で指定します。

    VOLUMEオペランドでSERパラメータのみ指定した場合は、VOLUME=SER=(ボリュームのシリアル番号,…)と指定できます。

    ボリュームのシリアル番号を1つのみ指定する場合、括弧は省略できます。ボリュームのシリアル番号は、OpenFrameのvolmgrツールを使用して指定します。

    REF=データセット名

    指定したデータセットが使用するボリュームと同じボリュームを使用するように指定します。REFパラメータで指定するデータセット名は、世代データ・グループ名(GDG)と異なる必要があります。GDGの特定の世代は指定できます。指定されたデータセットはカタログされていなければなりません。

    OpenFrameでは、カタログされずにパスされたDD文のデータセット名で参照することはサポートしていません。

    REF=*.DD名

    REF=*.ステップ名.DD名

    REF=*.ステップ名.プロシージャステップ名.DD名

    「*[.ステップ名[.プロシージャステップ名].DD名」を逆方向参照といいます。同じジョブの先行DD文で指定されたボリュームを使用することを意味します。先行DD文の位置が先行ジョブ・ステップなのか先行プロシージャ・ステップなのかに応じて、それぞれステップ名またはステップ名とプロシージャ・ステップ名を指定します。

    VOLUMEオペランドでREFパラメータのみ指定した場合、VOLUME=REF=(逆方向参照,…​)の形式で指定できます。

    逆方向参照が指定するDDが存在しない場合、ジョブはフラッシュとして処理されます。

    PRIVATE、RETAIN、ボリュームの順序番号、個数のパラメターはサポートしていません。

  • 以下は、EXDD01 DD文でボリュームのシリアル番号がVOL001のボリュームに存在する既存のデータセットの使用を要求する例です。

    //EXDD01 DD UNIT=848X,VOL=SER=VOL001,
    //          DISP=(OLD,KEEP),DSN=TAPEDS1

    以下は、カタログされているデータセットFILE.ORGが存在する直接アクセス・ボリュームにデータセットFILE.AUTHを作成する例です。

    //DD1 DD DSN=FILE.AUTH,DISP=(,KEEP),VOL=REF=FILE.ORG,
    //       SPACE=(CYL,(5,1))

    以下は、先行ジョブ・ステップのDD文DD1に定義されたデータセット・ファイルを拡張する例です。OpenFrameでは、PRIVATEパラメータとボリューム・カウント2の指定は無視されます。

    //STEP1 EXEC PGM=BUILD
    //DD1   DD   DSN=FILE,DISP=(OLD,KEEP),VOL=SER=111111,
    //           UNIT=8598
    //STEP2 EXEC PGM=EXPAND
    //DD2   DD   DSN=FILE,DISP=(MOD,KEEP),
    //           VOL=(PRIVATE,,,2,REF=*.STEP1.DD1)

3. 特殊なDD文

特殊なDD名を使用するDD文について説明します。OpenFrameでは、以下に記述したDD文のみを特殊なDD文として扱います。

3.1. SYSIN DD

ステップのプログラムで使用する標準入力(stdin)データが存在するデータセットを指定します。EXEC文の後から次のEXEC文の間、またはジョブの終わりの間に記述します。

以下は、TMAXSOFTプログラムが標準入力でsysin dataというデータを取得する例です。

//STEP1 EXEC PGM=TMAXSOFT
//SYSIN DD *
sysin data
/*

以下は、TMAXSOFTプログラムが標準入力でTMAXSOFT.DATAというデータセットの内容を取得する例です。

//STEP1 EXEC PGM=TMAXSOFT
//SYSIN DD DSN=TMAXSOFT.DATA,DISP=SHR

3.2. SYSOUT DDとSYSPRINT DD

SYSOUT DDとSYSPRINT DDは、該当するステップのプログラムで出力する標準出力(stdout)と標準出力エラー(stderr)を保存するデータセットを指定します。

SYSOUT DDとSYSPRINT DDが両方とも指定されている場合はSYSOUT DDが使用され、SYSPRINTはいかなる内容も記述されません。EZTPA00のように、他の製品との連携のために使用されるユーティリティでは、SYSPRINT DDが別の用途で使われることもあります。EXEC文の後から次のEXEC文の間、またはジョブの終わりの間に記述します。

EZTPA00でのSYSPRINT DDの使用については、OpenFrame Batch『ユーティリティリファレンスガイド』を参照してください。

以下は、TMAXSOFTプログラムから出力された標準出力(stdout)と標準出力エラー(stderr)を、SYSOUT DDと指定した一時ファイルに記録する例です。

//STEP1  EXEC PGM=TMAXSOFT
//SYSOUT DD DSN=&&OUT,DISP=(NEW,PASS),VOLUME=100000

以下は、SYSOUT DDとSYSPRINT DDを一緒に使用すると、SYSOUT DDにTMAXSOFTプログラムから出力された標準出力(stdout)と標準出力エラー(stderr)が記録される例です。

//STEP1 EXEC  PGM=TMAXSOFT
//SYSOUT   DD *
//SYSPRINT DD *

3.3. JOBLIB DDとSTEPLIB DD

JOBLIB DDとSTEPLIB DDは、両方ともステップで実行するプログラムを検索ために使用されます。

  • JOBLIB DD

    JOBLIB DDで指定したものは、ジョブ内のすべてのステップで実行するプログラムを検索する際に参照します。JOBLIB DDは、JOB文の後から、最初のEXEC文が現れる前に記述します。

  • STEPLIB DD

    STEPLIB DDで指定したものは、ステップで実行するプログラムを検索する際に参照します。STEPLIB DDは、EXEC文の後から次のEXEC文の間、またはジョブの終わりの間に記述します。

STEPLIB DDとJOBLIB DDの両方が記述された場合は次の優先順位が適用され、STEPLIB DDとJOBLIB DDの両方とも記述されていない場合は、OpenFrame環境設定の設定を使用します。

  • STEPLIB DD

  • JOBLIB DD

  • OpenFrame環境設定のtjclrunサブジェクトのSYSLIBセクションの設定

プログラムの検索順の詳細については、PGMを参照してください。

以下は、TMAXSOFTプログラムをJOBLIB DDで宣言したTMAX.JOBLIBデータセットで優先的に検索する例です。

//JOB1   JOB
//JOBLIB DD DSN=TMAX.JOBLIB,DISP=SHR
//STEP1 EXEC PGM=TMAXSOFT
//SYSOUT DD *

以下は、STEP1のTMAXSOFTプログラムをSTEPLIB DDで宣言したTMAX.STEPLIBデータセットで優先的に検索し、見つからなかった場合でもJOBLIB DDで宣言したTMAX.JOBLIBデータセットでは検索しない例です。

STEP2のTMAXSOFTプログラムをJOBLIB DDで宣言したTMAX.JOBLIBデータセットで検索します。

//JOB1    JOB
//JOBLIB  DD DSN=TMAX.JOBLIB,DISP=SHR
//STEP1   EXEC PGM=TMAXSOFT
//STEPLIB DD DSN=TMAX.STEPLIB,DISP=SHR
//SYSOUT  DD *
//STEP2   EXEC PGM=TMAXSOFT
//SYSOUT  DD *

3.4. JOBCAT DDとSTEPCAT DD

JOBCAT DDとSTEPCAT DDは、両方ともステップで使用するデータセットが登録されているカタログを指定します。

  • JOBCAT DD

    JOBCAT DDで指定したものは、ジョブ内のすべてのステップで使用するデータセットが登録されているカタログです。JOBCAT DDは、JOB文の後から、最初のEXEC文が現れる前に記述します。

  • STEPCAT DD

    STEPCAT DDで指定したものは、ステップで使用するデータセットが登録されているカタログです。

    STEPCAT DDは、EXEC文の後から、次のEXEC文の間、あるいはジョブの終わりの間に記述します。

STEPCAT DDとJOBCAT DDが両方とも記述されると(STEPCAT DD/JOBCAT DD)順序どおり使用されます。

JOBCAT DDまたはSTEPCAT DDで指定したカタログから該当するデータセットが見つからなかった場合は、マスター・カタログでデータセットを検索します。

以下は、TMAX.SYSINデータセットをJOBCAT DDで宣言したTMAX.JOBCATカタログで優先的に検索する例です。

//JOB1   JOB
//JOBCAT DD DSN=TMAX.JOBCAT,DISP=SHR
//STEP1  EXEC PGM=TMAXSOFT
//SYSIN  DD DSN=TMAX.SYSIN,DISP=SHR
//SYSOUT DD *

以下は、STEP1のTMAX.SYSINデータセットをSTEPCAT DDで宣言したTMAX.STEPCATカタログで優先的に検索し、見つからなかった場合でもJOBCAT DDで宣言したTMAX.JOBCATカタログでは検索しない例です。STEP2のTMAX.SYSINデータセットをJOBCAT DDで宣言したTMAX.JOBCATカタログで検索します。

//JOB1    JOB
//JOBCAT  DD DSN=TMAX.JOBCAT,DISP=SHR
//STEP1   EXEC PGM=TMAXSOFT
//STEPCAT DD DSN=TMAX.STEPCAT,DISP=SHR
//SYSIN   DD DSN=TMAX.SYSIN,DISP=SHR
//SYSOUT  DD *
//STEP2   EXEC PGM=TMAXSOFT
//SYSIN   DD DSN=TMAX.SYSIN,DISP=SHR
//SYSOUT  DD *

4. EXEC文

ステップの開始を示し、そのステップの属性を記述します。

  • 構文

    //ステップ名△¹EXEC△¹位置オペランド[,キーワードオペランド]...△¹[コメント]
    項目 説明

    ステップ名

    名前を記述する位置であり、「//」に続く3桁目から記述します。

    ステップ名を省略すると、システムは任意のステップ名を設定します。任意のステップ名の作成は、$S00000$から1ずつ増やしていきます。

    ステップ名はジョブ内で一意の名前にする必要があります。一意でない場合、意図していないステップを参照するか、参照できないことがあります。

    ステップ名は、8文字以内の英数字で、最初の文字は必ず英文字にします。

    EXEC

    オペレーションを記述する位置であり、ステップ名の後ろに1つ以上の空白を入れて「EXEC」と記述します。

    位置オペランド[,キーワードオペランド]

    「EXEC」の後ろに1つ以上の空白を入れて、オペランドを記述します。先に位置オペランドを記述し、その後にキーワード・オペランドを記述します。オペランドはコンマ(,)で区切ります。詳細については、オペランドと各オペランド節の説明を参照してください。

    [コメント]

    オペランドの次に1つ以上の空白を入れて記述します。コメントは71桁目まで記述できます。すべてのオペランドを省略した場合、コメントを記述できません。

オペランド

以下は、オペランドについての説明です。各オペランドについての詳しい説明は、該当する節の内容を参照してください。

  • 位置オペランド

    STEP文の位置オペランドは、PGM、PROC、プロシージャ名のいずれかを記述します。PGMとPROCオペランドはキーワード・オペランドの形式ですが、位置オペランドのようにすべてのキーワード・オペランドの前に記述する必要があります。

    項目 説明

    PGM

    ステップで実行するプログラム名を指定します。

    PROC

    ステップで実行するプロシージャ名を指定します。

  • キーワード・オペランド

    項目 説明

    ACCT

    OpenFrameでは構文エラーのみをチェックし、使用されません。

    ADDRSPC

    OpenFrameでは構文エラーのみをチェックし、使用されません。

    COND

    ステップの実行有無を決定する条件を指定します。

    DPRTY

    OpenFrameでは構文エラーのみをチェックし、使用されません。

    DYNAMNBR

    OpenFrameでは構文エラーのみをチェックし、使用されません。

    PARM

    ステップで実行するプログラムのパラメータを指定します。

    PERFORM

    ステップが実行中に属するパフォーマンス・グループを指定します。

    RD

    OpenFrameでは構文エラーのみをチェックし、使用されません。

    REGION

    OpenFrameでは構文エラーのみをチェックし、使用されません。

    SPARM

    システム・パラメータの値を指定します。

    SYSTEM

    OpenFrameでは構文エラーのみをチェックし、使用されません。

    TIME

    ステップで使用できるCPU時間の最大値を指定します。

    記号パラメータ

    ステップで実行するプロシージャの記号パラメータの値を指定します。

4.1. ACCT

OpenFrameでは構文エラーのみをチェックし、使用されません。

  • 構文

    ACCT[.プロシージャステップ名] = 値

4.2. ADDRSPC

OpenFrameでは構文エラーのみをチェックし、使用されません。

  • 構文

    ADDRSPC[.プロシージャステップ名] = {VIRT}
                                     {REAL}

4.3. COND

ステップの実行有無を決める条件を指定します。CONDオペランドが指定されている場合、該当するステップを開始する前に、以前のステップのリターンコードと比較し、このステップを実行するかどうかを決めます。

CONDオペランドに指定された条件が複数ある場合、指定された条件のいずれかを満たしたら、COND条件が満たされたと判断します。ステップ名やプロシージャ・ステップ名を記述するときは、前述したステップのいずれかを記述する必要があります。それ以外のステップを記述した場合、当該条件を満たさないと判断します。

  • 構文

    COND[.プロシージャステップ名]= ((コード,演算符号[,ステップ名[.プロシージャステップ名]]) )
                                ([,(コード,演算符号[,ステップ名[.プロシージャステップ名]])]...)
                                ([,EVEN] )
                                ([,ONLY] )
    COND=EVEN
    COND=ONLY
    項目 説明

    コード

    ジョブ・ステップのリターンコードと比較する条件コードを符号なし整数で指定します。

    演算符号

    以下の演算符号から適切な値を指定します。

    • EQ: コードがリターンコードと同じである

    • NE: コードがリターンコードと異なる

    • GT: コードがリターンコードより大きい

    • GE: コードがリターンコードより大きいか等しい

    • LT: コードがリターンコードより小さい

    • LE: コードがリターンコードより小さいか等しい

    ステップ名

    ステップ名を記述すると、当該条件は記述されたステップのリターンコードとのみ比較します。記号名称で指定します。

    プロシージャステップ名

    ステップ名と一緒に記述し、リターンコードを比較するステップがプロシージャ内のステップの場合に指定します。記号名称で指定します。

    EVEN, ONLY

    条件の最後に記述し、異常終了の場合でも当該ステップを実行するかどうかを指定します。異常終了を発生させるリターンコードは、OpenFrame環境設定のrcサブジェクトのPGM_NAMEセクションでプログラムごとに指定できます。

    一般的に以前のステップが異常終了すると、以降のステップはスキップしますが、EVENまたはONLYがある場合は実行することもできます。

    • EVEN: 以前のステップの正常・異常終了と関係なく、条件を満たす場合はスキップし、満たさない場合は現在のステップが実行されます。EVENのみ指定した場合は、常に条件を満たさないと判断します。

    • ONLY: 以前のステップが正常終了した場合はスキップし、異常終了した場合は条件を比較してスキップまたは実行を決定します。ONLYのみ指定した場合は、常に条件を満たさないと判断します。

    EVENとONLYの指定については以下で説明します。

    以下は、EVENとONLYの指定と関連するステップについての説明です。

    CONDオペランド 以前のステップの状態 現在のステップの実行可否

    未指定

    すべて正常終了

    実行

    未指定

    1つでも異常終了

    スキップ

    条件のみ指定

    すべて正常終了

    条件を1つでも満たす場合はスキップ、そうでなければ実行

    条件のみ指定

    1つでも異常終了

    スキップ

    EVENのみ指定

    すべて正常終了

    実行

    EVENのみ指定

    1つでも異常終了

    実行

    EVENと条件を指定

    すべて正常終了

    条件を1つでも満たす場合はスキップ、そうでなければ実行

    EVENと条件を指定

    1つでも異常終了

    条件を1つでも満たす場合はスキップ、そうでなければ実行

    ONLYのみ指定

    すべて正常終了

    スキップ

    ONLYのみ指定

    1つでも異常終了

    実行

    ONLYと条件を指定

    すべて正常終了

    スキップ

    ONLYと条件を指定

    1つでも異常終了

    条件を1つでも満たす場合はスキップ、そうでなければ実行

  • 注意事項

    • 条件パラメータは最大8つまで有効であり、9番目以上の条件パラメータは無視されます。条件パラメータの数にEVENとONLYは含まれません。

    • 条件パラメータを1つのみ指定した場合、一番外側にある括弧を省略できます。

    • JOB文とEXEC文にCONDが指定されている場合、JOB文のCONDが満たされるとEXEC文のCONDは考慮されません。

    • CONDオペランドの値は文法チェックの際にはチェックしません。

  • 以下は、STEP1のリターンコードが4であり、STEP2での12が4より大きいため条件を満たしており、STEP2がスキップされる例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //STEP1    EXEC RETURN,PARM=4
    //STEP2    EXEC TMAXSOFT,COND=(12,GT)

    以下は、STEP1のリターンコードが4であり、STEP2での2が4より小さく、12が4より大きいため条件を1つも満たさず、STEP2が実行される例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //STEP1    EXEC RETURN,PARM=4
    //STEP2    EXEC TMAXSOFT,COND=((2,GT),(12,LT))

    以下は、STEP1のリターンコードが4で、STEP2でONLYが指定されており、STEP1が正常終了したため条件を満たしていないが、ONLYパラメータによりSTEP2がスキップされる例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //STEP1    EXEC RETURN,PARM=4
    //STEP2    EXEC TMAXSOFT,COND=((2,GT),(12,LT),ONLY)

    以下は、STEP1のリターンコードが4で、STEP1が異常終了したが、STEP2でONLYが指定されており、かつ条件を満たさないため、STEP2が実行される例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //STEP1    EXEC ABEND,PARM=4
    //STEP2    EXEC TMAXSOFT,COND=((2,GT),(12,LT),ONLY)

    以下は、STEP1のリターンコードが4で、STEP2でEVENが指定されているため、無条件でSTEP2が実行される例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //STEP1    EXEC ABEND,PARM=4
    //STEP2    EXEC TMAXSOFT,COND=EVEN

    以下は、STEP1のリータンコードが4で、STEP2はリターンコードが8だが、STEP3でSTEP1とSTEP2のリターンコードを比較したらSTEP1のリターンコードが4で条件を満たすため、STEP3がスキップされる例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //STEP1    EXEC RETURN,PARM=4
    //STEP2    EXEC RETURN,PARM=8
    //STEP3    EXEC TMAXSOFT,COND=(4,EQ)

    以下は、STEP1のリターンコードが4で、STEP2はリターンコードが8だが、STEP3でSTEP2のリターンコードが4でないため条件が満たされず、STEP3が実行される例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //STEP1    EXEC RETURN,PARM=4
    //STEP2    EXEC RETURN,PARM=8
    //STEP3    EXEC TMAXSOFT,COND=(4,EQ,STEP2)

    以下は、STEP1のプロシージャ・ステップのPSTEP1のリターンコードは4だが、STEP2で比較したら条件を満たすため、STEP2がスキップされる例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //TMAXPROC PROC
    //PSTEP1   EXEC PGM=RETURN,PARM=4
    //PSTEP2   EXEC PGM=RETURN,PARM=8
    //         PEND
    //STEP1    EXEC TMAXPROC
    //STEP2    EXEC TMAXSOFT,COND=(4,EQ,STEP1.PSTEP1)

    以下は、STEP1のリターンコードが4で、STEP2のプロシージャ・ステップでPSTEP1は条件を満たしているためスキップ、PSTEP2はCONDオペランドを適用しないため実行される例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //TMAXPROC PROC
    //PSTEP1   EXEC PGM=TMAXSOFT
    //PSTEP2   EXEC PGM=TMAXSOFT
    //         PEND
    //STEP1    EXEC RETURN,PARM=4
    //STEP2    EXEC TMAXPROC,COND.PSTEP1=(4,EQ)

4.4. DPRTY

OpenFrameでは構文エラーのみをチェックし、使用されません。

  • 構文

    DPRTY[.プロシージャステップ名] = 値

4.5. DYNAMNBR

OpenFrameでは構文エラーのみをチェックし、使用されません。

  • 構文

    DYNAMNBR[.プロシージャステップ名] = 値
    項目 説明

    1~3273の符号なし整数を指定します。

4.6. PARM

ステップで実行するプログラムに渡すパラメータ値を指定します。

  • 構文

    PARM[.プロシージャステップ名] = パラメータ値
    項目 説明

    パラメータ値

    ステップで実行するプログラムに渡すパラメータ値を指定します。

    COBOLの外部スイッチ(external switch)機能を使用するために、/SWITCH(10000000)形式で作成します。括弧内の8つのビット列は、それぞれ0~7番までのスイッチON/OFFの可否を示します。

  • 以下は、STEP1で実行するPRINTプログラムのパラメータとしてargv1を渡す例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //STEP1    EXEC PRINT,PARM='argv1'

    以下は、STEP1のプロシージャ・ステップのPSTEP1にはパラメータとしてargv1を、PSTEP2にはargv2を渡す例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //TMAXPROC PROC
    //PSTEP1   EXEC PGM=PRINT,PARM='argv2'
    //PSTEP2   EXEC PGM=PRINT,PARM='argv2'
    //         PEND
    //STEP1    EXEC TMAXPROC,PARM.PSTEP1='argv1'
  • COBOLの外部スイッチ機能の使用例

    以下は、PARMパラメータを使用して、スイッチ値をCOBOLに(COBOLPGM)渡す例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
             - 以下省略 -
    //STEP1    EXEC PGM=COBOLPGM,PARM='/SWITCH(00000000)'
             - 以下省略 -
    //STEP2    EXEC PGM=COBOLPGM,PARM='/SWITCH(10000000)'
             - 以下省略 -

4.7. PGM

ステップで実行するプログラム名を指定します。このオペランドは、ステップで実行するプログラムを指定します。指定できるプログラムは、UNIXで実行可能なすべての実行バイナリです。

プログラムが共有オブジェクトとなっている場合、当該プログラムは直接実行されないため、PGMRTS00というユーティリティを使用して実行できます。PGMRTS00ユーティリティを使用するかどうかは、OpenFrame環境設定のtjclrunサブジェクトのPGMセクションのUSE_PGMRTS00キーに指定できます。

  1. PGMRTS00については、OpenFrame Batch『ユーティリティリファレンスガイド』を参照してください。

  2. tjclrunサブジェクトの環境設定項目については、OpenFrame Batch『環境設定ガイド』を参照してください。

プログラム名を記述すると、該当するプログラムを以下のプロセスで検索します。

figure 2 2
実行プログラムの指定
  1. STEPLIB DDがステップに指定されている場合、指定されたデータセットのメンバーの中から検索します。

  2. STEPLIB DDがステップに指定されておらず、JOBLIB DDがジョブに指定されている場合、指定されたデータセットのメンバーの中から検索します。

  3. OpenFrame環境設定のtjclrunサブジェクトのSYSLIBセクションのBIN_PATHキーが設定されている場合、BIN_PATHに設定されたディレクトリから検索します。

  4. OpenFrame環境設定のtjclrunサブジェクトのSYSLIBセクションのBIN_PATHキーが設定されていない場合、obmjinitサーバーの起動時の環境変数PATHに設定されたディレクトリから検索します。

以下は、PGMオペランドについての説明です。

  • 構文

    PGM = {プログラム名}
    項目 説明

    プログラム名

    ステップで実行するプログラム名を特殊文字列で指定します。

  • 注意事項

    EXEC文のオペランドの中で一番最初に記述します。

  • 以下は、実行プログラムの名前を指定する例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //STEP1    EXEC PGM=TMAXSOFT

    以下は、PROD.BATCHLIBに存在するTMAXSOFTを実行プログラムの名前として指定する例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //STEP1    EXEC PGM=TMAXSOFT
    //STEPLIB  DD   DSN=PROD.BATCHLIB,DISP=SHR

4.8. PROC

ステップで実行するプロシージャ名を指定します。このオペランドは、該当するステップで実行するプロシージャを指定します。プロシージャには、カタログ式プロシージャとストリーム内プロシージャがあります。

  • カタログ式プロシージャは、データセットのメンバーとして指定されているプロシージャを意味し、どのジョブででも実行できます。

  • ストリーム内プロシージャは、入力ストリームの中で指定されているプロシージャであり、入力ストリーム内のジョブでのみ一時的に実行できます。

プロシージャの検索順は以下のとおりです。

  1. ストリーム内プロシージャの中から検索します。

  2. JES JCL文のJOBPARM文にPROCLIB={ddname}オペランドが指定されている場合、OpenFrame環境設定のtjesサブジェクトのPROCLIBセクションの{ddname}キーに設定されたデータセットのメンバーの中から検索します。

  3. OpenFrame環境設定のtjesサブジェクトのPROCLIBセクションのPROC00キーに設定されたデータセットのメンバーの中から検索します。

  4. SYS1.PROCLIBのメンバーの中から検索します。

環境設定項目の詳細については、OpenFrame Batch『環境設定ガイド』のtjesサブジェクトを参照してください。

以下は、PROCオペランドの使用方法についての説明です。

  • 構文

    {PROC = プロシージャ名}
    {プロシージャ名}
    項目 説明

    プロシージャ名

    ステップで実行するプロシージャ名を記号名称で指定します。

  • 注意事項

    EXEC文のオペランドの中で一番最初に記述します。

  • 以下は、TMAXPROCプロシージャを実行する例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //STEP1    EXEC TMAXPROC

    以下は、入力ストリームのTMAXPROCプロシージャを実行する例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //TMAXPROC PROC
    //PSTEP1   EXEC PGM=TMAXSOFT
    //         PEND
    //STEP1    EXEC TMAXPROC
プロシージャ・ステップ名

オペランドの後に記述できるプロシージャ・ステップ名について説明します。プロシージャを実行するステップで指定したキーワード・オペランドは、プロシージャ内のすべてのステップで指定したキーワード・オペランドをオーバーライドします。プロシージャ内の特定ステップのオペランドのみをオーバーライドしたい場合は、オペランドにプロシージャ・ステップ名を一緒に記述し、当該ステップでのみオペランドをオーバーライドすることができます。

  • 構文

    オペランド[.プロシージャステップ名] = 値
    項目 説明

    プロシージャステップ名

    オペランドが適用されるプロシージャ・ステップを記号名称で指定します。

  • 注意事項

    プロシージャ・ステップ名は、プロシージャを実行するステップでのみ有効です。プログラムを実行するステップの場合、プロシージャ・ステップ名は無視されます。

  • 以下は、プロシージャ内のすべてのステップのCOND値を(8,EQ)にオーバーライドする例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //TMAXPROC PROC
    //PSTEP1   EXEC PGM=TMAXSOFT,COND=(0,EQ)
    //PSTEP2   EXEC PGM=TMAXSOFT,COND=(4,EQ)
    //         PEND
    //STEP1    EXEC TMAXPROC,COND=(8,EQ)

    以下は、プロシージャ・ステップのPSTEP1のCOND値を(0,NE)にオーバーライドする例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //TMAXPROC PROC
    //PSTEP1   EXEC PGM=TMAXSOFT,COND=(0,EQ)
    //PSTEP2   EXEC PGM=TMAXSOFT,COND=(4,EQ)
    //         PEND
    //STEP1    EXEC TMAXPROC,COND.PSTEP1=(0,NE)

    以下は、プロシージャ・ステップのPSTEP1のCOND値を(0,NE)に、PSTEP2のCOND値を(4,NE)にオーバーライドする例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //TMAXPROC PROC
    //PSTEP1   EXEC PGM=TMAXSOFT,COND=(0,EQ)
    //PSTEP2   EXEC PGM=TMAXSOFT,COND=(4,EQ)
    //         PEND
    //STEP1    EXEC TMAXPROC,COND.PSTEP1=(0,NE),COND.PSTEP2=(4,NE)

4.9. PERFORM

ステップが実行中に属するパフォーマンス・グループを指定します。OpenFrameでは、環境設定に登録されたパフォーマンス・グループ番号に応じたNICE値に変更します。

OpenFrameでは、パフォーマンス・グループ番号をUNIXのNICE値に置き換えて使用します。オペランドが指定されると、ランナーはパフォーマンス・グループ番号をNICE値に置き換え、ステップ・プログラムのNICE値を変更します。

STEP文にPERFORMが指定されている場合、JOB文に指定されたPERFORMは無視されます。

  • 構文

    PERFORM = パフォーマンスグループ番号
    項目 説明

    パフォーマンスグループ番号

    1~999の符号なし整数でパフォーマンス・グループ番号を指定します。

  • 注意事項

    • PERFORMオペランドをNICE機能に置き換えて使用するには、OpenFrame環境設定のtjclrunサブジェクトのPERFORMセクションのUSE_PERFORMキーの値を「YES」に指定します。

    • NICE値を変更することはスーパー・ユーザーの権限を必要とするため、ランナーにsetuidを一緒に設定します。

      1. PERFORMオペランドの使用有無およびパフォーマンス・グループ番号のNICE値への置換については、OpenFrame Batch『環境設定ガイド』のtjclrunサブジェクトのPERFORMセクションを参照してください。

      2. setuid設定については、OpenFrame Batch『TJESガイド』の「ジョブの実行」の「setuid root tjclrun」を参照してください。

  • 以下は、STEP1でPERFORMを10に指定する例です。

    //JOB1   JOB  PERFORM=100
    //STEP1  EXEC PGM=TMAXSOFT,PERFORM=10

4.10. RD

OpenFrameでは構文エラーのみをチェックし、使用されません。

  • 構文

    RD[.プロシージャステップ名] = {R | RNC | NR |NC}

4.11. REGION

OpenFrameでは構文エラーのみをチェックし、使用されません。

  • 構文

    REGION[.プロシージャステップ名] = {値K | 値M}
    項目 説明

    値K

    0~2096128の符号なし整数を指定します。

    値M

    0~2047の符号なし整数を指定します。

4.12. SPARM

システム・パラメータの値を指定します。

  • 構文

    SPARM = '[システムパラメータ]=[値]]'
    項目 説明

    システムパラメータ

    システムに通知するパラメータを指定します。現在はJCLの実行日を設定するDATEのみサポートします。

    DATEパラメータは、YYYY.MM.DD(YYYYは1900年代または2000年代の4桁で表示)、YY.MM.DD(YYは1900年代の2桁で表示)形式で指定します。

  • 以下は、EXEC文でSPARMのDATEパラメータに2010年4月1日を設定する例です。

    //STEP1 EXEC PGM=KEQEFT01,SPARM='DATE=2010.04.01'

4.13. SYSTEM

OpenFrameでは構文エラーのみをチェックし、使用されません。

  • 構文

    SYSTEM[.プロシージャステップ名] = システムの識別名

4.14. TIME

ステップで使用できるCPU時間の最大値を指定します。

  • 構文

    TIME[.プロシージャステップ名] = {([分],[秒])}
                                   {1440       }
                                   {NOLIMIT    }
                                   {MAXIMUM    }
                                   {0          }
    項目 説明

    0~357912の符号なし整数を指定し、CPU時間の分単位の値です。

    0~59の符号なし整数を指定し、CPU時間の秒単位の値です。

    1440

    無制限の値を意味します。CPU時間に制限がありません。

    NOLIMIT

    1440と同様に、無制限の値を意味します。CPU時間に制限がありません。

    0

    1440と同様に、無制限の値を意味します。CPU時間に制限がありません。

    MAXIMUM

    357912分を意味します。

  • 注意事項

    • 分のみを指定する場合は括弧を省略できます。

    • 指定していない場合、デフォルト値は0です。

    • tjclrunでCPU時間のチェックを5秒ごとに行うため、最大5秒の誤差が生じる可能性があります。

  • 以下は、STEP1のTIMEを1分10秒に指定する例です。

    //JOB1   JOB
    //STEP1  EXEC PGM=TMAXSOFT,TIME=(1,10)

    以下は、STEP1のTIMEを無制限に指定する例です。

    //JOB1   JOB
    //STEP1  EXEC PGM=TMAXSOFT,TIME=NOLIMIT

4.15. 記号パラメータ

ステップで実行するプロシージャの記号パラメータの値を指定します。

記号パラメータは、ステップで実行するプロシージャの記号パラメータとして使用されます。記号パラメータは、プロシージャのPROC文で指定した同じ記号パラメータの値をオーバーライドします。プロシージャ内で記号パラメータは「&記号パラメータ」形式で使用し、プロシージャの実行時に指定された値に置き換えられます。

  • 構文

    記号パラメータ = [値]
    項目 説明

    引用符付き文字列で記号パラメータの値を指定します。

  • 注意事項

    「&記号パラメータ」形式で使用しますが、当該記号パラメータが定義されていない場合は、「&記号パラメータ」は置き換えられず、そのまま残ります。

  • 以下は、記号パラメータをA=step1と指定し、PSTEP1のPARMの値はstep1、PSTEP2の値はdefaultとなる例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //TMAXPROC PROC A=default,B=default
    //PSTEP1   EXEC PGM=TMAXSOFT,PARM=&A
    //PSTEP2   EXEC PGM=TMAXSOFT,PARM=&B
    //PEND
    //STEP1    EXEC TMAXPROC,A=step1

    以下は、記号パラメータをA=、B=step1と指定し、PSTEP1のPARMの値がNULL、PSTEP2の値はstep1となる例です。

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //TMAXPROC PROC A=default,B=default
    //PSTEP1   EXEC PGM=TMAXSOFT,PARM=&A
    //PSTEP2   EXEC PGM=TMAXSOFT,PARM=&B
    //PEND
    //STEP1    EXEC TMAXPROC,A=,B=step1

5. EXPAND文

EXEC文のPROCのようにプロシージャを呼び出します。

区分 説明

ストリーム内プロシージャ

入力ストリーム内で指定された、そのジョブでのみ使用可能な一時的なプロシージャです。

PROC文は、JOB文の後から次のジョブが始まるまでの任意の位置に記述できます。入力ストリーム・プロシージャの場合、プロシージャの終わりに必ずPEND文を記述する必要があります。

現在のOpenFrameのEXPAND文では、入力ストリーム・プロシージャの呼び出しはサポートされていません。

カタログ式プロシージャ

カタログに登録されており、どのジョブからでも呼び出して使用できるプロシージャです。

  • 構文

    //[EXPAND名]△¹EXPAND△¹プロシージャ名[記号パラメータ=[値]]...△¹[コメント]
    項目 説明

    EXPAND名

    名前を記述する位置であり、「//」に続く3桁目から記述します。

    EXPAND名は、ストリーム内プロシージャでは必ず記述する必要があり、記号名称で指定します。カタログ式プロシージャでは記述しなくてもかまいません。カタログ式プロシージャをEXEC文で呼び出す際に使用されるプロシージャ名は、カタログ式プロシージャが登録されているメンバー名です。

    EXPAND

    オペレーションを記述する位置であり、EXPAND名の後ろに1つ以上の空白を入れて「EXPAND」と記述します。

    [記号パラメータ=[値]]

    1つ以上の空白を入れて記号パラメータを記述します。

    記号パラメータはEXEC文のオペランドと同じものを使用することはできません。記号パラメータの詳細については、記号パラメータの説明を参照してください。

    [コメント]

    記号パラメータの次に1つ以上の空白を入れて記述します。コメントは71桁目まで記述できます。記号パラメータを1つも記述していない場合は、コメントを記述できません。

記号パラメータ

プロシージャで使用する記号パラメータの値を指定します。記号パラメータのみ定義して値を指定しない場合、システムはNULL値が指定されたものと判断します。該当するプロシージャを呼び出すEXEC文に記号パラメータが指定されていると、プロシージャで同じ記号パラメータはオーバーライドされ、異なる記号パラメータは追加されます。

記号パラメータは、プロシージャ内の制御文で以下どおり使用されます。

  • 記号パラメータの前にアンパサンド(&)を付けて使用します。

    システムは、「&記号パラメータ」形式で記述されているものを、対応するパラメータの値に置き換えます。

  • 「&記号パラメータ」で記号パラメータの終わりを以下のとおり指定できます。

    • 空白、ピリオド(.)、コンマ(,)、括弧、「\n」、単一引用符(' ')があれば、その前までを記号パラメータとして認識します。

      以下の例では、「&ABC」の次にコンマ(,)があるため「ABC」を記号パラメータとして認識します。

      //STEP1 EXEC PGM=&ABC,PARM=8
    • ピリオド(.)で記号パラメータの終わりを区別する場合は、ピリオドまでが記号パラメータの値に置き換えられます。

      以下の例では、「&ABC」の次にピリオドがあるため、「&ABC.」がTMAXに置換され、PGMの値はTMAXSOFTとなります。

      //PROC  PROC ABC=TMAX
      //STEP1 EXEC PGM=&ABC.SOFT,PARM=8
    • 置き換えできる記号パラメータが複数ある場合は、最も長い名前の記号パラメータに置き換えます。

      以下の例では、「&ABC」と「&ABCD」が両方とも記号パラメータではありますが、長さがより長い「ABCD」を置き換えるため、PGMの値は「tmaxEFG」となります。

      //PROC  PROC ABC=TMAX,ABCD=tmax
      //STEP1 EXEC PGM=&ABCDEFG,PARM=8

記号パラメータは、以下の場合は置き換えられません。

  • 「&&記号パラメータ」のように、アンパサンド(&)が2つある場合は置き換えられません。「&&&記号パラメータ」形式の場合は、「&&置き換え値」に置き換えられます。

  • 置き換える記号パラメータが定義されていない場合は置き換えません。

6. JOB文

ジョブの開始を意味しており、ジョブの属性を記述します。

  • 構文

    //JOB名△¹JOB△¹位置オペランド[,キーワードオペランド]...△¹[コメント]
    //JOB名△¹JOB
    項目 説明

    JOB名

    名前を記述する位置であり、「//」に続く3桁目から記号名称で記述します。ジョブ名は省略できません。

    JOB

    オペレーションを記述する位置であり、JOB名の後ろに1つ以上の空白を入れて「JOB」と記述します。

    位置オペランド[,キーワードオペランド]

    「JOB」の後ろに1つ以上の空白を入れてオペランドを記述します。先にすべての位置オペランドを記述し、その後にキーワード・オペランドを記述します。

    詳細については、オペランドと各オペランド節の説明を参照してください。

    [コメント]

    オペランドの次に1つ以上の空白を入れて記述します。コメントは71桁目まで記述できます。すべてのオペランドを省略した場合は、コメントを記述できません。

オペランド

以下は、オペランドについての説明です。各オペランドについての詳しい内容は、該当する節の説明を参照してください。

  • 位置オペランド

    OpenFrameではTIMECONTROLLERオペランド以外は構文エラーのみをチェックします。ただし、2番目のパラメータ(プログラマー名)を記述した場合は、環境変数のPROGRAMMERNAMEに入れてアセンブラーなどのプログラムに渡します。

    項目 説明

    TIMECONTROLLER

    タイム・コントローラーを使用するための値を指定します。

  • キーワード・オペランド

    項目 説明

    ADDRSPC

    OpenFrameでは構文エラーのみをチェックします。

    CLASS

    ジョブ・クラスを指定します。

    COND

    ジョブ・ステップの終了後リターンコードと比較して、以降のステップの実行可否を決定する条件を指定します。

    GROUP

    OpenFrameでは構文エラーのみをチェックします。

    MSGCLASS

    システム・メッセージが出力されるデータセットの出力クラスを指定します。OpenFrameでは、DD文の「SYSOUT=*」を指定した場合に適用されます。

    MSGLEVEL

    ジョブのシステム・メッセージの出力レベルを指定します。

    NOTIFY

    ジョブの終了を通知するユーザーを指定します。

    PASSWORD

    パスワードを指定します。

    PERFORM

    ジョブが実行中に属するパフォーマンス・グループを指定します。

    PRTY

    ジョブの優先順位を指定します。

    RD

    OpenFrameでは構文エラーのみをチェックします。

    REGION

    OpenFrameでは構文エラーのみをチェックします。

    RESTART

    ジョブの再開ステップを指定します。

    SPARM

    システム・パラメータの値を指定します。

    TIME

    ジョブで使用できるCPU時間の最大値を指定します。

    TYPRUN

    ジョブの実行タイプを指定します。

    USER

    ユーザーを指定します。

6.1. ADDRSPC

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    ADDRSPC = {VIRT}
              {REAL}

6.2. CLASS

ジョブ・クラスを指定します。JOB文に指定されたクラスは、該当するジョブのスケジューリングに関与します。TJESでは、各ノードにランナー・スロット(Runner Slot)を設定します。また、ランナー・スロットにはそれぞれ自身が実行できるクラスが指定されています。TJESスケジューラは、サブミットされたジョブのクラスに合うランナー・スロットが空いていると、該当するジョブを実行するようにします。TJESでは、クラス別に設定して、サブミットされたジョブをSTARTやHOLD状態に設定することができます。

たとえば、AクラスをSTART、BクラスをHOLDに設定すると、Aクラスに指定したジョブはサブミット後START状態になり、Bクラスに指定したジョブはサブミット後HOLD状態になります。未設定のクラスでサブミットしたジョブはSTART状態になります。

JOB文のTYPRUNオペランドを使用してJCLHOLDまたはHOLDを指定した場合、このクラス別の設定とは関係なくHOLD状態になります。

  1. スケジューリングの詳細については、OpenFrame Batch『TJESガイド』を参照してください。

  2. ランナー・スロットの設定については、 OpenFrame Batch『環境設定ガイド』でtjesサブジェクトのINITDEFセクションを参照してください。

  3. 各クラスの設定については、OpenFrame Batch『環境設定ガイド』でtjesサブジェクトのJOBCLASSセクションを参照してください。

以下は、CLASSオペランドについての説明です。

  • 構文

    CLASS = job class
    項目 説明

    job class

    ジョブのスケジューリングに使用されるクラスを、A~Z、0~9の間の1文字で指定します。

  • 注意事項

    JOB文でこのオペランドを省略した場合、ジョブのクラスはOpenFrame環境設定のtjclrunサブジェクトのJOBセクションのCLASSキーの値に従います。

    環境設定項目の詳細については、OpenFrame Batch『環境設定ガイド』でtjesサブジェクトを参照してください。

  • 以下は、ジョブ・クラスをAに指定する例です。

    //JOB1 JOB CLASS=A

6.3. COND

ジョブ・ステップの終了後リターンコードと比較して、以降のステップの実行可否を決定する条件を指定します。

CONDオペランドが指定されていると、各ステップが終了するたびにステップのリターンコードを指定されたコードと比較します。JOB文のCOND条件を満たす場合は、EXEC文のCONDオペランドによるステップ別の実行可否を考慮せずにジョブを終了します。CONDオペランドに指定された条件が複数ある場合、指定された条件を1つでも満たせば、COND条件は満たされたものと判断します。

CONDオペランドの処理と似たように、OpenFrame環境設定のrcサブジェクトのPGM_NAMEPGM_TYPEセクションにより、ステップのリターンコードをチェックしてエラー処理する機能があります。この機能は、UNIXシステムへのリホストによって、実行されるプログラムのリターンコードがメインフレームの場合と異なる場合があり、ステップのエラー可否を柔軟に判断するために使用されます。

OpenFrame環境設定のrcサブジェクトの設定はCONDオペランドの設定より優先順位が高いので、OpenFrame環境設定のrcサブジェクトの設定によりステップがエラーとして処理される場合には、COND条件により以降のステップが実行される場合でも、ステップを実行せずに終了します。

環境設定項目の詳細については、OpenFrame Batch『環境設定ガイド』のrcサブジェクトを参照してください。

以下は、CONDオペランドについての説明です。

  • 構文

    COND = ((コード,演算符号),...)
    項目 説明

    コード

    ジョブ・ステップのリターンコードと比較する条件コードを符号なし整数で指定します。

    演算符号

    以下の演算符号から適切な値を指定します。

    • EQ: コードがリターンコードと同一

    • NE: コードがリターンコードと異なる

    • GT: コードがリターンコードより大きい

    • GE: コードがリターンコードより大きいか等しい

    • LT: コードがリターンコードより小さい

    • LE: コードがリターンコードより小さいか等しい

  • 注意事項

    • 条件パラメータは最大8つまで有効であり、9番目以上の条件パラメータは無視されます。条件パラメータを1つのみ指定した場合、最も外側にある括弧を省略することができます。

    • JOB文とEXEC文にCONDが指定されている場合、JOB文のCONDが満たされるとEXEC文のCONDは考慮されません。

    • CONDオペランドの値は、文法チェックの際にチェックしません。

  • 以下は、リターンコードが0の場合のみジョブが続行されるように指定する例です。

    //JOB1 JOB COND=(0,NE)

    以下は、リターンコードが4、8、12の場合のみジョブを終了するように指定する例です。

    //JOB1 JOB COND=((4,EQ),(8,EQ),(12,EQ))

    以下は、リターンコードが0~12の場合のみジョブが続行されるように指定する例です。

    //JOB1 JOB COND=(12,LT)

    以下は、リターンコードが4~12の場合のみジョブが続行されるように指定する例です。

    //JOB1 JOB COND=((4,GT),(12,LT))

6.4. GROUP

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    GROUP = 値
    項目 説明

    8文字以内の記号名称を指定します。

6.5. MSGCLASS

ジョブ内のDD文で「SYSOUT=*」を指定するとき、「*」の値を指定します。

  • 構文

    MSGCLASS = class
    項目 説明

    class

    出力クラスをA~Z、0~9の間の1文字で指定します。

  • 注意事項

    JOB文でこのオペランドを省略した場合、MSGCLASSはOpenFrame環境設定のtjclrunサブジェクトのJOBセクションのMSGCLASSキーの値に従います。

    環境設定項目の詳細については、OpenFrame Batch『環境設定ガイド』のtjclrunサブジェクトを参照してください。

  • 以下は、MSGCLASSをZに指定する例です。

    //JOB1 JOB 8493,KIM,MSGCLASS=Z

6.6. MSGLEVEL

ジョブのシステム・メッセージの出力レベルを指定します。

  • 構文

    MSGLEVEL = ([値][,{0}])
                      {1}
    項目 説明

    [{0} {1}]

    システム・メッセージの出力レベルを指定します。

    • 0: システム・メッセージのうち、エラーメッセージのみを出力します。

    • 1: システム・メッセージのうち、エラーメッセージと一緒にデータセットのLOCK、ALLOCATEなどの情報メッセージを出力します。

  • 注意事項

    JOB文でこのオペランドを省略した場合、MSGLEVELはOpenFrame環境設定のtjclrunサブジェクトのJOBセクションのMSGLEVELキーの値に従います。

    環境設定項目の詳細については、OpenFrame Batch『環境設定ガイド』のtjclrunサブジェクトを参照してください。

  • 以下は、MSGCLASSをZ、MSGLEVELを1、0に指定する例です。

    //JOB1 JOB MSGCLASS=Z,MSGLEVEL=(1,0)

6.7. NOTIFY

ジョブの終了後メッセージを残しておくと、NOTIFYに指定されたユーザーがtjesmgrでコマンドを使ってそのメッセージを確認することができます。

  • 構文

    NOTIFY = {userid}
    項目 説明

    userid

    8文字以内の記号名称を指定します。

  • 注意事項

    JOB文にNOTIFYオペランドが記述されており、かつJES JCL文にもNOTIFY文が記述されている場合は、JOB文のNOTIFYの値は無視され、JES JCL文のNOTIFYの値が使用されます。

6.8. PASSWORD

パスワードを指定します。JOB文のUSERオペランドと一緒に使用されます。そのため、USERオペランドを指定してしないと、このオペランドは無視されます。USERオペランドを指定したものの、このオペランドを指定しない場合、システムはTACFのサロゲート・ユーザー機能を使用するものと判断します。

TACFのサロゲート・ユーザー機能の詳細については、OpenFrame Batch『TJESガイド』の「セキュリティ」を参照してください。

以下は、PASSWORDオペランドについての説明です。

  • 構文

    PASSWORD = password
    項目 説明

    password

    OpenFrameセキュリティ・モジュールであるTACFのユーザー・パスワードを指定します。

    パスワードは8文字以内の英数字を指定します。

  • 以下は、ユーザーをKIMに指定し、パスワードをtmaxsoftに指定する例です。

    //JOB1 JOB USER=KIM,PASSWORD=tmaxsoft

    以下は、ユーザーをKIMに指定したもののパスワードは指定しなかったため、TACFのサロゲート・ユーザー機能を使用する例です。

    //JOB1 JOB USER=KIM

6.9. PERFORM

ジョブが実行中に属するパフォーマンス・グループを指定します。OpenFrameでは、環境設定に登録されたパフォーマンス・グループ番号に応じたNICE値に変更させます。

OpenFrameでは、パフォーマンス・グループ番号をUNIXのNICE値に置き換えて使用します。オペランドが指定されると、ランナーはパフォーマンス・グループ番号をNICE値に置き換えて、ステップ・プログラムのNICE値を変更します。

JOB文とSTEP文の両方ともPERFORMが指定されている場合は、該当するステップのPERFORM設定に従い、残りのステップではジョブのPERFORM設定に従います。

  • 構文

    PERFORM = パフォーマンスグループ番号
    項目 説明

    パフォーマンスグループ番号

    1~999の符号なし整数でパフォーマンス・グループ番号を指定します。

  • 注意事項

    • PERFORMオペランドをNICE機能に置き換えて使用する場合は、OpenFrame環境設定のtjclrunサブジェクトのPERFORMセクションのUSE_PERFORMキーの値をYESに設定します。

    • NICEの値を変更することは、スーパー・ユーザーの権限を必要とするため、ランナーにsetuidを一緒に設定します。

      1. PERFORMオペランドの使用有無およびパフォーマンス・グループ番号のNICE値への置き換えについては、OpenFrame Batch『環境設定ガイド』でtjclrunサブジェクトのPERFORMセクションを参照してください。

      2. setuid設定については、OpenFrame Batch『TJESガイド』の「ジョブの実行」の「setuid root tjclrun」を参照してください。

  • 以下は、PERFORMを100に指定する例です。

    //JOB1 JOB PERFORM=100

6.10. PRTY

ジョブの優先順位を指定します。ジョブの優先順位は、ジョブ・クラスと一緒にスケジューリングに使用され、数字が高いほど優先順位が高いです。

スケジューラでは、同じクラスを持つジョブがある場合、このオペランドの値に応じてどのジョブを先に実行するかを決定します。同じ優先順位である場合は、先にサブミットされたジョブが実行されます。ジョブの優先順位は、エイジング(Aging)ポリシーに従って、時間が経つにつれ高くなります。

優先順位についての設定は、OpenFrame Batch 環境設定のtjesサブジェクトのSCHEDULINGセクションを参照してください。

以下は、PRTYオペランドについての説明です。

  • 構文

    PRTY = 優先順位
    項目 説明

    優先順位

    1~15の符号なし整数でジョブの優先順位を指定します。

  • 注意事項

    このオペランドを使用するには、OpenFrame環境設定のtjesサブジェクトのSCHEDULINGセクションのPRTYJOBキーの値をYESに設定します。

  • 以下は、PRTYを5に指定する例です。

    //JOB1 JOB PRTY=5

6.11. RD

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    RD = {R | RNC | NR |NC}

6.12. REGION

OpenFrameでは構文エラーのみをチェックします。

  • 構文

    REGION = {値K | 値M}
    項目 説明

    値K

    0~2096128の符号なし整数です。

    値M

    0~2047の符号なし整数です。

6.13. RESTART

ジョブの再開ステップを指定します。ジョブが何らかの理由で実行中に終了され、その後このジョブを再実行する際、途中から再開したい場合に指定するオペランドです。このオペランドの値を指定すると、ジョブは指定されたステップから実行されます。該当するステップ名が複数あるときは、一番最初に出てくるステップから始めます。存在しないステップを適用すると、フラッシュが発生します。

  • 構文

    RESTART = ({*}[,値])
               {ステップ名}
    項目 説明

    アスタリスク(*)

    再開ステップが最初のステップであることを意味します。

    ステップ名

    再開ステップの名前を指定します。名前は8文字以内の記号名称で指定します。

  • 以下は、RESTARTをアスタリスク(*)に指定する例です。

    //JOB1 JOB RESTART=*

    以下は、RESTARTをSTEP3に指定する例です。

    //JOB1 JOB RESTART=STEP3

6.14. SPARM

システム・パラメータの値を指定します。

  • 構文

    SPARM = '[システムパラメータ]=[値]]'
    項目 説明

    システムパラメータ

    システムに通知するパラメータを指定します。現在は、JCLの実行日を設定するDATEパラメータのみサポートします。

    DATEパラメータは、YYYY.MM.DD(YYYYは1900年代または2000年代の4桁)、YY.MM.DD(YYは1900年代の2桁)形式で指定します。

  • 以下は、JOB文にSPARMのDATEパラメータとして2010年4月1日を設定する例です。

    //JOB1 JOB CLASS=A,MSGCLASS=X,SPARM='DATE=2010.04.01'

6.15. TIME

ジョブで使用できるCPU時間の最大値を指定します。指定されたCPU時間を超過した場合、該当するジョブはフラッシュして終了します。

  • 構文

    TIME = {([分],[秒])}
           {1440       }
           {NOLIMIT    }
           {MAXIMUM    }
           {0          }
    項目 説明

    0~357912の符号なし整数です。CPU時間の分単位の値です。

    0~59の符号なし整数です。CPU時間の秒単位の値です。

    1440

    無制限の値を意味します。CPU時間に制限がありません。

    NOLIMIT

    1440と同様に無制限の値を意味します。CPU時間に制限がありません。

    0

    1440と同様に無制限の値を意味します。CPU時間に制限がありません。

    MAXIMUM

    357912分を意味します。

  • 注意事項

    • 分のみを指定する場合は括弧を省略できます。

    • 指定しない場合、OpenFrame環境設定のtjclrunサブジェクトのJOBセクションのTIMEキーの値を使用します。設定された値がない場合は0になります。

    • tjclrunでCPU時間のチェックを5秒ごとに行うため、最大5秒の誤差が生じることがあります。

    • JOB文でTIME=1440に指定した場合、EXEC文のすべてのTIME値およびデフォルトのTIME値は無効になります。ジョブ内のすべてのステップは、TIME=1440またはTIME=NOLIMITを指定したのと同様にCPU時間に制限がありません。

  • 以下は、JOB1のTIMEを10秒に指定する例です。

    //JOB1    JOB   CLASS=A,MSGCLASS=A,TIME=(,10)
    //STEP1   EXEC  PGM=KDJBR14
    //SYSOUT  DD    SYSOUT=*
    //

    以下は、ジョブ1のTIMEを2分に指定する例です。

    //JOB1    JOB   CLASS=A,MSGCLASS=A,TIME=2
    //STEP1   EXEC  PGM=KDJBR14
    //SYSOUT  DD    SYSOUT=*
    //

    以下は、ジョブ1のTIMEをMAXIMUMに指定する例です。

    //JOB1    JOB   CLASS=A,MSGCLASS=A,TIME=MAXIMUM
    //STEP1   EXEC  PGM=KDJBR14
    //SYSOUT  DD    SYSOUT=*
    //

6.16. TIMECONTROLLER

ジョブで日付または時間を設定します。

  • 構文

    //{xxcyyddd}
      {xxdhhmm}
      {xxYDnn}
    項目 説明

    xx

    タイム・コントローラーを使用するための2文字のプレフィックスです。

    c

    世紀を示します。0は20世紀、1は21世紀を示します。

    yy

    2桁の年度を示します。00~99を作成できます。

    ddd

    ユリウス日を示します。000~365を作成できます。

    d

    現在の日付を基準にしてオフセットの方向を指定します。

    • P : 実際のシステム時間にhhmmを足します。

    • M : 実際のシステム時間からhhmmを引きます。

    • F : hhmmに指定した値をシステム時間として設定した後、ユーザー・アプリケーションが時間を要求すると、本構文で設定したシステム時間から経過した時間を表示します。

    • A : hhmmに指定した値を使用します。

    • E : Pと同じ機能です。

    • W : Mと同じ機能です。

    hh

    時間を示します。00~23を作成できます。

    mm

    分を示します。00~59を作成できます。

    Y

    年度のオフセットを指定するために必要な文字です。

    D

    現在の日付を基準にしてオフセットの方向を指定します。

    • P : 年度を増加させます。

    • M : 年度を減少させます。

    nn

    年度のオフセット値を指定します。

  • 注意事項

    • OpenFrame環境設定のtjclrunサブジェクトのOPTIONセクションのTIME_CONTROLLERキーの値をYESに設定します。NOに設定されているか、値がない場合は使用できません。

    • OpenFrame環境設定のtjclrunサブジェクトのOPTIONセクションのTIME_CONTROLLER_PREFIXキーのVALUE項目は2文字のプレフィックスを設定します。

      tjclrunサブジェクトの設定方法の詳細については、OpenFrame Batch『環境設定ガイド』を参照してください。

  • 以下は、年度を2030に指定する例です。

    //JOB1    JOB   000000000,'//TCP10'
    //STEP1   EXEC  PGM=IEFBR14
    //SYSOUT  DD    SYSOUT=*
    //

    以下は、日付を20201231に指定する例です。

    //JOB1    JOB   000000000,'//TC120365'
    //STEP1   EXEC  PGM=IEFBR14
    //SYSOUT  DD    SYSOUT=*
    //

    以下は、システム時間に1時間を足した時間を指定する例です。

    //JOB1    JOB   000000000,'//TCP0100'
    //STEP1   EXEC  PGM=IEFBR14
    //SYSOUT  DD    SYSOUT=*
    //

6.17. TYPRUN

ジョブの実行タイプを指定します。OpenFrameでは、HOLD、JCLHOLD、JEM、SCANのみサポートします。

JCLがサブミットされる手順は以下のとおりです。

  1. JCLが入力されます。

  2. 入力されたJCLの基本的な文法をチェックする構文解析を行います。

    基本的な文法チェックには、ジョブ制御文の位置、それぞれの制御文に適したキーワード、そのキーワードに入力可能な値、継続行の指定についてのチェックなどが含まれます。

  3. 入力されたJCLで使用するプロシージャをスプールにコピーし、そのプロシージャの基本的な文法チェックを行うコンバージョン処理をします。

  4. スケジューリング処理をします。

以下は、TYPRUNオペランドについての説明です。

  • 構文

    TYPRUN = {COPY}
             {HOLD}
             {JCLHOLD}
             {JEM}
             {SCAN}
             {JSPECAID}
    項目 説明

    HOLD

    JCLの構文解析とコンバージョンまで処理し、スケジューリング処理はしていない状態で、HOLD状態になります。

    TJESMGRのPSまたはPSJOBコマンドを使用して確認できます。

    スケジューリング処理は、TJESMGRのSTARTコマンドを使用して変更できます。

    JCLHOLD

    JCLの構文解析のみ処理し、JCLHOLD状態になります。

    ジョブの[W]HOLD状態であり、TJESMGRのPSまたはPSJOBコマンド、あるいはOpenStudioのBMで確認することができます。

    コンバージョンとスケジューリング処理は、TJESMGRのSTARTコマンドを使用して変更できます。

    JEM

    JCLに記述されたプログラム、データセット、データセット・カタログなどの存在の有無をチェックし、そのJCLに存在する論理的なエラーについての結果レポートをSYSMSGに記録した後、エラーがない場合はDone(M00000)で、エラーがある場合はDone(M00001)で終了されます。

    ジョブを実際に実行してみなくてもエラーの発生可能性がある要素を事前に確認できる機能です。このオペランドが指定されたジョブはスケジューリングされてランナーで処理されます。

    SCAN

    JCLの構文分析とコンバージョンまで処理し、スケジューリング処理はしていない状態であり、結果レポートをSYSMSGに記録してからDONEで終了します。

    このオペランドは、ジョブのサブミット・プロセスを通過するチェックのみ行い、実際のスケジューリングはしないように指定します。

  • 注意事項

    TYPRUNオペランドが指定されていない場合、JCLはすべてのサブミット・プロセスを経てスケジューリング処理されます。

  • 以下は、TYPRUNをSCANに指定する例です。

    //JOB1    JOB   CLASS=A,MSGCLASS=A,TYPRUN=SCAN
    //STEP1   EXEC  PGM=KDJBR14
    //SYSOUT  DD    SYSOUT=*
    //

    以下は、SYSMSGに記録された結果レポートです。

    ------------------------------------------------------------------------------
     ** JCL SCAN start **
    ------------------------------------------------------------------------------
         1 //JOB1    JOB   CLASS=A,MSGCLASS=A,TYPRUN=SCAN
         2 //STEP1   EXEC PGM=KDJBR14
         3 //SYSOUT  DD    SYSOUT=*
           //
    ------------------------------------------------------------------------------
     ** JCL SCAN finish **
    ------------------------------------------------------------------------------

    以下は、TYPRUNをSCANに指定し、JCLの構文解析でエラーが発生した例です。

    //JOB1    JOB   CLASS=A,MSGCLASS=A,TYPRUN=SCAN
    //STEP1   EXEC  PGM=KDJBR14,  this comma is wrong.
    //SYSOUT  DD    SYSOUT=*
    //

    以下は、SYSMSGに記録された結果レポートです。

         1 //JOB1    JOB   CLASS=A,MSGCLASS=A,TYPRUN=SCAN
         2 //STEP1   EXEC  PGM=KDJBR14,  this comma is wrong.
         3 //SYSOUT  DD    SYSOUT=*
           //
    Syntax Error [Line:2;Column: ;Keyword: ;Message:Expected continuation not received]

    以下は、TYPRUNをJEMに指定して、JCL構文チェックでエラーが発生した例です。STEP01でKDJBR141というプログラムが存在せず、STEP02ではSHRに指定したDD02が存在しないためにそれぞれエラーが発生しています。

    //JEMTEST  JOB TYPRUN=JEM
    //STEP01   EXEC PGM=KDJBR141
    //DD01     DD DSN=TMAX.JEM.DATASET,DISP=(MOD,DELETE)
    //STEP02   EXEC PGM=KDJBR14
    //DD02     DD DSN=TMAX.JEM.DATASET,DISP=SHR
    //STEP03   EXEC PGM=KDJBR14
    //DD03     DD DSN=TMAX.JEM.DATASET,DISP=MOD

    以下は、SYSMSGに記録された結果レポートです。

     JOBID=JOB00028   JOBPOS=0   RUNPID=8998
     JEMTEST JEM (test)
     ==============================================================================
     ---------------------------- STEP01 EXEC PGM step ----------------------------
     EXEC PGM=KDJBR141 (JEM mode)
     (JRN0143F) no program file(KDJBR141) exist - check JCL JOBLIB, JCL STEPLIB, and environment PATH
     ---------------------------- STEP02 EXEC PGM step ----------------------------
     EXEC PGM=KDJBR14 (JEM mode)
     (JRN2008E) [OLDDD02] Dataset 'TMAX.JEM.DATASET' does not exists.
     ---------------------------- STEP03 EXEC PGM step ----------------------------
     EXEC PGM=KDJBR14 (JEM mode)
     ==============================================================================
     (JRN2010I) JEM RUN skip enqueue for output processing ok
     (JRN2017I) JEM RUN total error count : 2
     ---------------------------- JEM PROCESS FINISHED ----------------------------

6.18. USER

ユーザーを指定します。このオペランドは、PASSWORDオペランドのパスワードと一緒に使用し、TACFにユーザー認証およびリソースへの使用権限をチェックする用途で使用します。

JCLをサブミットすると、システムはTACFでユーザーへの認証をチェックします。USERオペランドが指定されている場合、PASSWORDオペランドのパスワードと一緒に認証チェック(実行ユーザー)を行います。USERオペランドが指定されていない場合は、JCLをサブミットしたユーザーでユーザー認証チェック(サブミット・ユーザー)を行います。

このオペランドを指定したものの、PASSWORDオペランドは指定しなかった場合、システムはTACFサロゲート・ユーザー機能を使用して、ユーザー認証チェック(サロゲート・ユーザ)を行います。

ランナーでは、ユーザー認証が行われた実行ユーザー、サブミット・ユーザーまたはサロゲート・ユーザーで使用権限をチェックします。使用権限チェックの対象となるリソースは、ジョブで使用するすべてのデータセットおよびプログラムです。ユーザーが特定のリソースについて権限チェックを行うには、対象リソースをTACFに登録する必要があります。そのリソースがデータセットであればDATASET CLASSに、プログラムであればUTILITY CLASSに登録します。

TACFのサロゲート・ユーザー機能についての詳細は、OpenFrame Batch『TJESガイド』の「セキュリティ」を参照してください。

以下は、USERオペランドについての説明です。

  • 構文

    USER = user
    項目 説明

    user

    OpenFrameセキュリティ・モジュールであるTACFのユーザーを指定します。

    ユーザーは8文字以内の記号名称で指定します。

  • 注意事項

    データセットとユーティリティの使用権限のチェック有無は、OpenFrame環境設定のtjclrunサブジェクトのTACFセクションのCHECK_DSAUTHCHECK_UTAUTHキーの値を確認します。

  • 以下は、ユーザーをKIMに指定し、パスワードをtmaxsoftに指定する例です。

    //JOB1 JOB USER=KIM,PASSWORD=tmaxsoft

    以下は、ユーザーをKIMに指定したものの、パスワードは指定しなかったため、TACFサロゲート・ユーザー機能を使用する例です。

    //JOB1 JOB USER=KIM

7. PEND文

プロシージャの終わりを示します。入力ストリーム・プロシージャでは最後に記述する必要がありますが、カタログ・プロシージャでは最後に記述しなくてもかまいません。

  • 構文

    //[PEND名]△¹PEND△[コメント]
    項目 説明

    [PEND名]

    名前を指定します。「//」に続いて3桁目から始める必要があります。名前は省略できます。

    PEND

    オペレーションを記述する位置であり、名前の後ろに1つ以上の空白を入れて「PEND」と記述します。名前を省略した場合は、「//」の後ろに空白なしで指定できます。

    [コメント]

    PENDの後ろに1つ以上の空白を入れて記述します。

8. PROC文

プロシージャの始まりを意味します。プロシージャには以下の2タイプがあります。

  1. 入力ストリーム・プロシージャ

    入力されたジョブのストリームに指定されているため、該当するジョブでのみ使用できる一時的なプロシージャです。

    PROC文は、JOB文の後から次のジョブが出てくるまで、どの位置にでも記述できます。入力ストリーム・プロシージャの場合、PEND文を使用してプロシージャの終わりを必ず記述します

  2. カタログ・プロシージャ

    カタログに登録されており、どのジョブでも呼び出して使用できるプロシージャです。

  • 構文

    //[PROC名]△¹PROC△¹[記号パラメータ=[値]]...△¹[コメント]
    項目 説明

    PROC名

    PROC名を指定します。「//」に続いて3桁目から始める必要があります。

    PROC名は、入力ストリーム・プロシージャでは必ず記述する必要があり、英数字で指定します。カタログ・プロシージャでは記述しなくてもかまいません。カタログ・プロシージャをEXEC文で呼び出す際に使用されるプロシージャ名は、カタログ・プロシージャが登録されているメンバー名です。

    PROC

    オペレーションを指定します。PROC名の後ろに1つ以上の空白を入れて「PROC」と記述します。PROC名を省略した場合は、「//」の後ろに1つ以上の空白を入れて記述します。

    [記号パラメータ=[値]]

    PROCの後ろに1つ以上の空白を入れて記号パラメータを記述します。記号パラメータはEXEC文のオペランドと同じものは使用できません。記号パラメータの詳細については、記号パラメータを参照してください。

    [コメント]

    記号パラメータの後ろに1つ以上の空白を入れて指定します。記号パラメータを1つも指定しなかった場合、コメントは記述できません。

記号パラメータ

プロシージャで使用する記号パラメータの値を1~8の記号名で指定します。記号パラメータのみ定義し、値を指定していない場合、システムはNULL値が指定されたと判断します。プロシージャを呼び出すEXEC文で記号パラメータが指定されている場合は、プロシージャで同じ記号パラメータはオーバーライドされ、異なる記号パラメータは追加されます。

記号パラメータは、プロシージャ内の制御文で以下のように使用されます。

  • 記号パラメータの前にアンパサンド(&)を付けて使用します。

    システムは、「&記号パラメータ」形式のものを、対応する記号パラメータの値に置き換えます。

  • 「&記号パラメータ」で記号パラメータの終了は以下のように指定できます。

    • 空白、ピリオド(.)、コンマ(,)、括弧、「\n」、単一引用符(' ')がある場合、その前までを記号パラメータとして認識します。

      以下の例では、「&ABC」の次にコンマ(,)があるため、「ABC」を記号パラメータとして認識します。

      //STEP1 EXEC PGM=&ABC,PARM=8
    • ピリオド(.)を使って記号パラメータの終了を示す場合、このピリオドまでが記号パラメータの値に置き換えられます。

      以下の例では、「&ABC」の次にピリオドがあるため、「&ABC.」がTMAXに置き換えられ、PGMの値はTMAXSOFTとなります。

      //PROC  PROC ABC=TMAX
      //STEP1 EXEC PGM=&ABC.SOFT,PARM=8
    • 置き換えできる記号パラメータが複数ある場合、最も長い名前の記号パラメータが置き換えられます。

      以下の例では、「&ABC」と「&ABCD」が両方とも記号パラメータですが、長さがより長い「ABCD」を置き換え、PGMの値は「tmaxEFG」となります。

      //PROC  PROC ABC=TMAX,ABCD=tmax
      //STEP1 EXEC PGM=&ABCDEFG,PARM=8

記号パラメータは、以下のような場合は置き換えられません。

  • 「&&記号パラメータ」のようにアンパサンド(&)が2つある場合は置き換えられません。「&&&記号パラメータ」の場合は、「&&置き換え値」に置き換えます。

  • 置き換える記号パラメータが定義されていない場合は置き換えません。

9. システム・コマンド文

システム・コマンドを記述します。システム・コマンド文は、JOB文と最初のEXEC文の間に記述します。その他の位置に記述されたJCLコマンド文は使用されません。

システム・コマンド文で実行されたコマンドの成功の可否は、該当するジョブのサブミットや実行には影響を及ぼしません。

  • 構文

    // コマンド△¹オペランド
    項目 説明

    コマンド

    オペレーションを記述する位置であり、「//」の後ろに1つ以上の空白を入れてコマンドを記述します。サポートされるコマンドについてはコマンドを参照してください。

    オペランド

    コマンドの後ろに1つ以上の空白を入れてオペランドを記述します。使用可能なオペランドはコマンドによって異なります。

コマンド

以下は、前述したコマンド項目に指定可能なコマンドの説明です。

コマンド 説明

S (START)

指定したプロシージャをサブミットします。

F (MODIFY)

与えられた処理プログラムまたはコマンドを実行します。

OpenFrameでは上記以外のコマンドはサポートしていません。

9.1. S(START)

指定したプロシージャをサブミットします。S(START)コマンドを使用してサブミットを実行すると、該当するプロシージャを呼び出すステップを持つジョブがサブミットされます。また、JOBQにサブミットされたジョブが登録されます。そのとき、プロシージャはカタログ・プロシージャである必要があります。

  • 構文

    // S(START) プロシージャ名,記号パラメータ=値[,記号パラメータ=値]...
    項目 説明

    プロシージャ名

    サブミットするプロシージャ名を指定します。

    記号パラメータ

    PROC文の記号パラメータを参照してください。

  • 以下は、システム・コマンド文でTMAXPROCプロシージャをSコマンドで実行する例です。

    //JOB1    JOB  CLASS=A,MSGCLASS=A
    // S TMAXPROC
    //STEP1   EXEC PGM=KDJBR14

9.2. F(MODIFY)

与えられた処理プログラムまたはコマンドを実行します。

  • 構文

    // F(MODIFY) プログラム(コマンド)名,プログラム(コマンド) パラメータ[,プログラム(コマンド) パラメータ]...
    項目 説明

    プログラム(コマンド)名

    処理プログラム名またはコマンド名を指定します。

    プログラム(コマンド) パラメータ

    指定したプログラムまたはコマンドで使用されるパラメータを指定します。

  • 以下は、システム・コマンド文でAIM操作コマンドをFコマンドで実行する例です。

    //JOB1    JOB  CLASS=A,MSGCLASS=A
    // F AIM,D,WS,MODE=ALL
    //STEP1   EXEC PGM=KDJBR14

10. 空文

ジョブの最後を示します。空文の後から次のJOB文が現れるまでのデータは無視します。

  • 構文

    //

11. 段落見出し

インストリーム・データの最後の行のすぐ後に位置し、インストリーム・データの最後を示します。

インストリーム・データの始まりを示すDD文(「DD *」または「DD DATA」)が存在しない状態でインストリーム・データ(「//」または「/*」で始まらない構文)が現れた場合、システムは以下の構文を自動的に生成し、SYSIN DDのインストリーム・データに含まれるようにします。

//SYSIN DD *
  • 構文

    /*[コメント]
    項目 説明

    [コメント]

    コメントは「/*」の次の3桁目から記述します。

    コメントを3桁目からすぐに記述すると、「/*PRIORITY」のようにJES JCL文として認識する可能性があるため、3桁目には空白を入れて記述することをお勧めします。

12. コメント文

コメントを記述します。コメント文はどこにでも記述できます。ただし、インストリーム・データの間に記述すると、その位置でインストリーム・データが終了されたと判断するため、インストリーム・データの間には記述しないでください。また、その以降のインストリーム・データは新しいSYSIN DDとして登録されます。

OpenFrameでは、「##」で始まる構文もコメントとして処理します。ただし、インストリーム・データで「##」で始まるものはデータとして処理されます。

  • 構文

    //*[コメント]
    項目 説明

    [コメント]

    コメントは「//*」に続いて4桁目から記述します。コメントを複数行に亘って記述する場合は、常に先頭の3桁は「//*」で始まる必要があります。