Previous Topic: Executing IN25SYMP as a Standalone Program

Next Topic: IN25SYMA

Adding IN25SYMP to Your PL/I Procedure

To automatically update the symbolic information in your PROTSYM file whenever a PL/I program is compiled, add a postprocessor step directly to the JCL procedure you use to compile your programs.

Follow these steps to update your existing compile procedure:

  1. Ensure that your compile step specifies all of the required PL/I options.
  2. Change the DD statement so that a temporary disk file is created for your listing, if the SYSPRINT output from your compile step is written to SYSOUT.
  3. Add a new IN25PARM step following your compile step to generate the parameter statement for the postprocessor.
  4. Add a new IN25SYMP step to postprocess the listing from the compile step. The INPUTT DD on this step refers to the same file as the SYSPRINT DD from the compile step.
  5. Add a new IEBGENER step to print the compiler listing only if the compiler detects errors.

The following example shows modifications to a compile procedure:

//PLI      EXEC PGM=IEL0AA,REGION=4M,                          
//  PARM='S,X(F),A(F),OP,M,LIST,STG,AG,NEST,GS,NIS'      <= 1  

     (Your existing DD statements for PL/I)

//SYSPRINT DD DSN=&&LST,DISP=(NEW,PASS),                 <= 2
//            UNIT=SYSDA,SPACE=(CYL,(1,2))    
//*
//*   GENERATE THE PARAMETER STATEMENT FOR IN25SYMP
//*
//CARDS   EXEC PGM=IN25PARM,REGION=1M,COND=(4,LT),       <= 3              
//   PARM='&MEMBER,LISTER=ALL'                             
//STEPLIB  DD DSN=CAI.CAVHLOAD,DISP=SHR                                     
//CARDS    DD DSN=&&CARDS,DISP=(NEW,PASS),                             
//            UNIT=SYSDA,SPACE=(TRK,(1,1))                               
//*
//*    POST-PROCESS THE COMPILER LISTING
//*
//SYM      EXEC PGM=IN25SYMP,REGION=4M,COND=(4,LT)       <= 4              
//STEPLIB  DD DSN=CAI.CAVHLOAD,DISP=SHR                                     
//PROTSYM  DD DSN=USER.PROTSYM,DISP=SHR                                    
//SYSPRINT DD SYSOUT=*
//INPUTT   DD DSN=&&LST,DISP=(OLD,PASS)                      (See Note 1) 
//CARDS    DD DSN=&&CARDS,DISP=(OLD,DELETE)                  (See Note 2) 
//MESSAGE  DD SYSOUT=*                                                 
//MSGS     DD SYSOUT=*                                                 
//*
//PRINT    EXEC PGM=IEBGENER,COND=(5,GT,PLI)     	 <= 5  
//SYSUT1   DD DSN=&&LST,DISP=(OLD,DELETE)                              
//SYSUT2   DD SYSOUT=*                                                 
//SYSPRINT DD DUMMY                                                    
//SYSIN    DD DUMMY                                                    

Notes:

  1. If the SYSPRINT DD on your compile step refers to a permanent data set, the INPUTT DD for IN25SYMP must point to the same data set.
  2. If you prefer to pass your parameter statement as an override in the invoking JCL, delete the CARDS step, delete this DD statement, and add SYM.CARDS DD to your invoking JCL member.