Yes, Clist (or C-List) can debug as follows: PROC 0 DEBUG /*-------------------------------------------------------------------*/ /* CLIST TO SWITCH PRIMARY/SECONDARY PFKEYS */ /* */ /*-------------------------------------------------------------------*/ CONTROL: + CONTROL MAIN END(ENDO) IF &DEBUG = DEBUG | &DEBUG = D THEN + CONTROL LIST SYMLIST CONLIST MSG /* to debug */ ELSE + CONTROL NOLIST NOSYMLIST NOCONLIST NOMSG/* not to debug */
ERROR: + ERROR DO CONTROL LIST SYMLIST CONLIST MSG RETURN ENDO ERROR INITS: + SET ZPF = &&ZPF /* set up ZPF as an array */ SET OZPF = &&OZPF /* ditto OZPF */ GET_PFKEYS: + DO I = 1 TO 24 SET X = &SUBSTR(&LENGTH(&I):&LENGTH(&I)+1,0&I) ISPEXEC VGET (ZPF&X) PROFILE/* VGET element X in array ZPF */ SET OZPF&X = &STR(&ZPF&X) /* copy ZPF.X to element X in array OZPF */ ENDO GET_PFKEYS SET_PFKEYS1: + DO I = 1 TO 12 SET X = &SUBSTR(&LENGTH(&I):&LENGTH(&I)+1,0&I) SET ZPF&X = &STR(&OZPF&EVAL(&X+12)) ISPEXEC VPUT (ZPF&X) PROFILE ENDO SET_PFKEYS1 SET_PFKEYS2: + DO I = 1 TO 12 SET X = &SUBSTR(&LENGTH(&I):&LENGTH(&I)+1,0&I) SET Y = &X + 12 SET ZPF&Y = &STR(&OZPF&X) ISPEXEC VPUT (ZPF&Y) PROFILE ENDO SET_PFKEYS2 EXIT: + EXIT CODE(&MAXCC) *As for:* SET VARNX = &&VARN&GLCV IF (&VARNX = &SYMBOL) THEN DO SET VARFND = 1 SET VARVX = &&VARV&GLCV SET SYMBOL = &STR(&VARVX) END &&VARN is an arrayand &GLCV is the element in that array; so VARNX is being set to the value of element &GLCV in array &&VARN. In REXX "SET VARNX = &&VARN&GLCV" would be coded as "VARNX = VARN.GLCV". 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 - such as: PROC 2 DESTLIST MESSAGE DEBUG USERID CONSOLE /*-------------------------------------------------------------------*/ /* N.B. DEFAULT IS 'NOW' */ /* 'LOGON' -> 'NOW' IF LOGGED ON, ELSE AT LOGON TIME. */ /* 'SAVE' -> ONLY AT NEXT LOGON TIME (OR LISTBC) */ /* */ /* PARMS: DESTLIST DDNAME OF USERS/CONSOLES TO WHOM MESSAGE IS TO */ /* BE SENT - DEFAULT=NONE */ /* MESSAGE: DDNAME OF MESSAGE TEXT TO BE SENT - DEFAULT=NONE */ /* DEBUG: SETS TRACE ON - DEFAULT=OFF */ /* */ /* 13/12/94 CMP - ALLOW SENDING TO USERID(S) OR TO MVS CONSOLE(S) */ /* 17/04/89 CMP */ /*-------------------------------------------------------------------*/ /* etc. etc. */ SET USREC = &&&DESTLIST /* define USREC as being a record in DDNAME=&DESTLIST */ SET MSGREC = &&&MESSAGE /* etc. */ 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. */ HTH - Cheers, Chris Poncelet (retired sysprog) On 19/03/2020 18:43, Charles Mills wrote: > Does CLIST have the kind of debugging facility that Rexx has? Can you assign > some initial values and then step through the code seeing what is happening? > I am going to guess not, but thought it worth asking. > > I know nada CLIST. When I left the OS/360 family of operating systems > somewhere around 1975 TSO was mostly a slow curiosity and when I came back > around 1990 Rexx was powerful, widely available and I knew it from CMS. > Whenever I opened a member and it was in CLIST I quickly closed it again. > > Charles > > ---------------------------------------------------------------------- > 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