Chapter 2. JCL Control Statements

Table of Contents

2.1. Overview
2.2. CNTL Statement
2.3. DD Statement
2.3.1. Asterisk (*) and DATA
2.3.2. ACCODE
2.3.3. AMP
2.3.4. AVGREC
2.3.5. BLKSIZE
2.3.6. BLKSZLIM
2.3.7. BURST
2.3.8. CCSID
2.3.9. CHARS
2.3.10. CHKPT
2.3.11. CNTL
2.3.12. COPIES
2.3.13. DATACLAS
2.3.14. DCB
2.3.15. DDNAME
2.3.16. DEST
2.3.17. DISP
2.3.18. DLM
2.3.19. DSID
2.3.20. DSNAME/DSN
2.3.21. DSNTYPE
2.3.22. DUMMY
2.3.23. DYNAM
2.3.24. EXPDT
2.3.25. FCB
2.3.26. FILEDATA
2.3.27. FLASH
2.3.28. FREE
2.3.29. HOLD
2.3.30. KEYLEN
2.3.31. KEYOFF
2.3.32. LABEL
2.3.33. LGSTREAM
2.3.34. LIKE
2.3.35. LRECL
2.3.36. MGMTCLAS
2.3.37. MODIFY
2.3.38. OUTLIM
2.3.39. OUTPUT
2.3.40. PATH
2.3.41. PATHDISP
2.3.42. PATHMODE
2.3.43. PATHOPTS
2.3.44. PROTECT
2.3.45. RECFM
2.3.46. RECORG
2.3.47. REFDD
2.3.48. RETPD
2.3.49. RLS
2.3.50. SECMODEL
2.3.51. SEGMENT
2.3.52. SPACE
2.3.53. SPIN
2.3.54. STORCLAS
2.3.55. SUBSYS
2.3.56. SYMBOLS
2.3.57. SYSOUT
2.3.58. TERM
2.3.59. UCS
2.3.60. UNIT
2.3.61. VOLUME/VOL
2.4. Special DD Statement
2.4.1. SYSIN DD
2.4.2. SYSOUT DD and SYSPRINT DD
2.4.3. JOBLIB DD and STEPLIB DD
2.4.4. JOBCAT DD and STEPCAT DD
2.5. ENDCNTL Statement
2.6. EXEC Statement
2.6.1. ACCT
2.6.2. ADDRSPC
2.6.3. CCSID
2.6.4. COND
2.6.5. DYNAMNBR
2.6.6. MEMLIMIT
2.6.7. PARM
2.6.8. PGM
2.6.9. PROC
2.6.10. PERFORM
2.6.11. RD
2.6.12. REGION
2.6.13. RLSTMOUT
2.6.14. SPARM
2.6.15. TIME
2.6.16. Symbolic Parameter
2.7. IF/THEN/ELSE/ENDIF Statement
2.8. INCLUDE Statement
2.9. JCL Command Statement
2.9.1. S
2.10. JCLLIB Statement
2.11. JOB Statement
2.11.1. ADDRSPC
2.11.2. BYTES
2.11.3. CARDS
2.11.4. CCSID
2.11.5. CLASS
2.11.6. COND
2.11.7. GROUP
2.11.8. JESLOG
2.11.9. LINES
2.11.10. MEMLIMIT
2.11.11. MSGCLASS
2.11.12. MSGLEVEL
2.11.13. NOTIFY
2.11.14. PAGES
2.11.15. PASSWORD
2.11.16. PERFORM
2.11.17. PRTY
2.11.18. RD
2.11.19. REGION
2.11.20. RESTART
2.11.21. SECLABEL
2.11.22. SCHENV
2.11.23. SPARM
2.11.24. TIME
2.11.25. TIMECONTROLLER
2.11.26. TYPRUN
2.11.27. USER
2.12. OUTPUT Statement
2.12.1. ADDRESS
2.12.2. AFPSTATS
2.12.3. BUILDING
2.12.4. BURST
2.12.5. CHARS
2.12.6. CKPTLINE
2.12.7. CKPTPAGE
2.12.8. CKPTSEC
2.12.9. CLASS
2.12.10. COLORMAP
2.12.11. COMPACT
2.12.12. COMSETUP
2.12.13. CONTROL
2.12.14. COPIES
2.12.15. DATACK
2.12.16. DEFAULT
2.12.17. DEPT
2.12.18. DEST
2.12.19. DPAGELBL
2.12.20. DUPLEX
2.12.21. FCB
2.12.22. FLASH
2.12.23. FORMDEF
2.12.24. FORMLEN
2.12.25. FORMS
2.12.26. FSSDATA
2.12.27. GROUPID
2.12.28. INDEX
2.12.29. INTRAY
2.12.30. JESDS
2.12.31. LINDEX
2.12.32. LINECT
2.12.33. MAILBCC
2.12.34. MAILCC
2.12.35. MAILFILE
2.12.36. MAILFROM
2.12.37. MAILTO
2.12.38. MODIFY
2.12.39. NAME
2.12.40. NOTIFY
2.12.41. OFFSETXB
2.12.42. OFFSETXF
2.12.43. OFFSETYB
2.12.44. OFFSETYF
2.12.45. OUTBIN
2.12.46. OUTDISP
2.12.47. OVERLAYB
2.12.48. OVERLAYF
2.12.49. OVFL
2.12.50. PAGEDEF
2.12.51. PIMSG
2.12.52. PORTNO
2.12.53. PRMODE
2.12.54. PRTATTRS
2.12.55. PRTERROR
2.12.56. PRTOPTNS
2.12.57. PRTQUEUE
2.12.58. PRTY
2.12.59. REPLYTO
2.12.60. RESFMT
2.12.61. RETAINS
2.12.62. RETAINF
2.12.63. RETRYL
2.12.64. RETRYT
2.12.65. ROOM
2.12.66. SYSAREA
2.12.67. THRESHLD
2.12.68. TITLE
2.12.69. TRC
2.12.70. UCS
2.12.71. USERDATA
2.12.72. USERLIB
2.12.73. USERPATH
2.12.74. WRITER
2.13. PEND Statement
2.14. PROC Statement
2.15. SET Statement
2.16. XMIT Statement
2.17. NULL Statement
2.18. Delimiter Statement
2.19. Comment Statement

This chapter describes JCL control statements and their operands.

The following is the list of JCL control statements.

JCL Control StatementDescription

CNTL

Indicates the beginning of program control statements.

DD

Defines a data set used in JOB or JOB STEP and sets attributes of the data set.

Special DD

Uses special DD names.

ENDCNTL

Indicates the end of program control statements which are used after a CNTL statement.

EXEC

Indicates the beginning of a STEP and sets attributes of the STEP.

IF/THEN/ELSE/ENDIF

Specifies a condition and describes JCL statements to be executed depending on the result of the condition after branching.

INCLUDE

Includes a specified member in a JCL statement.

JCL Command

Describes JCL commands.

JCLLIB

Specifies a library that gets procedures to be used in JCL or JCL statements specified in an INCLUDE statement.

JOB

Indicates the start of JOB and describes the JOB's attributes.

OUTPUT

Specifies attributes of a SYSOUT data set for output.

PEND

Indicates the end of a procedure.

PROC

Indicates the start of a procedure.

SET

Specifies values of symbolic parameters used in JCL.

XMIT

Transmits data to another node.

NULL

Indicates the end of a JOB.

Delimiter

Indicates the end of in-stream data by being placed right after the last line of in-stream data.

Comment

Describes comments.

Indicates the start of program control statements. All statements between a CNTL statement and an ENDCNTL statement are handled as control statements. CNTL, program control, and ENDCNTL statements are syntax checked, but not used in OpenFrame.

  • Syntax

    //[Label]△¹CNTL△[* comments]
  • Example

    The following example shows how to use a CNTL statement and an ENDCNTL statement.

    //STEP1     EXEC       PGM=PRINT
    //ALPHA     CNTL       * PROGRAM CONTROL STATEMENT FOLLOWS
    //PRGCNTL   PRINTDEV   BUFNO=20,PIMSG=YES,DATACK=BLOCK
    //OMEGA     ENDCNTL
    //AGAR      DD         UNIT=AFP1

Defines a data set used in jobs or job steps and sets attribute of the data set.

  • Syntax

    //[DD name]△¹DD△¹[location operand][,keyword operand]...△¹[comments]
    //[procedure STEP name.DD name]△¹DD△¹[location operand][,keyword operand]...△¹[comments]
    FieldDescription

    DD name

    procedure STEP name.DD name

    Specifies the DD name from column 3 after "//." If a DD statement does not have a name, it is treated as a CONCATENATED DD statement. A DD name is a combination of alphanumeric characters, beginning with an alphabetic character. The length can be up to eight characters.

    If a DD name is used along with a procedure STEP name, the DD statement overrides the attribute of a DD statement that has the same name in the procedure STEP. If there is no statement with the same name, the DD statement is added with its own name. A procedure STEP name is a combination of alphanumeric characters, beginning with an alphabetic character. Its length can be up to eight characters. For more information about CONCATENATED DD and how to add and override a DD statement in a STEP procedure, see the description following this table.

    DD

    Specifies the operation DD. Leave one or more empty spaces before writing "DD" after a DD name.

    [location operand][,keyword operand]

    Specifies operands after "DD" followed by one or more empty spaces. Use a location operand and then a keyword operand. For detailed information, refer to the Operand section and descriptions of each operand.

    [comments]

    Used after operands followed by one or more empty spaces. Comments can be described up to column 71. If all operands are omitted, comments cannot be used.

CONCATENATED DD and Procedure STEP

The following describes CONCATENATED DD and how to add and override a DD statement in a STEP procedure.

  • CONCATENATED DD

    Concatenated data set means that multiple input data sets are logically used as a single data set. CONCATENATED DD is used for this purpose.

    CONCATENATED DD is used by omitting a DD name. The DD statement is logically concatenated with a previously declared DD statement. Special DD such as JOBCAT and STEPCAT can be concatenated.

    The following example shows how to concatenate three data sets with CONCATENATED DD.

    //SYSIN DD DSN=TMAX.SYSIN1,DISP=SHR
    //      DD DSN=TMAX.SYSIN2,DISP=SHR
    //      DD DSN=TMAX.SYSIN3,DISP=SHR
  • Adding or overriding a DD statement in a STEP procedure

    A DD statement specified in a STEP that calls a procedure is used in the STEP of the called procedure, not in the corresponding STEP. To use a DD statement in a STEP that calls a procedure, specify explicitly the STEP in which the DD statement will be used. A STEP in a procedure is specified as procedure STEP name.DD name after "//."

    If a procedure STEP name is not specified, a procedure STEP name specified in previous DD is used. If a DD statement without a procedure STEP name is the first DD statement, the DD statement is determined to be used in the first STEP of a procedure. If a specified procedure STEP name does not exist in a procedure, the DD statement is not used.

    In the following example, the DD1 statement and the DD2 statement are used in PSTEP1 and PSTEP2, respectively.

    //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
    //

    In the following example, although the DD2 statement's procedure STEP name is omitted, the DD2 statement is used in PSTEP2 because the DD1 statement's procedure STEP name is PSTEP2.

    //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
    //

    In the following example, as the DD1 and DD2 statements' procedure STEP names are omitted, the statements are used in PSTEP1, the first STEP of TMAXPROC.

    //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
    //

Operand

