IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

Substitution jcl not substituting


IBM Mainframe Forums -> JCL & VSAM
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
bbxrider

New User


Joined: 25 Feb 2008
Posts: 5
Location: stockton ca

PostPosted: Sat Jun 07, 2008 4:57 am
Reply with quote

this is a company proc for cobol compile and link and debugger setup
there is an extract step to get the source code from a panvalet lib
below is the jcl to invoke the proc and substitution i have coded
//JS010 EXEC COMP370B,
// YOURID='TMCTR1B',
// STAGE='PROD',
// MEMBER='MCD149',
// PARM.COBOL=RENT,REGION=1400K,
// PARM.LKED='LIST,XREF,LET,MAP'
//*
//EXTRACT.PANDD1 DD DSN=TMCTR1B.PAN.COBOL ** INPUT PANVALET DS
//EXTRACT.SYSIN DD *
++WRITE WORK,PGMID


but below is the job output showing the substitution is different
its subbing tmcal.tmctr1b.sorpan instead of tmctr1b.pan.cobol from above
XXEXTRACT EXEC PGM=PAN#1, ** WRITE PGM TO SEQ FILE
XX REGION=0K
XX*
//EXTRACT.PANDD1 DD DSN=TMCTR1B.PAN.COBOL ** INPUT PANVALET DS
X/PANDD1 DD DSN=TMCAL.&YOURID..SORPAN, ** INPUT PANVALET DS
X/ DISP=(SHR,KEEP,KEEP)
IEFC653I SUBSTITUTION JCL - DSN=TMCAL.TMCTR1B.SORPAN[/b],DISP=(SHR,KEEP,K
XXPANDD2 DD DSN=&&SEQWORK, ** OUTPUT SEQUENTIAL DS

???????? i remeber something special can take place in the procs if the substitution line is coded as '/x' instead of the standard '//'
but not sure and am stuck here
bob
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Sat Jun 07, 2008 5:17 am
Reply with quote

Hello Bob and welcome to the forums,

When a proc expands, the // are the jcl, the XX are straight expansion from the cataloged proc, and X/ are statements resolved during expansion.

Please post the first part of your compile proc thru the step after "extract".
Back to top
View user's profile Send private message
gcicchet

Senior Member


Joined: 28 Jul 2006
Posts: 1702
Location: Australia

PostPosted: Sat Jun 07, 2008 6:13 am
Reply with quote

Hi Bob,
there is no problem with your JCL. it's only symblic parameters that get substituted,

X/ as Dick mentioned shows the DD statement that has been overridden but will not show you the new name as being substitued, in your case PANDD1.

Run your job, it should be ok.

Gerry
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Sat Jun 07, 2008 7:38 am
Reply with quote

Hi Gerry,

My interpretation may have been off - that the job did not run as expected (hence the request to see that part of the proc). . .

Bob,

If it did run ok, no need to post the proc icon_smile.gif - but do let us know if you're good to go.

d
Back to top
View user's profile Send private message
bbxrider

New User


Joined: 25 Feb 2008
Posts: 5
Location: stockton ca

PostPosted: Sat Jun 07, 2008 11:54 pm
Reply with quote

thanks for the replies, i wont be able to post any other pieces of the proc until monday back at work but will try to explain problem more here in the meantime.
this is kinda standard compile stream getting source from panvalet, etc
i want the compile to get the source extracted from tmctr1b.pan.cobol, and passed to the compile as sysin, the 'member' is also a parm, see 3rd card after the proc exec. however, the 'substituted' dsn on the x/ card is 'tmcal.&yourid..sorpan', not the right dataset.
i thought my //extract.pandd1 override card would cause the stream to substitute and point to my desired dsn, tmctr1b.pan.cobol
the compile step returns 16 with a message something to the effect that there was no sysin data, which i'm thinking it tried to pull member 'mcd149' out of tmcal.tmctr1b.sorpan, but that pds does not exist
since there is no tmcal.tmctr1b.sorpan i would have thought the job would have a bad return code in the 'extract' step due to data set not found
phew
just to beat this a little further, i was expecting the iefc message to be
IEFC653I SUBSTITUTION JCL - DSN=TMCTR1B.PAN.COBOL[/b],DISP.......
instead of what it did substitute
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Sun Jun 08, 2008 1:38 am
Reply with quote

Hello,

Quote:
but that pds does not exist
I've not worked closely (at a lower level) with Panvalet, but if it works anything like Librarian (and i believe it does), the source is not in a pds - it is in a file with a proprietary format. If this is correct a pds may not be substituted for a panvalet library. You would need a different "front-end" to create the sysin for the compiler.

Is there some reason not to put the module into Panvalet with a new name?
Back to top
View user's profile Send private message
bbxrider

New User


Joined: 25 Feb 2008
Posts: 5
Location: stockton ca

PostPosted: Tue Jun 10, 2008 5:43 am
Reply with quote

thanks again for the replies, turns out it local knowledge and imho, better instructions for the jcl mask that invokes the proc.
turns out my override was ok for the source pds.
the jcl indicates you only need to specify the source 'member' name in one place, see 'member' below
//JS010 EXEC COMP370B,
// YOURID='TMCTR1B',
// STAGE='PROD',
// MEMBER='MCD149',
// PARM.COBOL=RENT,REGION=1400K,
// PARM.LKED='LIST,XREF,LET,MAP'
however, the member name also needs to specified in an override for the extract sysin card for PGMID, see below
//EXTRACT.SYSIN DD *
++WRITE WORK,PGMID
so this literally needs to be coded as
//EXTRACT.SYSIN DD *
++WRITE WORK,MCD149

so the member name needs to be specified a 2nd time, sorry about the confusion on the issue.
bob
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Tue Jun 10, 2008 6:04 am
Reply with quote

You're welcome - good to hear that it is now working.

Thanks for posting the resolution icon_smile.gif

d
Back to top
View user's profile Send private message
Subha Sreenivasan

New User


Joined: 04 Aug 2008
Posts: 5
Location: Chennai

PostPosted: Thu Jan 15, 2009 3:00 pm
Reply with quote

Hi,

On getting the information from the above replies we had tried to extract the member from PANVALET library with the following JCL

//STEP1 EXEC PGM=PAN#1
//DD1 DD DSN=TNAME.PROD.PANLIB,DISP=SHR
//SYSIN DD *
++WRITE WORK,PGMNAME
//* ******

The member name is PGMNAME, PANVALET library name is TNAME.PROD.PANLIB. On executing the above JCL we are getting an abend U0205. Kindly correct us and help us to extract the member from PANVALET to a sequential file.
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Thu Jan 15, 2009 9:06 pm
Reply with quote

Hello,

What does the Panvalet documentation say about a U0205?

There is possibly additional diagnostic info in the output from the job as well.

Suggest you look at a compile from a Panvalet library that is working and compare your extract that abends to what is done in the process that is working.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> JCL & VSAM

 


Similar Topics
Topic Forum Replies
No new posts disable /*XEQ substitution in TWS IBM Tools 4
No new posts z/OS V2.1 Instream substitution of sy... JCL & VSAM 0
No new posts Rexx Variable Substitution with POS c... CLIST & REXX 8
No new posts Using dynamic substitution in jcl on ... JCL & VSAM 14
No new posts GDG substitution JCL & VSAM 7
Search our Forums:

Back to Top