Previous Topic: Executing IN25SYMA as a Standalone Program

Next Topic: IN25LINK

Adding IN25SYMA to Your Assembler Procedure

To automatically update the symbolic information in your PROTSYM file whenever a program is assembled, add a postprocessor step directly to the JCL procedure that you use to assemble your programs.

Follow these steps to update your existing assembly procedure:

  1. Be sure that your assemble step specifies all of the required Assembler options.
  2. If the SYSPRINT output from your assemble step is written to SYSOUT, change the DD statement so that a temporary disk file is created for your listing.
  3. Add a new IN25PARM step following your assemble step to generate the parameter statement for the postprocessor.
  4. Add a new IN25SYMA step to postprocess the listing from the assemble step. The INPUT DD on this step refers to the same file as the SYSPRINT DD from the assemble step.
  5. Add a new IEBGENER step to print the Assembler listing only if errors were detected during the assembly.

The following example shows modifications to an assembly procedure:

//ASM      EXEC PGM=ASMA90,REGION=4M,                          
//  PARM='LIST,OBJECT,XREF(FULL),ESD'                    <= 1  

     (Your existing DD statements for the Assembler)

//SYSPRINT DD DSN=&&LST,DISP=(NEW,PASS),                 <= 2
//            UNIT=SYSDA,SPACE=(CYL,(1,2))    
//*
//*   GENERATE THE PARAMETER STATEMENT FOR IN25SYMA
//*
//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=IN25SYMA,REGION=4M,COND=(4,LT)       <= 4              
//STEPLIB  DD DSN=CAI.CAVHLOAD,DISP=SHR                                     
//PROTSYM  DD DSN=USER.PROTSYM,DISP=SHR                                    
//OUTPUT   DD SYSOUT=*,DCB=(RECFM=FBM,LRECL=121,BLKSIZE=2420)
//INPUT    DD DSN=&&LST,DISP=(OLD,PASS)                      (See Note 1)
//CARDS    DD DSN=&&CARDS,DISP=(OLD,DELETE)                  (See Note 2)
//MESSAGE  DD SYSOUT=*                                                 
//*
//PRINT    EXEC PGM=IEBGENER,COND=(5,GT,ASM)             <= 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 INPUT DD for IN25SYMA 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.