REXX examples
Both DFSORT and ICETOOL can be called from REXX. The key is to
specify ALLOCATE statements for the data sets you need and then use
an ADDRESS statement like this:
ADDRESS LINKMVS namewhich says to fetch the named program using the standard
system search list.Here is an example of a REXX CLIST to call DFSORT:
/* Simple REXX CLIST to call DFSORT */
"FREE FI(SYSOUT SORTIN SORTOUT SYSIN)"
"ALLOC FI(SYSOUT) DA(*)"
"ALLOC FI(SORTIN) DA('Y897797.INS1') REUSE"
"ALLOC FI(SORTOUT) DA('Y897797.OUTS1') REUSE"
"ALLOC FI(SYSIN) DA('Y897797.SORT.STMTS') SHR REUSE"
ADDRESS LINKMVS ICEMANHere are the DFSORT control statements that might appear in the
Y897797.SORT.STMTS data set:
SORT FIELDS=(5,4,CH,A)
INCLUDE COND=(21,3,SS,EQ,C'L92,J82,M72')Here is an example of a REXX CLIST to call ICETOOL:
/* Simple REXX CLIST to call ICETOOL */
"FREE FI(TOOLMSG DFSMSG VLR LENDIST TOOLIN)"
"ALLOC FI(TOOLMSG) DA(*)"
"ALLOC FI(DFSMSG) DUMMY"
"ALLOC FI(VLR) DA('Y897797.VARIN') REUSE"
"ALLOC FI(LENDIST) DA(*)"
"ALLOC FI(TOOLIN) DA('Y897797.TOOLIN.STMTS') SHR REUSE"
ADDRESS LINKMVS ICETOOLHere are the ICETOOL statements that might appear in the Y897797.TOOLIN.STMTS
data set:
OCCURS FROM(VLR) LIST(LENDIST) -
TITLE('LENGTH DISTRIBUTION REPORT') BLANK -
HEADER('LENGTH') HEADER('NUMBER OF RECORDS') -
ON(VLEN) ON(VALCNT)