If you, like me, always write your REXX code beginning with a "signal on novalue" (to prevent the use of uninitialized variables), then you (like me) always want to make sure that all your variables are properly initialized. Here's a fast way to initialize a whole load of variables WHAM!:
parse value "0 0 0 0 0 0 0" with , rpt# rpt. , . parse value "" with , slist ltoken stoken loadlist , tag taglist , . parse value 0 "ISR00000 YES Error-Press PF1" with, sw. zerrhm zerralrm zerrsm
The first PARSE uses a string of several (many, a whole lot of) zeroes because it's concerned with zeroing-out several counters, among which are 'rpt#' and 'rpt.'. Note the '.' on the last line to flush any unused zeroes.
Any number of counters can be zeroed in a single PARSE by just adding their names to the list. If more zeroes are needed in the value-pattern, they are easy enough to add because you never have to count. Need a few more? Add another twenty or thirty!
The second PARSE is concerned with variables that need to be blanked-out. Here, you never have to worry about whether there are enough blanks. To add another variable-to-be-blanked, just add it to the existing list.
The third PARSE initializes a collection of variables to several different values. 'sw.' is set to '0'; 'zerrhm' is set to 'ISR00000'; 'zerrsm' is set to 'Error-Press PF1'; &cetera. PARSEs of this type need to be carefully constructed.
Rather than have each variable assigned its value on a separate line, this technique clusters many assignments together in a compact form that does not distract from reading the code for comprehension, it is at least as fast, execution-wise, as doing them one-by-one, and it's a heckuvalot easier to type.
Les Koehler points out that he prefers (for speed)
ReplyDeleteParse Value copies('0 ',40) with ctra ctrb .
and that characters like '#', '@', '$', and some others are not valid in ANSI-compliant versions.
It's really awesome.. I want to send an email through Rexx (foreground not in batch mode) How i achieve it .. please help me on this.
ReplyDelete