The following are supported operand types. For more information about each operand, refer to the respective section.

  • Location operands

    Among asterisk (*), DATA, DUMMY and DYNAM, use only one for the location operand in a DD statement.

    OperandDescription

    Asterisk (*) and DATA

    Indicates the input of in-stream data. If DATA is used along with the DLM operand, JCL statements can be received as in-stream data.

    DUMMY

    Specifies a DUMMY data set.

    DYNAM

    Syntax checked, but not used in OpenFrame.

  • Keyword operands

    OperandDescription

    ACCODE

    Syntax checked, but not used in OpenFrame.

    AMP

    Syntax checked, but not used in OpenFrame.

    AVGREC

    Specifies the unit of initial and additional values for record storage.

    BLKSIZE

    Specifies the maximum length of blocks.

    BLKSZLIM

    Syntax checked, but not used in OpenFrame.

    BURST

    Syntax checked, but not used in OpenFrame.

    CCSID

    Syntax checked, but not used in OpenFrame.

    CHARS

    Specifies a table that sets output characters and the size for printing data sets.

    CHKPT

    Syntax checked, but not used in OpenFrame.

    CNTL

    Syntax checked, but not used in OpenFrame.

    COPIES

    Specifies the copy count of the entire or individual page of SYSOUT data sets.

    DATACLAS

    Specifies the SMS data classes.

    DCB

    Specifies information about Data Control Block (DCB) of non-VSAM data sets.

    DDNAME

    Specifies the DD name and holds off defining the data set until the specified DD is issued.

    DEST

    Specifies the destination for a SYSOUT data set.

    DISP

    Specifies the status and post-processing of data sets.

    DLM

    Used along with the asterisk (*) or DATA operand and specifies a delimiter to indicate the end of in-stream data.

    DSID

    Syntax checked, but not used in OpenFrame.

    DSNAME/DSN

    Specifies the name of a data set.

    DSNTYPE

    Specifies the type of a data set.

    EXPDT

    Specifies the expiration date of a data set.

    FCB

    Specifies the printer to print SYSOUT data sets with a specified format.

    FILEDATA

    Syntax checked, but not used in OpenFrame.

    FLASH

    Specifies a film OVERLAY identification name and the number of copies when a certain template and range are printed on papers in advance.

    FREE

    Syntax checked, but not used in OpenFrame.

    HOLD

    Specifies whether to hold off printing SYSOUT data sets.

    KEYLEN

    Specifies the length of a new data set key.

    KEYOFF

    Specifies the offset where a new data set key starts.

    LABEL

    Specifies the label of a data set.

    LGSTREAM

    Syntax checked, but not used in OpenFrame.

    LIKE

    Copies attributes of an existing data set to those of a newly created data set. The existing data set must be cataloged.

    LRECL

    Specifies the length of a record of a newly created data set.

    MGMTCLAS

    Specifies the SMS data classes.

    MODIFY

    Specifies a copy-modification module name for a SYSOUT data set and the number of order for a table specified with the CHARS operand.

    OUTLIM

    Specifies the maximum number of records that can be output in a SYSOUT data set.

    OUTPUT

    Specifies an OUTPUT statement to be referenced.

    PATH

    Specifies a Unix file path.

    PATHDISP

    Specifies the status and post-processing of a Unix file specified with the PATH parameter.

    PATHMODE

    Specifies access permissions for individual files by user when creating unix files specified with the PATH parameter. Files are created by specifying PATHOPTS=OCREAT.

    PATHOPTS

    Specifies the access mode and status of a Unix file specified with the PATH parameter.

    PROTECT

    Syntax checked, but not used in OpenFrame.

    RECFM

    Specifies the record format and characteristics of a data set.

    RECORG

    Syntax checked, but not used in OpenFrame.

    REFDD

    References the attributes from an earlier DD statement.

    RETPD

    Specifies the number of days to retain a data set.

    RLS

    Syntax checked, but not used in OpenFrame.

    SECMODEL

    Syntax checked, but not used in OpenFrame.

    SEGMENT

    Syntax checked, but not used in OpenFrame.

    SPACE

    Allocates space for a new data set on a direct access volume.

    SPIN

    Syntax checked, but not used in OpenFrame.

    STORCLAS

    Specifies the SMS storage classes.

    SUBSYS

    Syntax checked, but not used in OpenFrame.

    SYMBOLS

    Uses symbolic parameters in in-stream data.

    SYSOUT

    Specifies the otuput attributes of a SYSOUT data set.

    TERM

    Syntax checked, but not used in OpenFrame.

    UCS

    Syntax checked, but not used in OpenFrame.

    UNIT

    Specifies the I/O device to allocate data sets.

    VOLUME/VOL

    Specifies the volume of a data set.

Specifies information about Data Control Block (DCB) of non-VSAM data sets.

  • Syntax

    DCB = (dcb parameter[,dcb parameter]...)
    DCB = ({dataset name}                   [,dcb parameter]...)
          ({*.DD name}                                       )
          ({*.STEP name.DD name}                              )
          ({*.STEP name.procedure STEP name.DD name}             )
    • dcb parameter

      ParameterDescription

      BFALN={F|D}

      Syntax checked, but not used in OpenFrame.

      BFTEK={A|S|R|D}

      Syntax checked, but not used in OpenFrame.

      BLKSIZE={value|valueK|valueM}

      Same as the BLKSIZE operand.

      BUFIN=value

      Syntax checked, but not used in OpenFrame.

      BUFL=value

      Specifies an unsigned integer between 0 and 32760. Syntax checked, but not used in OpenFrame.

      BUFMAX=value

      Syntax checked, but not used in OpenFrame.

      BUFNO=value

      Syntax checked, but not used in OpenFrame.

      BUFOFF={nn|L}

      Specifies an unsigned integer between 0 and 99. Syntax checked, but not used in OpenFrame.

      BUFOUT=value

      Syntax checked, but not used in OpenFrame.

      BUFSIZE=value

      Specifies an unsigned integer between 31 and 65535. Syntax checked, but not used in OpenFrame.

      CPRI={R|E|S}

      Syntax checked, but not used in OpenFrame.

      CYLOFL=value

      Syntax checked, but not used in OpenFrame.

      DEN=value

      Specifies an unsigned integer between 1 and 4. Syntax checked, but not used in OpenFrame.

      DIAGNS=TRACE

      Syntax checked, but not used in OpenFrame.

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

      DAU|IS|ISU}

      Specifies the organization of a data set.

      • PS: Physical sequential data sets.

      • PSU: Physical sequential data sets that include location-dependent information.

      • PO: Partitioned data sets.

      • POU: Partitioned data sets that include location-dependent information.

      • DA: Direct access data sets.

      • DAU: Direct access data sets that include location-dependent information.

      • IS: Indexed sequential data sets.

      • ISU: Indexed sequential data sets that include location-dependent information.

      EROPT={ABE|ACC|SKP}

      Syntax checked, but not used in OpenFrame.

      FUNC={I|R|P|W|RP|PW|RW}

      Syntax checked, but not used in OpenFrame.

      GNCP=value

      Syntax checked, but not used in OpenFrame.

      INTVL=value

      Syntax checked, but not used in OpenFrame.

      IPLTXID=value

      Syntax checked, but not used in OpenFrame.

      KEYLEN=value

      Same as the KEYLEN operand.

      LIMCT=value

      Syntax checked, but not used in OpenFrame.

      LRECL=record length

      Same as the LRECL operand.

      MODE={C|E|CO|ER}

      Syntax checked, but not used in OpenFrame.

      NCP=value

      Specifies an unsigned integer between 1 and 99. Syntax checked, but not used in OpenFrame.

      NTM=value

      Syntax checked, but not used in OpenFrame.

      OPTCD=value

      Syntax checked, but not used in OpenFrame.

      PCI=value

      Specifies a string starting with N,R,A or X on the first argument. Syntax checked, but not used in OpenFrame.

      PRTSP=value

      Specifies an unsigned integer between 0 and 3. Syntax checked, but not used in OpenFrame.

      RECFM=F[B][A|M]

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

      L[A|M]

      U[A|M]

      Same as the RECFM operand.

      RESERVE=value

      Syntax checked, but not used in OpenFrame.

      RKP=value

      Same as the KEYOFF operand. When overlapping with KEYOFF, the RKP value is prioritized.

      STACK=value

      Specifies an unsigned integer between 1 and 2. Syntax checked, but not used in OpenFrame.

      THRESH=value

      Syntax checked, but not used in OpenFrame.

      TRTCH=value

      Syntax checked, but not used in OpenFrame.

    • Other fields

      FieldDescription

      dataset name

      Specifies that the DCB attributes of the specified data set are used. The name of a data set must be different from that of a generation data group (GDG), and the relative GDG number member name cannot be used. A specified data set must be cataloged. In OpenFrame, a non-cataloged but simply passed DD statement cannot be referenced.

      *.DD name

      *.STEP name.DD name

      *.STEP name.procedure STEP name.DD name

      "*[.STEP name[.procedure STEP name].DD name" is for backward reference. This means that DCB attributes specified with an earlier DD statement in the same JOB will be used. Depending on whether the preceding DD statement is in the previous job step or procedure step, each step name or procedure step name is specified. If no DD statement specified by the backward reference exists, the job ends in the FLUSH state.

Specifies the DD name and holds off defining the data set until the specified DD statement is issued. Once issued, the specified DD statement defines the data set with the specified settings. The specified DD statement is not practically used.

The DDNAME operand is mainly used in a STEP that calls a procedure. Since in-stream data cannot be used in a procedure, it is used by holding off defining a data set through DDNAME in a procedure STEP and setting a DD statement specified with DDNAME in the procedure-calling STEP.

In the following example, attributes of SYSIN DD in PSTEP1, which is the STEP in a procedure, are the same as those of PSTEP1.OUTSTEP1 DD in STEP1, which is the STEP that calls the procedure. TMAXSOFT receives in-stream data with SYSIN.

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

The DDNAME operand is used as follows:

  • Syntax

    DDNAME = DD name
    FieldDescription

    DD name

    Specifies a symbolic name for a DD statement to get the data set settings.

  • Note

    • A DD statement that uses the DDNAME operand and a DD statement specified with the DDNAME operand must be found in the same STEP. If the DDNAME operand is used within a STEP in a procedure, it is handled as if the two DD statement are in the same STEP, because the STEP that calls the procedure determines that the DD statement specified with the DDNAME operand is used in the corresponding STEP.

    • A DD statement that uses the DDNAME operand must be used before a DD statement specified with the DDNAME operand. A DD statement specified with the DDNAME operand cannot be backwardly referenced by another DD statement.

    • A DD statement specified with the DDNAME operand must not have a special DD name. Since this DD statement is used only by a DD statement that uses the DDNAME operand and no longer used afterwards, it cannot function as a special DD statement.

    • If there exists no DD statement specified with the DDNAME operand, the DD statement that uses the DDNAME operand is considered to have a DUMMY data set.

  • Example

    In the following example, the SYSOUT statement references the DD2 statement to set its data set. DD2 is only referenced without being used.

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

    In the following example, IN in STEP2 backwardly references OUT in STEP1. The referenced part is OUT in STEP1, not DD2 in STEP1.

    //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)
    //

Specifies the status and post processing method of a data set

  • Syntax

    DISP = ([NEW] [,DELETE] [,DELETE])
            [OLD] [,KEEP]   [,KEEP])
            [SHR] [,PASS]   [,CATLG])
            [MOD] [,CATLG]  [,UNCATLG])
            [,]   [,UNCATLG]
                  [,]
    • Parameter 1

      Specifies the status of a data set.

      ParameterDescription

      NEW

      The data set is newly created in the corresponding JOB STEP.

      OLD

      The data set already exists since before the corresponding JOB STEP.

      SHR

      The data set already exists since before the corresponding JOB STEP. Other JOBs can share the data set.

      MOD

      The data set is expanded (additionally written). If you open a physical sequential data set by printing, you can additionally write on it. When MOD is specified, if SER or REF is specified with the VOLUME operand, it is regarded that the data set already exists. When SER or REF is not specified with the VOLUME operand, if a specified data set has been passed or cataloged, it is regarded that the data set already exists. In other cases, parameter 1 is considered to be set to NEW.

    • Parameter 2

      Specifies the post processing method for a data set when JOB STEP is normally ended (not ABEND).

      ParameterDescription

      DELETE

      Deletes the data set after the corresponding JOB STEP has ended. When volume information is obtained from catalog, it is removed from catalog only when the processing of DELETE has been successfully finished.

      KEEP

      Retains the data set. However, if a JOB STEP in which the data set was created is abnormally ended (ABEND) and DELETE is specified in parameter 3, the data set is deleted.

      PASS

      Passes the data set to the subsequent JOB STEP. When the subsequent JOB STEP receives the data set using a DD statement, SER or REF must not be specified with the VOLUME operand in the DD statement. A data set can be passed to a subsequent JOB STEP only once. Therefore, PASS must be specified with the DISP operand every time the data set is needed to be passed. When there are multiple data sets that have the same name in a single JOB, they must not be passed all together at a particular time. VSAM data sets cannot be passed.

      CATLG

      Catalogs the data set when the JOB STEP ends. If the system references the catalog to allocate a data set, and if CATLG is specified, re-cataloging occurs.

      UNCATLG

      Retains the data set when the JOB STEP ends, but deletes the catalog information in the catalog.

    • Parameter 3

      Specifies the post processing method for a data set when the JOB STEP is abnormally ended (ABEND). Same parameters as Parameter 2 except for PASS are used.

  • Note

    • If only Parameter 1 is specified, parentheses are not necessary.

    • When omitted, the DISP operand is set to NEW,DELETE,DELETE by default.

    • If Parameter 1 is omitted, and Parameter 2 is specified, Parameter 1 is set to NEW by default.

    • If Parameter 1 is set to NEW, while Parameter 2 and 3 are omitted, Parameter 2 and 3 are set to DELETE by default. If Parameter 1 is not NEW, Parameter 2 and 3 are considered as being set to KEEP.

    • If Parameter 3 is omitted, the setting of Parameter 2 applies to Parameter 3.

    • In the case of a temporary data set, Parameter 3 of the DISP operand, regardless of which parameter is actually set, is internally considered as being set to PASS.

    • In the case of a VSAM data set, Parameter 1 must not be set to NEW.

  • Example

    The following example writes a temporary data set in the direct access volume and deletes it when the JOB STEP ends.

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

    The following example requests an exclusive use of a data set 'ORG.SOURCE.TEST' which is written in a volume with a serial number of 333333. The data set is cataloged when the JOB STEP ends.

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

    The following example requests an exclusive use of a data set 'ORG.LIB' which has already been cataloged. The data set is deleted when the JOB STEP ends. The data set is not only deleted, but also uncataloged.

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

