Below is an example of Jol, and the equivalent JCL.
Clem
Simplified Jol Scripting Language for Z/OS, TSO, Linux and Windows
Payroll: Job class C 1000 k;
Exec Validate Input.Trans, Trans.Action(+1); /* Validate Transations */
if Validate=0
then do;
Sort transaction(+1) to Sorted.Trans.Actions(+1)
Fields(10,10,CH,A);
Exec Update Payroll.Master(0), Sorted.Trans.Action(+1),
Payroll.Master(+1);
If Update = 0
then do;
Catalog Payroll.Master(+1), Sorted.Trans.Action(+1);
Submit Job2;
end;
end;
else Stop 'Error in PAYROLL Job';
________________________________
Equivalent Existing Job Control Language
//PAYROLL JOB CLASS=C,REGION=1000K
//VALIDATE EXEC PGM=VALIDATE
//SYSPRINT DD SYSOUT=*
//INTRANS DD DSN=INPUT.TRANS,DISP=SHR
//OUTTRANS DD DSN=TRANS.ACTIONS(+1),DISP=(NEW,PASS),
// DCB=(RECFM=VB,LRECL=200,BLKSIZE=13030),
// SPACE=(CYL,(10,10),RLSE),
// UNIT=SYSDA,VOL=SER=WORK01
//SORT EXEC PGM=SORT,COND=(VALIDATE,NE,0)
//SYSOUT DD SYSOUT=*
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,20)
//SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,20)
//SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,20)
//SORTIN DD DSN=TRANS.ACTIONS(+1),DISP=(SHR,PASS)
//SORTOUT DD DSN=SORTED.TRANS.ACTIONS(+1),
// DISP=(NEW,PASS),
// DCB=(RECFM=VB,LRECL=200,BLKSIZE=13030),
// SPACE=(CYL,(10,10),RLSE),
// UNIT=SYSDA,VOL=SER=WORK01
//SYSIN DD *
SORT FIELDS=(10,10,CH,A)
//UPDATE EXEC PGM=UPDATE,COND=(VALIDATE,NE,0)
//SYSPRINT DD SYSOUT=*
//MASTIN DD DSN=PAYROLL.MASTER(0),DISP=SHR
//TRANS DD DSN=TRANS.ACTION(+1),DISP=(SHR,PASS)
//MASTOUT DD DSN=PAYROLL.MASTER(+1),DISP=(NEW,PASS),
// DCB=(RECFM=VB,LRECL=200,BLKSIZE=13030),
// SPACE=(CYL,(10,10),RLSE),
// UNIT=SYSDA,VOL=SER=WORK01
//CATLG EXEC PGM=IEFBR14,COND=(UPDATE,NE,0)
//DUMMY1 DD DSN=PAYROLL.MASTER(+1),DISP=(SHR,CATLG)
//DUMMY2 DD DSN=SORTED.TRANS.ACTIONS(+1),
// DISP=(SHR,CATLG)
//SUBMIT EXEC PGM=IEBGENER,COND=(UPDATE,NE,0)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=SUBMIT.LIBRARY(JOB2),DISP=SHR
//SYSUT2 DD SYSOUT=(*,INTRDR)
//SYSIN DD DUMMY
//ERRMSG EXEC PGM=SHOWERR,COND=(VALIDATE,EQ,0),
// PARM='Error in PAYROLL Job'
Andrew Rowley wrote:
On 9/07/2018 10:46 PM, Hobart Spitz wrote:
Basically, JCL is so far from real a programming language, that I can't
describe it.
That's because JCL isn't a programming language. There are plenty of
other languages that also suck as programming languages e.g. HTML,
XML, JSON, but that's not what they are supposed to be.
JCL is really a kind of definition language. In programming language
terms it is more like a set of classes in OOP than a language in
itself: you have a job, which has steps, steps have DDs etc. The
syntax is old fashioned, but the concepts are very much OOP. It would
be relatively simple to create a set of classes in your OOP language
of choice to hide the syntax - just create a Job object, add Step
objects, add DataDefinition objects etc. and have a Submit method emit
JCL.
If I want to write a program, I will choose a programming language. If
I want to define a unit of work to the system, JCL does a pretty good
job. I definitely prefer JCL to long command lines with multiple
switches and options defining input and output files, which is the
non-z/OS equivalent.
Andrew Rowley
Black Hill Software
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN