ADVANCED JCL FEATURES • PARMS, Referbacks and Concatenations • Using the OUTPUT statement • Coding the COND parameter PARM...
ADVANCED JCL FEATURES
• PARMS, Referbacks and Concatenations
• Using the OUTPUT statement
• Coding the COND parameter
PARMs, Referbacks and Concatenations
• Coding PARM parameter
• Concatenating data sets
• Coding Referbacks within a Job Step
• Coding Referbacks to other Job Steps or Procedures
PARM PARAMETER
• Function of PARM parameter
• Coding PARM parameter
Function of PARM parameter
• Passes small amount of info from JCL to Program
• May contain info that may change each time when program executes
• Example : In monthly reports, we can pass the month in the heading of a report.
Coding PARM parameter
• Keyword parameter
• Code PARM in EXEC statement
• //step1 EXEC ……., PARM=value
• //step1 EXEC …, PARM=(val1, ‘val+2’)
• //step1 EXEC …, PARM=‘val1, val2’
Coding PARM parameter
• value must not exceed 100 characters
• ( ) ‘ ‘ are not included in 100
• , is included
• Special char should be enclosed in quotes.
• E.g. ‘REP.NO’ ‘VAL+UE’
Concatenating data sets
• Function of data set concatenation
• Coding concatenated data sets
FUNCTION
• Naming two or more data sets in a single input file without physically combining the data sets
• Data sets may reside on different devices and also on different device types
CODING
//DD1 DD DSN=A,DISP=SHR
// DD DSN=B,DISP=SHR
• The order of DD statements determines the order in which the program accesses the data sets
• If the record length of the first DD statement is not MAX then an abend will occur. To avoid this either
• Code the DCB parameter with largest block size in first DD statement if the first data set is not the one with largest block size or LRECL.
// DD2 DD DSN=A,DISP=SHR,
// DCB=LRECL=131
// DD DSN=B,DISP=OLD
OR
//DD2 DD DSN=A,DISP=SHR,
// DCB=BLKSIZE=23200
// DD DSN=B,DISP=OLD
// DD DSN=C,DISP=OLD
BACKWARD REFERENCE
• Function and position of referback
• Coding DCB, DSN, and VOLUME referbacks
• Referbacks will improve consistency
• Referbacks make coding easier.
BACKWARD REFERENCE
• Lets you copy previously coded info by referring back to an earlier statement
• Can reference the statement in
- the same step
- previous step in the same job
- an in-stream PROC
- a cataloged PROC
• Can be in DCB, DSN, VOL parameters
CODING DCB
// JOB Statement.…….
//STEP1 EXEC ……
//INPF DD DSN=TEST.INFILE,DISP=OLD
//INTF DD DSN=TEST.INTFILE,
// DISP=(,CATLG),DCB=BLKSIZE=8000
……
//OUTF DD DSN=TEST.OUTF,
// DISP=(,CATLG,DELETE),
// DCB=*.INTF
CODING DSN
• Same procedure for DSN
CODING VOL using dd name
//DD1 DD DSN=NAME1,
// VOL=SER=VOL1
//DD2 DD DSN=NAME2,
// VOL=REF=*.DD1
CODING VOL using dsname
• Can also reference by data set name with only CATLG, PASS data sets option in DISP
• VOL=REF=dsname
• VOL=REF=NAME1
• When using generation data sets, this cannot be used.
REFERBACKS IN THE SAME JOB STEP
• When referring to DD name in same job step code
• DCB=*.ddname
• DSN=*.ddname
• VOL=REF=*ddname
• VOL=REF=dsname
REFERBACKS TO OTHER JOB STEPS
• DCB=*.stepname.ddname
• DSN=*.stepname.ddname
//Step1 EXEC PGM=pgm1
//infile1 DD DSN=name1,DISP=shr,
//Step2 EXEC PGM=pgm2
//outfile2 DD DSN=name2,DISP=(new,catlg),
// DCB=*.Step1.infile1
REFERBACKS TO PROCEDURES
• When referring procedures (in-stream/catalog)
• DCB=*.stepname.procstepname.ddname
• DSN=*.stepname.procstepname.ddname
OUTPUT STATEMENT
• Referencing the OUTPUT statement
• Coding the COPIES ,OUTLIM and CLASS parameters
• Coding the DEST, FORMS and GROUPID parameters
• Coding implicit and explicit references
ADVANTAGES OF OUTPUT
• Combine common output characteristics
• Create multiple printouts with different output characteristics
• Combine several SYSOUT DDs into groups
COPIES PARAMETER
// OUTPUT COPIES=nnn
• nnn is from 1 to 254
• Default value is 1
CLASS PARAMETER
Certain attributes are defined at system startup. Few are:
• How to process report
• Report line is 80 or 132 character
• NO of lines per page
• What time the report should print etc
• E.g : A=line print, 132 char, B=card punch
//OUT2 OUTPUT CLASS=n
where n =A to Z or 0 to 9.
• CLASS=* requests output from MSGCLASS in JOB statement.
• CLASS on SYSOUT DD overrides CLASS on OUTPUT statement.
• To nullify CLASS parameter in SYSOUT DD
• //DD2 DD SYSOUT=(,), OUTPUT=*.OUT2
OUTLIM Parameter
• The outlim parameter limits the no of print lines.
• The limit range range from 1 to 16777215 lines. The job is terminated if the limit is exceeded.
• //name DD SYSOUT=A,OUTLIM=3000
DEST PARAMETER
• Routes the data set to a destination, device or location
//REMT2 OUTPUT DEST=type
• type is 2 to eight alphanumeric or national character
• If not coded default is taken.
FORMS PARAMETER
• Specifies the type of forms on which the sysout data set is to be printed or punched.
• //PRT2 OUTPUT FORMS=form name
• Form name is2 to eight alphanumeric or national character
• SYSOUT DD FORMS parameter overrides OUTPUT FORMS parameter.
• SYSOUT DD FORMS is only 4 character
Combine common output characteristics (contd)
//JOBNAME JOB ….
/OUTRPT OUTPUT DEST=HQS,COPIES=3,FORMS=PQ
//STEP1 EXEC PGM=A
//NAME1 OUTPUT DEST=LP
//DD1 DD SYSOUT=A,OUTPUT=*.OUTPRT
//STEP2 EXEC PGM=B
//DD2 DD SYSOUT=A,OUTPUT=*. OUTPRT
//STEP3 EXEC PGM=C
//DD3 DD SYSOUT=A,OUTPUT=*.OUTPRT
Combine common output characteristics
//JOBNAME JOB ….
//STEP1 EXEC PGM=A
//DD1 DD SYSOUT=A,DEST=LP
//STEP2 EXEC PGM=B
//DD2 DD SYSOUT=A,DEST=LP
//STEP3 EXEC PGM=C
//DD3 DD SYSOUT=A,DEST=LP
//JOBNAME JOB ….
//NAME 1 OUTPUT DEST=LP
//STEP1 EXEC PGM=A
//DD1 DD
SYSSOUT=A,OUTPUT=*.NAME1
//STEP2 EXEC PGM=B
//DD2 DD SYSOUT=A,OUTPUT=*.NAME1
//STEP3 EXEC PGM=C
//DD3 DD
SYSOUT=A,OUTPUT=*.NAME1
CREATE MULTIPLE PRINTOUTS WITH DIFFERENT OUTPUT CHARACTERISTICS
//JOBNAME JOB ….
/OUT1 OUTPUT DEST=HQS,COPIES=3,FORMS=STDPRT
//OUT2 OUTPUT DEST=BRNOFE,COPIES=3,FORMS=UPDATE
//STEP2 EXEC PGM=A
//DD2 DD SYSOUT=C,OUTPUT=(*.OUT1,*.OUT2)
CODING EXPLICIT AND IMPLICIT REFERENCES
EXPLICIT REFERENCES
//OUT2 OUTPUT CLASS=H
…….
//DD2 DD SYSOUT=(,), OUTPUT=*.OUT2
IMPLICIT REFERENCES
• Code DEFAULT=YES
• JOB or STREP has a default output JCL statement
//OUT2 OUTPUT DEFAULT=YES
…….
//REP2 DD SYSOUT=A
CODING EXPLICIT AND IMPLICIT REFERENCES
//JNAME JOB , MSGCLASS=A
//WKOUT OUTPUT DEFAULT=YES, DEST=HQS,FORMS=PQ
//OUTA OUTPUT DEST=LOCAL,FORMS=STD
//STEP2 EXEC PGM=OUTWRTE
//RPT1 DD SYSOUT=A
//RPT2 DD SYSOUT=A
//STEP2 EXEC PGM=INWRTE
//RPT3 DD SYSOUT=B,OUTPUT=*.OUTA
//RPT4 DD SYSOUT=B
……..
* STEP LEVEL DEFAULT=Y OVERRIDES JOB LEVEL
GROUPID PARAMETER
• Combines SYSOUT data sets into an output group.
• Data sets are processed together at the same time and location.
• Supported only for JES2 systems.
• Data sets grouped together should have same CLASS & DEST parameters
GROUPID PARAMETER
//OUT2 OUTPUT GROUPID=name
• 2 to eight alphanumeric or national character
GROUPID Parameter
• //job statement
//name OUTPUT GROUPID=gp1,
// Default=yes,DEST=HQS //step EXEC PGM=pgm1
//REP1 DD SYSOUT=B
//REP2 DD SYSOUT=B
COMBINE SEVERAL SYSOUT DDS INTO GROUPS
//JOBNAME JOB , MSGCLASS=A
//WKOUT OUTPUT GROUPID=GRP2,
// COPIES=3,FORMS=PQ
//STEP1 EXEC PGM=OUTWRITE
//OUTA OUTPUT DEST=LOCAL,FORMS=STD
//DD1 DD SYSOUT=A,OUTPUT=(*.OUTA,*.WKOUT)
//STEP2 EXEC PGM=INWRITE
//OUTB OUTPUT DEST=LOCAL,FORMS=222
//DD2 DD SYSOUT=A,OUTPUT=(*. OUTB,*.WKOUT)
//DD3 DD SYSOUT=A
COND PARAMETER
Definition
Condition (COND) is a keyword parameter that tests a return code against a test code.
• The result of this test determines if a job or step will be executed or bypassed.
• Format COND=(tcode,oper)
• tcode=test code, oper = operator
COND PARAMETER
• If condition is true the step is bypassed.
• Can be coded on JOB or EXEC statements
• If condition in JOB is true the job ends after executing the first step.
• COND on JOB takes precedence over any EXEC.
• JOB may have only test code and operator.
COND PARAMETER
Test code (tcode)
• tcode is numeric and ranges from 0 to 4095.
• Can be system generated numbers or set by programmer. Also called condition code.
• After execution the value is moved to a special register- RETURN-CODE and can be checked for conditions.
• 0=No errors, 4=minor errors, 8/12/16=more serious
COND PARAMETER
Operator (oper)
• GT, GE, EQ, NE, LT, LE.
• Can code up to 8 tests on one statement.
COND PARAMETER
For previously executed step within a JOB
COND=(tcode,oper,stepname).
• Return code is drawn from the name of the step.
• If step name is not specified, return code from all previous steps will be tested.
COND PARAMETER
Previously executed step within a JOB
COND=(tcode,oper,stepname).
Example :
//JOB2 JOB ……
//STEP1 EXEC ……
//STEP2…..
//STEP3 EXEC PGM=ABC,COND=(4,GT,STEP1)
COND PARAMETER
• A previously executed in-stream or cataloged procedure
COND=(tcode,oper,stepname.procstepname)
COND PARAMETER
COND=(tcode,oper,stepname.procstepname)
Example :
//PROC2 PROC
//HRCAL EXEC …..
//STEP2 EXEC PROC2
……
//STEP5 EXEC PGM=A,COND=(0,GT,STEP2.HRCAL)
COND PARAMETER
Compound Conditions
Can test for a range of values or multiple steps.
Not for testing multiple conditions on one job step.
Maximum of eight conditions can be coded.
COND=((4,GT),(8,LT))
COND=((0,NE,STEP03),(0,NE,STP04))
COND PARAMETER - EVEN and ONLY
• Unlike JOB , EXEC can have several subparameters
• EVEN and ONLY are used only in the case of abend.
• Can be included along with condition code test or can be coded alone.
• COND=((tcode,oper),EVEN/ONLY)
• COND=EVEN/ONLY (Executes job step even if a program ABENDs/only if an ABEND occurs)
Additional features in MVS
4.0 version
• If /Then/Else conditional JCL
• INCLUDING jcl from a PDS
• SEGMENT, SPIN & CLOSE keyword parameters on DD statement
• Enhancement in TIME PARAMETER
• New keywords on JOB statement (BYTES, CARDS, LINES, PAGES)
USING IF / THEN/ ELSE
• This statement is used in JCL for conditions instead of COND parameter.
• //Name IF ( condition or text) THEN
// jcl statements to be executed if the condition met
//Name ELSE
// jcl statements to be executed if the condition is not met
//Name ENDIF.
USING IF / THEN/ ELSE
// IF RC = 4 THEN
//STEP1 EXEC statement
// ELSE
// STEP2 EXEC statement
// ENDIF
*All mnemonic & character operators are allowed
USING IF / THEN/ ELSE
• // IF ((RC GE 1) or (RC LT 4)) THEN
//STEP1 EXEC PGM=pgm1
// ELSE
//STEP2 EXEC PGM=pgm2
// ENDIF
• // IF (STEP1.RC = 8) THEN
//STEP3 EXEC PGM=pgm3
// ENDIF
USING IF / THEN/ ELSE
// IF (STEP1.ABEND = TRUE) THEN
//STEP2 EXEC PGM=error
// ELSE
//STEP3 EXEC PGM=pgm3
// ENDIF
• RUN, NOT RUN, ABENDCC etc can be used
INCLUDE IN JCL
• We can include JCL’s from other than procedure libraries through INCLUDE statement
• //name JCLLIB ORDER=(PDS1,PDS2)
• // INCLUDE MEMBER=JCL member
• Only one JCLLIB name is allowed in a job
SEGMENT ON DD statement
• This allows a portion of a dataset to be printed even though the job is still running & generating output
• // DD SYSOUT=X,SEGMENT=Value
where value is no of pages in a segment
SPIN on DD statement
• This allows an output dataset to be printed at the end of a step or at the end of a job
• // DD SYSOUT=X,SPIN=Value
value = UNALLOC or NO
• UNALLOC - the dataset to be printed once that is unallocated
• NO - the dataset is not printed until the end of the job even it is closed
FREE Parameter on DD statement
• This deallocates a dataset when it is closed rather than at the end of a job step
• // DD SYSOUT=X, FREE=CLOSE
Advantages of FREE Parameter
• A dataset is freed for other program usage as soon as a program has finished using it
• Tape drives are freed for other programs use
• Sysout data can be released for printing before a job has finished
TIME Parameter
//job card ,TIME=Value
Value - LIMIT (Min,Sec)
- NOLIMIT
- MAX (357912 minutes)
- 1440
NEW KEYWORDS ON JOB
• These are used to control the amount of sysout produced by the job
• BYTES
• CARDS
• LINES
• PAGES
• We can also specify an action if the limit exceeds this parameter value
NEW KEYWORDS ON JOB
//jobname JOB……,LINES=(100,ACTION)
CANCEL cancel job without dump
DUMP cancel job with dump
WARNING continue job but send warning messages to the operator
The End
No comments
Post a Comment