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