Specify the name of a data set. If DSNAME and DSN are specified at the same time, DSNAME is prioritized. Starting with "&&" is a temporary data set, and beginning with an asterisk (*) means the previously declared DD statement's data set name is used.

  • Syntax

    {DSNAME | DSN} = {data set name                  }
                     {data set name (member name)           }
                     {data set name (generation number)          }
                     {&&data set name                }
                     {*.DD name                      }
                     {*.STEP name.DD name             }
                     {*.STEP name.procedure STEP name.DD name}
    FieldDescription

    data set name

    Specifies the data set name with symbols to use in the DD statement. The data set name can be described up to 44 characters in the following format: 'symbolic name[.<symbolic name>]…​' Here, a symbolic name has up to 8 characters and generation group data set (GDG) up to 35 characters. The data set name cannot include any other special characters than @,# and $.

    member name

    Specifies the data set member name with up to 8 characters. The data set member name cannot include any other special characters than @,# and $.

    generation number

    Specifies the generation number of a generation group data set with a sign. If not specified, the plus (+) sign is used. The generation number cannot exceed the maximum generation number of the generation group data set. For more information about generation group data sets, refer to OpenFrame Data Set Guide.

    &&data set name

    Specifies a data set to be temporarily used in the corresponding JOB. Since a temporary data set has an arbitrary name already, if the data set name is too long, an error may occur. Therefore, using a <symbolic name> without a period (.) is recommended. For more information about temporary data sets, see the description following this table.

    *.DD name

    *.STEP name.DD name

    *.STEP name.procedure STEP name.DD name

    "*[.STEP name[.procedure STEP name].DD name" is for backward reference. This means that the data set name specified with an earlier DD statement in the same JOB will be used. Each STEP name or each STEP name and procedure STEP name are specified depending on whether the earlier DD statement is in the earlier JOB STEP or the earlier procedure STEP. If no DD statement specified with backward reference exists, the JOB ends in the FLUSH state.

    The following is a description of temporary data sets related to "&&data set name" as described earlier. A temporary data set is created in the following format.

    • "&&data set name"

      SYSyyddd.Thhmmss.RA000.jobname.data set name.Hgg
      ItemDescription

      yyddd

      JOB execution date.

      hhmmss

      JOB execution time.

      jobname

      JOB name.

      gg

      01.

    • DSN operand omitted

      SYSyyddd.Thhmmss.RA000.jobname.Rggnnnn
      ItemDescription

      yyddd

      JOB execution date.

      hhmmss

      JOB execution time.

      jobname

      JOB name.

      nnnn

      Unique number within the JOB, indicating the order of a DD table.

    • "&&data set name" specified along with SYSOUT data set

      jobid(userid.jobname.jobid.Dnnnnnn.data set name)
      ItemDescription

      userid

      User name of the JOB.

      jobname

      JOB name.

      jobid

      JOBID of the JOB. (JOB00001 to JOB99999)

      nnnnnn

      Unique number within the JOB, indicating the order of a DD table.

    • DSN operand omitted and SYSOUT data set in use

      jobid(userid.jobname.jobid.Dnnnnnn)
      ItemDescription

      userid

      User name of the JOB.

      jobname

      JOB name.

      jobid

      JOBID of the JOB. (JOB00001 to JOB99999)

      nnnnnn

      Unique number within the JOB, indicating the order of a DD table.

    • "&&data set name" specified and in-stream data set in use

      jobid(userid.jobname.jobid.Dnnnnnn.data set name)
      ItemDescription

      userid

      User name of the JOB.

      jobname

      JOB name.

      jobid

      JOBID of the JOB. (JOB00001 to JOB99999)

      nnnnnn

      Unique number within the JOB, indicating the order of a DD table.

    • DSN operand not omitted, or "&&data set name" not specified while in-stream data set in use

      jobid(userid.jobname.jobid.Dnnnnnn)
      ItemDescription

      userid

      User name of the JOB.

      jobname

      JOB name.

      jobid

      JOBID of the JOB. (JOB00001 to JOB99999)

      nnnnnn

      Unique number within the JOB, indicating the order of a DD table.

  • Note

    • If the DSN operand is omitted, the DD statement is considered to use a temporary data set. However, if the status of the data set is not specified as NEW or MOD, it is considered to allocate a volume.

    • When the DSN operand is specified not with the "&&data set name" format but with a SYSOUT data set, the JOB ends in FLUSH.

    • A SYSOUT data set means that a class or an asterisk (*) is specified in the SYSOUT operand of a DD statement.

  • Example

    The following specifies a data set as TMAX.DATASET.

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

    In the following example, the length of a data set exceeds 44 characters, causing a syntax error.

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

    The following example specifies a data set and the member.

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

    The following example specifies a generation data set.

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

    The following example specifies a temporary data set.

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

    The following example specifies a temporary data set as SYSOUT data set.

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

    The following example omits the DSN operand.

    //DD1     DD  DISP=(NEW,PASS)

    The following example references the data set name of the STEP. Here, the data set name of DD2 is TMAX.DATASET.

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

    The following example references the data set name of the previous STEP. Here, the data set name of STEP 2 DD1 is TMAX.DATASET.

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

    The following example references the data set name of the previous procedure STEP. Here, the data set name of STEP2 DD1 is 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

Specifies the label of a data set.

  • Syntax

    LABEL = ([data set sequence number][,AL] [,PASSWORD][,IN] [,EXPDT={yyyy/ddd}])
                              [,AUL][,NOPWREAD][,OUT]        {yyddd}
                              [,BLP][,]        [,]   [,RETPD=nnnn]
                              [,LTM]
                              [,NL]
                              [,NSL]
                              [,SL]
                              [,SUL]
                              [,]
    FieldDescription

    data set sequence number

    Specifies an unsigned number between 0 and 9999. Valid only when the specified data set volume is a tape volume, and the value of the USE_TAPE_FILESEQ key in the DATASET_DEFAULT section of the ds subject in OpenFrame Configuration is set to YES.

    EXPDT

    ={yyyy/ddd} | {yyddd}

    Specifies the expiration date of a data set. Valid only when creating new data sets. Further modification or deletion before the specified expiration date is not possible.

    • yyyy: 4-digit year. (Range: 1900 to 2099)

    • yy: 2-digit year. (Range: 0 to 99, recognized as 1900s)

    • ddd: 3-digit day. (Range: 1 to 366)

    EXPDT=99365 or EXPDT=1999/365 retains the data set permanently.

    RETPD=nnnn

    Specifies the number of days to retain the data set. Valid only when writing new data sets.

    • nnnn: An unsigned integer between 0 and 9999. NONE if specified as 0 and Dec, 31, 1999 if specified as 9999.

    If the expiration date is 99365 or 1999/365, the data set is retained permanently.

    Note

    OpenFrame supports data set sequence number and the EXPDT and RETPD parameters. Other parameters are not used except for syntax check, therefore not covered in this guide.

  • Note

    • OpenFrame does not support further modification or a delete lock function before the expiration date of a data set.

    • Only the automatic deletion of a expired data set is supported.

  • Example

    The following example stores a new data set 'TMAX.PRESERVE' on a magnetic tape volume for permanent retention.

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

Specifies the length of a record in a newly created data set.

If the record type is either fixed length block record or span record, this operand must be specified. If the type is not a span record, the length of a record specified with the LRECL operand cannot exceed the length of a block specified with the BLKSIZE operand. The maximum length for each record type is 32,760 bytes for a fixed length or unspecified record.

The following example shows how to specify the length of a record for each type.

  • Specify the length of a record.

    RECFM={F|FB}
  • Specify the maximum length of a record. The length includes 4 bytes for the RDW.

    RECFM={V|VB|VS|VBS}
  • Specify the maximum length of a record.

    RECFM=U

The following example shows how to use the LRECL operand.

  • Syntax

    LRECL = value
    FieldDescription

    value

    Specifies the length of a data set record specified with an unsigned integer between 0 and 32760.

  • Note

    • If LRECL is specified as a parameter of the DCB operand, this operand is overridden and ignored.

    • The maximum length for non-VSAM data sets is 32760.

  • Example

    The following example specifies the length of a record as 70.

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

Specifies an OUTPUT statement to be referenced. If an OUTPUT statement is referenced by using this operand, output is handled with the setting specified by the corresponding OUTPUT statement. If multiple OUTPUT statements are referenced, output is handled with each setting specified by OUTPUT statements that are referenced by a single SYSOUT data set.

  • Syntax

    OUTPUT = (reference[,reference]...)
    FieldDescription

    reference

    A reference can be specified with one of the following formats.

    • *.name: When an OUTPUT statement to reference is placed in between a JOB statement and the first STEP statement, or in the same STEP

    • *.STEP name.name: When an OUTPUT statement to reference is placed in another STEP

    • *.STEP name.procedure STEP name.name: When an OUTPUT statement to reference is placed within a procedure STEP in STEP

  • Note

    An error may occur if there exists no OUTPUT statement to be referenced.

  • Example

    The following example references an OUTPUT statement.

    //JOB1    JOB    CLASS=A,MSGCLASS=A
    //OUT1    OUTPUT COPIES=5,OUTDISP=WRITE
    //STEP1   EXEC   PGM=TMAXTEST
    //OUT2    OUTPUT COPIES=3,OUTDISP=HOLD
    //OUTDD1  DD     SYSOUT=*,OUTPUT=(*.OUT1,*.OUT2)
    //SYSOUT  DD     SYSOUT=*
    //STEP2   EXEC   PGM=TMAXTEST
    //OUTDD2  DD     SYSOUT=*,OUTPUT=*.STEP1.OUT2
    //SYSOUT  DD     SYSOUT=*
    //

    In the previous example, the OUTDD1 SYSOUT data set references OUT1 and OUT2, and output is handled once with the setting of OUT1 and once with the setting of OUT2. The OUTDD2 SYSOUT data set references OUT2 in STEP1, and output is handled with the setting of OUT2. As a result, output is handled five times: twice for OUTDD1, once for OUTDD2, and twice for SYSOUT in each STEP.

Specifies the access mode to files by individual user when creating a Unix file specified by the PATH parameter. Creation of a file is executed by specifying PATHOPTS=OCREAT. Operates only when using the TSO OCOPY command.

  • Syntax

    PATHMODE = {file-access-attribute} | {(file-access-attribute[,file-access-attribute]...)}
    FieldDescription

    file-access-attribute

    Specified by class type as follows:

    • Owner class

      • SIRUSR: Grants the read permission to the file owner.

      • SIWUSR: Grants the write permission to the file owner.

      • SIXUSR: Grants the search permission to the file owner if the file is a directory, or the execute permission to the file owner if the file is not directory.

      • SIRWXU: Grants the read, write and search permission to the file owner if the file is a directory, or the read, write and execute permission to the file owner of the file is not a directory.

    • Group class

      • SIRGRP: Grants the read permission to the file group class users.

      • SIWGRP: Grants the write permission to the file group class users.

      • SIXGRP: Grants the search permission to the file group class users if the file is a directory, or the execute permission to the file group class users if the file is not a directory.

      • SIRWXG: Grants the read, write and search permission to the file group class users if the file is a directory, or the read, write and execute permission to the file group class users if the file is not a directory.

    • Other classes

      • SIROTH: Grants the read permission to other classes' users.

      • SIWOTH: Grants the write permission to other classes' users.

      • SIXOTH: Grants the search permission to other classes' users if the file is a directory, or the execute permission to other classes' users if the file is not a directory.

      • SIRWXO: Grants the read, write and search permission to other classes' users if the file is a directory, or the read, write and execute permission if the file is not a directory.

Specifies the number of days to retain a data set. Valid only when creating a new data set.

