Yes, SET SYSSCAN=0 is the same as SET &SYSSCAN=0.
 
By default, SYSSCAN=16. If it is overridden as, say, SET SYSSCAN=2 then
SYSSCAN=2 remains in effect until it is overridden again or restored to
its default value SYSSCAN=16 (which always applies, by default, unless
overridden.)
 
"You can assign &SYSSCAN a value from 0 to +2,147,483,647 (2³¹-1)" - not
quite: SYSSCAN can be set to 1 or 3 etc. if/as required. I have never
used 2³¹-1.E.g. Use of SYSSCAN = 1 & 2:

/* ALLOW FOR & OR ARITHMETIC OPERATION CHARACTERS IN &CO AND &PI */
             SET SYSSCAN = 1             /* <-- e.g. HERE */
             ERROR DO
               SET SYSSCAN = 2           /* <-- e.g. HERE */
               SET COMM&T = &STR(&CO)
               SET SYSSCAN = 1           /* <-- e.g. HERE */
               RETURN
               ENDO
             SET COMM&T = &CO
             SET SYSSCAN = 16
             ISPEXEC VPUT (COMM&T) PROFILE


In practice SYSSCAN would be set to whatever is appropriate, as in e.g.
 
DO I = 1 TO 999 WHILE &MAXCC = 0
  ISREDIT (DATALINE) = LINE .ZCSR
  SET X = &SYSINDEX(&STR(,),&SUBSTR(1:27,&DATALINE),19)
  IF &X = 0 THEN +
    DO
    SET MODULE = &SUBSTR(19:22,&DATALINE)
    SET PREFIX = &SUBSTR(24:27,&DATALINE)
    ENDO
  ELSE +
    DO
    SET MODULE = &SUBSTR(19:&X-1,&STR(&DATALINE))
    SET PREFIX = &SUBSTR(&X+1:&X+4,&STR(&DATALINE))
    ENDO
  SELECT (&PREFIX)
    WHEN ()     SET MODULE = WHAT&MODULE
    WHEN (WOT1) SET MODULE = WHB1&MODULE
    WHEN (WOT2) SET MODULE = WHB2&MODULE
    OTHERWISE
  ENDO
  SET J = &SUBSTR(&LENGTH(&I):&LENGTH(&I)+3,000&I)
  ISREDIT LINE_AFTER  .ZCSR = +
    DATALINE "&STR(.C&J   ANOP                        )"
  SET SYSSCAN = 2                    /* <-- e.g. HERE */
  ISREDIT LINE_BEFORE .ZCSR = +
    DATALINE "&STR(         AIF (&&&&NOTRACE EQ 0).T&J)"
  SET SYSSCAN = 16
  ISREDIT LINE_BEFORE .ZCSR = +
    DATALINE "&STR(         WOTBASR &MODULE)"
  ISREDIT LINE_BEFORE .ZCSR = +
    DATALINE "&STR(         AGO   .C&J                  )"
  ISREDIT LINE_BEFORE .ZCSR = +
    DATALINE "&STR(.T&J   ANOP                        )"
  ISREDIT FIND EXECBASR 10 NEXT
  ENDO
 


On 23/09/2021 18:15, Paul Gilmartin wrote:
> On Thu, 23 Sep 2021 16:33:34 +0100, CM Poncelet  wrote:
>
>> To prevent the command processor from substituting whatever looks like a
>> variable, code SYSSCAN={0||1|2|3}, 
>>
> (I don't know CLIST.)  Is that equivalent to what I see in the Ref.:
>     SET &SYSSCAN=0
>     You can assign &SYSSCAN a value from 0 to +2,147,483,647 (2³¹-1). 
>
> Commas?  Can this loop to that max value?  How long does that take?
>
>>    ... then issue the &NRSTR(), then reset to SYSSCAN=16 (default.) 
>>
> Would it be better to save and restore the previous value?
>
> Is 16 a particularly useful value?  Has anyone ever relied on that exact 
> value?
>
>> SYSSCAN=n means substitute up to n &s.
>> SYSSCAN=0 means no & should be substituted. 
>>  
>> To debug/trace, code CONTROL LIST SYMLIST CONLIST MSG before the 1st
>> SYSSCAN and CONTROL NOLIST NOSYMLIST NOCONLIST NOMSG after the 2nd SYSSCAN.
> -- 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

Reply via email to