Now it works!
I changed my JCL to:
//MYUSER JOB (QA0000),'C PROG1',MSGLEVEL=(1,1),REGION=0M,
// 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,
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.