As we all know the term mainframe when said to a layman would give a feeling of a large computer, but the question arise how large it is and what is the specialty of these mainframes. The answer to this question lies in the term "Mainframe" itself. As the name implies mainframe is the main computer with all units processing, communications are built into a frame and hence the name Mainframe, which thereby denotes a very large computer.
Some of the early mainframes which were developed starting from the year of 1942 are ENIAC, MARK1, BINAC, UNIVAC. ENIAC is also called as electronic numerical integrator and calculator was developed in the year 1942. This mainframe machine weighed in tones and consumed enormous electric power.
Later on various improved versions of Burroughs series came into market with new features in each. Among this the most notable one was B6700 which came in the year 1971 and this supported the feature of dynamic linking of programs at runtime.
A mainframe channel connect to one or more controllers via either pairs of large "bus and tag" cables or, fiber optic ESCON (Enterprise System CONnection) cables and FICON, which has the ability controlling one or more devices. This is one of the important term in mainframe technology since it has the ability of take care of huge input and output functions.
DASD:
DASD stands for Direct Access Storage Device. This indicates to any type of storage that was directly (randomly) addressable.
LPAR:
LPAR stands for Logical Partition and is a powerful hardware or firmware feature implemented in all mainframe systems. By this feature it is possible to create partitions and by which CPUs and I/O sub-systems can be shared between logical partitions.
Job control language. It is a means of communication between a program that
can be written in COBOL , ASSEMBER or PL/I and the MVS operating system. Without
a JCL, you cant able to run a job on MVS operating system.
Let us start with an example jcl, how it looks like, The following jcl is
used to run an cobol program. I will explain in this chapter each and every
line of this jcl. If you are already fimiliar with jcl,
JCL , used to run a cobol program
//JOB1 JOB (034D),'RAMESH KRISHNA REDDY',CLASS='A',PRTY=6
//STEP01 EXEC PGM=COBPROG.
//INFILE DD DSN=SED.GLOB.DES.INFILE,DISP=SHR
//OUTIFLE DD DSN=SED.GLOB.DES.OUTFILE,
// DISP=(NEW,CATLG,DELETE),
// UNIT=DISK,
// SPACE=(CYL,(1,5),RLSE),
// DCB=(RECFM=FB,LERECL=70,BLKSIZE=700)
to see source code of cobol program COBPROG click here
Now let us discuss JCL which we have seen.
Basics about JCL
All JCL statements can consists of up to five types of
fields
// The two forward slashes are required at the beginning of each
JCL statement in Columns 1 and 2.
Name field - This is an optional field. If coded, should start at
Column 3. It maximum length is 8.
Operation field - Which indicates the operation that is to be performed
Operand - This field must appear after Operation field. Must start at 16
column
Comments - Comments begin one space after the last operand. Our simple
example has no comments.
// Name Operation OPerand
// JOB1 JOB (034D),
'RAMESH',
CLASS='A',
PRTY=6
// STEP01 EXEC PGM=COBPROG
// INFILE DD DSN=SED.GLOB.DES.INFILE,
DISP=SHR
// OUTIFLE DD DSN=SED.GLOB.DES.OUTFILE,
// DISP=(NEW,CATLG,DELETE),
// UNIT=DISK,
// SPACE=(CYL,(1,5),RLSE),
// DCB=(RECFM=FB,
// LERECL=70,BLKSIZE=700)
Three important input operations are
1. JOB
2. EXEC
3. DD
1.JOB statement
EXPLANATION to keyword parameters
1.CLASS
2.PRTY
3.MSGCLASS
4.MSGLEVEL
5.TYPRUN
6.NOTIFY
1. CLASS - Some jobs can be short running, some jobs may take more time other
may use havy resources. CLASS keyword parameter is used to tell to
OS about the nature of job we are submitting.
Syntax -> CLASS=jobclass
Valid values -> Any alpha betical character between A - Z or
numbers between 0 - 9
Example JCL -> //MYJOB JOB (3345Y),'KRISHNA REDDY',CLASS=K
2. PRTY - It is related to CLASS parameter. It assigns priority to jobs which
belong to the same class. Higher number takes precedence over the
job with lower number. A job with priority of 12 will run before a
job with priority 5.
Syntax -> PRTY=priority
Valid values -> Any value between 0 to 15
Example JCL -> //MYJOB JOB (345Y),'KRISHNA REDDY',CLASS=8,PRTY=6
3. MSGCLASS - The MSGCLASS parameter determines the output device to which
system messages and JCL messages are written
Syntax -> MSGCLASS=output-class-name
Valid values -> Any alpha betical character between A - Z or
number between 0 - 9
Example JCL -> //MYJOB JOB (456Y),'KRISHNA REDDY',CLASS=7,PRTY=5,MSGCLASS=A
4. MSGLEVEL - is used to tell JCL, which messages to be printed in the device
specified in MSGCLASS parameter
Syntax -> MSGLEVEL=(statements,messages)
Valid values -> Statements may be the number 0,1,2 and messages can be 0 or 1
STATEMENT
0 - Related to job statements only printed
1 - jcl will be printed
(which includes all cataloged/symbolic parameters)
2 - only the input jcl statements being printed
MESSAGES
0 - Allocation/termination messages will be printed
If job terminates abnormally
1 - Allocation/termination messages will be printed
regardless of whether the job terminates normally or
abnormally.
Example JCL -> //MYJOB JOB (3456Y),'SR',CLASS=8,MSGCLASS=S,MSGLEVEL=(1,1)
5. TYPRUN - The TYPRUN parameter is used to specify whether job is to be held
until further notice or for syntax checking
Syntax -> TYPRUN=HOLD - Job held until further notice
or
TYPRUN=SCAN - Check Jcl for syntax checking
Example JCL -> //MYJOB JOB (3456Y),'KRISHNA',CLASS=8,PRTY=9,TYPRUN=HOLD
6. NOTIFY - The NOTIFY parameter is used to direct the system, where it has to
send the success/failure message after completing the job.
Syntax -> NOTIFY=userid/&SYSUID
EXAMPLE JCL -> //MYJOB JOB (3456Y),'KRISHNA REDDY',CLASS=8,NOTIFY=&SYSUID
&SYSUID - the userid from which user it has been submited
//MYJOB JOB (34W5),'KRISHNA REDDY',CLASS=8,NOTIFY=ERT54
It send the sucess/failture message to ERT54 userid
2.EXEC statement
->EXEC statement is used to execute a program/procedure
->A maximum of 255 EXEC statement can code in an single job
Syntax - //stepname EXEC PGM=program-name,keyword parameters
Positional parameter - Program-name
Keyword parameters for EXEC
1.PARM
2.ACCT
3.ADDRSPC
4.DPRTY
5.PERFORM
6.RD
PARM
PARAM parameter is used to pass information to program
Syntax -> PARM=value
Value is a string can be 1 to 100 characters long
PASSING PARAMETER USING PARM PARAMETER
ACCT - accounting information for that step
ADDRSPC - used to indicate to the system that the job step is use either
virtual or real storage
DPRTY - used to assign priority to the job step
PERFORM - specifies the rate at which system resources used by job step
RD - restart definition is used to specify automatic restart of a job
if it abends
NOTE
Q. If there is a situation, where we need to code more than 255 steps in a JOB?
A. We need to split jcl into two jcls , at the end of the first jcl check the conditioncode and initiate the second jcl.
PARAMETERS IN BOTH STATEMENTS (JOB and EXEC)
1.COND
2.REGION
3.TIME
These parameters can code in both JOB and EXEC statements, When we code
these parameters on both statement,
JOB - REGION will override EXEC - REGION
JOB - COND will override EXEC - COND
EXEC - TIME will overrirde JOB - TIME
1.REGION - Specifies the amount of space should be used at the time of
running a job/step
Syntax -> REGION=<>K
or
REGION=<>M
Example JCL -> //MYJOB JOB (AE32),'RAMESH'
//STEP1 EXEC PGM=COBPROG,
// REGION=67K
NOTE:All available storage is assigned to the job or jobstep, If REGION is coded 0K or 0M
2.COND - Each step sends an a return code to the system upon completion.
This is called condition code. COND parameter is used to control
the execution of subsequent job steps, depending on the condition
code that is returned for prior step.
Return code number between 0 and 4095
Syntax -> COND=(comparsion-code,condition)
(If coded on job)
COND=(comparsion-code,condition [,stepname] [,EVEN / ONLY])
(If coded on step)
condition can be GT,GE,LT,LE,EQ,NE
Example JCL -> COND coded on JOB
//MYJOB JOB (R475),'KRISHNA REDDY'
// COND=(4,GT)
//STEP1 EXEC PGM=COBPROG
//STEP2 EXEC PGM=COBPROG2
In this example we are specifing that if the number
4 is grater than the return code of STEP1, then STEP2
is to be bypassed. It is elaborated further in the
following image
COND coded on EXEC statement
//MYJOB JOB (U769),'KRISHNA REDDY'
//STEP1 EXEC PGM=PROG1
//STEP2 EXEC PGM=COBPROG,
// COND=(8,EQ,STEP1)
//
In this example the COND parameter is used to specify that
STEP2 should be by passed if 8 is equal to the return code
issued by STEP1.
TIME - The time parameter is used to specify the amount of CPU time that a
job or job step is permitted to utilize.
Syntax -> TIME=minutes
OR
TIME=([minutes] [,seconds])
minutes can be between 1 and 1439
seconds can be between 1 and 59
Example JCL -> If coded on JOB
//MYJOB JOB (E234),'RAMESH KRISHNA',TIME=(20,30)
//STEP1 EXEC PGM=COBPROG1
//STEP2 EXEC PGM=COBPROG2
//STEP3 EXEC PGM=COBPROG3
In this example 20 minutes 30 seconds time alloted
to job. All steps in this job STEP1 STEP2 STEP3 should
complete its task within 20 min. 30 sec.
If coded on STEP
//MYJOB JOB (R567),'KRISHNA'
//STEP1 EXEC PGM=COBPRO
// TIME=30
In this example 30 min. time is alloted to STEP1.
If STEP1 requires more than 30 min. MYJOB will
terminate abnormally.
If coded on both STEP AND JOB
//SECOND JOB ,'R. KRISHNA',TIME=3
//STEP1 EXEC PGM=C,TIME=2
//STEP2 EXEC PGM=D,TIME=2
In this example, the job is allowed 3 minutes of execution time.
Each step is allowed 2 minutes of execution time. Should either
step try to execute beyond 2 minutes, the job will terminate
beginning with that step. If STEP1 executes in 1.74 minutes and
if STEP2 tries to execute beyond 1.26 minutes, the job will be
terminated because of the 3-minute time limit specified on the
JOB statement.
By coding TIME=1440 or TIME=NOLIMIT, It will give a job or step an unlimited amount of time.
To allow a job or step to use the maximum amount of time, code TIME=MAXIMUM. Coding TIME=MAXIMUM allows the job or step to run for 357912 minutes. (Approx. 248 days)
3.DD STATEMENT
The DD statement (Data Definition), is used to identify the source of input
and the placement of output information
Syntax -> //ddname DD <>
ddname must be unique in the job
Positional parameters - *
DATA
DUMMY
DYNAM
Keyword Parameters - DSN
DISP
UNIT
SPACE
DCB
VOLUME
DSN PARAMETER
DSN parameter is used specify the data set name
Syntax -> DSN=dataset name
Example JCL -> //MYJOB JOB (ER3),'RAMESH R'
//STEP1 EXEC PGM=COBPROG
//INFILE DD DSN=TEST.GLOB.MYLIB
TEST.GLOB.MYLIB will be used in the COBPROG program.
TEMPORARY DATA SETS
Temporary data set is created during job and deleted at the end of the job.
Temporary data set can be coded by using two ampersands followed by name.
Example JCL --> //MYJOB JOB (E456),'RAMESH'
//STEP1 EXEC PGM=COBPROG
//INFILE DD DSN=&&TEMP
Here TEMP is an temporary dataset will be deleted upon job completion.
DISP PARAMETER
The DISP parameter is used specify the disposition of dataset which is
coded on DSN parameter.
Syntax ->
DISP=(STATUS,NORMAL,ABNORMAL)
Parameter on the DISP statement
Status Normal Disposition Abnormal Disposition
NEW DELETE DELETE
OLD CATLG CATLG
MOD UNCATLG KEEP
SHR KEEP UNCATLG
PASS
STATUS
NEW - Dataset will be created. (file should not exists)
OLD - Dataset should exists.
MOD - Dataset will be created If not exists.
SHR - Dataset can be used by other jobs also
NORMAL DISPOSITION
(Happened upon sucessful execution of job step)
DELETE - Dataset should be deleted
CATLG - Dataset will be cataloged
UNCATLG - Dataset will be removed from system catalogs
KEEP - Dataset will be retained (This parameter should
be used with permanent data sets)
PASS - Dataset is to be passed subsequent job step in
the same job
ABNORMAL DISPOSITION
(Happened upon unsucessful execution of job step)
DELETE - Dataset should be deleted
CATLG - Dataset will be cataloged
UNCATLG - Dataset will be removed from system catalogs
KEEP - Dataset is to be kept
EXAMPLE JCL --> //MYJOB JOB (E674),'KRISHNA REDDY'
//STEP1 EXEC PGM=COBPROG
//INFILE DD DSN=TEST.GLOB.TEMP,
// DISP=(NEW,CATLG,DELETE)
In this example ,
DISP=(NEW,CATLG,DELETE)
NEW - TEST.GLOB.TEMP is not exists, it will be created
CATLG - Upon successful execution of job step, data set
will be cataloged
DELETE - If job terminicated abnormally, dataset will be deleted
UNIT PARAMETER
In IBM Mainframe environment, All devices have an address assigned to
them at the time they added to the sytem. Devices can be referenced
using this addresses. UNIT parameter is used to specify thise address.
Syntax -> UNIT=device_address/device_type/device_group_name/TAPE
EXAMPLE JCL -> //MYJOB JOB (R345),'KRISHNA REDDY'
//STEP1 EXEC PGM=COBPROG
//INFILE DD DSN=TEST.GLOB.TEST.LIB,
// UNIT=SYSDA
In above example, COBPROG is executed, and a file INFILE which may
reside on any of the devices which are grouped under the symbolic name
SYSDA will be accessed
VOL PARAMETER
This parameter is used to identify the volume serial number on which
dataset is reside. The VOL dataset is used with disk and tape datasets.
Syntax -> VOL= volumelabel/data set label
Sub parameters used with VOL parameter
SER - Specification of serial number
REF - Referencing VOL specification from a prior step
PRIVATE - Allowing access to volume by single user
RETAIN - Inhibiting dismounting of volume until end of job
SEQ - Specification of sequence in which volumes are to be mounted
EXAMPLE JCL --> //MYJOB JOB (E454),'KRISHNA REDDY'
//STEP1 EXEC PGM=COBPROG
//INFILE DD DSN=TEST.GLOB.TEMP,
// VOL=SER=(VOL1,VOL2,VOL3)
In this example the data set called DATA3 resides on 3 volumes whose
serial numbers are VOL1,VOL2,VOL3. The Operating system will request
that all volumes be mounted at the same time.
SPACE PARAMETER
The SPACE parameter is used to allocate space for datasets.
We can allocate space in Cylinders/Tracks/Blocks
Syntax -> SPACE=(CYL,(primary,secondary,directory),RLSE,CONTIG,MXIG,ROUND)
Instead of CYL, We can use TRK or BLK
Meaning of Sub Parameter
TRK - Requesting space in track
CYL - Requesting space in cylinders
PRIMARY - Primary storage to be allocated at the time of
data set created
SECONDARY - Additional storage to be allocated ,
If primary storage is not sufficient
DIRECTORY - Space for recording of name and location of partitioned
data sets
RLSE - Request for release of space previously allocated unused
space after completion of job
CONTIG - Request for contiguous space
MXIG - Request for large aread of contiguous space
ROUND - Request for entire cylinder for storage of data set
EXAMPLE JCL -> //MYJOB JOB (W345),'KRISHNA REDDY'
//STEP1 EXEC PGM=COBPROG
//INFILE DD DSN=TEST.GLOB.LIB
// UNIT=4560
// SPACE=(CYL,(30,4))
In this example, 30 cylinders are requested as primary space and 4
additional cyliders as secondary space.
Upto 15 extends of secondary space ( in our example it is 4 ) will be alloted , If space is not sufficient.
DCB PARAMETER
Records in dataset may contain FIXED length / VARIABLE length.
The DCB (Data Control Block) parameter is used to specify record
format,record length, block size etc..
Syntax -> //ddname DD DCB=<>
Subparameters in DCB
RECFM - Specification of record format - F/FB/V/VB/U
LRECL - Specification of record length
BLKSIZE - Specification of block size
BUFNO - Specification of buffers
EXAMPLE JCL -> //MYJCL JOB (E3445),'RAMESH'
//STEP1 EXEC PROG=COBPROG
//INFILE DD DSN=TEST.GLOB.LIB
// UNIT=234,
// DSN=(LRECL=80,
// RECFM=FB,
// BLKSIZE=800,
// BUFNO=30)
In this example, The DCB parameter specifies that this file is to
have a logical record length of 80 bytes, it will have a fixed block
record format, and the block will 800 (800 is multiple of 80). The
BUFNO parameter is set to 30, indicating upto 30 buffers may be
utilized in virtual storage for this data set.
Default buffers are 5,if you not specified any thing
When you specified V for RECFM parameter, LRECL value is largest record in the file plus 4 bytes. These four bytes contain the actual length of each variable length record in the file
No comments:
Post a Comment