Specifies the space to allocate for a new data set to be created in the direct access volume.

  • Syntax

    SPACE = ({TRK,}(initial value1[,additional value1][,directory1])[,RLSE] [,CONTIG][,ROUND])
             {CYL,}       [,]                  [,]     [,MXIG]
             {block length,}                                [,ALX]
             {record length,}                               [,]

    The following parameters are supported.

    ParameterDescription

    TRK

    Indicates that the unit of initial and additional values is track.

    CYL

    Indicates that the unit of the initial and additional values is cylinder.

    block length

    Indicates that the unit of the initial and additional values is block. It is an unsigned integer between 0 and 65535.

    record length

    Treated as the length of a record when the AVGREC operand is specified. It is an unsigned integer between 0 and 65535.

    initial value

    Specifies the initial space to allocate for a data set. It is an unsigned integer between 0 and 16777215.

    additional value

    Specifies an additional value if the space is not sufficient when creating a data set. Additional space allocation is allowed up to 15 times. In OpenFrame, you can specify the maximum count of additional allocation with the value of the NVSM_EXTENT_LIMIT in the DATASET_DEFAULT section under the ds subject in OpenFrame Configuration. For more information about the ds subject, refer to OpenFrame Configuration Guide. It is an unsigned integer between 0 and 16777215.

    directory

    Specifies the space to allocate in the directory area when creating a partitioned data set (PDS). It is an unsigned integer between 0 and 16777215. A data set specified with this parameter is considered only as PDS. Not used for actual space allocation but only for syntax check in OpenFrame.

    Note

    The RLSE, CONTIG, MXIG, ALX and ROUND parameters which are not described in this table are not supported.

  • Note

    • The SPACE operand cannot be used along with the DDNAME, AMP, DLM, asterisk (*), or DATA operand since they are mutually exclusive.

    • When creating a VSAM data set, the SPACE operand cannot be used.

  • Examples

    In the following example, 20 tracks are allocated for the data set 'DATA', which is newly created in the DD statement of JOB1. 5 tracks are additionally allocated whenever the space becomes insufficient. Unused space is released at CLOSE. RLSE is ignored in OpenFrame.

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

    In the following example, 20 directory blocks (256 bytes for each) are allocated for a directory by allocating consecutive 10 cylinders for the data set DATA, which is newly created in the DD statement of JOB2. The number of blocks (20) and the CONFIG parameter are ignored in OpenFrame. Based on the fact that the number of directory blocks is specified, a PDS is newly created.

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

Specifies the I/O device to allocate a data set.

  • Syntax

    UNIT = ([ddd]       [,count][,DEFER])
            [/ddd]      [,P]
            [/dddd]     [,]
            [device type]
            [device group]
    UNIT = AFF = DD name
    FieldDescription

    /dddd

    Specifies the device number. It is a hexadecimal number from 0000 through FFFF.

    device type

    Specifies the device type. One of devices with the specified type is selected by the system. It is a combination of alphanumeric characters and hyphens (-) between one and eight characters.

    device group

    Specifies the device group. It is a combination of alphanumeric characters and hyphen (-) between one and eight characters.

    Note

    OpenFrame supports only /dddd, device type and device group among the first fields of the first syntax.

  • Note

    In the following cases where the system can identify the device information by itself, the UNIT operand may be omitted.

    • When the data set is cataloged

    • When the data set is passed in the previous STEP

    • When a previous DD statement or a cataloged data set is referenced through VOLUME=REF

      OpenFrame does not allocate devices since it implements data sets upon a file system in the Unix system, not using any mainframe devices. However, the device information specified by this operand is saved in OpenFrame for the following purposes.

    • Separate processing per device type. The information is used to identify whether the device is a direct access or tape type.

    • Identification of the volume serial number. Once the device is specified and then the volume is confirmed, the information is used to get the volume serial number from the specified device.

  • Example

    The following example creates a temporary data set in a volume whose serial number is VOL001 in the EXDD1 DD statement. One device among many '3390' type devices is requested.

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

    The following example requests the system to create a temporary data set in a volume whose serial number is VOL001 in the EXDD DD statement. The UNIT operand requests the allocation of one device from a device group 'SYSDA'.

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

Specifies the volume of a data set.

  • Syntax

    {VOLUME | VOL}
    =([PRIVATE][,RETAIN][,volume sequence number][,count][,][SER=volume serial number]                    )
               [,]      [,]                 [SER=(volume serial number[,volume serial number]...)]
                                            [REF=[data set name]]
                                            [REF=*.DD name]
                                            [REF=*.STEP name.DD name]
                                            [REF=*.STEP name.procedure STEP name.DD name]

    The following parameters are supported.

    FieldDescription

    SER=volume serial number,

    SER=(volume serial number[,volume serial number]…​)

    Specifies the serial number of a volume in which a data set will be created or a data set exists. It is a string of one to six quoted characters. If only SER is specified with the VOLUME operand, the format of VOLUME=SER=(volume serial number,…) can be specified. If only one volume serial number is specified, parentheses can be omitted. Specified volume serial numbers must be previously defined by volmgr, a tool provided by OpenFrame.

    REF=data set name

    Indicates that the volume used by a specified data set is used. A data set name specified with REF must not be the same as the generation data group (GDG) name and GDG relative number member name cannot be used. The specified data set must be previously cataloged. OpenFrame does not support reference with a DD statement's data set name that is just passed without being cataloged.

    REF=*.DD name

    REF=*.STEP name.DD name

    REF=*.STEP name.procedure STEP name.DD name

    "*[.STEP name[.procedure STEP name].DD name" is for backward reference. This means that the volume specified with an earlier DD statement in the same JOB will be used. Each STEP name or each STEP name with procedure STEP name is specified, depending on whether the earlier DD statement is in the previous JOB STEP or the previous procedure STEP. If only REF is specified with the VOLUME operand, the format of VOLUME=REF=(backward reference,…) can be used. If no DD statement specified by a backward reference, the JOB ends in the FLUSH state.

    Note

    The PRIVATE, RETAIN, volume sequence number and count parameters, which are not described in this table, are not supported.

  • Example

    The following example requests the use of an existing data set in the volume whose serial number is 'VOL001' in the EXDD01 DD statement.

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

    The following example creates a data set 'FILE.AUTH' in the direct access volume containing a cataloged data set 'FILE.ORG'.

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

    The following example expands a data set 'FILE' defined in DD1, which is the DD statement in the previous JOB STEP. OpenFrame ignores the PRIVATE parameter and volume count 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)

This section describes DD statements using a special DD name. OpenFrame considers only the following DD statements as special DD statements.

Both the JOBLIB DD and STEPLIB DD statement are used to find a program to be executed in STEP.

  • JOBLIB DD

    What is specified with JOBLIB DD is referenced to find programs that will be executed in all STEPs in JOB. The JOBLIB DD statement is used between a JOB statement and the first EXEC statement.

  • STEPLIB DD

    What is specified with STEPLIB DD is referenced to find programs that will be executed in the corresponding STEP. The STEPLIB DD statement is used between an EXEC statement and the next EXEC statement or the end of JOB.

Even though JOBLIB DD is used, if STEPLIB DD is used in the same STEP, only STEPLIB DD is used in the STEP.

The following example queries the TMAXSOFT program primarily from the TMAX.JOBLIB data set which is declared in JOBLIB DD.

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

The following example queries the TMAXSOFT program in STEP1 primarily from the TMAX.STEPLIB data set which is declared in STEPLIB DD, and not from the TMAX.JOBLIB data set even if failed to find the program. The TMAXSOFT program in STEP2 is queried from the TMAX.JOBLIB data set declared in JOBLIB DD.

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

Both the JOBCAT DD and STEPCAT DD statement specify a catalog in which a data set used in all STEPs is registered.

  • JOBCAT DD

    Specifies a catalog in which a data set used in all STEPs in JOB is registered. The JOBCAT DD statement is used between a JOB statement and the first EXEC statement.

  • STEPCAT DD

    Specifies a catalog in which a data set used in the corresponding STEP is registered. The STEPCAT DD statement is used between an EXEC statement and the next EXEC statement or at the end of JOB.

Even if JOBCAT DD is used, when STEPCAT DD is used in the same STEP, only STEPCAT DD is used in the STEP. JOBCAT DD is used only in STEP in which STEPCAT DD is not used.

If a desired data set is not found in a catalog specified with JOBCAT DD or STEPCAT DD, it is found in a master catalog.

The following example queries the TMAX.SYSIN data set primarily from the TMAX.JOBCAT catalog which is declared in JOBCAT DD.

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

The following example queries the TMAX.SYSIN data set in STEP1 primarily from the TMAX.STEPCAT catalog declared in STEPCAT DD, and not from the TMAX.JOBCAT catalog which is declared in JOBCAT DD. The TMAX.SYSIN data set in STEP2 is queried from the TMAX.JOBCAT catalog declared in JOBCAT DD.

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

Indicates the end of a program control statement following the CNTL statement. The CNTL, program control and ENDCNTL statements are syntax checked but not used in OpenFrame.

  • Syntax

    //[label]△¹ENDCNTL△[comments]
  • Example

    The following example uses the CNTL and ENDCNTL statements.

    //STEP1     EXEC       PGM=PRINT
    //ALPHA     CNTL       * PROGRAM CONTROL STATEMENT FOLLOWS
    //PRGCNTL   PRINTDEV   BUFNO=20,PIMSG=YES,DATACK=BLOCK
    //OMEGA     ENDCNTL
    //AGAR      DD         UNIT=AFP1

Indicates the beginning of a STEP, and describes the STEP's attributes.

  • Syntax

    //STEP name△¹EXEC△¹positional operand[,keyword operand]...△¹[comments]
    FieldDescription

    STEP name

    Specifies the STEP name from column 3 after "//." If omitted, an arbitrary name is specified. An arbitrary STEP name is generated incrementally from $S00000$, one by one. The STEP name must be unique within the JOB. If not unique, an unintended STEP may be referenced or no reference at all. The STEP name must be comprised of eight or less alphanumeric characters, obligatorily beginning with an alphabet.

    EXEC

    Specifies the operation. Leave one or more empty spaces after the STEP name and then write 'EXEC.

    positional operand[,keyword operand]

    Described one or more spaces after 'EXEC'. The positional operands are described before the keyword operands. Each operand is delimited by a comma (,). For more information, refer to Operand and the description of each operand section.

    [comments]

    Used after operands followed by one or more empty spaces. Comments can be described up to column 71. If all operands are omitted, no comment can be described.

Operand

Descriptions for each operand are as follows. For further details on each operand, refer to the respective operand section.

  • Positional operands

    The positional operands in a STEP statement must be either PGM, PROC or procedure name. Even if the PGM and PROC operands have the format of keyword operands, they must be described before all other keyword operands as with positional operands.

    OperandDescription

    PGM

    Specifies the name of a program to be executed in the STEP.

    PROC

    Specifies the name of a procedure to be executed in the STEP.

  • Keyword operands

    OperandDescription

    ACCT

    Syntax checked, but not used in OpenFrame.

    ADDRSPC

    Syntax checked, but not used in OpenFrame.

    CCSID

    Syntax checked, but not used in OpenFrame.

    COND

    Specifies the conditions to determine whether to execute the STEP.

    DYNAMNBR

    Syntax checked, but not used in OpenFrame.

    MEMLIMIT

    Syntax checked, but not used in OpenFrame.

    PARM

    Specifies the parameters for the program to be executed in the STEP.

    PERFORM

    Specifies the performance group to which the STEP belongs during execution.

    RD

    Syntax checked, but not used in OpenFrame.

    REGION

    Syntax checked, but not used in OpenFrame.

    RLSTMOUT

    Syntax checked, but not used in OpenFrame.

    SPARM

    Specifies the value of the SYSTEM parameter.

    TIME

    Specifies the maximum amount of time that the STEP can use CPU.

    Symbolic Parameter

    Specifies the value of a symbolic parameter for a procedure executed in STEP.

Specifies the conditions to determine whether to execute the STEP. When specified, the COND operand tests the return codes from previous STEPs, and determines whether to execute the STEP.

