Here's a rexx example of a variable containing the names of other variables
that hold values:

/* This is the main REXX program */
j=1;k=6;m=9
a ='j k m'
call test
exit

/* This is a subroutine     */
test: procedure expose (a)   /* Exposes A, J, K, and M     */
  say a j k m                /* Displays "j k m 1 6 9"     */
  return


https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.4.0/com.ibm.zos.v2r4.ikja300/proced.htm


I've not used this feature, but merely came across it recently.

On Fri, Mar 20, 2020 at 7:38 PM CM Poncelet <ponce...@bcs.org.uk> wrote:

> No, there is no problem with that. I assume you meant "EXECIO 1 DISKR
> "ddn1" (STEM foo."
>
> The problem happens e.g. if a variable X contains the names of other
> variables, which in turn contain the names of yet other variables etc.
> etc. which finally - with say names Z1 Z2 Z3 etc. - have values that
> need to be accessed.
>
> We can "VPUT X (and all the other variables' names) SHARED" and call an
> external exec. It issues "VGET X SHARED" and then "VGET "X" SHARED". But
> how does it then VGET the other variables and their values in such way
> that they can be processed? The variable names can be VGET as data, but
> REXX cannot use data - such as names Z1 Z2 Z3 etc. - as names of
> variables (although INTERPRET *might* be able to fix that.)
>
> Clist can allocate variable names dynamically, using &'s, and can then
> use SYSSCAN to control how many &'s are interpreted. Its problem is it
> cannot ADDRESS environments and cannot process binary data, which REXX can.
>
> Cheers.
>
>
> On 20/03/2020 04:22, Seymour J Metz wrote:
> > I don't see the problem.
> >
> >    /* REXX */
> >    parse arg upper ddn1 ddn2
> >    EXECIO DISKR ddn1 1 '(' STEM foo.
> >    do i=1 to foo.0
> >       say 'Line' i 'is' foo.i
> >       end
> >
> >
> > --
> > Shmuel (Seymour J.) Metz
> > http://mason.gmu.edu/~smetz3
> >
> > ________________________________________
> > From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on
> behalf of CM Poncelet [ponce...@bcs.org.uk]
> > Sent: Friday, March 20, 2020 12:07 AM
> > To: IBM-MAIN@LISTSERV.UA.EDU
> > Subject: Re: Does anybody remember CLIST?
> >
> > As mentioned above, EXECIO is part of TSO REXX.
> >
> > The problem is not EXECIO but with reading the records of a dataset
> > assigned to an arbitrary DDNAME passed as a parm to REXX.
> >
> > Consider the folowing:
> >
> > //*********************************************************************
> > //* NOTE: 'U' => TSO USERID(S); SPECIFY LIST OF USERIDS UNDER DESTIDS *
> > //* ¯¯¯¯¯ 'C' -> CONSOLE; SPECIFY MASTER ETC. UNDER CONSIDS           *
> > //*                                                                   *
> > //* 04/01/95 CMP                                                      *
> > //*********************************************************************
> > //*
> > //CLIST   EXEC PGM=IKJEFT01,
> > //             REGION=512K,
> > //*           PARM='%TSOSEND DESTIDS SYSIN USERID'  (DESTLIST=DESTIDS)
> > //            PARM='%TSOSEND CONSIDS SYSIN CONSOLE' (DESTLIST=CONSIDS)
> > //*
> > //SYSPROC  DD  DISP=SHR,DSN=<Clist dataset>
> > //SYSTSIN  DD  DUMMY
> > //SYSTSPRT DD  SYSOUT=*
> > //CONSIDS  DD  *
> > <master console ID>
> > //*
> > //SYSIN    DD  *  (all messages below are sent to the console)
> > Dear MVS OPS,
> >
> > Could someone please start DMSAR on LPAR1 and LPAR2 so my job can
> > restore datasets from pseudo-volume <whatever>? It's been waiting
> > for 2 1/2 hours.
> >
> > Here's part of the joblog (jobname on LPAR1):
> > 14.58.46 JOB15032 ---- <whenever> ----
> > 14.58.46 JOB15032  <whatever>
> > 14.58.46 JOB15032  <whatever>
> > 16.00.08 JOB15032  MSG FROM OPER:  '***********************************
> > 16.00.08 JOB15032  MSG FROM OPER:  '* THIS JOB IS BEING AUTOMATICALLY C
> > 16.00.08 JOB15032  MSG FROM OPER:  '* BEEN RUNNING IN A CLASS ID INITIA
> > 16.00.08 JOB15032  MSG FROM OPER:  '* CLASS ID INITIATORS ARE TO BE USE
> > 16.00.09 JOB15032  MSG FROM OPER:  '* JOBS. REFER TO SYSPROG.PRODUCTS($
> > 16.00.09 JOB15032  MSG FROM OPER:  '* INITIATOR CLASSES.
> > 16.00.09 JOB15032  MSG FROM OPER:  '***********************************
> > <etc.....>
> > 16.45.05 JOB15032  MSG FROM OPER:  '***********************************
> > 16.45.05 JOB15032  MSG FROM OPER:  '* THIS JOB IS BEING AUTOMATICALLY C
> > 16.45.05 JOB15032  MSG FROM OPER:  '* BEEN RUNNING IN A CLASS ID INITIA
> > 16.45.05 JOB15032  MSG FROM OPER:  '* CLASS ID INITIATORS ARE TO BE USE
> > 16.45.05 JOB15032  MSG FROM OPER:  '* JOBS. REFER TO SYSPROG.PRODUCTS($
> > 16.45.05 JOB15032  MSG FROM OPER:  '* INITIATOR CLASSES.
> >
> > Thanks a lot.
> >
> > Chris
> >
> > /*
> > //*
> >
> > Which is quicker - manually issuing 'oodles' of TSOSENDs (1 per message
> > line) to the console, or sending all messages together via SYSIN?
> >
> > That's why I used Clist for that <grin>.
> >
> > Cheers, Chris Poncelet
> >
> >
> >
> > On 20/03/2020 00:51, Paul Gilmartin wrote:
> >> On Fri, 20 Mar 2020 00:33:40 +0000, CM Poncelet wrote:
> >>>      ...
> >>> BTW Some things can be done in Clist which cannot (well at least not
> >>> easily) be done in REXX, e.g. opening/reading a dataset associated with
> >>> a DDNAME passed as a parm to a Clist submitted as a batch TSO job via
> >>> JCL    ...
> >>>
> >> If EXECIO were part of Rexx, couldn't it be done with EXECIO?
> >>
> >>>    ...
> >>> SET MAXCC = 0
> >>> OPENFILE &DESTLIST INPUT  /* open DDNAME=&DESTLIST for reading */
> >>> GETFILE &DESTLIST         /* read the 1st record in DDNAME=&DESTLIST */
> >>> DO I = 0 TO 99 WHILE &MAXCC = 0
> >>>   SET USER = &USREC
> >>>   SET J = &SYSINDEX(&STR( ),&USER,1)
> >>>   SET J = &J - 1
> >>>   SET USER = &SUBSTR(1:&J,&USER)
> >>>   SET SENDTO = &STR(&SENDTO&USER,)
> >>>   GETFILE &DESTLIST
> >>>   ENDO
> >>> /* etc. etc. */
> >>>
> >> Grrr.  The over-and-under test for completion is a treacherous
> >> construct; a maintenance pitfall.  In Rexx, I prefer LEAVE.
> >>
> >> -- gil
> >>
> >> ----------------------------------------------------------------------
> >> For IBM-MAIN subscribe / signoff / archive access instructions,
> >> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> >> .
> >>
> > ----------------------------------------------------------------------
> > For IBM-MAIN subscribe / signoff / archive access instructions,
> > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> >
> > ----------------------------------------------------------------------
> > For IBM-MAIN subscribe / signoff / archive access instructions,
> > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> > .
> >
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to