Paul,

Note in your example that lines 3 and 4 are NOT followed by message
IEFC653I as they would be if any symbol substitution took place. The
reason your example does not work is because when lines 3 and 4 are
evaluated, &MYSYM has not yet been assigned any value, therefore the JCL
processor does not yet consider it to be a symbol.

On lines 3 and 4 it is treated as a literal and &SAVESYM is set to the
literal value "&MYSYM" rather than the value of the symbol &MYSYM.

If &MYSYM is assigned a value prior to line 3, it works as expected.

2 // SET MYSYM='INITVAL'                                  
3 //BEFORE   EXEC  PGM=IEFBR14,PARM='&MYSYM.X'            
  //*                                                     
  //***** SAVE CURRENT VALUE OF MYSYM                     
  IEFC653I SUBSTITUTION JCL - PGM=IEFBR14,PARM='INITVALX' 
4 // SET SAVESYM=&MYSYM                                   
  //***** SET MYSYM TO A NEW VALUE                        
  IEFC653I SUBSTITUTION JCL - SAVESYM=INITVAL             
5 // SET MYSYM='NEWVAL'                                   
6 //DURING   EXEC  PGM=IEFBR14,PARM='&MYSYM.X'            
  //*                                                     
  //***** RESTORE MYSYM                                   
  IEFC653I SUBSTITUTION JCL - PGM=IEFBR14,PARM='NEWVALX'  
7 // SET MYSYM=&SAVESYM                                   
  IEFC653I SUBSTITUTION JCL - MYSYM=INITVAL               
8 //AFTER    EXEC  PGM=IEFBR14,PARM='&MYSYM.X'            
  IEFC653I SUBSTITUTION JCL - PGM=IEFBR14,PARM='INITVALX' 

Thanks,
Bill

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:[email protected]] On
Behalf Of Paul Gilmartin
Sent: Tuesday, July 17, 2012 6:06 PM
To: [email protected]
Subject: Re: Unsetting a JCL symbol.

On Tue, 17 Jul 2012 16:43:32 -0500, Bass, Walter W wrote:

>Try this ...
>
>//***** SAVE CURRENT VALUE OF MYSYM
>// SET SAVESYM=&MYSYM
>//***** SET MYSYM TO A NEW VALUE
>// SET MYSYM='NEWVAL'
>
>...
>//***** RESTORE MYSYM
>// SET MYSYM=&SAVESYM
>
>Probably not the answer you wanted, but it works.  
>
Actually, it doesn't work:

        3 //BEFORE   EXEC  PGM=IEFBR14,PARM='&MYSYM.X'            
          //*                                                     
          //***** SAVE CURRENT VALUE OF MYSYM                     
        4 // SET SAVESYM=&MYSYM                                   
          //***** SET MYSYM TO A NEW VALUE                        
        5 // SET MYSYM='NEWVAL'                                   
        6 //DURING   EXEC  PGM=IEFBR14,PARM='&MYSYM.X'            
          //*                                                     
          //***** RESTORE MYSYM                                   
          IEFC653I SUBSTITUTION JCL - PGM=IEFBR14,PARM='NEWVALX'  
        7 // SET MYSYM=&SAVESYM                                   
          IEFC653I SUBSTITUTION JCL - MYSYM=&MYSYM                
        8 //AFTER    EXEC  PGM=IEFBR14,PARM='&MYSYM.X'            
          IEFC653I SUBSTITUTION JCL - PGM=IEFBR14,PARM='&MYSYMX'  
        9 //                                                      

... notice the difference between lines 3 and 8.

>Another possibility is to take advantage of the fact that symbols that 
>are SET within a PROC automatically revert to their former value after 
>the PROC terminates.
>
That one I believe.  Steve suggested it too.  But in open code, there
seems to be no solution.  Symbols are initially in a Garden of Eden
state (which John G. dislikes).  Once they leave they can never return.

-- gil

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send
email to [email protected] with the message: INFO IBM-MAIN

This e-mail, including attachments, may include confidential and/or
proprietary information, and may be used only by the person or entity
to which it is addressed. If the reader of this e-mail is not the intended
recipient or his or her authorized agent, the reader is hereby notified
that any dissemination, distribution or copying of this e-mail is
prohibited. If you have received this e-mail in error, please notify the
sender by replying to this message and delete this e-mail immediately.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to