With multiple conditions specified for the COND operand, if only one of them is met, the COND is determined to be satisfied. A STEP name or procedure name must be one of those used in earlier STEPs. If not, the condition is determined not to have been satisfied.

  • Syntax

    COND[.procedure STEP name]= ((code,operator[,STEP name[.procedure STEP name]]) )
                             ([,(code,operator[,STEP name[.procedure STEP name]])]...)
                             ([,EVEN] )
                             ([,ONLY] )
    COND=EVEN
    COND=ONLY
    FieldDescription

    code

    Specifies the condition code to be compared with the return code of JOB STEP. Composed of unsigned integers.

    operator

    Specifies one of the following.

    • EQ: Equal to the return code.

    • NE: Different from the return code.

    • GT: Greater than the return code.

    • GE: Greater than or equal to the return code.

    • LT: Smaller than the return code.

    • LE: Smaller than or equal to the return code.

    STEP name

    Specifies the STEP name whose return code to be specifically compared with the condition. Composed of unsigned integers.

    procedure STEP name

    Specifies the procedure STEP name along with the STEP name, when the STEP with the return code to compare is a STEP within a procedure. Composed of symbolic characters.

    EVEN, ONLY

    Determines whether to execute the STEP in case of an abnormal termination. Specified at the end of the condition. A return code to cause an abnormal termination can be specified for individual programs in the PGM_NAME section of the rc subject in OpenFrame Configuration. When a previous STEP is abnormally terminated, the next STEP is generally not executed, but with EVEN or ONLY, it can be executed.

    • EVEN: Whether or not the previous STEP is normally terminated, if the condition is met, the current STEP is executed. If the condition is not met, the current STEP is not executed. If only EVEN is specified, it is determined that all conditions were not met.

    • ONLY: If the previous STEP is normally terminated, the next STEP is not executed. If not, whether the next STEP is executed is determined by comparing the condition. If only ONLY is specified when a STEP is abnormally terminated, it is determined that all conditions were not met.

    For more information about specifying EVEN and ONLY, see the description following this table.

    Whether to execute the current STEP is determined as follows:

    COND operandStatus of previous STEPsWhether to execute the current STEP

    Unspecified

    All STEPs normally terminated

    Executed

    Unspecified

    At least one STEP abnormally terminated

    Not executed

    Only condition specified

    All STEPs normally terminated

    Not executed if at least one condition is met, or executed

    Only condition specified

    At least one STEP abnormally terminated

    Not executed

    Only EVEN specified

    All STEPs normally terminated

    Executed

    Only EVEN specified

    At least one STEP abnormally terminated

    Executed

    EVEN and condition specified

    All STEPs normally terminated

    Not executed if at least one condition is met, or executed

    EVEN and condition specified

    At least one STEP abnormally terminated

    Not executed if at least one condition is met, or executed

    Only ONLY specified

    All STEPs normally terminated

    Not executed

    Only ONLY specified

    At least one STEP abnormally terminated

    Executed

    ONLY and condition specified

    All STEPs normally terminated

    Not executed

    ONLY and condition specified

    At least one STEP abnormally terminated

    Not executed if at least one condition is met, or executed

  • Note

    • There can be up to 8 conditions. The ninth or subsequent conditions are ignored. EVEN and ONLY are not counted into the number of conditions.

    • If only one condition is specified, the outermost parentheses can be omitted.

    • When the COND operand is used in both a JOB statement and an EXEC statement, if the condition of the JOB statement is met, the condition of the EXEC statement is not taken into account.

    • Values of the COND operand is not subject to syntax check.

  • Example

    In the following example, STEP2 is not executed because the condition is met; 12 in STEP2 is greater than 4, the return code of STEP1.

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

    In the following example, STEP2 is executed because neither conditions are met; 2 and 12 in STEP2 is less than and greater than 4, the return code of STEP1, respectively.

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

    In the following example, STEP2 is not executed because neither conditions are met. But, ONLY is specified in STEP2; STEP1's return code is 4, ONLY is specified in STEP2, and STEP1 is normally terminated.

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

    In the following example, STEP2 is executed because neither conditions are met but ONLY is specified in STEP2; STEP1's return code is 4, ONLY is specified in STEP2, and STEP1 is abnormally terminated.

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

    In the following example, STEP2 is unconditionally executed because STEP1's return code is 4 and EVEN is specified in STEP2.

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

    In the following example, STEP3 is not executed because STEP1's return code is met the condition in STEP3; STEP1's return code is 4 and STEP2's return code is 8, and they are compared with the condition in STEP3.

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

    In the following example, STEP3 is executed because the condition is not met; STEP1's return code is 4 and STEP2's return code is 8, and STEP2's return code is not equal to 4.

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

    In the following example, STEP2 is not executed because the condition is met; the return code of PSTEP1, which is SETP1's procedure STEP, is 4, and this meets the condition in 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)

    In the following example, PSTEP1 is not executed because the condition is met; STEP1's return code is 4, and PSTEP1 meets the condition in STEP2's procedure STEP. PSTEP2 is executed because the COND operand is not applied.

    //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)

Specifies a program to be executed in the STEP with a name. All binaries that are executable in Unix can be specified. If a program is a shared object, it cannot be directly executed but can be executed through the PGMRTS00 utility. Whether to use the PGMRTS00 utility can be specified through the value of the USE_PGMRTS00 key of the PGM section under the tjclrun subject in OpenFrame Configuration.

Note

  1. For more information about PGMRTS00, refer to OpenFrame Utility Reference Guide.

  2. For further details on the tjclrun subject's configuration items, refer to OpenFrame Configuration Guide.

If a program name is specified, the program is searched in the following order.


  1. If STEPLIB DD is specified in STEP, the program is searched from members of a specified data set.

  2. If STEPLIB DD is not specified in STEP, and JOBLIB DD is specified in JOB, the program is searched from members of a specified data set.

  3. If the value of the BIN_PATH key in the SYSLIB section under the tjclrun subject in OpenFrame Configuration is specified, the program is searched from the directory specified in BIN_PATH.

  4. If the value of the BIN_PATH key in the SYSLIB section under the tjclrun subject in OpenFrame Configuration is not specified, the program is searched from the directory specified in the environment variable PATH during the obmjinit server startup.

The following describes how to use the PGM operand.

  • Syntax

    PGM = {program name}
    FieldDescription

    program name

    Specifies the name of a program to be executed in the STEP with special character lines.

  • Note

    Must be the first to be used before any other operands in the EXEC statement.

  • Example

    The following example specifies the name of a program to be executed.

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

    The following example specifies TMAXSOFT in PROD.BATCHLIB as the name of a program to be executed.

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

Specifies a procedure to be executed in the STEP with a name. Catalog procedures and input stream procedures can be specified.

  • A catalog procedure means a procedure that is saved as a member of a data set, and it can be executed in any JOB.

  • An input stream procedure refers to a procedure that is specified in an input stream, and it can be temporarily executed in JOB in input streams.

A procedure is searched in the following order.

  1. The procedure is searched for in the input stream procedures.

  2. If the JCLLIB statement is described, the procedure is searched for among the members specified in the JCLLIB statement.

  3. If the PROCLIB={ddname} operand is specified in the JES2 JCL JOBPARM statement, the procedure is searched for among the members of the data sets specified with the value of the {ddname} key in the PROCLIB section under the tjes subject in OpenFrame Configuration.

  4. The procedure is searched for among the members of the data sets specified with the value of the PROC00 key in the PROCLIB section under the tjes subject in OpenFrame Configuration.

  5. The procedure is searched for among the members of SYS1.PROCLIB.

Note

For more information about the tjes subject, refer to OpenFrame Configuration Guide.

The following describes how to use the PROC operand.

  • Syntax

    {PROC = procedure name}
    {procedure name}
    FieldDescription

    procedure name

    Specifies the name of a procedure to be executed in the STEP with a symbolic name.

  • Note

    Must be the first to be used before any other operands in the EXEC statement.

  • Example

    The following example executes the TMAXPROC procedure.

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

    The following example executes the TMAXPROC procedure of an input stream.

    //JOB1     JOB  CLASS=A,MSGCLASS=A
    //TMAXPROC PROC
    //PSTEP1   EXEC PGM=TMAXSOFT
    //         PEND
    //STEP1    EXEC TMAXPROC

Procedure STEP Name

This section explains procedure STEP names that can be used after operands. Keyword operands in STEP, in which a procedure is executed, override keyword operands in all STEPs in a procedure. To override a specific operand in STEP in a procedure, use a procedure STEP name along with an operand. The operand can be overridden only in the corresponding STEP.

  • Syntax

    Operand[.procedure STEP name] = value
    FieldDescription

    procedure STEP name

    Specifies a procedure STEP, to which the corresponding operand is applied, with a symbolic name.

  • Note

    A procedure STEP name is valid only in a STEP in which the procedure is executed. The procedure STEP name is ignored if a program is executed in the STEP.

  • Example

    The following example overrides the value of COND in all STEPs in the procedure with (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)

    The following example overrides the value of COND in PSTEP1, which is a procedure STEP, with (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)

    The following example overrides the values of COND in PSTEP1 and PSTEP2, which are procedure STEPs, with (0,NE) and (4,NE), respectively.

    //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)

Specifies a condition and describes JCL statements to be executed depending on the result of the condition.

  • Syntax

    //[name]△¹IF△¹condition△¹THEN△¹[comments]
       .
       . To be executed when the condition is true
       .
    //[name]△¹ELSE△¹[comments]
       .
       . To be executed when the condition is false
       .
    //[name]△¹ENDIF△¹[comments]
    FieldDescription

    name

    Specifies a name from column 3 after "//." Can be omitted.

    IF

    Specifies the operation IF. Write one or more empty spaces and then "IF" after a name.

    condition

    Specifies a condition after "IF" followed by one or more empty spaces. For detailed information about conditions, see Conditions following this table..

    THEN clause

    Writes "THEN" after a condition followed by one or more empty spaces.

    [comments]

    Used after "THEN" followed by one or more empty spaces. Comments can be entered up to column 71.

    ELSE clause

    Writes "ELSE" after statements to be executed when a condition is true and before statements to be executed when the condition is false. The ELSE clause can be omitted. If it is omitted, no statement is executed when a condition is false.

    ENDIF clause

    Indicates the end of an IF statement. SET and INCLUDE statements are executed regardless of an IF statement, even though they are written between "IF" and "ENDIF.", because they are executed during the syntax check.

Conditions

A description for conditions is as follows:

The following is an example of a condition. RC is keyword, and '<' is a comparison operator.

// IF RC < 4 THEN

If the return code of the previous STEP is less than 4, the condition is met. If it is greater than or equal to 4, the condition is not met. A condition can be enclosed with parentheses.

// IF (RC < 4) THEN

More detailed conditions can be used by using logical operators. In the following example, '|' and 'OR' are logical operators.

// IF (RC = 4 | RC EQ 8 OR RC = 12) THEN
  • Operator

    There are two types of operators: comparison operators and logical operators. In the following table, AND,OR, and NOT are logical operators, and the others are comparison operators.

    OperatorMeaning

    GT or >

    Greater than

    LT or <

    Less than

    NG or ^> or ~>

    Not greater than

    NL or ^< or ~<

    Not less than

    EQ or =

    Equal to

    NE or ^= or ~=

    Not equal to

    GE or >=

    Greater than or equal to

    LE or <=

    Less than or equal to

    AND or &

    And

    OR or |

    Or

    NOT or ^ or ~

    Not

    The following example uses operators.

    // IF RC = 4 THEN
    // IF RC EQ 4 THEN

    The previous two conditions have the same meaning as follows:

    "RC is equal to 4."
    // IF (RC >= 4 & RC < 8) THEN
    // IF RC GE 4 AND RC LT 8 THEN

    The previous two conditions have the same meaning as follows:

    "RC is greater than or equal to 4 and less than 8."
    // IF ~(RC > 4 & RC < 8) THEN
    // IF (RC <= 4 | RC >= 8) THEN

    The previous two conditions have different meanings but the same result.

    "It is not that RC is greater than 4 and less than 8."
    "RC is less than or equal to 4, or RC is greater than or equal to 8."
  • Keywords

    There are the following three keywords.

    • RC

      Indicates a return code of STEP. For example where a condition is (RC = 8), if a return code of STEP is 8, the condition is met. If any return code among all return codes of previously executed STEPs is 8, the condition is determined to have been met. If no STEP is executed, the condition is determined not to have been met.

      KeywordDescription

      STEP name.RC

      Indicates a return code of the specified STEP. If the specified STEP is not executed, the condition is determined not to have been met.

      STEP name.procedure STEP name.RC

      Indicates a return code of a procedure STEP in a specified STEP. If the procedure STEP in the specified STEP is not executed, the condition is determined not to have been met.

    • ABEND

      Indicates that there is an abnormally terminated STEP. Since ABEND itself is a condition, no operators are necessary.

      // IF ABEND THEN

      If any STEP is abnormally terminated from among all previously executed STEPs, the condition is determined to have been met.

      KeywordDescription

      STEP name.ABEND

      If the specified STEP is abnormally terminated, the condition is determined to have been met. If the specified STEP is not executed, the condition is determined not to have been met.

      STEP name.procedure STEP name.ABEND

      If the procedure STEP in specified STEP is abnormally terminated, the condition is determined not to have been met. If the procedure STEP in the specified STEP is not executed, the condition is determined not to have been met.

      If ~ or ^ is added before a condition, the result of the condition is reversed.

    • RUN

      Indicates that STEP is executed. RUN cannot be used for all STEPs, and it must be used along with STEP name or STEP name.procedure STEP name.

      KeywordDescription

      STEP name.RUN

      If the specified STEP is executed, the condition is determined to have been met.

      STEP name.procedure STEP name.RUN

      If procedure STEP in specified STEP is executed, the condition is determined to been met.

      Since RUN itself is a condition, no operators are necessary.

      // IF STEP1.RUN THEN

      If ~ or ^ is added before a condition, the result of condition is reversed.

