You are on page 1of 142

Job Control Language (JCL)

OPERATING SYSTEM

BARE MACHINE (EARLY DAYS)

MONITOR PROGRAM (EARLY DAYS)

OS WITH LIMITED FEATURES
MEMORY PROTECTION
BATCH PROGRAMMING

OPERATING SYSTEM
TYPICAL OS FEATURES
MEMORY MANAGEMENT
VIRTUAL MEMORY
FILE MANAGEMENT
RESOURCE MANAGEMENT
CPU SCHEDULING

MEMORY
REAL MEMORY
VIRTUAL MEMORY
SWAPPING
PAGING
CPU SCHEDULING
MULTI PROGRAMMING

TIME SHARING

BATCH
FCFS
SJF
PRIORITY
PRIORITY(INCREMENTED BY TIME)

PARALLEL PROCESSING
CLASSIFICATION OF M/Cs
MICRO (PC)
SINGLE USER
LIMITED PROCESSING POWER
LESS NO. OF I/O DEVICES
MINI (AS-400, UNIX SYSTEMS)
MULTI USER (HUNDREDS)
MORE NO. OF I/O DEVICES
MAIN FRAME
MULTI USER (THOUSANDS)
MORE NUMBER OF I/O DEVICES
LARGE STORAGE CAPACITIES
MAIN FRAME CHARACTERISTICS
PROCESSORS
MORE THAN ONE CPU
TO TAKE CARE OF FAILURES
PARALLEL PROGRAMMING
CHANNELS
I/O DEVICES
UNIT RECORD DEVICES
CARD READER
MAGNETIC TAPE DRIVES
TAPES
DASDS
DIRECT ACCESS STORAGE DEVICES


DASD LABELS
VOLUME LABELS
VOL1 LABEL
CYLINDER0, TRACK 0, THIRD RECORD
CONTAINS DISK ADDRESS OF VTOC
FILE LABELS
FILE IDENTIFICATION INFO.

BLOCKING
INTER RECORD GAP(IRG)
INTER BLOCK GAP(IBG)

DATA SET

CATALOG
RECORDS LOCATION OF FILES
LIKE LIBRARY CATALOG


TWO TYPES OF CATALOGS
MASTER CATALOG
ONLY ONE
SYSTEM DATA SET
CONTAINS LOCATION OF ALL USER CATALOGS
USER CATALOG
UNLIMITED
ENTRIES OF USER DATA SETS

CATALOG ORGANIZATIONS
CVOLS
VSAM
ICF



