/*********************************************************************/ /* REXX -- LEFT JUSTIFY all lines within C or CC range */ /* author: David McRitchie, "The REXX Macros Toolbox", 1992/04/30 */ /* (default) left justify each line to first non blank (p'ª') */ /* NB left justify each line to first non blank (p'ª') */ /* Q left justify each line to first single quote ("'") */ /* QQ left justify each line to first double quote ('"') */ /* string left justify to any character or string */ /* token2 align string at specified column even if loss of data */ /* if string does not exist line remains unchanged */ /* words must be capitalized C ISPEXEC ISREDIT NOPROCESS PROCESS */ /* capitalized for comparison NB Q QQ */ /* on SPF/PC 1) change ª to ^, 2) comment CONTROL ERRORS lines, */ /* 3) remove ADDRESS from MSG( lines and capitalize */ /* Examples: token2 for column added 1997/05/31 */ /* left@ left justify entire line */ /* left@ QQ left justify double quote */ /* left@ . 10 justify period to column 10 even if losses data */ /* left@ ";" 10 justify semi-colon to column 10 ... */ /* ***************************************************************** */ /*********************************************************************/ address "ISREDIT" "macro NOPROCESS (token,token2)" token = translate(token) /* convert to uppercase for comparisons */ if token = "" then token = "NB" /* set default if missing */ /*********************************************************************/ /* ADDRESS "ISPEXEC" "CONTROL ERRORS RETURN" */ /*********************************************************************/ "PROCESS range C" if rc <= 8 then do /* < 8 on tso, <= 8 spf/pc*/ labf = ".zfrange" labl = ".zlrange" "(lablno) = linenum .zlrange" end else do zedsmsg = zerrsm /* use dialog generated messages */ zedlmsg = zerrlm /*address*/ "ISPEXEC" "SETMSG MSG(ISRZ000)" return 1 /* move cursor to command line */ end /*********************************************************************/ /* ADDRESS "ISPEXEC" "CONTROL ERRORS CANCEL" */ /*********************************************************************/ "(bound1,bound2) = bounds" if bound1 \= 1 then do zedsmsg = "BOUNDS error" zedlmsg = "use of bounds not permitted, found BOUND" bound1 bound2 /*address*/ "ISPEXEC" "SETMSG MSG(ISRZ000)" return 12 end if token2 = "" then token2 = 1 if datatype(token2,'n') = 0 then do zedlmsg = "Found non numeric 2nd parameter, if omitted default is 1" /*address*/ "ISPEXEC" "SETMSG MSG(ISRZ000)" return 4 end if token = "Q" then findtok = """'""" else if token = "QQ" then findtok = '''"''' else if token = "NB" then findtok = "p'^'" else do findtok = ''''token'''' i = pos('''',token) if i \= 0 then findtok = token end zedlmsg = "left@" findtok token2 " ------ issued or defaulted" /*address*/ "ISPEXEC" "SETMSG MSG(ISRZ000)" "find first nx "findtok" .zfrange .zlrange" if rc \= 0 then return 1 token2 = token2 + 0 more: , "(row,col) = cursor" if col = token2 then signal next "(line) = line .zcsr" "line_before .zcsr = noteline (line)" if token2 > col then line = left(" ",(token2-col))line else line = substr(line,col-token2+1) "(lab1,lab2) = label" row "line .zcsr = (line)" next: if row = lablno then return 1 "cursor =" row+1 "0" "find next nx" findtok ".zfrange .zlrange" if rc \= 0 then return 1 signal more