Includes a specified member in a JCL statement.

  • Syntax

    //[name]△¹INCLUDE△¹MEMBER=name△[comments]
    FieldDescription

    name

    Specifies a name from column 3 after "//." Can be omitted.

    INCLUDE

    Specifies the operation INCLUDE. Write one or more empty spaces and then "INCLUDE" after a name. If the name is omitted, the operation is used after "//" followed by one or more empty spaces.

    MEMBER=name

    Specifies a member to be included in a JCL statement after "INCLUDE" followed by one or more empty spaces. A member is searched as follows:

    • If a JCLLIB statement is used before an INCLUDE statement, members are searched according to the order of PDS data sets specified in the JCLLIB statement.

    • If a *PROCLIB statement (JES2 statement) is used before an INCLUDE statement, a member is specified through a DD name described with the PROCLIB parameter of the *PROCLIB statement. The DD name described with the PROCLIB parameter of the *PROCLIB statement is used as a keyword in the PROCLIB section of the tjes subject in OpenFrame Configuration, and a member is searched according to the order of PDS data sets found by using the DD name.

    • A member is searched from the PDS data set SYS1.PROCLIB.

    [comments]

    Used after "MEMBER=name" followed by one or more empty spaces. Comments can be described up to column 71.

  • Example

    The following example uses the INCLUDE statement and shows input JCL and member AAA.

    //TESTJOB    JOB     CLASS=A
    //           INCLUDE MEMBER=AAA
    //STEP1      EXEC    PGM=TESTPGM
    //SYSOUT     DD      SYSOUT=*
    //
    //JOBLIB     DD     DSN=PROD.PROCLIB1,DISP=SHR
    //           DD     DSN=PROD.PROCLIB2,DISP=SHR

    The input JCL in the previous example is handled as follows:

    //TESTJOB    JOB     CLASS=A
    //JOBLIB     DD     DSN=PROD.PROCLIB1,DISP=SHR
    //           DD     DSN=PROD.PROCLIB2,DISP=SHR
    //STEP1      EXEC    PGM=TESTPGM
    //SYSOUT     DD      SYSOUT=*
    //

    The following example searches for the member in the INCLUDE statement.

    //           JCLLIB  ORDER=(INCLUDE.MEMBER1,INCLUDE.MEMBER2)
    //           INCLUDE MEMBER=AAA

    In the previous example, the member AAA is searched according to the order of INCLUDE.MEMBER1, INCLUDE.MEMBER2 and SYS1.PROCLIB.

    //*JOBPARM   PROCLIB=PROC00
    //           INCLUDE MEMBER=AAA
    $ ofconfig list -s tjes -sec PROCLIB -k PROC00
    
    ===================================================================================
      SUBJECT   |     SECTION      |         KEY         |            VALUE
    ===================================================================================
        tjes    |     PROCLIB      |        PROC00       |INCLUDE.MEMBER3:INCLUDE.MEMBER4
    ===================================================================================

    In the previous example, the member AAA is searched according to the order of INCLUDE.MEMBER3, INCLUDE.MEMBER4, from SYS1.PROCLIB.

Describes JCL commands. JCL commands are described between the JOB statement and the first EXEC statement. JCL command statements described in other places are not used. The success of a JCL command execution through a JCL command statement does not affect the JOB execution or submission.

  • Syntax

    // Command△¹Operand
    FieldDescription

    Command

    Describes an operation after one or more blank spaces, following "//". For more information about supported commands, refer to Command.

    Operand

    Describes the operand after one or more blank spaces, following an operation. Operands differ depending on the command type.

Command

The following describes commands that were mentioned previously. OpenFrame supports only the described functions.

CommandDescription

S

Submits the entered procedure.

Note

Any other commands not explained are not supported.

Specifies the library that gets the procedures to be used in JCL or JCL statements, specified in an INCLUDE statement.

  • Syntax

    //[name]△¹JCLLIB△¹ORDER=(library[,library]...)△[comments]
    FieldDescription

    name

    Specifies a name from column 3 after "//." Can be omitted.

    JCLLIB

    Specifies the operation JCLLIB. Write one or more empty spaces and then "JCLLIB" after a name. If a name is omitted, it is used after "//" followed by one or more empty spaces.

    ORDER=(library[,library]…​)

    Specifies a library that gets JCL statements specified in a procedure or an INCLUDE statement after "JCLLIB" followed by one or more empty spaces. The library is specified with a PDS data set. A member is searched in the following order.

    • A member is searched in the order of PDS data sets specified in a JCLLIB statement.

    • If a *PROCLIB statement (JES2 statement) is used, a member is specified through a DD name described with the PROCLIB parameter of the *PROCLIB statement. The DD name described with the PROCLIB parameter of the *PROCLIB statement is used as a keyword in the PROCLIB section of the tjes subject in OpenFrame Configuration. A member is searched according to the order of PDS data sets found by using the DD name.

    • A member is searched from among the PDS data set SYS1.PROCLIB.

    [comments]

    Used after operands followed by one or more empty spaces. Comments can be described up to column 71.

  • Example

    The following example uses a JCLLIB statement.

    //TESTJOB    JOB     CLASS=A
    //LIBRARY    JCLLIB  ORDER=PROD.PROCLIB1
    //STEP1      EXEC    PROC01
    //SYSOUT     DD      SYSOUT=*

    In the previous example, the procedure PROC01 is searched from PROC.PROCLIB1.

Indicates the start of a JOB and describes its attributes.

  • Syntax

    //JOB name△¹JOB△¹positional operand[,keyword operand]...△¹[comments]
    //JOB name△¹JOB
    FieldDescription

    JOB name

    Specifies a symbolic name from column 3 after "//." Cannot be omitted.

    JOB

    Specifies the operation JOB. Write one or more empty spaces and then "JOB" after the JOB name.

    positional operand[,keyword operand]

    Specifies operands after "JOB" followed by one or more empty spaces. All positional operands must precede keyword operands. For further details, refer to Operand and the respective section of each operand.

    [comments]

    Used after operands followed by one or more empty spaces. Comments can be described up to column 71. If all operands are omitted, comments cannot be used.

Operand

The following describes the previously mentioned operands. For further details on each operand, refer to the respective section.

  • Positional operand

    Except TIMECONTROLLER, any other positional operands are syntax checked, but not used in OpenFrame. However, if the second parameter (programmer name) is specified, they are added to the environment variables (PROGRAMMERNAME) to pass to a program such as the assembler.

    FieldDescription

    TIMECONTROLLER

    Specifies the value to use TIME CONTROLLER.

  • Keyword operands

    OperandDescription

    ADDRSPC

    Syntax checked, but not used in OpenFrame.

    BYTES

    Syntax checked, but not used in OpenFrame.

    CARDS

    Syntax checked, but not used in OpenFrame.

    CCSID

    Syntax checked, but not used in OpenFrame.

    CLASS

    Specifies the JOB CLASS.

    COND

    Specifies the condition that determines whether the corresponding STEP will be executed by comparing the condition with the return code of JOB STEP.

    GROUP

    Syntax checked, but not used in OpenFrame.

    JESLOG

    Syntax checked, but not used in OpenFrame.

    LINES

    Syntax checked, but not used in OpenFrame.

    MEMLIMIT

    Syntax checked, but not used in OpenFrame.

    MSGCLASS

    Specifies an output class of a data set that has system messages. In OpenFrame, it is used only to specify "SYSOUT=*" in a DD statement.

    MSGLEVEL

    Specifies the output level of JOB's system messages.

    NOTIFY

    Syntax checked, but not used in OpenFrame.

    PAGES

    Syntax checked, but not used in OpenFrame.

    PASSWORD

    Specifies a password.

    PERFORM

    Specifies a performance group in which JOB is included when executed.

    PRTY

    Specifies a priority for JOB.

    RD

    Syntax checked, but not used in OpenFrame.

    REGION

    Syntax checked, but not used in OpenFrame.

    RESTART

    Specifies a STEP where a JOB terminated during execution restarts.

    SECLABEL

    Syntax checked, but not used in OpenFrame.

    SCHENV

    Syntax checked, but not used in OpenFrame.

    SPARM

    Specifies SYSTEM parameter values.

    TIME

    Specifies the maximum amount of time that JOB can use the CPU.

    TYPRUN

    Specifies a JOB processing type.

    USER

    Specifies a user.

Specifies the JOB CLASS. The CLASS specified in a JOB statement is related to scheduling the corresponding JOB. In TJES, Runner Slots are configured for each node, and CLASSes that can be executed by each Runner Slot are specified. If the Runner Slot for a submitted JOB's CLASS is empty, TJES scheduler executes the corresponding JOB. In TJES, the JOB that is configured for each CLASS and submitted, can be set to the states START or HOLD.

For example, if CLASS A and CLASS B are set to START and HOLD respectively, the JOB specified with the CLASS A enters in the START state after being submitted, and the other JOB specified with the CLASS B goes into the HOLD state after being submitted.

If JCLHOLD or HOLD is specified through a JOB statement's TYPRUN operand, the JOB goes into the HOLD state regardless of the setting for CLASS.

Note

  1. For more information about scheduling, refer to OpenFrame TJES Guide.

  2. Configure the Runner Slot on the key in the INITDEF section of the tjes subject under OpenFrame Configuration. For more information, refer to OpenFrame Configuration Guide.

  3. Configure the default attributes of individual classes in the JOBCLASS section of the tjes subject under OpenFrame Configuration. For more information, refer to OpenFrame Configuration Guide.

The following is a description of the CLASS operand.

  • Syntax

    CLASS = job class
    FieldDescription

    job class

    Specifies a class to be used for JOB scheduling with one character between A and Z, or 0 and 9.

  • Note

    If the CLASS operand is omitted in a JOB statement, the CLASS parameter of the JOB is set to the value of the CLASS key in the JOB section from the tjclrun subject under OpenFrame Configuration. For more information about the tjes subject's configuration items, refer to OpenFrame Configuration Guide.

  • Example

    The following example specifies the JOB CLASS as A.

    //JOB1 JOB CLASS=A

Specifies the condition that determines whether the corresponding STEP will be executed by comparing the condition with the return code of JOB STEP.

If the COND operand is used, the specified code is compared with the return code of STEP, whenever each STEP is terminated. If the condition is met, JOB is terminated regardless of whether to execute a STEP. If multiple conditions are specified with the COND operand, the condition of COND is determined to have been met if any one of them is met.

OpenFrame has a feature which is similar to the COND operand. This feature checks the return code of STEP in the PGM_NAME, PGM_TYPE section of the rc section under OpenFrame Configuration and handles errors. Since return codes of programs that are executed during rehosting to Unix may be different from return codes in mainframe, the rc subject is used to identify more efficiently any errors occurring in STEP.

Since the settings of subjects in OpenFrame Configuration take precedence over the settings of the COND operand, if the STEP is processed as an error by the rc subject's settings, the next STEP is terminated without being executed even if the STEP is supposed to be subsequently executed by the COND condition.

Note

For more information about the rc subject's configuration items, refer to OpenFrame Configuration Guide.

The following is a description of the COND operand.

  • Syntax

    COND = ((code,operator),...)
    FieldDescription

    code

    Specifies a condition code to be compared with the return code of JOB STEP. It is an unsigned integer.

    operator

    Specifies one of the following operators.

    • EQ: Equal to the return code.

    • NE: Not equal to the return code.

    • GT: Greater than the return code.

    • GE: Greater than or equal to the return code.

    • LT: Less than the return code.

    • LE: Less than or equal to the return code.

  • Note

    • The number of conditions can be up to 8. The ninth or later conditions are ignored. If only one condition is specified, the outermost parentheses can be omitted.

    • When the COND operand is used both in a JOB statement and an EXEC statement, if the condition of the JOB statement is met, the condition of the EXEC statement is not taken into account.

    • The COND operand's values are not syntax checked.

  • Example

    The following specifies that JOB continues to be executed only when the return code is 0.

    //JOB1 JOB COND=(0,NE)

    The following specifies that JOB is terminated only when the return code is 4, 8, or 12.

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

    The following specifies that JOB continues to be executed only when the return code is 0 through 12.

    //JOB1 JOB COND=(12,LT)

    The following specifies that JOB continues to be executed only when the return code is 4 through 12.

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

Specifies the maximum CPU usage time for a JOB. When exceeding the specified CPU usage time, the JOB is terminated in FLUSH.

  • Syntax

    TIME = {([minutes],[seconds])}
           {1440       }
           {NOLIMIT    }
           {MAXIMUM    }
           {0          }
    FieldDescription

    minutes

    Specifies the CPU usage time in minutes with an unsigned integer between 0 and 357912.

    seconds

    Specifies the CPU usage time in seconds with an unsigned integer between 0 and 59

    1440

    Indicates an unlimited value. No limit on the CPU usage time.

    NOLIMIT

    Indicates an unlimited value as with 1440. No limit on the CPU usage time.

    0

    Indicates an unlimited value as with 1440. No limit on the CPU usage time.

    MAXIMUM

    Indicates 357912 minutes.

  • Note

    • Parentheses may be omitted when specifying only minutes.

    • If not specified, use the VALUE of the TIME key in the JOB section of the tjclrun subject under OpenFrame Configuration. If no value specified, 0 is the default value. For more information about the tjclrun subject, refer to OpenFrame Configuration Guide.

    • There may be up to 5 seconds of deviation since tjclrun checks the CPU usage time every 5 seconds.

    • If TIME=1440 is specified on JOB statement, all TIME values and basic TIME values on EXEC statement are invalidated. All steps in the job will have no CPU time limit, such as specifying TIME=1440 or TIME=NOLIMIT.

  • Example

    The following example specifies TIME in JOB1 as 10 seconds.

    //JOB1    JOB   CLASS=A,MSGCLASS=A,TIME=(,10)
    //STEP1   EXEC  PGM=IEFBR14
    //SYSOUT  DD    SYSOUT=*
    //

    The following example specifies TIME in JOB1 as 2 minutes.

    //JOB1    JOB   CLASS=A,MSGCLASS=A,TIME=2
    //STEP1   EXEC  PGM=IEFBR14
    //SYSOUT  DD    SYSOUT=*
    //

    The following example specifies TIME in JOB1 as MAXIMUM.

    //JOB1    JOB   CLASS=A,MSGCLASS=A,TIME=MAXIMUM
    //STEP1   EXEC  PGM=IEFBR14
    //SYSOUT  DD    SYSOUT=*
    //

