Search code examples
mainframejcl

JCL SEVERE MESSAGES


I am getting these error messages when I try to compile my program:

IEW2747S D90C ABEND 013-18 OCCURRED WHILE PROCESSING SEQUENTIAL DATA SET WITH DD IEW2230S 0414 MODULE HAS NO TEXT.
IEW2677S 5130 A VALID ENTRY POINT COULD NOT BE DETERMINED.
IEW2008I 0F03 PROCESSING COMPLETED. RETURN CODE = 12.

Here is the JCL:

000100 //IBMP5    JOB (COMPILE),USERID,MSGCLASS=H,REGION=0M,                  
000200 //         MSGLEVEL=(1,1),CLASS=A,NOTIFY=&SYSUID                       
000300 //*******************************************************************  
000400 //*                                                                 *  
000401 //* THIS JCL WILL COMPILE, LINK-EDIT (BIND) AND RUN A PROGRAM       *  
000402 //*                                                                 *  
000410 //*******************************************************************  
000420 //*  COMPILATION STEP                                                  
000430 //*                                                                    
001100 //STEP1    EXEC PGM=IBMZPLI,REGION=1M,PARM=('MACRO,OBJECT,INSOURCE')   
001200 //STEPLIB  DD   DSNAME=IEL380.SIBMZPRC,DISP=SHR                        
001201 //         DD   DSNAME=IEL380.SIBMZCMP,DISP=SHR                        
001204 //SYSUT1   DD UNIT=SYSDA,SPACE=(CYL,(2,1))                             
002000 //SYSPRINT DD SYSOUT=*                                                 
002010 //SYSOUT   DD SYSOUT=*                                                 
002100 //*                                                                    
002510 //* SOURCE CODE MEMBER                                                 
002520 //*                                                                    
002530 //PLI.SYSIN DD DSN=INVAT.SOURCE(PROG5),DISP=SHR                        
002531 //*                                                                    
002532 //* TARGET FOR OBJECT FILE                                             
002535 //*                                                                    
002536 //SYSLIN   DD  DSN=INVAT.OBJ(PROG5),DISP=(OLD,PASS),UNIT=SYSALLDA,     
002537 //             SPACE=(CYL,(1,1)),DCB=(LRECL=80,BLKSIZE=800)            
002540 //*                                                                    
002541 //*  LINKAGE (BIND) STEP                                               
002542 //*                                                                    
002550 //STEP2    EXEC PGM=IEWL,REGION=0M                                     
002560 //SYSLIB   DD  DSNAME=SYS1.LINKLIB,DISP=SHR                            
002570 //         DD  DSNAME=CEE.SCEELKED,DISP=SHR                            
002580 //SYSLIN   DD  DSN=INVAT.OBJ(PROG5),DISP=SHR                           
002590 //LKED.SYSLMOD DD DSN=INVAT.LOAD(PROG5),DISP=SHR                       
002600 //SYSUT1   DD  UNIT=SYSALLDA,SPACE=(TRK,(10,10))                       
002700 //SYSPRINT DD SYSOUT=*                                                 
002800 //*  
002900 //*  EXECUTION STEP                                                     
003000 //*                                                                     
003100 //STEP3    EXEC PGM=PROG5                                               
003200 //STEPLIB  DD DSN=INVAT.LOAD(PROG5),DISP=SHR                            
003300 //SYSPRINT DD SYSOUT=*                                                  
003400 //SYSIN    DD *                                                         
003800 /*                                                                      
003900 //                                                                      

Solution

  • normally (in all of the compile JCL I have ever looked at) the SYSLMOD, does not specify the member. So you that line would look something like this:

    //SYSLMOD DD DSN=INVAT.LOAD,DISP=SHR
    

    and then underneath that, you would include the member in the sysin:

    //LKED.SYSIN DD *  
        ENTRY PROG5   
        NAME  PROG5(R)
    /*                
    

    all that together would give you something like this:

    000100 //IBMP5    JOB (COMPILE),USERID,MSGCLASS=H,REGION=0M,                  
    000200 //         MSGLEVEL=(1,1),CLASS=A,NOTIFY=&SYSUID                       
    000300 //*******************************************************************  
    000400 //*                                                                 *  
    000401 //* THIS JCL WILL COMPILE, LINK-EDIT (BIND) AND RUN A PROGRAM       *  
    000402 //*                                                                 *  
    000410 //*******************************************************************  
    000420 //*  COMPILATION STEP                                                  
    000430 //*                                                                    
    001100 //STEP1    EXEC PGM=IBMZPLI,REGION=1M,PARM=('MACRO,OBJECT,INSOURCE')   
    001200 //STEPLIB  DD   DSNAME=IEL380.SIBMZPRC,DISP=SHR                        
    001201 //         DD   DSNAME=IEL380.SIBMZCMP,DISP=SHR                        
    001204 //SYSUT1   DD UNIT=SYSDA,SPACE=(CYL,(2,1))                             
    002000 //SYSPRINT DD SYSOUT=*                                                 
    002010 //SYSOUT   DD SYSOUT=*                                                 
    002100 //*                                                                    
    002510 //* SOURCE CODE MEMBER                                                 
    002520 //*                                                                    
    002530 //PLI.SYSIN DD DSN=INVAT.SOURCE(PROG5),DISP=SHR                        
    002531 //*                                                                    
    002532 //* TARGET FOR OBJECT FILE                                             
    002535 //*                                                                    
    002536 //SYSLIN   DD  DSN=INVAT.OBJ(PROG5),DISP=(OLD,PASS),UNIT=SYSALLDA,     
    002537 //             SPACE=(CYL,(1,1)),DCB=(LRECL=80,BLKSIZE=800)            
    002540 //*                                                                    
    002541 //*  LINKAGE (BIND) STEP                                               
    002542 //*                                                                    
    002550 //STEP2    EXEC PGM=IEWL,REGION=0M                                     
    002560 //SYSLIB   DD  DSNAME=SYS1.LINKLIB,DISP=SHR                            
    002570 //         DD  DSNAME=CEE.SCEELKED,DISP=SHR                            
    002580 //SYSLIN   DD  DSN=INVAT.OBJ(PROG5),DISP=SHR                           
    002590 //SYSLMOD  DD DSN=INVAT.LOAD,DISP=SHR                       
    002600 //SYSUT1   DD  UNIT=SYSALLDA,SPACE=(TRK,(10,10))                       
    002700 //SYSPRINT DD SYSOUT=*           
           //LKED.SYSIN DD *  
                ENTRY PROG5   
                NAME  PROG5(R)
           /*                                        
    002800 //*  
    002900 //*  EXECUTION STEP                                                     
    003000 //*                                                                     
    003100 //STEP3    EXEC PGM=PROG5                                               
    003200 //STEPLIB  DD DSN=INVAT.LOAD(PROG5),DISP=SHR                            
    003300 //SYSPRINT DD SYSOUT=*                                                  
    003400 //SYSIN    DD *                                                         
    003800 /*                                                                      
    003900 //      
    

    give that a try and see if that helps.

    EDIT:

    What you were missing and ultimately fixed this JCL was the SYSIN lines that I added to the link edit (LKED) step (one line for ENTRY and one line for NAME). Basically what was happening the link edit step (which is the last step in the compile and is responsible for copying the compiled code to the loadlib) did not know the entry name or the name of the program you were trying to compile. You had specified a SYSIN, but because the SYSIN was empty, you received the error saying the module had not text.