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