JCL/PROC STANDARD
JCL/PROC Standard -- Version 1.2
5/1/00
Table of Contents
JCL/PROC
Guideline
PURPOSE
To establish uniform job control language coding.
SCOPE
These coding standards apply to all JCL and PROCs that will be unloaded
to the production libraries at University Management Systems (UMS).
The following are implemented as standards, to be applied via
the Quality Control process:
GENERAL CONSIDERATIONS
-
Except for run control parameters, overrides to the procedure JCL will
not be stored in the production job definition library (UMS.PROD.JCL).
-
Omit the TIME parameter from production job definitions and JCL procedures.
-
REGION=0K or REGION=0M are not permitted in the production job definition
and jcl procedure libraries.
-
All production job definitions must be recorded in the on-line documentation
(JCLDOC).
-
Formatting:
-
JCL statements (JOB, PROC, EXEC, DD) begin in column 14.
-
Continuing JCL statements begin in column 16.
-
A comment will begin with a //*.
PRODUCTION JOB DEFINITION (JCL)
-
All jobs will execute at least one PROC unless an exception is approved
by the quality coordinator.
-
Instream PROCS are not acceptable unless approved by the quality coordinator.
-
Do not use a JOBLIB Statement (use STEPLIB instead).
-
A comment is required following all symbolic parameters, all input data,
and all control records.
-
JOB NAMING:
All production jobs and procedures will have a basic four-character
identification name. Refer to the Batch
Job Naming standard for the basic construct.
-
JOB STATEMENT:
Line 1:
-
Fill the Account Number field with all 'X's.
-
Provide a meaningful description of the function of the job as the job
title.
-
The Job Statement line must end by column 68.
Note: Lines 2 and 3 are continuations of the JOB STATEMENT
and should begin in Column 16.
Line 2:
-
OMIT TYPRUN=HOLD from this line.
-
Provide a default programmer name field formatted 'BOX,DISTRIBUTIONINFO'
-
Follow the programmer name field with a REGION=,
parameter
Note: If the developer knows that the job will require more
than the default region size, that value may be included on this line.
Line 3:
-
Specify MSGCLASS=W' and a valid production input 'CLASS=' parameter. Refer
to UMS Input
Classes.
-
The 'MSGLEVEL' parameter should not be used.
Example:
//EDME$ JOB (XXXXXXX,'CREATE PAYROLL CONTROL FILE AND RPTS'),
// 'BOX,DISTRIBUTIONINFO',REGION=,
// MSGCLASS=W,CLASS=P
-
EXEC STATEMENT:
-
A stepname will always be used.
-
The stepname is the job name followed by a sequential number if more than
one PROC is used. If only one PROC is executed, the sequential number is
not required.
Example:
//PDMD1 EXEC PDMD //PDMD2 EXEC PDMEor
//PDME EXEC PDME
Note: Symbolic parameters are continuations of the EXEC statement
and should begin in column 16.
-
Symbolic Parameters
-
Arrange each parameter, one to a line.
-
A comment is required following each symbolic parameter.
Example:
// VOLSER=XXXXXX, //***Enter tape no. for PP.PERA.UCB in the preceding
line
-
Dispatch Parameters
-
Each parameter needs to be defined in the JCL that is stored in the production
JCL library.
-
This parameter must include form number, FCB, DEST, and COPIES=1.
-
The symbolic parameters will be set to default values for the print files.
Example:
// RHAB JOB (XXXXXXX,'ACCOUNT SNAPSHOT'),
// TYPRUN=HOLD,
// CLASS=G,MSGCLASS=W
// RHAB EXEC RHAB,
// PRTB1='(A,,941S),FCB=941S,DEST=CENTRAL,COPIES=1',
//* OUTPUT PARAMETERS FOR BOULDER CAMPUS PRINT
// PRTH1='(A,,941S),FCB=941S,DEST=MC,COPIES=1',
//* OUTPUT PARAMETERS FOR UCHSC PRINT
// PRTD1='(A,,941S),FCB=941S,DEST=DC,COPIES=1',
//* OUTPUT PARAMETERS FOR DENVER CAMPUS PRINT
// PRTC1='(A,,941S),FCB=941S,DEST=CS,COPIES=1',
//* OUTPUT PARAMETERS FOR COLO SPRINGS PRINT
// PRTR1='(A,,941S),FCB=941S,DEST=CENTRAL,COPIES=1'
//* OUTPUT PARAMETERS FOR CENTRAL ADMINISTRATION PRINT
-
End the production job definition (JCL) with a //.
JCL PROCEDURE DEFINITION (PROC)
-
A PROC will be used in all cases unless an exception is approved by the
quality coordinator.
-
Use standard Symbolic
Parameter names.
-
Provide a valid Print
Destination when specifying printed output parameters.
-
Arrange the PROC steps so that jobs may be rerun with no changes, even
if the catalog is lost.
-
Jobs that continue to run when a program has issued a fatal condition code
should be followed by a forced abend step to terminate the job.
-
The 'PROC' statement will be the first line of the procedure.
-
PROC NAMING:
All production jobs and procedures will have a basic four-character
identification name. Refer to the Batch
Job Naming standard for the basic construct.
-
The step name will be the PROC name (without suffixes) followed by a pound
sign (#) and a sequential number. It is acceptable to add an alpha suffix
to the sequential number when a step is being added to an existing PROC.
Example:
Job WXYZ$ Stepname WXYZ#1
WXYZ#1A
WXYZ#2
Job QRST#T Stepname QRST#1
-
EXEC STATEMENT:
-
The EXEC of each step will be followed by a comment describing the step.
If there is not enough room for a meaningful step description on the EXEC
line, then place the description on the following line as a comment line.
Example:
//PDME#1 EXEC PGM=PP0100&pgm ***UPDATE CONTROL TABLES
or
//PDME#1 EXEC PGM=PP0100&pgm
//**********UPDATE CONTROL TABLE
-
Program names may not be described by a symbolic parameter. However, describing
a piece of a name, such as a version suffix, is allowed.
Example:
CU5404&pgm where pgm=XA
-
Discontinue use of the PARM=DBNAME parameter.
-
OMIT the REGION
parameter. If a region specification is necessary, provide the
parameter on the JOB card.
-
STEPLIB DD:
-
Use STEPLIB instead of JOBLIB.
-
Do not use libraries with an SYS1 prefix. An exception will be made for
UMS compilation jobs.
-
Do not use CEE.SCEERUN in the STEPLIB.
-
Jobs using an IDMS database must provide the correct IDMS load library
and the correct CV specific load library.
-
The IDMS load library will be specified as IDMS.SYSTEM&SYSNUM..LOADLIB
-
The CV specific load library will be specified as IDMS.&VER..LOADLIB
-
The correct production database default values for these symbolic parameters
will be specified on the PROC statement. See the IDMS
Load Library document for system specific values.
-
Required load libraries will appear in this order:
-
Easytrieve load library (EASY.LOADLIB) ** (EASY.IDMS12.LOADLIB may be substituted
if the program is reading IDMS)
-
Production load library (UMS.PROD.LOAD)
-
COBOL/MVS load library (CEE.SCEERUN)
-
IDMS load library (IDMS.SYSTEM&SYSNUM..LOADLIB)
-
CV specific load library (IDMS.&VER..LOADLIB)
Example:
COBOL/MVS using IDMS:
//STEPLIB DD DSN=UMS.PROD.LOAD,DISP=SHR
// DD DSN=IDMS.SYSTEM&SYSNUM..LOADLIB,DISP=SHR
// DD DSN=IDMS.&VER..LOADLIB,DISP=SHR
Easytrieve calling COBOL using IDMS:
//STEPLIB DD DSN=EASY.IDMS12.LOADLIB,DISP=SHR
// DD DSN=UMS.PROD.LOAD,DISP=SHR
// DD DSN=IDMS.SYSTEM&SYSNUM..LOADLIB,DISP=SHR
// DD DSN=IDMS.&VER..LOADLIB,DISP=SHR
-
Additional DDs for IDMS Jobs:
-
SYSIDMS DD.
-
All IDMS jobs, regardless of run mode, must provide a SYSIDMS statement
to specify the DMCL, dictionary name, and database name.
-
SYSIDMS statements are stored in the production data library. Refer to
the SYSIDMS
Guideline for more on this topic.
-
The CV portion of the SYSIDMS member name will be the symbolic parameter
&SYSNUM in all production JCL procedures.
-
SYSCTL DD.
For each program that updates an IDMS database using the central version
of IDMS, provide a //SYSCTL statement. This is a CV specific dataset that
will be formatted as follows:
//SYSCTL DD DSN=IDMS.&VER..SYSCTL,DISP=SHR
-
DD Statements:
-
Arrange DD statements in the following order:
STEPLIB
SYSCTL (for IDMS)
SYSIDMS (for IDMS)
Input Files
EZTVFM (for Easytrieve)
Work and Sort files
Output files
-
Specify parameters with DSN= always first.
-
Do not use default values for the first value in DISP= parameter.
-
Do not use any default values in the DISP= parameter for a new permanent
dataset.
Example: DISP=(NEW,CATLG,DELETE)
-
SYSOUT and SYSOUX should be included in all PROC steps executing a COBOL
program.
-
Do not use the following DD statements:
-
SYSDTERM
-
SYSUDUMP
-
SYSABEND
-
SORTLIB
-
SYSJRNL
-
Unless required by this standard, do not provide DD statements for unused
files.
-
Input from Data Libraries:
-
Parameter or input records that seldom change will be stored in the production
data library (currently UMS.PROD.DATA).
-
Assign names as follows:
Four character job name, PROC step number, suffix (if needed).
Example:
SABA1
SABA1Y
SABB3BD
-
Use of a single production data library member in more than one job is
acceptable, but should be done with caution.
-
USER DATA LIBRARIES
-
User data libraries should be specified in the job by the use of a single
symbolic parameter which states the library name and the library member
name.
-
When concatenating a 'USER' library member to a production data library
member, a BLKSIZE parameter must be specified for the initial production
data library member in the concatenation. The BLKSIZE must be a multiple
of 80 and at least equal to 1360 in order to accommodate the 'USER' libraries
as they are currently blocked. (UMS.PROD.DATA and UMS.STG1TEST.DATA currently
have a blocksize of 960.)
-
INPUT FROM REMOTE SITES
-
Remote data entry jobs (keypunch) will be treated as standard batch jobs
with documentation going to the Data Entry site.
-
Backup all files received using file transfer protocols (FTP) before processing
the file.
-
Sortworks Will Be Specified in Multiples of 3:
Example:
//SORTWK01 DD SPACE=(CYL,5),UNIT=SYSDA
//SORTWK02 DD SPACE=(CYL,5),UNIT=SYSDA
//SORTWK03 DD SPACE=(CYL,5),UNIT=SYSDA
-
Creating Output Files:
-
The high order qualifier on all output datasets will be the symbolic parameter
&SYSTEM. Provide a default value for this parameter on the PROC statement.
The default value for &SYSTEM should be the first default on the PROC
statement. If the output dataset is used in subsequent steps, the symbolic
parameter should be used in those steps also.
-
CA-1 Pattern
Characters may not be used as part of the dataset name.
-
Provide DCB information for the file. Do not rely on a program specification.
-
CATALOG MAINTENANCE
-
Remove existing catalog entries before attempting to catalog a new dataset
to ensure proper catalog references.
-
The following examples will be considered the standard catalog maintenance
routines for tape and disk files.
Example 1: (disk datasets)
//WXYZ PROC SYSTEM='ABC',UNIT=PRODDISK
//WXYZ#1 EXEC PGM=IEFBR14 ******* CATALOG MAINTENANCE
//DD1 DD DSN=&SYSTEM..FRS.DST.TRANS,DISP=(MOD,DELETE),
// UNIT=&UNIT,SPACE=(TRK,0)
//DD2 DD DSN=&SYSTEM..DST,DISP=(MOD,DELETE),UNIT=&UNIT,
// SPACE=(TRK,0)
Example 2: (tape datasets)
//QRST PROC SYSTEM='QRS'
//QRST#1 EXEC PGM=IEFBR14 ******* CATALOG MAINTENANCE
//DUMMYDD DD UNIT=(TAPE,,DEFER)
//DD1 DD DSN=&SYSTEM..NEW.TRANS,DISP=(MOD,DELETE),
// UNIT=AFF=DUMMYDD
//DD2 DD DSN=&SYSTEM..OUTTAPE,DISP=(MOD,DELETE),
// UNIT=AFF=DUMMYDD
-
ESOTERIC DISK USAGE
-
Use an esoteric disk identifier for the unit specification when creating
sequential disk files that are to be kept past the end of a job. Refer
to Esoteric
Disk Guideline for a description of these disks. Exceptions include
VSAM files which must contain a specific volume identifier within their
definition. Other exceptions may be considered by the Database Administrator.
-
Use the symbolic parameter &UNIT to designate an esoteric disk identifier.
Provide a default of PRODDISK for the UNIT parameter on the PROC statement.
A sample DD statement follows:
//DDNAME DD DSN=&SYSTEM..ANYNAME,UNIT=&UNIT,
// DISP=(NEW,CATLG,CATLG),
// SPACE=(TRK,(5,1),RLSE)
-
WORK DISK USAGE
-
Provide a UNIT=SYSDA for work files, sort files, and any disk file that
will not be accessed after the end of the job.
Note: Work disks are cleaned each morning. Files
written to work disks will be lost even though a catalog entry remains.
-
ALLOCATING DISK SPACE
-
Specify the RLSE option for the SPACE parameter unless records will be
added to the file in a later step.
-
When a volume count is specified, use the symbolic parameter &NUMVOL
in the production JCL procedure. Provide a default value for this symbolic
on the PROC statement.
-
TAPE CREATION
-
Specify 'UNIT=TAPE' to allocate a 3480 cartridge tape drive.
-
Provide a symbolic tape volume number in the production job definition
(JCL) and the JCL procedure even if the dataset is cataloged (this allows
the catalog to be easily overridden should the need arise).
-
Limit tape usage to two tape drives per PROC step.
-
Do not specify tape density (DEN=) on the DCB parameter.
-
REMOTE SITE OUTPUT
-
Transmission of data records to destinations other than Central (UMS) will
have the following parameters on the output DD statement:
Boulder Finance = SYSOUT=B,DEST=FS,HOLD=YES
Boulder Payroll = SYSOUT=B,DEST=D4
Health Sciences = SYSOUT=B,DEST=MC
Denver Campus = SYSOUT=(C,,CPY),DEST=DC
Colo Spg Campus = SYSOUT=D,DEST=CS
-
UCHSC Remote Processor.
UCHSC's remote processor is an NJE, not an RJE. To transmit records
to remote NJEs use a XMIT statement with a delimiter.
Example:
/*XMIT DR00NJE DLM=ZZ
-
Printed Output:
-
DISPATCH
-
In order to assist Production Services with the bundling of production
output for distribution, JCL procedures will contain a symbolic parameter
for each print file.
-
The name of the parameter will adhere to the Symbolic
Parameter Guideline.
-
Each parameter must be specified on the PROC statement.
-
Each parameter must include the form number, FCB, DEST, and COPIES=1, unless
the output will be printed to the MSGCLASS (SYSOUT=*).
Example:
//RHAB PROC PRTB1='*',
// PRTH1='(A,,941S),FCB=941S,DEST=MC,COPIES=1',
// PRTD1='(A,,941S),FCB=941S,DEST=DC,COPIES=1',
// PRTC1='(A,,941S),FCB=941S,DEST=CS,COPIES=1',
// PRTR1='*'
//RHAB#1 EXEC PGM=BRR810A ******** ACCOUNT SNAPSHOT
//STEPLIB DD DSN=UMS.PROD.LOAD,DISP=SHR
//BRMDFL DD DSN=BRSV.MDFL,DISP=SHR
//PRTFL1 DD SYSOUT=&PRTB1,DCB=BLKSIZE=133
//PRTFL2 DD SYSOUT=&PRTH1,DCB=BLKSIZE=133
//PRTFL3 DD SYSOUT=&PRTD1,DCB=BLKSIZE=133
//PRTFL4 DD SYSOUT=&PRTC1,DCB=BLKSIZE=133
//PRTFL5 DD SYSOUT=&PRTR1,DCB=BLKSIZE=133
//SYSOUT DD SYSOUT=*
//SYSOUX DD SYSOUT=*
-
LASER PRINTERS
For valid laser printer output classes, refer to UMS
Output Classes.
-
DIRECT WRITER
-
Direct Writers must be able to be restarted through the JCL.
-
Direct Writers need to be able to run as a normal print job or as a direct
writer depending on size of output.
-
LASER PRINT DIRECT WRITER
-
All FCB's for Laser Direct Writers will be: FCB=LASR or a specific form
number.
-
The 'Start Command' needed by operations will be documented in the notes
screen of the on-line documentation (JCLDOC). The current start commands
are as follows:
Start Port - Portrait print orientation, single sided print
Start Dport - Portrait print orientation, duplex (2-sided) print
Start - Landscape print orientation, single sided print
Start Duplex - Landscape print orientation, duplex(2-sided) print
Start 'Form #' - Print on a special forms
Example:
Start 259W - Print will be produced on special form number 259W
-
Forced Job Termination:
-
When using programs that issue a condition code when a fatal condition
is encountered (notably EASYTRIEVE, MARKIV, some FRS), include a PROC step
that will terminate the job when problems occur. Use program N684 to force
an abend condition when fatal condition codes are detected.
-
DISCONTINUE USE OF PROGRAM N267. This program displays an abend message
on the operator's console and is no longer needed.
SASJCL
-
The SAS procedure will be called from within a jcl procedure for a production
batch job.
-
The SAS source code DD statement (SYSIN) will be specified as the symbolic
parameter &SASPGM.
-
The symbolic parameter SASPGM will contain the source library and member
name of the SAS source code as a default on the PROC statement of the production
batch job. If multiple SAS programs need to be specified, a numeric suffix
on the SASPGM parameter may be used.
-
The EXEC SAS statement will include a PARM statement that provides the
SASPGM parameter value to SAS via the SAS SYSPARM option and restricts
the program line length to 72 characters.
Example:
PARM=('SYSPARM="&SYSPGM" S=72')
-
Production jcl procedures will NOT contain references to the SAS version.
Example:
//EWSA PROC SYSTEM=PBF,
// EDBDSN=PBF.ALL.EDB.RESTORE,
// CTLDSN=PBF.ALL.CTL.BACKUP,
// TAPEIN=,
// SASPGM=UMS.PROD.DATA(EWSA2),
// CYCLE=,
// PAYDATE=,
// UNIT=PRODISK,
// WORKCYL='300,30',
// PRTM1='(A,,941S),FCB=941S,DEST=CENTRAL,COPIES=1'
//EWSA#1 EXEC PGM=IEFBR14********* FILL HOLES IN CATALOG *********
//SASLIB DD DSN=&SYSTEM..ALL.EDB.CTL.&CYCLE&PAYDATE..SASLIB,
// DISP=(MOD,DELETE),
// UNIT=&UNIT,SPACE=(TRK,0)
//EWSA#2 EXEC SAS,**************** CREATE SAS DATASETS ***********
// PARM=('SYSPARM="&SASPGM " WORK=EWSAWORK S=72')
//EDB DD DSN=&EDBDSN,
// DISP=SHR,UNIT=TAPE,VOL=SER=&TAPEIN
//CTL DD DSN=&CTLDSN,
// DISP=SHR,
// LABEL=2,
// VOL=REF=*.EDB
//SYSIN DD DSN=&SASPGM,DISP=SHR
//EWSAWORK DD DSN=&&EWSAWORK,
// SPACE=(CYL,(&WORKCYL)),
// RECFM=FS,DSORG=PS,LRECL=23040,BLKSIZE=23040,
// DISP=(NEW,DELETE),
// UNIT=SYSDA
//SASLIST DD SYSOUT=&PRTM1
//SASLIB DD DSN=&SYSTEM..ALL.EDB.CTL.&CYCLE&PAYDATE..SASLIB,
// DISP=(NEW,CATLG,DELETE),
// UNIT=&UNIT,
// SPACE=(CYL,(300,30),RLSE)
Return to: SIS Systems
Development Home Page
Return to:UMS Home Page
This page was last updated on June 28, 2005
Comments to: Quality
Coordinator