Specifies the date or time values used to run a job.

  • Syntax

    //{xxcyyddd}
      {xxdhhmm}
      {xxYDnn}
    FieldDescription

    xx

    Two-character prefix to use TIME CONTROLLER.

    c

    Century indicator. 0 represents 20th century and 1 indicates 21st century.

    yy

    Two-digit year without indicating century. Valid values are 00 through 99.

    ddd

    Three-digit Julian day. Valid values are 001 through 366.

    d

    Time and minutes to offset the current date.

    • P: Increments hhmm to the actual system time value.

    • M: Decrements hhmm to the actual time value.

    • F: Sets the system time to the specified hour and minute values (hhmm). Subsequent time requests time values that are elapsed from the specified system time.

    • A: Uses the static time set in hhmm.

    • E: The same function as P.

    • W: The same as M.

    hh

    Actual hour. Valid values are 00 through 23.

    mm

    Actual minute. Valid values are 00 through 59.

    Y

    Required literal to specify year offset.

    D

    Year to offset the current time.

    • P: Increments the year value.

    • M: Decrements the year value.

    nn

    Number of years to offset the current date.

  • Note

    • The VALUE of the TIME_CONTROLLER_PREFIX key in the OPTION section of the tjclrun subject under OpenFrame Configuration must be set to YES. If NO or no value specified, it is not available.

    • The VALUE of the key in the OPTION section of the tjclrun subject under OpenFrame Configuration must have a two-character prefix.

      Note

      For more information about the tjclrun subject, refer to OpenFrame Configuration Guide.

  • Examples

    The following example specifies the year as 2030.

    //JOB1    JOB   000000000,'//TCP10'
    //STEP1   EXEC  PGM=IEFBR14
    //SYSOUT  DD    SYSOUT=*
    //

    The following example specifies the date as 20201231.

    //JOB1    JOB   000000000,'//TC120365'
    //STEP1   EXEC  PGM=IEFBR14
    //SYSOUT  DD    SYSOUT=*
    //

    The following example specifies the system time plus 1 hour.

    //JOB1    JOB   000000000,'//TCP0100'
    //STEP1   EXEC  PGM=IEFBR14
    //SYSOUT  DD    SYSOUT=*
    //

Specifies a JOB processing type. OpenFrame supports only HOLD, JCLHOLD, JEM, and SCAN.

JCL is submitted in the following order.

  1. JCL is entered.

  2. The entered JCL is parsed to be syntax checked.

    The following are checked for the basic syntax, the locations of JOB control statements, keywords for each control statement, values for the keywords, and continued specifications.

  3. Procedures used by the entered JCL are copied to SPOOL and converted to be syntax checked.

  4. Scheduling is handled.

The following is a description for the TYPRUN opeand.

  • Syntax

    TYPRUN = {COPY}
             {HOLD}
             {JCLHOLD}
             {JEM}
             {SCAN}
    FieldDescription

    COPY

    Syntax checked, but not used in OpenFrame.

    HOLD

    JCL is parsed and converted, but not scheduled. It is set to the HOLD state. It can be checked with the PS or PSJOB command in TJESMGR. To schedule the JCL, use the START command in TJESMGR.

    JCLHOLD

    JCL is only parsed. It is set to the JCLHOLD state. JOB can be checked if it is in the W[HOLD] state by using the TJESMGR PS or PSJOB commands in the [Batch] menu of OpenFrame Manager. To convert and schedule the JCL, use the START command of TJESMGR.

    JEM

    Checks for existence of programs, datasets, and dataset catalog defined in the JCL, and then writes any logical errors to SYSMSG. If there is no error, it ends with Done (M00000). If there is an error, it ends with Done (M00001). This is used to check for logical errors in the JCL without executing the JOB. The JOB specified as the operand is scheduled and processed by the runner.

    SCAN

    JCL is parsed and converted, but not scheduled. The result report is recorded in SYSMSG, and then JCL is terminated and set to DONE state (D00000). This operand is used only to check if the JOB can be submitted and to specify not to schedule the JCL.

  • Note

    If the TYPRUN operand is not used, JCL is processed for submission and scheduled.

  • Examples

    The following example specifies TYPRUN as SCAN.

    //JOB1    JOB   CLASS=A,MSGCLASS=A,TYPRUN=SCAN
    //STEP1   EXEC  PGM=IEFBR14
    //SYSOUT  DD    SYSOUT=*
    //

    The following is the result recorded in SYSMSG.

    ------------------------------------------------------------------------------
     ** JCL SCAN start **
    ------------------------------------------------------------------------------
         1 //JOB1    JOB   CLASS=A,MSGCLASS=A,TYPRUN=SCAN
         2 //STEP1   PGM=IEFBR14
         3 //SYSOUT  DD    SYSOUT=*
           //
    ------------------------------------------------------------------------------
     ** JCL SCAN finish **
    ------------------------------------------------------------------------------

    The following example of running TYPRUN as SCAN returns a JCL parsing error.

    //JOB1    JOB   CLASS=A,MSGCLASS=A,TYPRUN=SCAN
    //STEP1   EXEC  PGM=IEFBR14,  this comma is wrong.
    //SYSOUT  DD    SYSOUT=*
    //

    The following is the result recorded in SYSMSG.

         1 //JOB1    JOB   CLASS=A,MSGCLASS=A,TYPRUN=SCAN
         2 //STEP1   EXEC  PGM=IEFBR14,  this comma is wrong.
         3 //SYSOUT  DD    SYSOUT=*
           //
    Syntax Error [Line:2;Column: ;Keyword: ;Message:Expected continuation not received]

    The following example of running TYPRUN as JEM returns JCL parsing errors. The IEFBR141 program specified in STEP01 and DD02 set as SHR in STEP02 do not exist.

    //JEMTEST  JOB TYPRUN=JEM
    //STEP01   EXEC PGM=IEFBR141
    //DD01     DD DSN=TMAX.JEM.DATASET,DISP=(MOD,DELETE)
    //STEP02   EXEC PGM=IEFBR14
    //DD02     DD DSN=TMAX.JEM.DATASET,DISP=SHR
    //STEP03   EXEC PGM=IEFBR14
    //DD03     DD DSN=TMAX.JEM.DATASET,DISP=MOD

    The following is the result recorded in SYSMSG.

     JOBID=JOB00028   JOBPOS=0   RUNPID=8998
     JEMTEST JEM (test)
     ==============================================================================
     ---------------------------- STEP01 EXEC PGM step ----------------------------
     EXEC PGM=IEFBR141 (JEM mode)
     (JRN0143F) no program file(IEFBR141) exist - check JCL JOBLIB, JCL STEPLIB, and environment PATH
     ---------------------------- STEP02 EXEC PGM step ----------------------------
     EXEC PGM=IEFBR14 (JEM mode)
     (JRN2008E) [OLDDD02] Dataset 'TMAX.JEM.DATASET' does not exists.
     ---------------------------- STEP03 EXEC PGM step ----------------------------
     EXEC PGM=IEFBR14 (JEM mode)
     ==============================================================================
     (JRN2010I) JEM RUN skip enqueue for output processing ok
     (JRN2017I) JEM RUN total error count : 2
     ---------------------------- JEM PROCESS FINISHED ----------------------------

Specifies a user. It is used along with the PASSWORD operand to authenticate a TACF user and to check resource permissions.

If JCL is submitted, the system checks a TACF user. If the USER operand is used, the authentication (execution user) is checked by comparing the password specified with the PASSWORD operand. If the USER operand is not used, the authentication (SUBMIT user) is checked with the USER who submitted the JCL.

If the USER operand is used, and the PASSWORD operand is not used, the authentication (surrogate user) is checked by using the TACF surrogate user.

In Runner, permission is checked against the authenticated execution user, SUBMIT user, or surrogate user. The Resources for which the permissions need to be checked are all data sets and programs used in JOB. If a user wants to check the permissions for a specific resource, the resource must be registered in TACF. If the resource is a data set, it must be registered in DATASET CLASS. If the resource is a program, it must be registered in UTILITY CLASS.

Note

For more information about the TACF surrogate user, refer to "3.1.13 Security" in OpenFrame TJES Guide.

The following is a description of the USER operand.

  • Syntax

    USER = user
    FieldDescription

    user

    Specifies a TACF user. TACF is OpenFrame's security module. It is a symbolic name of between one and eight symbolic characters.

  • Note

    The option to check the permissions on DATASET and UTILITY can be set to the VALUE of the CHECK_DSAUTH and CHECK_UTAUTH keys in the TACF section of the tjclrun subject under OpenFrame Configuration. For more information about the subject, refer to OpenFrame Configuration Guide.

  • Examples

    The following example specifies USER and PASSWORD as KIM and tmaxsoft, respectively.

    //JOB1 JOB USER=KIM,PASSWORD=tmaxsoft

    The following example specifies USER as KIM, but does not set PASSWORD. Therefore, the TACF surrogate user is used.

    //JOB1 JOB USER=KIM

An OUTPUT statement specifies attributes of a SYSOUT data set for output processing.

  • Syntax

    //name OUTPUT△¹keyword operand[,keyword operand]...△¹[comments]
    FieldDescription

    name

    Specifies a name from column 3 after "//." It cannot be omitted and is used when the corresponding OUTPUT statement is referenced in a DD statement when using the OUTPUT operand.

    OUTPUT

    Specifies the OUTPUT operation. Write one or more empty spaces and then "OUTPUT" after an OUTPUT name.

    keyword operand[,keyword operand]

    Specifies keyword operands after "OUTPUT" followed by one or more empty spaces. The order of the keyword operands does not matter. Refer to Operand for descriptions of each operand.

    [comments]

    Used after operands followed by one or more empty spaces. Comments can be described up to column 71.

Operand

The following are descriptions of each operand. For more information about each operand, refer to the respective section.

  • Keyword Operand

    OperandDescription

    ADDRESS

    Specifies the address to which a SYSOUT data set is passed.

    AFPSTATS

    Syntax checked, but not used in OpenFrame.

    BUILDING

    Specifies the name of a building associated with a SYSOUT data set.

    BURST

    Syntax checked, but not used in OpenFrame.

    CHARS

    Specifies a table to set the output character set and size of data sets to be printed.

    CKPTLINE

    Syntax checked, but not used in OpenFrame.

    CKPTPAGE

    Syntax checked, but not used in OpenFrame.

    CKPTSEC

    Syntax checked, but not used in OpenFrame.

    CLASS

    Specifies the output class of a SYSOUT data set. Used only when no class is specified to the SYSOUT parameter in a DD statement.

    COLORMAP

    Syntax checked, but not used in OpenFrame.

    COMPACT

    Syntax checked, but not used in OpenFrame.

    COMSETUP

    Syntax checked, but not used in OpenFrame.

    CONTROL

    Syntax checked, but not used in OpenFrame.

    COPIES

    Specifies a copy count of a SYSOUT data set.

    DATACK

    Syntax checked, but not used in OpenFrame.

    DEFAULT

    Syntax checked, but not used in OpenFrame.

    DEPT

    Specifies the ID of a department associated with an output data set.

    DEST

    Specifies a print destination of a SYSOUT data set.

    DPAGELBL

    Syntax checked, but not used in OpenFrame.

    DUPLEX

    Syntax checked, but not used in OpenFrame.

    FCB

    Specifies an FCB name.

    FLASH

    Specifies the film OVERLAY identification name when a certain template and range is printed on a paper in advance.

    FORMDEF

    Specifies a member of FORMDEF.

    FORMLEN

    Syntax checked, but not used in OpenFrame.

    FORMS

    Specifies a template number of a SYSOUT data set.

    FSSDATA

    Syntax checked, but not used in OpenFrame.

    GROUPID

    Syntax checked, but not used in OpenFrame.

    INDEX

    Syntax checked, but not used in OpenFrame.

    INTRAY

    Syntax checked, but not used in OpenFrame.

    JESDS

    Syntax checked, but not used in OpenFrame.

    LINDEX

    Syntax checked, but not used in OpenFrame.

    LINECT

    Syntax checked, but not used in OpenFrame.

    MAILBCC

    Specifies one or more email addresses of blind carbon copy (BCC) recipients.

    MAILCC

    Specifies one or more email addresses of carbon copy (CC) recipients.

    MAILFILE

    Syntax checked, but not used in OpenFrame.

    MAILFROM

    Specifies the name or other identifiers of the sender of an email.

    MAILTO

    Specifies one or more email addresses of recipients.

    MODIFY

    Specifies a copy-modification module name for a SYSOUT data set and the number order for a table specified with the CHARS operand.

    NAME

    Specifies a name associated with a SYSOUT data set.

    NOTIFY

    Syntax checked, but not used in OpenFrame.

    OFFSETXB

    Syntax checked, but not used in OpenFrame.

    OFFSETXF

    Syntax checked, but not used in OpenFrame.

    OFFSETYB

    Syntax checked, but not used in OpenFrame.

    OFFSETYF

    Syntax checked, but not used in OpenFrame.

    OUTBIN

    Syntax checked, but not used in OpenFrame.

    OUTDISP

    Specifies output dispositions for a SYSOUT data set.

    OVERLAYB

    Specifies the name of the back overlay of a page to print.

    OVERLAYF

    Specifies the name of the front overlay of a page to print.

    OVFL

    Syntax checked, but not used in OpenFrame.

    PAGEDEF

    Specifies a member of PAGEDEF.

    PIMSG

    Syntax checked, but not used in OpenFrame.

    PORTNO

    Syntax checked, but not used in OpenFrame.

    PRTERROR

    Syntax checked, but not used in OpenFrame.

    PRTOPTNS

    Syntax checked, but not used in OpenFrame.

    PRTQUEUE

    Syntax checked, but not used in OpenFrame.

    PRTY

    Syntax checked, but not used in OpenFrame.

    REPLYTO

    Specifies an email address to which recipients can reply.

    RESFMT

    Syntax checked, but not used in OpenFrame.

    RETAINS

    Specifies the time during which a successfully received data set is retained.

    RETAINF

    Syntax checked, but not used in OpenFrame.

    RETRYL

    Syntax checked, but not used in OpenFrame.

    RETRYT

    Syntax checked, but not used in OpenFrame.

    ROOM

    Specifies the room ID to a page-delimiter for printing a SYSOUT data set.

    SYSAREA

    Syntax checked, but not used in OpenFrame.

    THRESHLD

    Syntax checked, but not used in OpenFrame.

    TITLE

    Specifies the output title to be printed on a page-delimiter for printing a SYSOUT data set.

    TRC

    Specifies whether to include the table reference code (TRC) in the logical record for each output row of a SYSOUT data set.

    UCS

    Specifies the universal character set.

    USERDATA

    Specifies the user-defined data.

    USERLIB

    Specifies the name for a USERLIB data set.

    USERPATH

    Syntax checked, but not used in OpenFrame.

    WRITER

    Specifies an external printing module.