DATA SET ORGANIZATIONS
PHYSICAL SEQUENTIAL ORGANIZATION(PS)
ACCESS IS SEQUENTIAL
PARTITIONED ORGANIZATION(PO)
COLLECTION OF SEQUENTIAL DATA SET WITH
SAME CHARACTERISTICS
DIRECT ORGANIZATION(DA)
ACCESS IS RANDOM (THROUGH THE ADDRESS)
INDEXED SEQUENTIAL ORGANIZATION(ISAM)
ACCESS IS RANDOM OR SEQUENTIAL
CHARACTERISTICS OF
MAINFRAME O/S
VIRTUAL STORAGE
MULTI PROGRAMMING
SPOOLING
BATCH PROCESSING
EACH UNIT OF WORK IS A JOB
A JOB CAN CAUSE ONE OR MORE PROGRAMMES
EXECUTED IN SEQUENCE
JOB ENTRY SUBSYSTEM
JES IS MVS COMPONENT
KEEPS TRACK OF JOBS ENTERING THE
SYSTEM
PRESENTS JOBS TO MVS FOR PROCESSING
SENDS JOBS OUTPUT TO CORRECT
DESTINATION
MVS USES EITHER JES2 OR JES3
JES2 IS EQUIVALENT TO HASP(HOUSTEN
AUTOMATIC SPOOLING PROGRAM)
JES3 IS EQUIVALENT TO ASP(ASYMMETRIC
MULTI-PROCESSING SUBSYSTEM


STEPS IN MVS JOB
THE JOB IS SUBMITTED (INPUT QUEUE)
THE JOB IS SELECTED FOE EXECUTION(EXEC
QUEUE)
THE JOB EXECUTES
THE OUTPUT IS PROCESSED(OUTPUT QUEUE)
JOB IS PURGED

JCL DESCRIBES THE JOB
A COMPLEX LANGUAGE
PROVIDES ACCOUNTING INFO.
PROVIDES RESOURCE INFO.
PROVIDES CONTROL INFO.


JCL IS A LANGUAGE BUT NOT A
PROGRAMMING LANGUAGE. WHY?
NO LANGUAGE CONSTRUCTS
NO DATA TYPES
NO OBJECT CODE

JCL SYNTAX CONSIDERATIONS
CODED IN 80 COLUMN LENGTH MEMBER
1 TO 72 COLUMNS ARE USED FOR JCL CODE
73 TO 80 COLUMNS ARE USED FOR OPTIONAL
SEQUENCE NUMBER
72 COLUMN IS USED FOR CONTINUATION
BASIC FORMAT OF JCL
STATEMENTS
IDENTIFIER NAME OPERATION PARAMETER COMMENT

IDENTIFIER - TWO SLASHES(//) STARTING IN FIRST
COLUMN (EXCEPTIONS /*, //*)

NAME - 1 TO 8 CHARACTER NAME IDENTIFIES STEP
NAMES, JOB NAMES ETC.
CODED AFTER IDENTIFICATION
CAN CONTAIN ALPHANUMERIC OR NATIONAL
CHARACTERS(#,$,@)
MUST START WITH A LETTER
MUST BEGIN IN COLUMN 3


OPERATION - SPECIFIES THE FUNCTION OF THE
STATEMENT (JOB, EXEC)
MUST BE PRECEDED AND FOLLOWED BY ONE
SPACE
CODED AFTER NAME
MUST START BEFORE 16 COLUMN

PARAMETERS - ONE OR MORE NUMBER OF
PARAMETERS
INDIVIDUAL PARAMETERS ARE SEPARATED FROM
ONE ANOTHER BY A COMMA
MUST BE PRECEEDED BY ONE SPACE
CAN EXTEND UPTO 71ST COLUMN

COMMENTS - ANY RELEVANT COMMENT
MUST BE PRECEEDED BY ONE SPACE
MUST NOT EXTEND BEYOND 71ST COLUMN
HOW TO CONTINUE JCL
STATEMENT
CODE A NON-BLANK CHARACTER IN COLUMN
72(OPTIONAL)
BREAK THE PARAMETER FIELD
DONT BREAK THE INDIVIDUAL PARAMETER
DONT FORGET TO CODE A COMMA AT THE END OF
THE LINE TO BE CONTINUED
CODE / IN 1ST AND 2ND COLUMNS
CODE THE NEXT PARAMETER IN BETWEEN 4 AND 16
COLUMN
TYPES OF JCL STATEMENTS


1. JOB STMT
2. EXEC STMT
3. DD STMT
4. DEFAULT DELIMITER STMT( /* )
5. COMMENT STMT ( //* )
6. NULL STMT ( // )
7. PROC STMT
8. PEND STMT
THE JOB STATEMENT
//JOBNAME JOB [ACCOUNTING INFORMATION]
// [,PROGRAMMER NAME]
// [,NOTIFY=user-id]
// [,MSGCLASS=class]
// [,MSGLEVEL=(jcl,message)]
// [,CLASS=class]
// [,PRTY=priority]
// [,TYPRUN=(HOLD/SCAN)]
// [,ADDRSPC=(VIRT/REAL)]
// [,REGION=(value K/valueM)
// [,TIME=([min][,sec])
// [,COND=((value,operator)....)]
// [,RESTART=step name]


THE JOB STATEMENT
IN A JOB, THE FIRST STMT SHOULD BE THE
JOB STMT

//IMSJOBAB JOB 1113,BUDDY,CLASS=2
//*

THREE POSSIBLE DELIMITERS FOR A JOB
DURING THE READING PROCESS ARE :

ANOTHER JOB STMT
A NULL STMT
END-OF-FILE


A JOB STMT MUST HAVE A NAME OF
LENGTH 8 CHARACTERS CONSISTING OF
ALPHABETS, NUMBERS, AND NATIONAL
CHARACTERS ( $, #, AND @ )

//TBSQS1KJ JOB 1156,SHIVAJI,CLASS=2
//TBSQSD#2 JOB 2376,DON CLARK,CLASS=2

THE FIRST CHARACTER CAN NOT BE
NUMERIC

//5TBSPSCO JOB 5632,BALAJI,CLASS=2

JOB STATEMENT - POSITIONAL
PARAMETERS
ACCOUNTING INFORMATION
ACCOUNTING INFO IS A POSITIONAL PARM

IT MUST BE FIRST IN THE PARM FIELD

IT CAN HAVE A MAXIMUM OF 142
CHARACTERS INCLUDING PARENTHESES
AND COMMAS BUT NOT APOSTROPHES


ACCOUNTING INFO CAN CONSIST OF MANY
SUBPARAMETERS ENCLOSED IN
PARENTHESES

//TBSPS2AC JOB (3009,9999,01,5),BUDDY

IF ANY PORTION OF THE FIELD CONTAINS A
SPECIAL CHARACTER OTHER THAN A
COMMA OR A HYPHEN , THE PORTION MUST
BE ENCLOSED IN APOSTROPHES

//TBSQS2C5 JOB SAT 58,RAVI
PROGRAMMERS NAME
PROGRAMMERS NAME IS ANOTHER
POSITIONAL PARM

IT MUST BE PRESENT AFTER THE
ACCOUNTING INFO
//TBSPS2#2 JOB (9999,09,11),BUDDY

THE PROGRAMMERS NAME CANNOT
EXCEED 20 CHARACTERS. IF IT INCLUDES
SPACES ENCLOSE IN QUOTES

//TBSPS2AB JOB (9999,021,345),VIJAYA BHASKAR
JOB STATEMENT - KEYWORD
PARAMETERS
MSGLEVEL PARAMETER

THE MSGLEVEL PARM SPECIFIES WHETHER
THE SUBMITTED JCL AND/OR JCL-RELATED
MESSAGES SHOULD BE SHOWN ON THE
JOBS OUTPUT

GENERAL SYNTAX :
MSGLEVEL=([jcl][,messages])

messages - 0 OR 1
0 - NO MESSAGES WILL BE SHOWN
1 - ALL MESSAGES WILL BE SHOWN



jcl - 0, 1, OR 2
0 - ONLY THE JOB STMT WILL BE SHOWN
1 - ALL JCL WILL BE SHOWN, INCLUDING
PROCEDURE STATEMENTS
2 - ALL JCL WILL BE SHOWN, BUT NOT
PROCEDURE STATEMENTS

THE DEFAULT OF PRACTICALLY ALL
INSTALLATIONS IS ( 1,1 )

IF THE JOB ENCOUNTERS AN ABEND
FAILURE, THE SECOND FIELD ALWAYS
DEFAULTS TO 1 EVEN IF CODED AS 0
THE ADDRSPC PARAMETER
THE ADDRSPC PARM SPECIFIES WHETHER
THE JOB WILL USE REAL OR VIRTUAL
STORAGE

GENERAL SYNTAX :
ADDRSPC={VIRT|REAL}

VIRT - THE REGION WILL BE VIRTUAL
STORAGE (DEFAULT)

REAL - THE REGION WILL BE REAL
STORAGE
//TBSPS2CF JOB (909,342),VIJAY,ADDRSPC=REAL

THE REGION PARAMETER
THE REGION PARM SPECIFIES THE AMOUNT
OF STORAGE NEEDED BY THE STEP WITH
THE HIGHEST STORAGE REQUIREMENTS

GENERAL SYNTAX :
REGION=value{K|M}

//TBSPS2CF JOB (909,342),VIJAY,REGION=800K



WHEN THE AMOUNT OF STORAGE
REQUESTED IN THE REGION PARM IS
HIGHER THAN THE ADDRESS SPACE CAN
PROVIDE, AN ABEND WILL OCCUR

IF REGION=0K(OR 0M) IS CODED, THE
ENTIRE ADDRESS SPACE (EXCEPT FOR
THOSE AREAS USED BY MVS/XA) IS
AVAILABLE

//TSPS2KL JOB ,RAJ,REGION=0K


THE COND PARAMETER
GENERAL SYNTAX OF THE COND PARM OF
THE JOB STMT :
COND=((code,operator)[,(code,operator)]...)

(code,operator) IS CALLED A TEST. code IS
A NUMBER BETWEEN 0 AND 4095

THERE CAN BE A MAXIMUM OF 8 TESTS IN
THE COND PARAMETER

THE TESTS THAT APPEAR IN THE COND
PARM OF THE JOB STMT REPEAT FOR EACH
STEP



operator - PROVIDES A COMPARISON
BETWEEN A RETURN CODE AND THE code

THERE ARE 6 OPERATORS :
- LT - LESS THAN
- LE - LESS THAN OR EQUAL TO
- NE - NOT EQUAL TO
- EQ - EQUAL TO
- GT - GREATER THAN
- GE - GREATER THAN OR EQUAL TO

//TBSPS2KL JOB FT62,BUDDY,
// COND=((8,EQ),(12,LE))
//TBSPS2KL JOB FT62,BUDDY,
// COND=(8,NE)


IF A TEST IS SATISFIED, MEANING IT IS TRUE
AS IT IS READ FROM LEFT TO RIGHT, THE
JOB STOPS EXECUTION AT THAT POINT

IT GOES LIKE THIS :

IF ITS TRUE,
YOURE THROUGH
THE CLASS PARAMETER
THE FUNCTION OF THE CLASS PARM IS TO
ASSIGN A CLASS TO A JOB

GENERAL SYNTAX :
CLASS=jobclass

jobclass - A LETTER FROM A - Z OR A
NUMBER FROM 0 - 9
//TBSPSQJ JOB 1212,RAJ,CLASS=2

IF THE CLASS PARM IS OMITTED,
INSTALLATION DEFAULT VALUE WILL BE
USED


THE PRTY PARAMETER
THE PRTY PARM DETERMINES THE
SCHEDULING PRIORITY OF A JOB IN THE
JOB QUEUE OF THE SAME CLASS

GENERAL SYNTAX :
PRTY=priority

priority - A NUMBER FROM 0 -15 FOR JES2
OR 0-14 FOR JES3
(BCBS uses JES2)
//TBSPS2AB JOB (9001,911),BUDDY,PRTY=15

THE HIGHER THE NUMBER, THE BETTER
THE PRIORITY
THE TIME PARAMETER
THE TIME PARM OF THE JOB STMT
SPECIFIES THE TOTAL AMOUNT OF CPU
TIME THAT ALL STEPS IN A JOB CAN USE
COLLECTIVELY

GENERAL SYNTAX :
TIME=(minutes,seconds|1440)

minutes - A NUMBER FROM 1 TO 1439
seconds - A NUMBER FROM 1 TO 59
TIME=1440 - THE JOB WILL NOT BE TIMED FOR
CPU




//TBSPS2AB JOB ,AJAY,TIME=(5,10)
//TBSQS6HU JOB AS13,SHASHI,TIME=1440

THE TIME PARM CAN ALSO BE SUPPLIED BY
THE CLASS PARM
IF THE TOTAL EXECUTION TIME EXCEEDS
THEN AN ABEND OCCURS
THE NOTIFY PARAMETER
THE NOTIFY PARM INFORMS A TSO USER
WHEN THE JOB TERMINATES

GENERAL SYNTAX :
NOTIFY=userid
userid - A NAME IDENTIFYING A VALID TSO USER
//TBSPS2AB JOB (9001,099)
,BUDDY,NOTIFY=TBSPS2

IF THE JOB TERMINATES WHILE THE USER
WAS LOGGED OFF, THE MESSAGE WILL
APPEAR WHEN THE USER LOGS ON

IF OMITTED, NO MESSAGE WILL APPEAR
WHEN THE JOB TERMINATES
THE MSGCLASS PARAMETER
THE MSGCLASS PARM ASSIGNS A SYSOUT
CLASS TO THE JOB LOG.

GENERAL SYNTAX :
MSGCLASS=class
class - A CHARACTER FROM A TO Z OR
A NUMBER FROM 0 TO 9

//TBSPS2AB JOB (9001,111,99)
,BUDDY,MSGCLASS=H
//TBSPS2AB JOB (9001,111,99)
,BUDDY,MSGCLASS=2

IF THE MSGCLASS PARM IS OMITTED, AN
INSTALLATION-DEFINED DEFAULT WILL BE
USED
THE RESTART PARAMETER
THE RESTART PARM REQUESTS THAT A JOB
BEGIN ITS EXECUTION WITH A STEP OTHER
THAN THE FIRST ONE

GENERAL SYNTAX :
RESTART={stepname|procexec.stepname}
stepname - THE NAME OF THE STEP WHERE
EXECUTION IS TO BEGIN
//TBSPS2AB JOB (9001,111,99)
,BUDDY,RESTART=STEP3

procexec.stepname - THE NAME OF THE EXEC
STMT INVOKING A PROC AND THE NAME OF THE
STEP WITHIN THE PROC WHERE EXECUTION IS
TO BEGIN
//TBSPS2AB JOB (9001,111,99) ,BUDDY,
RESTART=P2.S5
THE TYPRUN PARAMETER
THE TYPRUN PARM REQUESTS SPECIAL
PROCESSING FOR THE JOB ALLOWING :
EXECUTION OF THE JOB TO BE WITHHELD
TEMPORARILY
SYNTACTICAL CHECK TO BE PERFORMED
WITHOUT EXECUTION
TO PRINT JCL WITH NO SYNTAX CHECK AND NO
EXECUTION (JES2 ONLY)]

GENERAL SYNTAX :
TYPRUN={HOLD|JCLHOLD|SCAN|COPY}
HOLD - JOB WILL BE HELD UNTIL THE OPERATOR
USES A COMMAND TO RELEASE IT. A JOB WILL BE
HELD ONLY IF SYNTACTICALLY CORRECT
//TBSPS2AB JOB 1212,RAJ,TYPRUN=HOLD


SCAN - JOB WILL BE SCANNED FOR ALL
SYNTACTICAL JCL ERRORS BUT WILL NOT
EXECUTED
//TBSPS2AB JOB 1115,BUDDY,TYPRUN=SCAN

COPY - JOB WILL BE COPIED DIRECTLY TO
SYSOUT BUT WILL NOT EXECUTED
//TBSPS2AB JOB 1115,BUDDY,TYPRUN=SCAN

JCLHOLD - JOB WILL NOT BE SCANNED FOR
SYNTACTICAL JCL ERRORS AND WILL NOT
EXECUTED
//TBSPS2AB JOB 1115,BUDDY,TYPRUN=SCAN


THE EXEC STATEMENT
AN EXEC STMT IDENTIFIES A STEP

A JOB CAN CONTAIN A MAXIMUM OF 255
EXEC STATEMENTS

AN EXEC STMT NEED NOT HAVE A NAME
// EXEC PGM=PROG1,COND=(4,LT)

FOUR POSSIBLE DELIMITERS FOR A STEP
ARE :
ANOTHER EXEC STMT
A JOB STMT
A NULL STMT
END-OF-FILE
EXEC STATEMENT - PARAMETERS
THE PGM PARAMETER
THE PGM PARM IDENTIFIES THE PROGRAM
TO BE EXECUTED IN A STEP

IT IS POSITIONAL PARM. IT MUST BE CODED
FIRST

GENERAL SYNTAX :
PGM={pgmname|referback}

pgmname - NAME OF THE PROGRAM TO BE
FETCHED AND EXECUTED
//STEP1 EXEC PGM=PROG1


referback - THIS CAN HAVE 2 FORMATS :

*.stepname.ddname - REFERS TO A PGM DEFINED
IN DD STMT ddname IN A PREVIOUS STEP
stepname. THIS PROGRAM IS TO BE EXECUTED
//STEP2 EXEC PGM=*.STEP1.INFILE

*.procexec.stepname.ddname - REFERS TO A PGM
DEFINED IN DD STMT ddname IN A PREVIOUS
STEP stepname FOUND WITHIN A PROC
procexec (NAME OF EXEC STMT INVOKING THE
PROC. THIS PROGRAM IS TO BE EXECUTED
//STEP2 EXEC PGM=*.BSSAC.STEP1.INFILE


THE EXEC STMT CAN IDENTIFY ONLY THE
MEMBER. IT HAS NO PARM AVAILABLE TO
IDENTIFY THE LIBRARY. IF NECESSARY,
THIS MUST BE DONE BY USING A JOBLIB OR
A STEPLIB DD STMT

//STEP1 EXEC PGM=EMC034
//STEPLIB DD DSN=TBSQS6.EMCAIT.LOAD
//TBSIKKL JOB 1116,JONES,CLASS=2
//JOBLIB DD DSN=TBSPS2.NISBANK.LOAD
//STEP1 EXEC PGM=NISMAIN

IF NEITHER JOBLIB NOR STEPLIB IS CODED,
THE SYSTEM SEARCHES THE SYSTEM
DEFAULT LIBRARIES
THE PARM PARAMETER
THE PARM PARAMETER PROVIDES A WAY
TO SUPPLY DATA OF LIMITED SIZE TO THE
EXECUTING PGM
GENERAL SYNTAX :
PARM=string
string - A STRING OF CHARACTERS UPTO 100
//STEP1 EXEC PGM=PROG1,PARM=12345


IF ANY PORTION OF THE STRING CONTAINS
SPECIAL CHARACTERS (OTHER THAN A
HYPHEN), THAT PORTION OR THE ENTIRE
STRING MUST BE ENCLOSED IN
APOSTROPHES
//STEP2 EXEC PGM=PROG1,PARM=123,125

ANY PARENTHESES USED COUNT TOWARD
THE MAXIMUM. APOSTROPHES DO NOT
THE ADDRSPC & REGION
PARAMETERS
ADDRSPC - SAME AS THE JOB STMT
ADDRSPC PARM
//STEP2 EXEC PGM=PROG1,
// ADDRSPC=REAL

REGION - SAME AS THE JOB STMT REGION
PARM
//STEP1 EXEC PGM=PROG1,
// REGION=800K

IF THESE PARAMETERS ARE CODED BOTH
ON JOB STATEMENT AND EXEC STATEMENT
THEN JOB STATEMENT PARM PREVAILS
THE COND PARAMETER
THE COND PARM CAN PERFORM A TEST
( OR MULTIPLE TESTS) AT THE BEGINNING
OF EACH STEP AGAINST THE RETURN
(CONDITION) CODES ISSUED BY PREVIOUS
STEPS

GENERAL SYNTAX :
COND=((code,operator[,stepname])[,(code,operator[,step
name])]...[,EVEN][,ONLY])

code AND operator USE THE SAME BASIC
MECHANISM AS THE ONE IN THE JOB STMT


stepname - IDENTIFIES THE NAME OF A
PRECEDING STEP WHOSE RETURN CODE
WILL BE INTERROGATED
//STEP2 EXEC PGM=P2,
// COND=(0,LT,S1)

stepname CAN ALSO APPEAR AS TWO NAMES :
procexec.stepname : WHERE procexec
IDENTIFIES THE NAME OF THE EXEC STMT
INVOKING A PROC AND stepname IDENTIFIES
THE STEPNAME WITHIN THE PROC
//STEP2 EXEC PGM=PROGRAM2,
// COND=(0,LT,PRC1EXEC.STEP1)


EVEN - REQUESTS THAT EXECUTION BE
PERMITTED EVEN THOUGH A PREVIOUS
(ANY PREVIOUS) STEP HAS ABENDED
//STEP5 EXEC PGM=PROG5,
// COND=((4,LT,STEP1),EVEN)

ONLY - REQUESTS THAT EXECUTION BE
PERMITTED ONLY IF A PREVIOUS (ANY
PREVIOUS) STEP HAS ABENDED
//STEP3 EXEC PGM=PROG3,
// COND=((8,LT,STEP2),ONLY)

EVEN AND ONLY CANNOT MAKE
REFERENCE TO A PARTICULAR STEP. THEY
REFER TO ANY PREVIOUS STEP THAT HAS
ABENDED


EVEN AND ONLY ARE MUTUALLY
EXCLUSIVE AND CANNOT BE CODED
TOGETHER IN THE SAME COND PARM

(code,operator[,stepname]) IS CALLED A
TEST

THERE CAN BE A MAXIMUM OF 8 TESTS IN
THE COND PARAMETER. HOWEVER, IF EVEN
OR ONLY IS CODED, A MAXIMUM OF 7 CAN
BE USED

IF A TEST IS SATISFIED, MEANING IT IS
TRUE, THE STEP THAT CONTAINS THE
COND PARM WILL BE BYPASSED.
FOLLOWING STEPS CAN BE EXECUTED


A TEST CAN ASSUME ONE OF TWO
FORMATS :

(code,operator,stepname) - THE code WILL BE
TESTED AGAINST THE RETURN CODE OF A
DESIGNATED (BY STEPNAME) STEP
//STEP3 EXEC PGM=PROG3,
// COND=(0,LT,STEP1)

(code,operator) - THE code WILL BE TESTED
AGAINST
THE RETURN CODE OF ALL PREVIOUS STEPS
//STEP3 EXEC PGM=PROG3,COND=(0,LT)


IF THE COND PARM IS CODED IN BOTH THE
JOB AND AN EXEC STMT, BOTH WILL BE
TESTED

THE COND PARM OF THE JOB STMT IS
TESTED FIRST. IF NONE OF ITS TESTS ARE
SATISFIED, THEN THE COND PARM OF THE
EXEC STMT IS TESTED

IF A TEST IS SATISFIED, THE COND PARM IN
THE EXEC STMT WILL NOT BE TESTED
DIFFERENCES BETWEEN COND
PARAMETER OF JOB AND EXEC
STATEMENTS
THE TESTS THAT APPEAR IN THE COND OF
THE JOB STMT REPEAT FOR EACH
STEP(EXCEPT THE FIRST ONE)
THE COND IN THE EXEC STMT ALLOWS
EACH STEP TO HAVE ITS OWN TESTS

EACH TEST IN THE COND OF THE JOB STMT
IS TESTED AGAINST ALL PREVIOUSLY
ISSUED RETURN CODES
THE COND IN THE EXEC STMT ALLOWS THE
SAME, BUT ALSO ALLOWS TO SELECTIVELY
TEST AGAINST THE RETURN CODE OF A
PARTICULAR (PREVIOUS) STEP


WHEN A TEST IS SATISFIED IN THE COND
OF THE JOB STMT, NO STEPS CAN
EXECUTE FROM THAT POINT ON. IT IS
IMPOSSIBLE TO BYPASS ONE STEP AND
EXECUTE A SUBSEQUENT ONE
WHEN A TEST IS SATISFIED IN THE COND
OF THE EXEC STMT, ONLY THE STEP THAT
CONTAINS THE COND PARM WILL NOT BE
EXECUTED. FOLLOWING STEPS MAY OR
MAY NOT BE EXECUTED BASED ON THEIR
OWN COND PARM

THE COND OF THE JOB STMT DOES NOT
PROVIDE A WAY TO ALLOW EXECUTION OF
STEPS SUBSEQUENT TO AN ABEND
FAILURE
THE COND OF THE EXEC STMT DOES
THE TIME PARAMETER
SAME AS THE JOB STMT TIME PARM

//STEP3 EXEC PGM=PROG3,
// TIME=(1,5)

IF THESE PARAMETERS ARE CODED BOTH
ON JOB STATEMENT AND EXEC STATEMENT
THEN BOTH WILL BE IN EFFECT
THE ACCT PARAMETER
THE ACCT PARM SPECIFIES ACCOUNTING
INFORMATION TO BE USED FOR THE STEP
AS OPPOSED TO THE ACCOUNTING
INFORMATION IN THE JOB STMT

IT IS A KEYWORD PARM

GENERAL SYNTAX :
ACCT=(acctno,[additional acct info)

acctno - THE ACCOUNT NUMBER TO BE
USED FOR THE STEP
//STEP1 EXEC PGM=PROG1,ACCT=1212




IF A PARM APPEARS IN THE JOB STMT AND IN
ONE OF ITS STEPS EXEC STMT, FOR THIS STEP:
JOB STMT
PARM
PREVAILS
EXEC STMT PARM
PREVAILS
BOTH STMT
PARAMETERS
ARE IN EFFECT
PARM
REGION x
ADDRSPC x
COND
x
TIME
x
ACCT x
COMMON JOB AND EXEC STMT PARAMETERS
THE DD STATEMENT
THE DD STMT IS RESPONSIBLE FOR
DESCRIBING THE DATA SET

A DD STMT MUST APPEAR IN A STEP WHEN
THE EXECUTING PROGRAM EXPECTS TO
READ FROM OR WRITE TO A DATA SET

THE MAXIMUM NUMBER OF DD
STATEMENTS IN A STEP IS 3273

THE DD STATEMENT - PARAMETERS
THE DSN PARAMETER
THE DSN PARM IDENTIFIES THE NAME OF
THE DATA SET TO BE CREATED OR
RETRIEVED

IT IS KEYWORD PARM

GENERAL SYNTAX :
DSN=name|NULLFILE
name - SEVERAL FORMATS ARE POSSIBLE :


A QUALIFIED NAME - IT ALLOWS THE USER
TO SUPPLY A NAME THAT IS UNIQUE AND
MEANINGFUL. IN MOST INSTALLATIONS, THE
USERS ID MUST BE THE HIGH QUALIFIER OF
ALL THE USERS DATA SET NAMES
//INFILE DD DSN=TBSPS2.DT.OUTFILE

LIBRARY(MEMBER) - THIS NOTATION
IDENTIFIES A LIBRARY (PDS) AND A
PARTICULAR MEMBER IN IT
//INFILE DD DSN=TBSPS2.NISMAIN.SOURCE(INFILE)

&&NAME - THIS IDENTIFIES A
TEMPORARY DATA SET NAME
//INFILE DD DSN=&&TEMP


REFERBACK - THIS CAN HAVE 3
FORMATS :
*.stepname.ddname - REQUESTS THAT THE DATA
SET NAME BE COPIED FROM DD STMT ddname
FOUND IN A PREVIOUS STEP stepname
//OUT1 DD DSN=*.STEP1.IN1

*.ddname - REQUESTS THAT THE DATA SET NAME
BE COPIED FROM A PREVIOUS DD STMT ddname
FOUND IN THE SAME STEP
//IN2 DD DSN=*.OUT1

*.procexec.stepname.ddname - REQUESTS THAT
THE DATA SET NAME BE COPIED FROM DD STMT
ddname FOUND IN A PREVIOUS STEP stepname
FOUND WITHIN A PROC procexec (NAME OF
EXEC STMT INVOKING THE PROC)
//IN3 DD DSN=*.PRC1EXEC.STEP6.OUT3


NULLFILE - INDICATES THAT NO I/O
OPERATIONS WILL BE PERFORMED FOR
THE DD STMT. NO OTHER PARAMETERS
EXCEPT DCB ARE REQUIRED
//IN2 DD DSN=NULLFILE

HOW A PROGRAM FINDS A DATA SET
THE DDNAME IS IN ESSENCE THE CONNECTING
LINK BETWEEN THE PROGRAM AND JCL
IN COBOL, THE SELECT ASSIGN CLAUSE
SUPPLIES THE DDNAME
IN JCL, THE DD STATEMENT SUPPLIES DATA SET
INFORMATION
THE DISP PARAMETER
THE DISP PARM SPECIFIES :
WHETHER THE DATA SET IS TO BE CREATED OR
RETRIEVED
HOW TO DISPOSE OF THE DATA SET WHEN THE
STEP TERMINATES

IT IS KEYWORD PARM

THE THREE FIELDS OF THE DISP PARM
ARE :
THE STATUS FIELD [ NEW, OLD, SHR, MOD]
THE NORMAL DISP FIELD [DELETE, KEEP, CATLG,
UNCATLG, PASS]
THE ABNORMAL (OR CONDITIONAL) DISP FIELD
[DELETE, KEEP,CATLG, UNCATLG]


GENERAL SYNTAX :
DISP=[NEW OLD SHR MOD] [,DELETE ,KEEP ,CATLG
,UNCATLG ,PASS] [,DELETE ,KEEP ,CATLG
,UNCATLG]

THE STATUS FIELD - TELLS THE SYSTEM
WHETHER THAT DATA SET IS TO BE
CREATED OR RETRIEVED

NEW - INDICATES THAT THE DATA SET WILL
BE CREATED IN THIS STEP
//IN1 DD DSN=TMP17.PAYROL,
// DISP=(NEW,CATLG)


OLD - INDICATES THAT AN EXISTING DATA
SET WILL BE RETRIEVED. EXCLUSIVE
ACCESS
//IN2 DD DSN=TBSPS2.DT.BSSAC15A,
// DISP=(OLD,DELETE)

SHR - INDICATES THAT AN EXISTING DATA
SET WILL BE RETRIEVED . SHARED ACCESS
//IN2 DD DSN=TBSPS2.DW.EMC0355B,
// DISP=SHR

MOD - INDICATES THAT AN EXISTING DATA
SET WILL BE RETRIEVED IF IT IS PRESENT,
ELSE IT WILL BE CREATED
//IN2 DD DSN=TBSPS2.MT.BSSAO30G
// DISP=(MOD,CATLG)


THE NORMAL DISP FIELD - THIS FIELD IS
USED TO TELL THE SYSTEM HOW TO
DISPOSE OF THE DATA SET WHEN THE
STEP TERMINATES NORMALLY

DELETE - INDICATES THAT THE DATA
SET IS TO BE DELETED WHEN THE STEP
TERMINATES
//INFILE DD DSN=TBSPS2.WT.HIT0425D
// DISP=(NEW,DELETE)

KEEP - INDICATES THAT THE DATA
SET IS TO BE KEPT WHEN THE STEP
TERMINATES
//IN2 DD DSN=TBSPS2.DT.MMSCE08G
// DISP=(NEW,KEEP)


CATLG - INDICATES THAT THE DATA SET IS
TO BE KEPT AND AN ENTRY FOR IT PLACED
IN THE CATALOG WHEN THE STEP
TERMINATES
//OUT1 DD DSN=TBSPS2.DT.BSSAC15A,
// DISP=(NEW,CATLG)

UNCATLG - INDICATES THAT THE DATA
SET IS TO BE KEPT BUT ITS ENTRY
REMOVED FROM THE CATALOG WHEN THE
STEP TERMINATES
//IN3 DD DSN=TBSPS2.DW.MMSCE05A,
// DISP=(OLD,UNCATLG)


PASS - INDICATES THAT AN ENTRY FOR
THE DATA SET (CONTAINING DSN, VOLUME,
AND UNIT INFO) BE PLACED ON A TABLE IN
STORAGE (PASSED DATA SET QUEUE). THIS
ENTRY IS TO BE USED IN A SUBSEQUENT
STEP TO RECEIVE THE PASSED DATA SET
//IN2 DD DSN=TBSPS2.DT.BSSAC15A,
// DISP=(NEW,PASS)


THE ABNORMAL (OR CONDITIONAL) DISP
FILED - THIS FILED IS USED TO TELL THE
SYSTEM HOW TO DISPOSE OF THE DATA
SET WHEN THE STEP TERMINATES
ABNORMALLY (ABENDS). IT IS REQUIRED IF
THIS DISP IS DIFFERENT FROM THE
NORMAL DISP

DELETE,KEEP,CATLG AND UNCATLG HAVE
THE SAME MEANING THEY DO IN THE
NORMAL DISP FIELD. PASS IS NOT
PERMITTED IN THE ABNORMAL DISP FIELD

THE BEST EXAMPLE OF USING THE
ABNORMAL DISP FIELD IS :
DISP=(NEW,CATLG,DELETE)


DEFAULTS : SOME DEFAULTS IN THE DISP
PARM ARE FIXED AND OTHERS ARE
VARIABLE

IF THE DISP PARM IS OMITTED, THE
DEFAULT IS ALWAYS (NEW,DELETE)
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(20,5))
//* (NEW,DELETE) IS THE DEFAULT

IF THE STATUS FIELD IS OMITTED, THE
DEFAULT IS ALWAYS NEW
DISP=(,CATLG) -----> DISP=(NEW,CATLG)


IF THE NORMAL DISP FIELD IS OMITTED :

IF THE STATUS FIELD IS NEW, THE DEFAULT IS
DELETE

IF THE STATUS FIELD IS OLD OR SHR AND THE
DATA SET NAME NON-TEMPARARY
IF THE DD STMT IS NOT RECEIVING A PASSED
DATA SET, THE DEFAULT IS KEEP
//IN1 DD DSN=TBSPS2.DT.BSSAC15A,DISP=SHR
//* DISP=(SHR,KEEP)


IF THE DD STMT IS RECEIVING A PASSED DATA
SET, WHICH WAS CREATED DURING THE
EXECUTION OF THE JOB AND WAS NEVER GIVEN A
PERMANENT DISP, THE DEFAULT IS DELETE
//BSSAC20 EXEC PGM=SORT
//SORTIN DD DSN=TBSPS2.DT.BSSAC15A,
// DISP=(,PASS),UNIT=SYSDA,
// SPACE=(TRK,(50,10),RLSE),
// DCB=(LRECL=80,RECFM=F)
//BSSAC25 EXEC PGM=BSS172
//IN2 DD
DSN=TBSPS2.DT.BSSAC15A,DISP=OLD

IN IN2 DISP=OLD DEFAULTS TO
DISP=(OLD,DELETE)


IF THE DD STMT IS RECEIVING A PASSED DATA
SET, WHICH WAS CREATED DURING THE
EXECUTION OF THE JOB BUT WAS GIVEN A
PERMANENT DISP SINCE BEING CREATED, THE
DEFAULT IS KEEP
//BSSAC15 EXEC PGM=BSS145
//OUT1 DD DSN= TBSPS2.DT.BSSAC15A ,
//
DISP=(,PASS),UNIT=SYSDA,SPACE=(CYLS,(15,2)),
// DCB=(RECFM=F,LRECL=80)
//BSSAC20 EXEC PGM=BSS120,COND=(4,LT)
//DD2 DD DSN= TBSPS2.DT.BSSAC15A ,
// DISP=(OLD,CATLG)
//BSSAC25 EXEC PGM=BSS236,COND=(4,LT)
//DD3 DD DSN= TBSPS2.DT.BSSAC15A ,
// DISP=(OLD,PASS)
//BSSAC30 EXEC PGM=BSS103,COND=(4,LT)
//DD4 DD
DSN=TBSPS2.DT.BSSAC15A,DISP=OLD

IN DD4 DISP=OLD DEFAULTS TO
DISP=(OLD,KEEP)


IF THE DD STMT IS RECEIVING A PASSED DATA SET
WHICH EXISTED BEFORE EXECUTION, THE
DEFAULT IS KEEP

//BSSAC15 EXEC PGM=BSS158
//DD1 DD DSN=TBSPS2.DT.BSSAC15A,
// DISP=(SHR,PASS)
//BSSAC20 EXEC PGM=BSS167,COND=(4,LT)
//DD2 DD DSN= TBSPS2.DT.BSSAC15A ,DISP=SHR

IN DD2 DISP=SHR DEFAULTS TO
DISP=(SHR,KEEP)


IF THE STATUS FIELD IS OLD OR SHR AND
THE DATA SET NAME TEMPORARY, THE
DEFAULT IS PASS
//DD1 DD DSN=&&TEMP,DISP=OLD
DISP=OLD DEFAULTS TO DISP=(OLD,PASS)

IF THE STATUS FIELD IS MOD, WHICH
DEFAULTS TO NEW, THE DEFAULT OF THE
SECOND FIELD IS DELETE

IF THE ABNORMAL DISP FIELD IS OMITTED,
THE DEFAULT IS THE NORMAL DISP FIELD
THE UNIT PARAMETER
THE UNIT PARM IDENTIFIES :
THE DEVICE TYPE OR DEVICE ADDRESS WHERE
THE VOLUME IS MOUNTED
THE NUMBER OF DEVICES TO BE ALLOCATED TO
THE DATA SET
WHEN THE MOUNT MESSAGE IS TO BE SHOWN TO
THE OPERATOR

GENERAL SYNTAX :
UNIT=(device address OR generic device name OR
generated device name)


device address - IDENTIFIES THE EXACT
DEVICE ADDRESS
//MMSCE15 STEP1 EXEC PGM=PCS053
//IN1 DD
DSN=TBSQS6.MT.MMSCE05E,UNIT=724

generic device name - IDENTIFIES THE
DEVICE TYPE USING A UNIVERSAL SYSTEM-
SUPPLIED NAME
UNIT=3380 UNIT=3400-5 UNIT=3480
//STEP1 EXEC PGM=PROG1
//DD1 DD DSN=USER1.PAYROL,UNIT=3380



generated device name - IDENTIFIES THE
DEVICE TYPE USING AN INSTALLATION
DEFINED NAME. THIS IS ALSO KNOWN AS A
GROUP NAME OR AN ESOTERIC NAME
UNIT=SYSDA UNIT=DISK UNIT=TAPE
UNIT=CATRIG
//BAS0628 EXEC PGM=BAS865
//OUT1 DD DSN=TBSPS2.BAS0628A,UNIT=DISK

THERE IS NO DEFAULT FOR THE DEVICE
NAME. IF IT IS NOT CODED IN THE UNIT
PARM AND IT IS ALSO NOT SUPPLIED BY
THE CATALOG, THE PASSED DATA QUEUE,
OR VOL=REF, THE RESULT WILL BE A JCL
ERROR
THE VOLUME PARAMETER
THE MAIN FUNCTION OF THE VOL (OR
VOLUME ) PARM IS TO IDENTIFY THE
VOLUME(S) BY SERIAL NUMBER WHERE AN
EXISTING DATA SET RESIDES OR WHERE A
NEW DATA SET WILL RESIDE

GENERAL SYNTAX :
VOL=SER=(vol1,vol2,...)

//OUT DD DSN=TBSPS2.DT.PCS5340A,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,VOL=SER=000465,
// SPACE=(TRK,(10,5)),
// DCB=(RECFM=F,LRECL=100)
THE SPACE PARAMETER
GENERAL SYNTAX :
SPACE=(TRK OR CYL OR BLKSIZE,(prim-alloc[,sec-
alloc][,directory])[,RLSE])

TRK - REQUESTS THAT SPACE BE ALLOCATED IN
TRACKS
CYL - REQUESTS THAT SPACE BE ALLOCATED IN
CYLINDERS
BLKSIZE - SPECIFIES THE AVERAGE BLOCKSIZE
OF THE DATA SET
prim-alloc -PRIMARY ALLOCATION. IT IDENTIFIES
THE NUMBER OF TRACKS OR CYLINDERS OR THE
NUMBER OF BLOCKS THAT MUST BE ALLOCATED
DURING THE ALLOCATION PROCESS FOR A NEW
DATA SET BEFORE THE STEP BEGINS EXECUTION


THE PRIMARY ALLOCATION CANNOT BE
OMITTED. CODING 0 IS ALLOWED. IT IS
IGNORED IF THE DATA SET IS OLD

//OUT DD DSN=TBSPS2.DT.BSSAC15A,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,VOL=SER=000465,
// SPACE=(TRK,10),
// DCB=(RECFM=F,LRECL=100)


sec-alloc - SECONDARY ALLOCATION. IT
IDENTIFIES THE NUMBER OF TRACKS OR
CYLINDERS OR THE NUMBER OF BLOCKS
THAT ARE TO BE ALLOCATED WHEN ALL
AVAILABLE SPACE IS EXHAUSTED WHILE
WRITING TO THE DATA SET

//OUT DD DSN= TBSPS2.DT.BSSAC15A,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,VOL=SER=000465,
// SPACE=(TRK,(10,5)),
// DCB=(RECFM=F,LRECL=100)


directory - SPECIFIES THE NUMBER OF
DIRECTORY BLOCKS (256 BYTES EACH) TO
BE ASSIGNED TO THE DIRECTORY OF A
PARTITIONED DATA SET. ON THE AVERAGE,
SIX DIRECTORY ENTRIES CAN FIT INTO A
DIRECTORY BLOCK
//OUT DD DSN=TMP17.CLTAPE,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,VOL=SER=000465,
// SPACE=(TRK,(10,5,5)),
// DCB=(RECFM=F,LRECL=100)


RLSE - REQUESTS THAT ANY UNUSED
SPACE BE FREED WHEN THE DATA SET IS
CLOSED. THIS WORKS FOR BOTH NEW AND
OLD DATA SETS, PROVIDED THEY WERE
OPENED FOR OUTPUT
//OUT DD DSN= TBSPS2.DT.BSSAC15A ,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,VOL=SER=000465,
// SPACE=(TRK,(10,5),RLSE),
// DCB=(RECFM=F,LRECL=100)

INITIALLY PRIMARY SPACE WILL BE ALLOCATED,
THEN SECONDARY SPACES IS ALLOCATED FOR
15 TIMES


THE SPACE PARM MUST BE INCLUDED IN A
DD STMT WHEN :
A NEW DISK DATA SET IS CREATED
AN OLD DATA SET NEEDS TO ALTER ITS
ENTITLEMENT TO ADDITIONAL SPACE
AN OLD DISK DATA SET MUST FREE UP ALL
UNUSED SPACE
THE DCB PARAMETER
THE DCB PARM SPECIFIES VALUES USED
TO COMPLETE THE DATA CONTROL BLOCK
(DCB) WHEN A DATA SET IS OPENED

DCB=(DSORG=PS,LRECL=80,RECFM=FB,BLKSIZE=324
40)

BLKSIZE - SPECIFIES THE SIZE OF THE
BLOCK. IT CAN BE AS SMALL AS A FEW
BYTES AND AS LARGE AS 32,760 BYTES
FOR RECFM=FB, THE BLOCKSIZE MUST BE A
MULTIPLE OF THE LOGICAL RECORD LENGTH
FOR RECFM=VB, THE BLOCKSIZE CAN BE ANY
VALUE UP TO THE LIMIT BUT AT LEAST 4 BYTES
LARGER THAN THE LOGICAL RECORD LENGTH
FOR RECFM=U, THE BLOCKSIZE CAN BE ANY
VALUE UP TO THE LIMIT


THERE IS NO DEFAULT FOR BLOCKSIZE
DCB=BLOCKSIZE=23400

LRECL - SPECIFIES THE SIZE OF THE
LOGICAL RECORD. THE MAXIMUM SIZE IS
32,760, AND IT CANNOT BE LARGER THAN
THE BLOCKSIZE
FOR RECFM=FB, THE LOGICAL RECORD LENGTH
CAN BE ANY SIZE UP TO AND INCLUDING THE
BLOCKSIZE
FOR RECFM=VB, THE LOGICAL RECORD LENGTH
CAN BE ANY SIZE UP TO 4 BYTES LESS THAN THE
BLOCKSIZE
FOR RECFM=U, THE LOGICAL RECORD LENGTH
HAS NO MEANING. IN THE LABEL, IT WILL APPEAR
AS LRECL=0


THERE IS NO DEFAULT FOR LRECL
DCB=(BLKSIZE=23400,LRECL=100)

RECFM - SPECIFIES THE RECORD FORMAT
F - ALL BLOCKS AND ALL LOGICAL RECORDS
ARE FIXED IN SIZE
V - BLOCKS AS WELL AS LOGICAL RECORDS ARE
OF VARIABLE SIZE.
B - ONE OR MORE LOGICAL RECORDS RESIDE IN
EACH BLOCK. B CANNOT BE CODED ALONE. IT
MUST FOLLOW F OR V
U - BLOCKS ARE OF VARIABLE SIZE. THERE ARE
NO LOGICAL RECORDS. THIS RECORD FORMAT IS
RARELY USED EXCEPT IN LOAD LIBRARIES
WHICH ARE ALWAYS RECFM=U


IF RECFM IS NOT SUPPLIED THROUGH ANY
MEANS, U IS THE DEFAULT
DCB=(BLSIZE=23400,LRECL=100,RECFM=FB)

DSORG - IDENTIFIES THE ORGANIZATION
OF THE DATA SET

PS - SPECIFIES PHYSICAL SEQUENTIAL
ORGANIZATION
PO - SPECIFIES PARTITIONED ORGANIZATION
DA - SPECIFIES DIRECT ORGANIZATION
SPECIAL DD STATEMENTS AND
PARAMETERS
DD * AND DD DATA
DD * AND DD DATA SUPPLY SYSIN DATA

DATA MIXED IN WITH JCL IN THE INPUT
STREAM IS KNOWN AS SYSIN DATA OR
INPUT STREAM DATA. IT ALWAYS HAS A
LOGICAL RECORD LENGTH OF 80

SYSIN DATA MUST BE PRECEDED BY A DD
STMT SUCH AS :
//INPUT DD *
-- DATA ---


SYSIN DATA ENCOUNTERED BY JES2 OR
JES3 FOLLOWING A DD * STMT WILL BE
SAVED ON THE SPOOL VOLUME FOR
FUTURE USE. THIS IS KNOWN AS INPUT
SPOOLING

THE SYSIN DATA IS DELIMITED BY :
A /*(DELIMITER) STMT FOUND
A VALID JCL STMT
AN END-OF-FILE CONDITION ON THE READING
DEVICE

A COMPLICATION ARISES IF THE SYSIN
DATA MUST CONSIST OF JCL STATEMENTS.
THEY CANNOT BE READ IN AS DATA USING
DD * BECAUSE ANY JCL STMT DELIMITS
SYSIN DATA. TO ACCOMPLISH THIS, DD
DATA INSTEAD OF DD * MUST BE USED


TO DELIMIT DD DATA STMT /* MUST BE
USED
//SYSIN DD DATA
--DATA AND JCL --
/*

A FURTHER COMPLICATION CAN ARISE IF
THE JCL STATEMENTS IN THE SYSIN DATA
CONTAINS A /*.

THE /* WILL CAUSE PREMATURE
DELIMITING OF THE SYSIN DATA. TO AVOID
THIS PROBLEM, THE DLM PARM MUST BE
USED
//SYSUT1 DD DATA,DLM=)(
-- DATA AND JCL (INCLUDING /*) ---
)(
THE SYSOUT PARAMETER
THE SYSOUT PARM ASSIGNS SYSOUT OR
OUTPUT CLASS TO A DATA SET. SUCH DATA
SETS ARE CALLED SYSOUT OR OUTPUT
DATA SETS

GENERAL SYNTAX :
SYSOUT=(class|*)
class - IDENTIFIES THE SYSOUT CLASS OF THE
DATA SET FROM A TO Z AND 0 TO 9
//SYSOUT DD SYSOUT=A
* - INDICATES THAT THE SAME CLASS USED IN
THE MSGCLASS PARM OF THE JOB STMT IS
TO
BE USED
//SYSOUT DD SYSOUT=*
THE DUMMY PARAMETER
A DD STMT THAT CONTAINS THE DUMMY
PARM WILL ALLOCATE NO DEVICES. ALSO,
AN ATTEMPT BY THE EXECUTING PROGRAM
TO PERFORM INPUT OR OUTPUT
OPERATIONS FOR THAT DD STMT WILL BE
IGNORED

IT IS POSITIONAL PARM

GENERAL SYNTAX :
//DDNAME DD DUMMY


ONLY DD STATEMENTS USING SEQUENTIAL
(QSAM OR BSAM) OR VSAM ORGANIZATION
CAN BE DUMMIED. FOR VSAM, THE
DUMMIED DD STMT MUST CONTAIN THE
AMP PARM
//VSAMDD DD DUMMY,AMP=AMORG

DIRECT ORGANIZATION IS ALSO
ACCEPTABLE BUT ONLY FOR SEQUENTIAL
LOADING, NOT RANDOM ACCESS.
PARTITIONED DATA SETS CANNOT BE
DUMMIED


AN ALTERNATE WAY TO DUMMY A DD STMT
IS TO CODE DSN=NULLFILE. THIS PARM
WORKS THE SAME AS DUMMY EXCEPT
DUMMY IS POSITIONAL AND DSN IS NOT

ALL PARAMETERS EXCEPT DCB, WHICH
FOLLOW DUMMY OR DSN=NULLFILE WILL BE
SYNTACTICALLY CHECKED AND IGNORED
//OUT DD DSN=NULLFILE,
// DCB=(LRECL=80,RECFM=FB,BLKSIZE=80)
THE DDNAME PARAMETER
THE DDNAME PARM ALLOWS ONE TO
POSTPONE THE DEFINITION OF A DATA SET
UNTIL A DD STMT LATER IN THE SAME STEP
PROVIDES THAT DEFINITION

GENERAL SYNTAX :
DDNAME=ddname
ddname - IDENTIFIES THE NAME OF THE DD
STMT WHICH, WHEN SUPPLIED LATER IN THE
SAME STEP, WILL PROVIDE THE DATA SET
DEFINITION. IF SUCH A DD STMT IS NOT
SUPPLIED, THE DDNAME PARM WILL HAVE THE
SAME EFFECT AS DUMMY


THE DDNAME PARM PROVIDES THE ONLY
FORWARD REFERENCE IN JCL
//S1 EXEC PGM=P1
//DD1 DD DDNAME=IN
. . . . . . .
//IN DD DSN=TBSPS2.DT.BSSAC15A,DISP=SHR
------------------------------------------------------------------------------------------------------------------------------------------------------------------
//LINK EXEC PGM=IEWL
//SYSLIN DD DDNAME=SYSIN
. . . . . . .
//SYSIN DD *
------------------------------------------------------------------------------------------------------------------------------------------------------------------
--
//LINK EXEC PGM=IEWL
//SYSLIN DD DDNAME=SYSIN
. . . . . . .
IN THE ABOVE EXAMPLE, NO SYSIN DD STMT IS
CODED. SYSLIN IS DUMMY
CONCATENATION
CONCATENATION IS A VERY USEFUL
FEATURE OF MVS/XA

IT ALLOWS A PROGRAM WHICH NORMALLY
INPUTS ONE DATA SET TO INPUT SEVERAL
DATA SETS WITH COMPARABLE DCB
CHARACTERISTICS WITHOUT
PROGRAMMING CHANGES


TWO ADDITIONAL DD STATEMENTS ARE
CODED AFTER THE DD STMT IN. THESE TWO
DD STATEMENTS HAVE NO DD NAMES , AND
THEY WILL BE TREATED AS
CONCATENATIONS OF THE FIRST DD
STATEMENT
//MMSCE10 EXEC PGM=MMS105
//IN1 DD DSN=TBSQS6.DT.MMSCE06A,DISP=SHR
// DD DSN=TBSQS6.DT.MMSCE06B ,DISP=SHR
// DD DSN= TBSQS6.DT.MMSCE06C ,DISP=SHR

THE SYSTEM WILL KEEP ON READING ONE
DATA SET IN THE CONCATENATION AFTER
ANOTHER. THE EOF ROUTINE OF THE
PROGRAM WILL BE GIVEN CONTROL ONLY
WHEN THE DATA SET OF THE LAST
CONCATENATION ENCOUNTERS AN EOF
CONDITION


RULES AND RESTRICTIONS FOR
CONCATENATIONS :
1. SYNTACTICALLY, THE DDNAME MUST BE
OMITTED FROM A DD STMT IN ORDER TO BE
TREATED AS CONCATENATED TO THE
PRECEDING ONE. THE FIRST CONCATENATION IS
THE ONLY ONE WITH A DDNAME

2. THE LOGICAL RECORD LENGTH AND THE
RECORD FORMAT OF CONCATENATED DATA
SETS MUST BE THE SAME. HOWEVER, THE
BLOCKSIZES NEED NOT BE

3. IN MVS/XA SYSTEMS NOT YET USING DATA
FACILITY PRODUCT (DFP) VERSION 2.3, THE
BLOCKSIZE OF THE FIRST CONCATENATION
MUST BE GREATER THAN OR EQUAL TO THE
BLOCKSIZES OF ALL SUBSEQUENT
CONCATENATIONS


IF IT IS NECESSARY TO CONCATENATE
DATA SETS IN A SEQUENCE WHICH
VIOLATES THIS RULE, THE DCB PARM CAN
BE CODED IN THE FIRST CONCATENATION
TO SPECIFY A BLOCKSIZE EQUAL TO THE
LARGEST BLOCKSIZE OF ALL THE
CONCATENATIONS

//IN1 DD DSN=TBSQS6.DT.MMSCE10A,DISP=SHR,
// DCB=BLKSIZE=23400
// DD DSN= TBSQS6.DT.MMSCE10B ,DISP=SHR
// DD DSN= TBSQS6.DT.MMSCE10C ,DISP=SHR


4. BOTH SEQUENTIAL DATA SETS AND
PARTITIONED DATA SETS CAN BE
CONCATENATED, BUT NOT WITH EACH OTHER -
SEQUENTIAL WITH SEQUENTIAL AND
PARTITIONED WITH PARTITIONED ONLY

//SYSIN DD DSN=PLCL.PROD.CNTRLIB(BSSAC15A),
// DISP=SHR
// D DSN=TBSPS2.DT.BSSAC15A,DISP=SHR
THE ABOVE CONCATENATION IS VALID

//SYSIN DD DSN=PLCL.PROD.CNTRLIB,DISP=SHR
// DD DSN=TBSPS2.DT.BSSAC15A,DISP=SHR
THE ABOVE CONCATENATION IS INVALID
BECAUSE PLCL.PROD.SOURCE A PDS


4. DISK AS WELL AS TAPE DATA SETS CAN BE
CONCATENATED, BUT NOT WITH EACH OTHER.
ONLY LIKE DEVICES SHOULD BE CONCATENATED
//SORTIN DD DSN=TBSPS2.DT.BSSAC15A,
// DISP=SHR,UNIT=DISK
// DD DSN=TBSPS2.DT.BSSAC15B,
// DISP=OLD,UNIT=TAPE
THE ABOVE CONCATENATION IS INVALID

5. A DD STMT USING DUMMY MUST NOT BE
PLACED IN THE MIDDLE OF A CONCATENATION. IF
IT IS, IT WILL CAUSE ALL CONCATENATIONS
FOLLOWING THE DUMMY TO BE TREATED AS
DUMMY ALSO

//IN DD
DSN=TBSPS2.DT.BSSAC15A,DISP=SHR
// DD DUMMY
// DD DSN=TBSPS2.DT.BSSAC15C,DISP=SHR


6. CONCATENATION IS INTENDED FOR INPUT
DATA SETS ONLY. OUTPUT CONCATENATIONS
ARE ACCEPTABLE SYNTACTICALLY, BUT NO
CONCATENATION WILL BE USED BEYOND THE
FIRST ONE

7. THE MAXIMUM NUMBER OF CONCATENATIONS
FOR SEQUENTIAL DATA SETS IS 255 AND FOR
PARTITIONED DATA SETS IS 16
THE JOBLIB AND STEPLIB DD
STATEMENTS
THERE ARE FOUR WAYS TO TELL THE
SYSTEM IN WHICH LIBRARY, OR LIBRARIES,
THE PROGRAM TO BE EXECUTED IN A STEP
IS EXPECTED TO RESIDE

1. USING THE REFERBACK IN THE PGM PARM
//S1 EXEC PGM=*.LINK.SYSLMOD
THE LIBRARY TO BE USED WILL BE THE ONE
DEFINED IN DD STMT SYSLMOD IN STEP LINK

2. USING A JOBLIB DD STMT TO DETERMINE THE
LIBRARY, OR LIBRARIES , TO BE SEARCHED FOR
THE ENTIRE JOB


3. USING A STEPLIB DD STMT TO DETERMINE THE
LIBRARY, OR LIBRARIES, TO BE SEARCHED FOR
THE STEP

4. USING NO REFERBACK, NO JOBLIB AND NO
STEPLIB. THE SYSTEM SEARCHES AN
INSTALLATION-DEFINED LIST OF DEFAULT
LIBRARY
THE JOBLIB DD STATEMENT
THE JOBLIB DD STMT IDENTIFIES THE
PROGRAM LIBRARY WHERE THE
PROGRAMS TO BE EXECUTED
THROUGHOUT THE JOB RESIDE

IT MUST BE PLACED BETWEEN THE JOB
AND THE FIRST EXEC STMT. IF FOUND IN A
DIFFERENT LOCATION, THE RESULT WILL
BE A JCL ERROR


//TBSPS2AB JOB (9001,303),BUDDY,
// CLASS=9
//JOBLIB DD DSN=LLCL.PROD.LOAD,DISP=SHR
//S1 EXEC PGM=PROG1
//S2 EXEC PGM=PROG2
PROG1 IS EXPECTED TO RESIDE IN
PROD.LOADLIB AS A MEMBER OF THE LIBRARY
AND THE SYSTEM SEARCHES THE DIRECTORY. IF
THE PROGRAM IS FOUND,IT IS EXECUTED
IF NOT FOUND, THE SYSTEM EXTENDS THE
SEARCH INTO THE DEFAULT LIBRARIES

A JOBLIB DD STMT CAN HAVE SEVERAL
CONCATENATIONS (MAXIMUM : 16)
//JOBLIB DD
DSN=TBSPS2.NISMAIN.LOAD,DISP=SHR
// DD
DSN=TBSQS6.EMCWORK.LOAD,DISP=SHR
// DD DSN=PLCL.SYST.LOAD,DISP=SHR



ALL CONCATENATIONS MAY BE SEARCHED
TO LOCATE A PROGRAM. IF, HOWEVER, THE
PROGRAM IS FOUND IN A CONCATENATION
OTHER THAN THE LAST ONE, THE OTHER
CONCATENATIONS WILL NOT BE USED

WHEN DUPLICATE MEMBER NAMES EXIST
IN DIFFERENT CONCATENATIONS, THE
USER CAN DECIDE WHICH ONE IS TO BE
EXECUTED, BY DETERMINING THE
SEQUENCE OF THE CONCATENATIONS

THE LIBRARY OR LIBRARIES DESCRIBED IN
A JOBLIB DD STMT WILL NOT BE SEARCHED
FOR A GIVEN A STEP, IF THE STEP
CONTAINS A STEPLIB DD STMT
THE STEPLIB DD STATEMENT
THE STEPLIB DD STMT IDENTIFIES THE
PROGRAM LIBRARY WHERE THE PROGRAM
TO BE EXECUTED FOR THE STEP RESIDES

THERE IS NO SPECIAL LOCATION FOR
STEPLIB. IT CAN BE PLACED ANYWHERE IN
A STEP

A STEPLIB DD STMT CAN HAVE AS MANY AS
16 CONCATENATIONS


//TBSPS2AB JOB (9011,555),VIJAYA,CLASS=P
//S1 EXEC PGM=PROG1
//STEPLIB DD DSN=TBSQS6.EMCWORK.LOAD
// DISP=SHR
//S2 EXEC PGM=PROG2
//STEPLIB DD DSN=PLCL.SYST.LOAD,DISP=SHR
// DD DSN=LLCL.PROD.LOAD,DISP=SHR
PROGRAM PROG1 IS EXPECTED TO RESIDE IN
TEST.LOADLIB1 AS A MEMBER OF THE LIBRARY
AND THE SYSTEM SEARCHES ITS DIRECTORY. IF
NOT FOUND, THE SYSTEM EXTENDS THE SEARCH
INTO THE DEFAULT LIBRARIES

IF A STEPLIB DD STMT IS OMITTED, THE
JOBLIB DD STMT WILL BE USED. IF JOBLIB
DD IS ALSO OMITTED, THE DEFAULT
LIBRARIES WILL BE USED TO LOCATE THE
PROGRAM
PROCEDURES
A PROCEDURE IS BASICALLY PRE-
PACKAGED JCL

THERE ARE TWO TYPES OF PROCEDURES :
1. CATALOGUED PROCEDURES
2. IN-STREAM PROCEDURES

A CATALOGUED PROC IS A MEMBER OF A
PDS, WHICH IS OFTEN REFERRED TO AS
PROCEDURE LIBRARY OR PROCLIB AND IT
WOULD NOT CONTAINS PEND STATEMENT

AN INSTREAM PROC IS CONTAINED WITHIN
A JOBS INPUT STREAM



ADVANTAGE OF CATALOGUED PROCS
STANDERDISED TASKS
REDUCES JCL STATEMENT CODING
MODULARITY
AVOIDS REDUNDANCY

RESTRICTIONS :
THE NUMBER OF STEPS IN A PROC CANNOT
EXCEED 255
THE FOLLOWING ARE NOT PERMITTED TO RESIDE
IN A PROC :
A JOB STMT
AN EXEC STMT INVOKING A PROC
A JOBLIB DD STMT
A DD * STMT
A DD DATA STMT
A /* (DELIMITER) STMT
A // (NULL) STMT
IN-STREAM PROCEDURES
AN IN-STREAM PROC IS A PROC WHICH IS
PART OF THE INPUT STREAM. IT IS NOT A
MEMBER OF PROCLIB

//TBSPS2AB JOB (9011,505),VIJAY BHASKAR,CLASS=9
//*
//PS PROC
//EMC01 EXEC PGM=EMC013,REGION=500K
//IN DD DSN=TBSQS6.DT.MMSCE25A,DISP=SHR
//OUT DD DSN=TBSQS6.DT.EMC0105A,DISP=(,CATLG)
// PEND
//AA EXEC EMC01
PROC - MARKS THE BEGINNING OF A PROC
PEND - MARKS THE END OF A PROC
THIS IN-STREAM PROC CAN NOW BE EXECUTED
LATER IN THE SAME JOB


RULES FOR IN-STREAM PROCEDURES :

THE EXEC STMT THAT EXECUTES AN IN-STREAM
PROC MUST BE CODED AFTER THE PROC HAS
BEEN DEFINED
A MAXIMUM OF 15 IN-STREAM PROCEDURES CAN
BE CODED IN A JOB. ALL MUST BEGIN WITH A
PROC STMT AND END WITH A PEND STMT
AN IN-STREAM PROC CAN BE EXECUTED ONCE
OR MANY TIMES OR IT MAY NOT BE EXECUTED AT
ALL
AN IN-STREAM PROC CANNOT BE PLACED
BEFORE THE JOB STMT OR IN THE MIDDLE OF A
CONTINUATION OF ANY STMT OR IN THE MIDDLE
OF SYSIN DATA
ANYWHERE ELSE, PLACEMENT OF AN IN-STREAM
PROC IS VALID. BUT IT IS ADVISABLE TO PLACE
RIGHT AFTER THE JOB STMT, TO AVOID POSSIBLE
CONFUSION
OVERRIDING PROCEDURES
THE JCL IN THE PROC MAY NOT
COMPLETELY SATISFY THE USERS NEEDS
AND SOME CHANGES ARE REQUIRED

THESE CHANGES ARE NON-DESTRUCTIVE,
INVOLVE READ-ONLY OPERATIONS, AND
THEY NEVER AFFECT THE CONTENTS OF A
PROC

THEY ARE ON-THE-FLY CHANGES, AND
THEY ARE KNOWN AS OVERRIDES

OVERRIDING CAN :
ADD, REPLACE, OR NULLIFY ANY EXEC STMT
PARM, EXCEPT PGM
ADD, REPLACE, OR NULLIFY DD STMT PARM
ADD AN ENTIRE DD STMT
SYMBOLIC PARAMETERS AND
SYMBOLIC OVERRIDES
A SYMBOLIC PARM IS A NAME PRECEDED
BY AN AMPERSAND (&)

IT CAN BE CODED IN PLACE OF ANY PARM,
PART OF A PARM OR SEVERAL
PARAMETERS IN THE PARM FIELD OF AN
EXEC, AND DD STATEMENTS

NAMES WHICH ARE VALID EXEC
PARAMETERS ( i.e., REGION,TIME,COND,
ETC..) CANNOT BE USED AS SYMBOLIC
PARAMETERS

SYMBOLIC OVERRIDES CAN BE USED ONLY
WHEN SYMBOLIC PARAMETERS HAVE BEEN
CODED INSIDE THE PROC


THE USER CAN SUBSTITUTE ANY DESIRED
EXPRESSION OR VALUE IN PLACE OF THE
SYMBOLIC PARM BY USING A SYMBOLIC
OVERRIDE IN THE EXEC STMT WHICH
INVOKES THE PROC

WHEN CODING SYMBOLIC OVERRIDES, A
UNIQUE SYNTACTICAL RULE MUST BE
FOLLOWED :

IF THE VALUE THAT FOLLOWS THE = SIGN
CONTAINS ANYTHING OTHER THAN
ALPHABETIC, NUMERIC OR NATIONAL
CHARACTERS , THE ENTIRE VALUE MUST BE
ENCLOSED IN APOSTROPHES

THE APOSTROPHES ARE NOT INCLUDED IN
THE SUBSTITUTION


WHEN A PERIOD IS FOUND IN A PROC AT
THE END OF A SYMBOLIC PARM, IT WILL
ALWAYS BE TREATED AS A DELIMITER AND
IT WILL DISAPPEAR DURING SUBSTITUTION

PROCEDURE SAMPLE
//S1 EXEC PGM=P1,PARM=&ABC

EXAMPLE 1
//A EXEC SAMPLE,ABC=FLD
SUBSTITUTION RESULTS IN :
//S1 EXEC PGM=P1,PARM=FLD

EXAMPLE 2
//B EXEC SAMPLE,PEL=FLD,TIME=(5,10)
SUBSTITUTION RESULTS IN :
//S1 EXEC PGM=P1,PARM=FLD,TIME=(5,10)


NULLIFYING A SYMBOLIC PARAMETER

//PROC1 PROC
//STEP1 EXEC PGM=PROG1
//IN1 DD DSN=TBSPS2.&FREQ..&LAST,DISP=SHR
//OUT1 DD SYSOUT = A
// PEND

//STEP2 EXEC PROC1,&FREQ=,&LAST=TEMP1
RESULTS IN
//IN1 DD DSN=TBSPS2.TEMP1,DISP=SHR


THE PROC STATEMENT :

THE PURPOSE OF THE PROC STMT IS TO
CONTAIN SYMBOLIC OVERRIDE DEFAULTS

WHEN A PROC IS EXECUTED, THE SYSTEM WILL
SUBSTITUTE SYMBOLIC PARAMETERS USING THE
SYMBOLIC OVERRIDES CODED IN THE EXEC
STMT

FOR THOSE SYMBOLIC OVERRIDES NOT FOUND
IN THE EXEC STMT, THE DEFAULT SYMBOLIC
OVERRIDES IN THE PROC STMT WILL BE USED


PROCEDURE EMC13
//EMC13 PROC R=800K,Q=AUX,U=TAPE
//S1 EXEC PGM=P2,REGION=&R
//IN DD DSN=&Q..EMC13A,DISP=SHR
//OUT DD
DSN=&Q..EMC13B,DISP=(,CATLG),
// UNIT=&U
// PEND
//*
//A EXEC SWP,Q=TBSQS6

SUBSTITUTION RESULTS IN :
//S1 EXEC PGM=P2,REGION=800K
//IN DD
DSN=TBSQS6.EMC13A,DISP=SHR
//OUT DD DSN=TBSQS6.EMC13B,
// DISP=(,CATLG),UNIT=TAPE


DD STATEMENT OVERRIDES
MODIFYING A PARAMETER

//PROC1 PROC
//STEP1 EXEC PGM=PROG1
//IN1 DD DSN=TBSPS2.TEMP1,DISP=SHR
//OUT1 DD SYSOUT = A
// PEND

//STEP2 EXEC PROC1
//STEP1.IN1 DD DISP=(NEW,CATLG)
RESULTS IN
//IN1 DD
DSN=TBSPS2.TEMP1,DISP=(NEW,CATLG)



DD STATEMENT OVERRIDES
ADDING PARAMETER

//PROC1 PROC
//STEP1 EXEC PGM=PROG1
//IN1 DD DSN=TBSPS2.TEMP1,DISP=SHR
//OUT1 DD SYSOUT = A
// PEND

//STEP2 EXEC PROC1
//STEP1.IN1 DD UNIT=DISK
RESULTS IN
//IN1 DD DSN=TBSPS2.TEMP1,DISP=SHR,
// UNIT=DISK


DD STATEMENT OVERRIDES
ADDING A NEW DD STATEMENT

//PROC1 PROC
//STEP1 EXEC PGM=PROG1
//IN1 DD DSN=TBSPS2.TEMP1,DISP=SHR
//OUT1 DD SYSOUT = A
// PEND

//STEP2 EXEC PROC1
//STEP1.IN2 DD DSN=TBSPS2.TEMP2,DISP=SHR
RESULTS IN
//OUT1 DD SYSOUT = A
//IN2 DD DSN=TBSPS2.TEMP2,DISP=SHR
// PEND



DD STATEMENT OVERRIDES
NULLIFYING A DD STATEMENT

//PROC1 PROC
//STEP1 EXEC PGM=PROG1
//IN1 DD DSN=TBSPS2.TEMP1,DISP=SHR
//OUT1 DD DSN=TBSPS2.TEMP2=DISP=SHR
// PEND

//STEP2 EXEC PROC1
//STEP1.OUT1 DD DUMMY
RESULTS IN
//OUT1 DD DUMMY

BCBS NAMING CONVENTIONS
IF YOU HAVE TO WRITE A JCL
IN THE JCL
CODE JOB STATEMENT
CODE EXEC STATEMENT
CODE PARAMETERS IF ANY
OTHER THAN THIS DONT CODE ANYTHING IN THE JCL
CODE EVERY THING IN THE PROC
CALL THIS PROC IN THE JCL
PROC NAME AND JCL NAME SHOULD BE SAME


HOW TO NAME A PROC
USES E.F.C FOR GETTING THE NEW PROC NAME
YOU WILL GET A FIVE CHARACTER NAME
LET US SAY IT AS BSSAC

HOW TO NAME A STEP
STEP NAME SHOULD BE PRCNM##
PRCNM IS PROC NAME
## IS A TWO DIGIT NUMBER
NUMBER SHOULD GET INCREMENTED BY 5 FROM
PRESENT STEP TO NEXT STEP
EX: BSSAC05, BSSAC10


HOW TO NAME A CONTROL CARD
CONTROL CARD NAME SHOULD BE STEPNMX
STEPNM IS STEP NAME
X IS A SINGLE CHARACTER
THIS CHARACTER SHOULD BE A FOR THE FIRST
CONTROL CARD AND FOR SUBSEQUENT CONTROL
CARDS IT SHOULD BE INCREMENTED IN
CHRONOLOGICAL ORDER
EX: BSSAC05A, BSSAC10A, BSSAC10B

HOW TO NAME A DATA SET
HIGH LEVEL QUALIFIER
WE HAVE TO GET THIS QUALIFIER FROM CLIENT
GENERALLY IT START WITH B FOR PRODUCTION
DATA SETS, WITH T FOR TEST DATA SETS
FOLLOWED BY THE SYSTEM NAME. FOR TEST DATA
BASES IT IS V
EX: BCLM, TCLM FOR CLAIMS SYSTEM


LOW LEVEL QUALIFIER
IF DS IS GETTING CREATED IN A STEP THEN LOW
LEVEL QUALIFIER SHOULD BE STEPNMX
STEPNM IS STEP NAME IN WHICH DS IS GETTING
CREATED
X IS A SINGLE CHARACTER
THIS CHARACTER SHOULD BE A FOR THE FIRST
DATA SET AND FOR SUBSEQUENT DATA SETS IT
SHOULD BE INCREMENTED IN CHRONOLOGICAL
ORDER

MIDDLE LEVEL QUALIFIER
MIDDLE LEVEL QUALIFIER SHOULD BE FT
F IS FREQUENCY
T IS TYPE


THE VALUES OF FREQUENCY ARE
D - DAILY
W - WEEKLY
B - BI-MONTHLY
M - MONTHLY
Q - QUARTERLY
A - ANNUAL
S - SEMI ANNUAL
R - REQUEST
H - FREQUENT DAILY
N - NON-REOCCURING


THE VALUES OF TYPE ARE
E - EXTERNAL LOAD
T - TRANSACTION FILE
M - MASTER FILE
R - REPORT FILE
B - BACKUP
W - WORK FILE
X - TRANSFER
H - HISTORY
L - LARGE
V - VSAM

EXAMPLES OF VALID DATA SET NAMES
BCLM.DT.CLMHA05A ( DAILY TRANSACTION FILE)
TEMC.WR.EMCO325B (WEEKLY REPORT FILE)
BBSS.AB.BSSAC50C(+1) (ANNUAL BACKUP FILE)

WE HAVE TO FOLLOW THESE RULES WHEN
WRITING PROCS




DEPENDING ON FREQUENCY AND TYPE
EACH DATA SET IS ASSIGNED A
MANAGEMENT CLASS

EACH MANAGEMENT CLASS DETERMINES
THE EXPIRE DATE, AUTO BACKUP ETC.

IF MIDDLE LEVEL QUALIFIER IS NOT ANY OF
THE ABOVE TYPES THEN LOW LEVEL
QUALIFIER GETS SIGNIFICANCE

DEPENDING ON LOW LEVEL QUALIFIER WE
CAN DIVIDE THE DS INTO THREE
CATEGORIES
TSOPERM
TSOSEMI
TSOTEMP


TSOPERM MANAGEMENT CLASS DATA SET
WILL STAY PERMANENTLY TILL WE DELETE
LAST QUALIFIER FOR THIS DATA SETS ARE
PROFILE, SCHEDULE, BACKUP, SOURCE, CLIST,
CNTL, LOAD, TEXT, MACLIB, PROC, QUERY, FORM,
BKLSHELF, COPY, ISP%LIB, PANELS, SKELS, MSGS,
TABLES, COBOL, SYSPRINT, ADRS, KBSPACE,
WKLYTIME, APPTIME, AKR, EX, FPSDATA,
FPSLOGIC, FPSTEXT, FPSREC1, FDSOURCE,
S%%%D%%%

EXAMPLES
TBSPS2.ISPF.PROFILE (ISPF SETTINGS MEMBER)
PLCL.PROD.SOURCE (PRODUCTION SOURCE MEMBER)
TBSQS6.PACII.OLD.WKLYTIME (WEEKLY TIME MEMBER)


TSOSEMI MANAGEMENT CLASS DATA SET
WILL STAY TILL 3 DAYS
LAST QUALIFIER FOR THIS DATA SETS ARE
LIST, OUTLIST
EXAMPLES
TBSPS2.SRCHFOR.LIST (SEARCH RESULTS DS)
TBSPS2.EDCHEK.LIST (JCL CHECK RESULTS DATA
SET)

TSOTEMP MANAGEMENT CLASS DATA SET
WILL STAY FOR 1 DAY
LAST QUALIFIER FOR THIS DATA SETS ARE
ANY THING NOT LISTED ABOVE
EXAMPLES
TBSPS2.NISMAIN.TEMP
SOME IMPORTANT DD NAMES
COMPILE
SYSIN - INPUT PROGRAM
SYSLIB - COPY BOOKS DATA SET
SYSLIN - OUTPUT OBJECT MODULE

//COMPILE EXEC PGM=VIAOPT3,REGION=4096K,
// PARM=(NOOPT,LOAD,NOSTA,NOTEST,NOFLO,NOTRU,
// NOSYM,MCLIST,MDMAP,ERM,'',MIGR)
//SYSIN DD DSN=PLCL.PROD.SOURCE(BSS103),DISP=SHR
//SYSLIB DD DSN=TBSPS1.NISCPY.SOURCE,DISP=SHR
// DD DSN=PLCL.PROD.COPYLIB,DISP=SHR
//SYSLIN DD DSN=&&OBJ,DISP=(MOD,PASS),
// SPACE=(TRK,(10,5),RLSE),
// UNIT=SYSDA,DCB=BLKSIZE=3200



LINKEDIT
SYSLIN - INPUT OBJECT MODULE
SYSLMOD - OUTPUT LOAD MODULE
SYSLIB - RUN TIME LIBRARIES

//LINKEDIT EXEC PGM=TEK030,COND=(5,LT,COMPILE),
// REGION=1024K,PARM=(NISMAIN,TERM,LET,CALL,
// REUS,LIST,XREF,'')
//SYSLIN DD DSN=&&OBJ,DISP=(OLD,DELETE)
//SYSLIB DD DSN=PBPS.PROD.IMSONL,DISP=SHR
// DD DSN=SYS1.BC.COBLIB,DISP=SHR
// DD DSN=LLCL.PROD.LINKLIB,DISP=SHR
// DD DSN=SYS1.BC05.RESLIB,DISP=SHR
//SYSLMOD DD DSN=TBSPS1.NISBANK.LOAD(NISMAIN),
// DISP=SHR





SORT
USING SORT WE CAN SORT DATA SETS, COPY
DATA SETS, MERGE DATA SETS, SUM UP A
PARTICULAR FIELD
SORTIN - INPUT DATA SET NAME
SORTINnn
WHERE nn IS A TWO DIGIT NUMBER
USED FOR MERGE REQUEST
UPTO 32 SORTnnS ARE ALLOWED IN A STEP
SORTOUT - SORT OUTPUT FILE
SORTOFn
WHERE n IS A NUMBER
USED FOR SPLIT
SYSIN - CONTROL INFO (WHAT TO DO)
SORTWKnn
WHERE nn IS A TWO DIGIT NUMBER
USED AS SORT WORK AREAS
UPTO 32 SORTWKnnS ARE ALLOWED IN A STEP


IMS RELATED DD NAMES
IN THE PARAM FIELD THE FIRST SUB PARAMETER
IS TYPE, SECOND SUB PARAMETER IS PROGRAM
NAME AND THIRD SUB PARAMETER IS PSB NAME
IMS - USED TO GIVE PSB, DBD LIBRARY INFO.
DFSVSAMP - USED TO SPECIFY VSAM BUFFERS
IEFRDER - USED TO SPECIFY LOG DATA SET

//BSSAC05 EXEC PGM=DFSRRC00,REGION=5M,
// PARM='DLI,BSS103,BSS103'
//IMS DD DSN=IMS2.PSBLIB,DISP=SHR
// DD DSN=IMS2.DBDLIB,DISP=SHR
//DFSVSAMP DD DSN=PLCL.PROD.CNTRLIB(VS8192),
// DISP=SHR
// DD
DSN=PLCL.PROD.CNTRLIB(VS4096),DISP=SHR
// DD
DSN=PLCL.PROD.CNTRLIB(VS2048),DISP=SHR
//IEFRDER DD DUMMY,DCB=BLKSIZE=16384


SOME IMPORTANT LIBRARIES
MEMBER OBJECT TYPE SYSTEM LIBRARY
* LOAD MODULE PLCL LLCL.PROD.LOAD
MOD* IMS-ONLINE PLCL IMS2.MODLIB
MOD* IMS-ONLINE PLCL IMS2.ONLINE.MODLIB
!MOD* IMS-ONLINE PLCL IMS2.PGMLIB
* IMS-BATCH PLCL LLCL.PROD.LOAD
* ENCDEC PLCL LLCL.PROD.PRODENC
* CICSMOD PLCL CICS16.PROD.LOADLIB
* CICSMAP PLCL CICS16.PROD.LOADLIB
* SUB-PGM PLCL LLCL.PROD.LINKLIB
* LOAD MODULE P??? P???.PROD.LOAD
* IMS-ONLINE P??? IMS2.???ONL
* IMS-BATCH P??? P???.PROD.LOAD
* ENCDEC P??? P???.PROD.ENCDEC
* SUB-PGM P??? P???.PROD.LINKLIB
* RMBONL P??? IMS2.RMBONL
WHERE ??? = BPS OR RGN OR NYC

You might also like