IBM Mainframe Forum Index
 
Register
 
IBM Mainframe Forum Index Mainframe: Search Log in to check your private messages Log in
 

Need Help on PL/I Compilation


 
IBM Mainframe Forums -> PL/I & Assembler
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
satish.ms10

Active User


Joined: 10 Aug 2009
Posts: 172
Location: India

PostPosted: Thu Nov 06, 2014 6:10 pm
Reply with quote

Hi All,

I am getting S0C7 ABEND when I am running my PL/I program. Let me explain the scenario with the below example.

I have 3 batch PL/I programs say A, B and C.

A is a main program and no calls to any sub-program.
B is also a main program and it calls sub-program C.

I compiled above program using the following compile and link-edit options respectively.

Code:
PLIPARM=('LIST,SOURCE,OPTIONS')
LNKPARM='LIST,XREF,RENT,MAP,COMPAT=PM3'


When I run program A, the job is ending with MAXCC=0 and got the proper output.

But, when I run program B, the job is ending with S0C7 ABEND code.

B is executing till the CALL statement to C sub-program and the print/display statement just before the call is printing to SYSPRINT.

Not sure where I am going mistake in compilation.

Could anyone help me in this regard.

Let me know if you need additional information, if any.

Thanks in advance.
Back to top
View user's profile Send private message
Nic Clouston

Global Moderator


Joined: 10 May 2007
Posts: 2431
Location: Hampshire, UK

PostPosted: Fri Nov 07, 2014 2:30 am
Reply with quote

As program A is working ok why mention it at all?

So program B gets a S0C7 somewhere before it calls C. Or is it the call to C that is failing? What diagnostics do you have? Have you inserted PUT SKIPS at key points? Remember to duplicate them as a single one will not get printed in the even of a failure. Rmove the duplicate when you have successfully past that point. You eed to PUT SKIP all the data used in the failing statement. IF it is the call that is failing check the parameters are passed correctly and that C is declared correctly.
Back to top
View user's profile Send private message
satish.ms10

Active User


Joined: 10 Aug 2009
Posts: 172
Location: India

PostPosted: Fri Nov 07, 2014 12:50 pm
Reply with quote

Hi Nic,

Have you placed PUT SKIP statements in my program. All the PUT statements, till the CALL C statement, are getting executed and the messages are printing in SYSPRINT. PUT statements after the CALL statement were not executed. I also noticed, no PUT statement in C sub-program.

I am not passing any arguments to C program. Here is the compile procedure that I am using:



Code:
//PL1CMP   PROC STRG=300,                                               
//         INDEX='CICSTS42.CICS',            CICS LIBRARIES QUALIFIER
//         DSCTLIB='CICSTS42.CICS.SDFHPL1',       PRIVATE MACRO/DSECT   
//         LNKPARM='LIST,XREF,RENT,MAP,COMPAT=PM3,CALL',    BIND OPTS   
//         PLIPARM=('LIST,SOURCE,OPTIONS'),                   OPTIONS 
//         MEMBER= YOUR SOURCE MEMBER NAME,
//         SRCE= YOUR SOURCE PDS,
//         LOADLIB= LOADLIB PDS
//*                                                                     
//*-----------------------------------------------------------------*   
//*                COMPILE STEP                                     *   
//*-----------------------------------------------------------------*   
//PLIO   EXEC  PGM=IBMZPLI,REGION=1024K,                               
// PARM=&PLIPARM                                                       
//STEPLIB  DD  DSN=IGY.SIGYCOMP,DISP=SHR                               
//SYSIN    DD  DSN=&SRCE(&MEMBER),DISP=SHR                             
//SYSLIB   DD  DSN=&DSCTLIB,DISP=SHR                                   
//         DD  DSN=&INDEX..SDFHPL1,DISP=SHR                             
//         DD  DSN=&INDEX..SDFHMAC,DISP=SHR                             
//         DD  DSN=&INDEX..SDFHSAMP,DISP=SHR                         
//SYSLIN   DD  DSN=&&BATCHLD,DISP=(NEW,PASS),UNIT=3390,               
//             SPACE=(TRK,(10,2)),                                   
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=2960,BUFNO=10)         
//SYSPRINT DD  SYSOUT=*                                               
//SYSTERM  DD  SYSOUT=*                                               
//SYSUDUMP DD  SYSOUT=*                                               
//SYSUT1   DD  SPACE=(100,(&STRG,&STRG),,,ROUND),UNIT=3390           
//SYSUT2   DD  SPACE=(100,(&STRG,&STRG),,,ROUND),UNIT=3390           
//SYSUT3   DD  SPACE=(100,(&STRG,&STRG),,,ROUND),UNIT=3390           
//SYSUT4   DD  SPACE=(100,(&STRG,&STRG),,,ROUND),UNIT=3390           
//SYSUT5   DD  SPACE=(100,(&STRG,&STRG),,,ROUND),UNIT=3390           
//*-----------------------------------------------------------------*
//*                LINK STEP                                        *
//*-----------------------------------------------------------------*
//LKED     EXEC PGM=IEWL,PARM='&LNKPARM',                             
//          COND=(4,LT,PLIO)                                 
//SYSLIB   DD  DSN=CEE.SCEELKED,DISP=SHR                     
//         DD  DSN=&LOADLIB,DISP=SHR                         
//SYSLIN   DD  DSN=&&BATCHLD,DISP=(OLD,DELETE),UNIT=3390,     
//             SPACE=(TRK,(10,2))                             
//         DD  DDNAME=SYSIN                                   
//SYSLMOD  DD  DSN=&LOADLIB(&MEMBER),DISP=SHR                 
//SYSPRINT DD  SYSOUT=*                                       
//SYSUDUMP DD  DUMMY                                         
//SYSIN    DD  DUMMY                                         
//SYSUT1   DD  SPACE=(TRK,(5,2)),UNIT=3390                   
//SYSUT2   DD  SPACE=(TRK,(5,2)),UNIT=3390                   
//SYSUT3   DD  SPACE=(TRK,(5,2)),UNIT=3390                   
//SYSUT4   DD  SPACE=(TRK,(5,2)),UNIT=3390                   
//     PEND                                                   