Specifies output dispositions for a SYSOUT data set.

  • Syntax

    OUTDISP = ([WRITE][,WRITE])
               [HOLD] [,HOLD])
               [KEEP] [,KEEP])
               [LEAVE][,LEAVE])
               [PURGE][,PURGE])
               [,]
    • Parameters 1

      Specifies how to dispose new OUTPUT that is created as a SYSOUT data set, when the JOB is normally terminated (not ABEND).

      FieldDescription

      WRITE

      Indicates that OUTPUT must be schedule-printed. After a printer solution is called, OUTPUT is removed.

      HOLD

      Waits until the user releases OUTPUT.

      KEEP

      Same as WRITE. However, OUTPUT is not removed after being printed, and its status becomes LEAVE.

      LEAVE

      Same as HOLD. However, if the user releases a SYSOUT data set from the HOLD state, the status of the SYSOUT data set becomes KEEP.

      PURGE

      Removes OUTPUT from OUTPUTQ.

    • Parameters 2

      Specifies how to dispose new OUTPUT that is created as a SYSOUT data set when JOB is abnormally terminated (ABEND). Uses the same options as Parameters 1.

      Note

      If a parameter 2 is omitted, a parameter 1 is used. If a parameter 1 is omitted and a parameter 2 is specified, the parameter 1 is set to WRITE by default.

  • Note

    • If OUTDISP is not specified, the VALUE of the key set by CLASS in the OUTCLASS section of the tjes subject under OpenFrame Configuration is used. If no CLASS is specified there, OUTDISP is set to PURGE. For more information about how to set the tjes subject, refer to OpenFrame Configuration Guide.

    • The CLASS of OUTPUT is specified by the SYSOUT operand in a DD statement.

  • Example

    The following example specifies OUTDISP.

    //OUT1 OUTPUT OUTDISP=(WRITE,PURGE)
    //OUT  DD     SYSOUT=J,OUTPUT=*.OUT1

Indicates the end of a procedure. It must be used at the end of an input stream procedure, but it may be omitted from a catalog procedure.

  • Syntax

    //[PEND name]△¹PEND△[comments]
    FieldDescription

    [PEND name]

    Specifies a name from column 3 after "//." Can be omitted.

    PEND

    Specifies the operation PEND. Write one or more empty spaces and then "PEND" after a PEND name. If the name is omitted, the operation can specified after "//" without any empty spaces.

    [comments]

    Used after operands, following one or more empty spaces.

Indicates the start of a procedure. There two types of procedures as follows:

TypeDescription

Input stream procedure

A temporary procedure that can be used only in a JOB entered as an input stream. After a JOB statement, a PROC statement can be used at any positions before the next JOB statement. In the case of input stream procedures, the end of a procedure must be indicated with a PEND statement.

Catalog procedure

A cataloged procedure that can be called by any JOB.

  • Syntax

    //[PROC name]△¹PROC△¹[symbolic parameter=[value]...△¹[comments]]
    FieldDescription

    PROC name

    Specifies a name from column 3 after "//." A PROC name must be specified for an input stream procedure with a symbolic name. It can be omitted for a catalog procedure. A procedure name that is used when a catalog procedure is called by an EXEC statement is a member name in library in which procedures are cataloged.

    PROC

    Specifies the operation PROC. Write one or more empty spaces and then "PROC" after a name. If the name is omitted, the operation is used after "//" followed by one or more empty spaces.

    [symbolic parameter=[value]]

    Specifies symbolic parameters after "PROC" followed by one or more empty spaces. Operands of an EXEC statement cannot be used as symbolic parameters. For more details about symbolic parameters, see Symbolic Parameter following this table.

    [comments]

    Used after symbolic parameters followed by one or more empty spaces. If there is no symbolic parameter, comments cannot be used.

Symbolic Parameter

Values of symbolic parameters used in a procedure must be specified, with one to eight characters. If a symbolic parameter is defined and the value is not specified, the system determines that the parameter is set to NULL. If a symbolic parameter is defined in an EXEC statement that calls a procedure, the same symbolic parameter is overridden and another symbolic parameter is added.

A symbolic parameter is used in a control statement in a procedure as follows:

  • An ampersand (&) precedes a parameter.

    The system replaces "&symbolic parameter" by the value of the symbolic parameter.

  • The end of a parameter can be specified as follows:

    • An empty space, a period (.), a comma (,), parenthesis, "\n" or single quotation (') indicate the end of a parameter.

      In the following example, "ABC" is recognized as a symbolic parameter since is is followed by a comma (,).

      //STEP1 EXEC PGM=&ABC,PARM=8
    • If a period (.) is used to indicate the end of a symbolic parameter, the period is included in the value of the symbolic parameter.

      In the following example, "&ABC." is replaced by TMAX because it is followed by a period (.), so that the value of PGM becomes "TMAXSOFT."

      //PROC  PROC ABC=TMAX
      //STEP1 EXEC PGM=&ABC.SOFT,PARM=8
    • If there are multiple symbolic parameters that can be replaced, the longest parameter is used.

      In the following example, both "&ABC" and "&ABCD" are symbolic parameters. Among them, "&ABCD" is used because it is longer, and the value of PGM becomes "tmaxEFG."

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

A symbolic parameter cannot be replaced in the following cases.

  • A parameter preceded by two ampersands ("&&symbolic parameter") is not replaced. If a parameter is preceded by three ampersands ("&&&symbolic parameter"), the format becomes "&&replaced value."

  • If no symbolic parameter is defined to be replaced, no replacement occurs.

Specifies values of symbolic parameters used in JCL.

//[name]△¹SET△¹symbolic parameter=value[,symbolic parameter=value]...△¹[comments]
FieldDescription

name

Specifies a name from column 3 after "//." Can be omitted.

SET

Specifies the operation SET. Write one or more empty spaces and then "SET" after a name. If the name is omitted, the operation is used after "//" followed by one or more empty spaces.

symbolic parameter= value[,symbolic parameter= value]…​

Specifies symbolic parameters after "PROC" followed by one or more empty spaces. For more details about symbolic parameters, see Symbolic Parameter following this table.

[comments]

Used after symbolic parameters followed by one or more empty spaces.

Symbolic Parameter

Values of symbolic parameters used in a procedure to be called, or in JCL, must be specified with symbolic characters except the period (.). If a symbolic parameter is defined and the value is not specified, the system determines that the parameter is set to NULL.

Even if there are symbolic parameters specified with a SET statement, when the same parameters are specified in an EXEC statement or a PROC statement to be called, the parameters specified in an EXEC or PROC statement are used.

A symbolic parameter is used in a control statement of JCL as follows:

  • An ampersand(&) precedes a parameter. The system replaces "&symbolic parameter" by the value of the parameter.

  • The end of a symbolic parameter can be specified as follows:

    • An empty space, a period (.), a comma (,), parenthesis, "\n" or single quotation (') indicate the end of a parameter.

      In the following example, "ABC" is recognized as a symbolic parameter since is is followed by a comma (,).

      //STEP1 EXEC PGM=&ABC,PARM=8
    • If a period (.) is used to indicate the end of a symbolic parameter, the period is included in the value of the symbolic parameter.

      In the following example, "&ABC." is replaced by TMAX because it is followed by a period (.), so that the value of PGM becomes "TMAXSOFT."

      //      SET  ABC=TMAX
      //STEP1 EXEC PGM=&ABC.SOFT,PARM=8
    • If there are multiple symbolic parameters that can be replaced, the longest parameter is used.

      In the following example, both "&ABC" and "&ABCD" are symbolic parameters. Among them, "&ABCD" is used because it is longer, and the value of PGM becomes "tmaxEFG."

      //      SET  ABC=TMAX,ABCD=tmax
      //STEP1 EXEC PGM=&ABCDEFG,PARM=8
  • Symbolic parameters which are used in a SET statement or an EXEC (or PROC) statement are handled as follows:

    • A symbolic parameter specified with a SET statement is used in a procedure only when there is no same parameter in an EXEC or PROC statement. If the same parameter is specified, the value of the parameter specified in an EXEC or PROC statement is used.

    • A symbolic parameter specified with a SET statement is used in JCL until the same parameter is specified with another SET statement.

    • A symbolic parameter specified with a SET statement in a procedure is used only in the corresponding procedure.

    The following example shows how to replace the value of "&ABC."

    JCL
    //      SET  ABC=1
    //STEP1 EXEC PROCTEST,ABC=2      -- In PROCTEST PSTEP1 step, PARM parameter's value is 2
    //STEP2 EXEC PGM=TEST,PARM=&ABC  -- PARM parameter's value is 1
    //STEP3 EXEC PROCTEST            -- In PROCTEST PSTEP1 step, PARM parameter's value is 1
    PROCTEST
    //PROCTEST PROC
    //PSTEP1   EXEC PGM=TEST,PARM=&ABC

A symbolic parameter cannot be replaced in the following cases.

  • A parameter preceded by two ampersands ("&&symbolic parameter") is not replaced. If a symbolic parameter is preceded by three ampersands ("&&&symbolic parameter"), the format becomes "&&replaced value."

  • If no parameter is defined to be replaced, no replacement occurs.

Transmits data to another node. Syntax checked, but not used in OpenFrame. To avoid any syntax error, only in-stream data between an XMIT statement and the delimiter statement is processed.

  • Syntax

    //[name]△¹XMIT operand[,operand...]△[* comments]
    FieldDescription

    operand

    Specifies one of the following: DEST, DLM, SUBCHARS

  • Example

    The following example uses an XMIT statement.

    //JOB1  JOB
    //X1    XMIT DEST=LOCAL
        .
        .
        (records to be transmitted)
        .
    /*

Indicates the end of JOB. After NULL, all data are ignored until the next JOB statement appears.

  • Syntax

    //

Indicates the end of in-stream data by being placed right after the last line of in-stream data.

If there is instream data (a statement that does not start with // or /*) without a DD statement ("DD *" or "DD DATA") that indicates the beginning of instream data, the system automatically creates the following statement to take the instream data from SYSIN DD.

//SYSIN DD *
  • Syntax

    /*[comments]
    FieldDescription

    [comments]

    Describes comments from column 3 after "/*." Writing comments from column 4 is recommended because comments written from column 3 may be recognized as a JES2 statement like "/*PRIORITY."

Describes comments. Comments can be introduced anywhere except between in-stream data. When inserted, the in-stream data is deemed to end at the point where the comment is inserted, and the subsequent in-stream data is registered with a new SYSIN DD.

In OpenFrame, a statement starting with "##" is also specially processed as a comment. However, in-stream data starting with "##" is processed as data.

  • Syntax

    //*[comments]
    FieldDescription

    [comments]

    Described starting from column 4 after "//*". To write comments in multiple lines, the first three columns must be always "//*".