Page 1 of 1

pl/i and ispf usage

PostPosted: Tue 16 Jun 2009, 20:15
by jkzup
Where can I find JCL to compile and bind PL/I programs? I have written several programs I want to use to drive customized ISPF dialogs.

I tried using ISPF 4.5 for a foreground compile but it didn't work.

Thank you!

jk zup

Re: pl/i and ispf usage

PostPosted: Wed 17 Jun 2009, 13:05
by sysprog
Here lists the cataloged procedures that you may use for PL/I compile:
viewtopic.php?f=4&t=9

The cataloged procedure is stored in SYSFAN.PROCLIB.

Re: pl/i and ispf usage

PostPosted: Sat 20 Jun 2009, 17:09
by jkzup
I have a couple more questions about pl/i on the system.
1. Where are the load modules that run the compiler, link editor/binder, and prelink? I
looked at the cataloged procedures but couldn't locate all the referenced libraries
and programs. What load libraries are preallocated to TSO users and which would
I have to supply in a STEPLIB to run a compile/prelink/link? (Also, some procedures
have a prelink step but others don't--when is prelink required?)
2. I read in another post that pl/i 3.3 will be upgraded to 3.6. When is this scheduled?
If I compile my programs under 3.3 would I have to recompile them once 3.6 is up,
or would they continue to run okay?

Thank you!

jk zup

Re: pl/i and ispf usage

PostPosted: Mon 22 Jun 2009, 02:48
by sysprog
1. IEL330.SIBMZCMP is the load module to compile and pre-link the PL/I source. If you use the cataloged procedures, you don't need to worry about the STEPLIBs.

The run-time environment uses IBM Language Environment (L/E), and this applied to all languages (C, COBOL, etc). All L/E loadlib (CEE.SCEERUN, etc) are in LINKLST, so that you don't need to STEPLIB them at run-time.

2. There is no hard schedule to upgrade PL/I to V3.6, however, we expect there is no changes required for this upgrade.

If you really care about the migration detail, please refer here:
http://publibz.boulder.ibm.com/cgi-bin/ ... 1026134839

Re: pl/i and ispf usage

PostPosted: Tue 29 Dec 2009, 08:15
by mikrom
First I tried to use IEL1CL but the procedure was not found on the system.
Then I tried all the cataloged procedures given in the link viewtopic.php?f=4&t=9
and only the procedure IBMZCPL works for my purpose.

So, when I have my PL/I source member placed in MIKROM.TEST.PLI(PLI01) and want to compile and link it into a binary member
MIKROM.TEST.LOAD(PLI01) then this JCL script works for me fine:

Code: Select all
//MIKROMC JOB (),CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1),NOTIFY=&SYSUID,
//        REGION=4M
//* THIS DOESN'T WORK:
//*STEP1 EXEC IEL1CL,LIBPRFX=CEE
//* THIS COMPILES WITH 'MIKROMC  ENDED AT N1  MAXCC=4 CN(INTERNAL)':
//STEP1 EXEC IBMZCPL
//PLI.SYSIN DD DSN=&SYSUID..TEST.PLI(PLI01),DISP=SHR
//LKED.SYSLMOD DD DSN=&SYSUID..TEST.LOAD,DISP=SHR
//LKED.SYSIN DD *
 NAME PLI01(R)
/*

Re: pl/i and ispf usage

PostPosted: Tue 29 Dec 2009, 10:33
by prino
The PL/I compiler that can be used is V3R5M0 - V3R7M0 does not seem to work. All PL/I compilers are in
Code: Select all
PLI.V2R3M0.AIBMMOD1
PLI.V2R3M0.AIBMMOD2
PLI.V2R3M0.AIBMSRC1
PLI.V2R3M0.AIBMSRC2
PLI.V2R3M0.AIELMOD1
PLI.V2R3M0.AIELSRC1
PLI.V2R3M0.CNTL   
PLI.V2R3M0.DSSDUMP
PLI.V2R3M0.PLIBASE
PLI.V2R3M0.PLICLIST
PLI.V2R3M0.PLICMD 
PLI.V2R3M0.PLICOMP
PLI.V2R3M0.PLIHELP
PLI.V2R3M0.PLILINK
PLI.V2R3M0.PLIPROC
PLI.V2R3M0.PLISAMP
PLI.V2R3M0.PLISMAC
PLI.V2R3M0.PLITASK
PLI.V2R3M0.SAQACMD
PLI.V2R3M0.SAQAMLIB
PLI.V2R3M0.SAQAPNLS
PLI.V2R3M0.SIBMBASE
PLI.V2R3M0.SIBMLINK
PLI.V3R5M0.AIBMZHFS
PLI.V3R5M0.AIBMZMOD
PLI.V3R5M0.AIBMZSRC
PLI.V3R5M0.SIBMZCMP
PLI.V3R5M0.SIBMZPRC
PLI.V3R5M0.SIBMZSAM
PLI.V3R7M0.AIBMZHFS
PLI.V3R7M0.AIBMZMOD
PLI.V3R7M0.AIBMZSRC
PLI.V3R7M0.SIBMZCMP
PLI.V3R7M0.SIBMZPRC
PLI.V3R7M0.SIBMZSAM
except for the 3.3 version which is in
Code: Select all
IEL330.AIBMZHFS         
IEL330.AIBMZMOD
IEL330.AIBMZSRC
IEL330.SIBMZCMP
IEL330.SIBMZHFS
IEL330.SIBMZPRC
IEL330.SIBMZSAM

Compile JCL, wihout DB2, CICS or pre-link can be found in

Code: Select all
'prino.rahp.pli(@fan23)' - for V2.3.0
'prino.rahp.pli(@fan)' - for V3R3M0, needs updating for V3R5M0


JCL is for compile/link/go of one of my private programs, but contains plenty of SET statements to customize the flow. Feel free to make a copy, and paste it here with your CICS, DB2 and/or pre-link additions.

Re: pl/i and ispf usage

PostPosted: Wed 30 Dec 2009, 08:18
by mikrom
Thank you very much for previous answers!
I'm new to the mainframe world, working through some tutorials to learn the first steps on mainframe, so I have some questions - maybe very stupid:
1. What is meant by the concept of "Cataloged Procedures"? For example: What is the difference between the procedure 'IEL1CL' and the cataloged procedure 'IBMZCPL' for compiling PL/I? Are only the cataloged procedures supported by IBM and the other not?

2. I'm little bit confused of a cryptic usage of procedure names. How can I decipher the purpose of the procedure from the procedure name?
For example: Why is the procedure for compiling PL/I named 'IBMZCPL' and for compiling COBOL 'IGYWCL' ?
I thing (when I look at substitution JCL in compile job logs in SDSF), that probably only the last characters in the procedure names says what the procedure does: Maybe 'CPL' in 'IBMZCPL' means Compile + Prelink + Link-edit and
'CL' in 'IGYWCL' means Compile + Link-edit. But the other letters in the procedure names seems to be arbitrarily given by IBM. Am I right or not?

3. When I read Compile+Link+Go I understand the first two, but what means the step Go ?

Re: pl/i and ispf usage

PostPosted: Wed 30 Dec 2009, 16:55
by prino
mikrom wrote:Thank you very much for previous answers!
I'm new to the mainframe world, working through some tutorials to learn the first steps on mainframe, so I have some questions - maybe very stupid:
1. What is meant by the concept of "Cataloged Procedures"? For example: What is the difference between the procedure 'IEL1CL' and the cataloged procedure 'IBMZCPL' for compiling PL/I? Are only the cataloged procedures supported by IBM and the other not?


A cataloged procedure is one that resides in a PDS, the alternative, which is useful when you are developing a procedure, is an "in-stream" procedure. There are probably also examples 'prino.rahp.pli', e.g. 'RUN2PDS'. Basically, it has the same format as an "external" PROC, but is placed before any "executable" JCL and ends with a
Code: Select all
//   PEND
statement.

Using in-stream procedures was pretty normal until the mid 1990's as few users could place there procedures in the system PROCLIBS. Since then you can code a
Code: Select all
//label JCLLIB ORDER=(your.own.proclib,your.other.proclib)
directly after the JOB statement, and those PDS'es will be searched before any system PROCLIBs.

mikrom wrote:2. I'm little bit confused of a cryptic usage of procedure names. How can I decipher the purpose of the procedure from the procedure name?
For example: Why is the procedure for compiling PL/I named 'IBMZCPL' and for compiling COBOL 'IGYWCL' ?
I thing (when I look at substitution JCL in compile job logs in SDSF), that probably only the last characters in the procedure names says what the procedure does: Maybe 'CPL' in 'IBMZCPL' means Compile + Prelink + Link-edit and
'CL' in 'IGYWCL' means Compile + Link-edit. But the other letters in the procedure names seems to be arbitrarily given by IBM. Am I right or not?


The PL/I compiler load module is called IBMZ(something), the COBOL compiler load module is called, if I am correct, IGY(something). Your guess that the last characters more or less give the function of the procedure is correct, but this only holds true for IBM procs. At one client procedures for JOB Pxxxx were simply called PxxxxA/B/C/etc. For real production work using procedures is (probably) the way to go, but for your own JCL I'd suggest that you just code in-line JCL and a bunch of
Code: Select all
//   SET VAR='value'
statements to customize the lot.

mikrom wrote:3. When I read Compile+Link+Go I understand the first two, but what means the step Go ?


Go means run the compiled and linked program ;)

Re: pl/i and ispf usage

PostPosted: Thu 31 Dec 2009, 19:14
by mikrom
Hi prino,
Thank you very much for valuable informations.
I wish You Happy New Year!