Main Program:

Code:
   TSTPL01: PROCEDURE OPTIONS(MAIN);                 
                                                     
      DCL SUBPL01 EXTERNAL ENTRY;                     
      DCL ADDR    BUILTIN;                           
                                                     
      DCL 1 STRUCT1,                                 
            2 PGMNAME           CHAR(20),             
            2 CHRVAL            CHAR(20);             
                                                     
      PUT SKIP LIST('MAIN PROGRAM STARTED...' );     
                                                     
      PGMNAME = 'TSTPL01';                           
      CHRVAL  = 'INPUT DATA';                         
                                                     
      PUT SKIP LIST('FETCHING...............' );     
      FETCH SUBPL01;                                 
      PUT SKIP LIST('CALLING................' );     
      PUT SKIP LIST('CALLING................' );     
      CALL SUBPL01;                                   
      PUT SKIP LIST('RETURNED...............' ); 
      PUT SKIP LIST('RETURNED...............' ); 
      RELEASE SUBPL01;                           
                                                 
      PUT SKIP LIST('... EXITING MAIN PROGRAM' );
                                                 
   END TSTPL01;                                   


Sub-program:

Code:
   SUBPL01: PROC;                                 
                                                 
      PUT SKIP LIST('SUB-PROGRAM STARTED...' );   
                                                 
      PUT SKIP LIST('... EXITING SUB-PROGRAM' ); 
                                                 
   END SUBPL01;


Kindly help. I am not sure where I am doing mistake.

Thank you very much for your kind help.
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7312
Location: Inside the Matrix

PostPosted: Fri Nov 07, 2014 1:04 pm
Reply with quote

Are you saying that gets you a S0C7?
Back to top
View user's profile Send private message
satish.ms10

Active User


Joined: 10 Aug 2009
Posts: 172
Location: India

PostPosted: Fri Nov 07, 2014 1:15 pm
Reply with quote

Hi Bill,

Yes, I am getting S0C7 at the CALL statement.

PUT statements executed till the CALL statement.

Thank you.
Back to top
View user's profile Send private message
prino

Senior Member


Joined: 07 Feb 2009
Posts: 1224
Location: Vilnius, Lithuania

PostPosted: Fri Nov 07, 2014 8:20 pm
Reply with quote

One: there is no numerical data in your program, so getting a S0C7 seems rather unlikely, or more to the point, it's utterly impossible!

Two:

Code:
//*-----------------------------------------------------------------*   
//*                COMPILE STEP                                     *   
//*-----------------------------------------------------------------*   
//PLIO   EXEC  PGM=IBMZPLI,REGION=1024K,
// PARM=&PLIPARM
//STEPLIB  DD  DSN=IGY.SIGYCOMP,DISP=SHR


What the fluck is 'IGY.SIGYCOMP' (the loadlib for the COBOL compiler) doing in PL/I compile JCL?????
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic All times are GMT + 6 Hours
Forum Index -> PL/I & Assembler
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Forum Replies
No new posts How syntax check at Bind time is diff... DB2 5
No new posts Compilation Error in Translation Step. CICS 4
No new posts IGYDS5000-U and IGYDS5062-U abend in ... ABENDS & Debugging 5
No new posts Reason for DSNH204I error message in ... DB2 3
No new posts Prelink and Binder step in compilatio... PL/I & Assembler 2

Back to Top