Figure 1 shows an example for the
PL/I optimizing compiler. This panel is typical of the batch compiler
entry panels. After you fill in an entry panel and press Enter, ISPF
generates the appropriate JCL statements. The JCL that would be generated
for the PL/I example is:
//SCAN EXEC PGM=ISRLEMX,COND=(12,LE),
// PARM=('PLI,TOPSEG,B,N,E,4, ,00,ENU,4,7',
// '1,/,VIO')
//*
//* INSERT STEPLIB DD CARDS HERE FOR ISRLEMX AND THE NATIONAL
//* LANGUAGE LITERAL LOAD MODULE IF THEY ARE NOT IN YOUR SYSTEM
//* LIBRARY
//*
//ISRLCODE DD DSN=ISPFDEMO.XXX.PLIO,DISP=SHR
// DD DSN=ISPFDEMO.A.PLIO,DISP=SHR
// DD DSN=ISPFDEMO.MASTER.PLIO,DISP=SHR
//ISRLEXPD DD UNIT=SYSDA,DISP=(NEW,PASS),SPACE=(CYL,(2,2)),
// DSN=&&TEMP1
//ISRLMSG DD SYSOUT=(A)
//PLIO EXEC PGM=IEL0AA,REGION=1024K,COND=(12,LE),
// PARM='MACRO,XREF'
//SYSPRINT DD DSN=ISPFDEMO.LISTPLIO.LIST,UNIT=SYSDA,
// SPACE=(CYL,(2,2)),DISP=(MOD,CATLG),
// DCB=(RECFM=VBA,LRECL=125,BLKSIZE=3129)
//SYSIN DD DSN=&&TEMP1,DISP=(OLD,DELETE)
//SYSLIB DD DSN=ISPFDEMO.XXX.PLIO,DISP=SHR
// DD DSN=ISPFDEMO.A.PLIO,DISP=SHR
// DD DSN=ISPFDEMO.MASTER.PLIO,DISP=SHR
// DD DSN=ISPFTEST.FLAG.PLIO,DISP=SHR
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(2,2))
//SYSLIN DD DSN=ISPFDEMO.XXX.OBJ(TOPSEG),DISP=OLD\
The JCL is generated in two steps:
- The first step processes one of these scan programs, which are
distributed as part of ISPF:
- ISRSCAN
- Copies
one member.
- ISRLEMX
- Copies the primary member, expands any included members, and unpacks
any packed members.
The selected scan program
searches the user-specified sequence of concatenated libraries to
find the designated member. If the scan program finds the member,
it copies the member to a temporary sequential data set that is shown
by &&TEMP1 and generated by the system. The scan program then
exits with a return code of zero, if no errors are found. If any errors
are found, the scan program exits with one of these return codes,
which prevents the processing of the second job step.
Table 1 describes ISRLEMX return codes:
Table 1. ISRSCAN and ISRLEMX return
codesISRSCAN |
ISRLEMX |
---|
- 12
- Member not found.
- 16
- OPEN error on DDNAME=IN.
- 20
- I/O error on DDNAME=IN.
- 24
- OPEN error on DDNAME=OUT.
- 28
- I/O error on DDNAME=OUT.
|
- 1-15
- Parameter n was too long, where n =
1 to 15.
- 16
- Too many parameters.
- 17
- Too few parameters.
- 20
- Severe error in expand module. An error message should be printed
in the ISRLMSG data set.
|
- In this example, the second step calls the PL/I optimizing compiler
by using the temporary data set designated by &&TEMP1 as the
input data set. The concatenation sequence is passed to the compiler
through SYSLIB DD statements, to allow inclusion of subsidiary members
referenced by %INCLUDE statements in the source text.
The object
module is directed to a partitioned data set with a three-level name
composed of the project name, the first library name, and a type qualifier
of OBJ. The member name for the object module is the same as the primary
member to be compiled.
The compiler listing is directed to
SYSOUT class A, as specified.