Page 1 of 1

JCL Error, Compile PL/1

PostPosted: Wed Nov 05, 2014 12:28 pm
by admiral00
Hi!

I get an JCL Error on binding a PL/1 Prgramm:

//MYUSER JOB (QA0000),'P PROG1',MSGLEVEL=(1,1),REGION=0M,
//             MSGCLASS=A,CLASS=A,NOTIFY=&SYSUID         
//*                                                       
//         JCLLIB ORDER=(IBMZ.SIBMZPRC)                   
//CMPRUN   EXEC IBMZCBG,REGION.PLI=32M                   
//STEPLIB  DD DSN=IBMZ.SIBMZCMP,DISP=SHR                 
//PLI.SYSIN DD DSN=MYUSER.TEST.PL1(PROG1),DISP=SHR       
//                                           


How can i solve this Error?

IEF344I MYUSERX BIND CMPRUN SYSLMOD - ALLOCATION FAILED DUE TO DATA FACILITY SYSTEM ERROR
IGD01015I DATA SET ALLOCATION REQUEST FAILED -                                 
THE ACS STORAGE GROUP ROUTINE ASSIGNED A                                       
DSNTYPE=LIBRARY DATA SET TO A STORAGE GROUP                                     
WHICH IS NOT OF TYPE POOL                                                       
IEF272I MYUSERX BIND CMPRUN - STEP WAS NOT EXECUTED.                           
IEF285I   MYUSER.MYUSERX.JOB35380.D0000103.?         SYSOUT                   
IEF373I STEP/BIND    /START 2014309.0755                                       
IEF032I STEP/BIND    /STOP  2014309.0755                                       
        CPU:     0 HR  00 MIN  00.00 SEC    SRB:     0 HR  00 MIN  00.00 SEC   
        VIRT:     0K  SYS:     0K  EXT:        0K  SYS:        0K               

Re: JCL Error, Compile PL/1

PostPosted: Wed Nov 05, 2014 3:05 pm
by prino
This statement

//SYSLMOD  DD  DSN=&&GOSET(&GOPGM),DISP=(MOD,PASS),UNIT=SYSALLDA,
//             SPACE=(1024,(50,20,1)),DSNTYPE=LIBRARY


is the culprit. Try changing SYSALLDA into SYSDA and/or removing the ',DSNTYPE=LIBRARY'...

Re: JCL Error, Compile PL/1

PostPosted: Wed Nov 05, 2014 4:02 pm
by admiral00
Thank you!

Now it works!

I changed my JCL to:

//MYUSER JOB (QA0000),'C PROG1',MSGLEVEL=(1,1),REGION=0M,   
//             MSGCLASS=A,CLASS=A,NOTIFY=&SYSUID             
//*                                                           
//         JCLLIB ORDER=(IBMZ.SIBMZPRC)                       
//CMPRUN   EXEC IBMZCBG,REGION.PLI=32M                       
//STEPLIB  DD DSN=IBMZ.SIBMZCMP,DISP=SHR                     
//PLI.SYSIN DD DSN=MYUSER.TEST.PL1(PROG1),DISP=SHR           
//SYSLMOD  DD  DSN=&&GOSET(&GOPGM),DISP=(MOD,PASS),UNIT=SYSDA,
//             SPACE=(1024,(50,20,1))                         
//

Re: JCL Error, Compile PL/1

PostPosted: Wed Nov 05, 2014 10:23 pm
by steve-myers
admiral00 wrote:Thank you!

Now it works!

I changed my JCL to:

//MYUSER JOB (QA0000),'C PROG1',MSGLEVEL=(1,1),REGION=0M,   
//             MSGCLASS=A,CLASS=A,NOTIFY=&SYSUID             
//*                                                           
//         JCLLIB ORDER=(IBMZ.SIBMZPRC)                       
//CMPRUN   EXEC IBMZCBG,REGION.PLI=32M                       
//STEPLIB  DD DSN=IBMZ.SIBMZCMP,DISP=SHR                     
//PLI.SYSIN DD DSN=MYUSER.TEST.PL1(PROG1),DISP=SHR           
//SYSLMOD  DD  DSN=&&GOSET(&GOPGM),DISP=(MOD,PASS),UNIT=SYSDA,
//             SPACE=(1024,(50,20,1))                         
//
Great!

Now you can learn something from this. All you had to do is this.

//BIND.SYSLMOD DD UNIT=SYSDA,DSNTYPE=

Actually, what you did didn't really change anything. The SYSLMOD DD statement you used was applied to the PLI step, where it is not used. If you want an override DD statement applied to a step that is not the first step in a procedure you must specify the step name in the DD statement. The SYSLMOD DD statement in the BIND step created a new, different, data set that was used in the BIND and GO steps. You should blow the dust off the JCL Reference manual for your z/OS release and find out why the DD statement I just wrote is sufficient.

I looked over the messages which you were smart enough to provide, and I must admit I really don't know what's going on. I sort of suspect you are running a very back level OS/390 system that requires PDSE to be allocated in SMS managed storage, but I can't prove it with what little I see here.

By the way, I must respectfully disagree with Mr. Prins in one other detail. The DSNTYPE=LIBRARY parameter is specified in the IBM procedure for a reason. It may be something as stupid as IBM wants people to use PDSE since it requires more space and more CPU time than PDS, both of which may be laudable goals from IBM's point of view. Sorry about being such a cynic. On the other hand, it may really be a requirement for some situations. Mr. Prins is the PL/I expert in these forums, so he presumably knows more about it than me.

Re: JCL Error, Compile PL/1

PostPosted: Thu Nov 06, 2014 4:33 am
by prino
steve-myers wrote:By the way, I must respectfully disagree with Mr. Prins in one other detail. The DSNTYPE=LIBRARY parameter is specified in the IBM procedure for a reason. It may be something as stupid as IBM wants people to use PDSE since it requires more space and more CPU time than PDS, both of which may be laudable goals from IBM's point of view. Sorry about being such a cynic. On the other hand, it may really be a requirement for some situations. Mr. Prins is the PL/I expert in these forums, so he presumably knows more about it than me.

The (probable) reason for using a PDSE is the fact that Enterprise PL/I can compile huge programs, and as a consequence, generate humongous object files that, when linked require program objects rather than load modules.

Re: JCL Error, Compile PL/1

PostPosted: Thu Nov 06, 2014 6:31 am
by steve-myers
Agreed. However, load modules can be 16 meg, which is possible, though unlikely (in my opinion), even for something as verbose as C and Enterprise PL/I. More likely is they require external names longer than 8 bytes, which load modules cannot handle.