/* FGROUP: NX the lines between find pairs (REXX)*/ /********************************************************************* MACRO: NX the lines between find pairs PURPOSE: Unexclude a range of lines EXAMPLES: FGROUP "1 .a .b '.kp on'" "1 .a .b '.kp off'" FGROUP ".kp on" ".kp off" FGROUP -- default used RELATED: TAGX, LABNX, FGROUP, FGROUP *********************************************************************** FGROUP Author: David McRitchie, created 1994/05/19 is03 at "The REXX Macros Toolbox", DMcRitchie@hotmail.com "The REXX Macros Toolbox" "The REXX Macros Toolbox" *******************************************************************/ Address 'ISREDIT';'MACRO (token)' if token = "" then token = "kp" capstok = translate(token) if substr(token,1,1) = '"' then do parse var token '"' pair1 '"' token end else if substr(token,1,1) = "'" then do parse var token "'" pair1 "'" token end else if capstok = 'KP' | capstok = 'FRAME' then do pair1 = "1 word '."strip(token)" on'" token = """1 word '."strip(token)" off'""" end else call dropdead 101 if substr(token,1,1) = '"' then do parse var token '"' pair2 '"' token end else if substr(token,1,1) = "'" then do parse var token "'" pair2 "'" token end else do; msg="error in first of pair"; signal noway; end "(row,col) = cursor" "seek first p'=' 1 x" if rc \= 0 then do ZEDSMSG = "Setup error" ZEDLMSG = "Must have some lines excluded before starting" ADDRESS "ISPEXEC" "SETMSG MSG(ISRZ000)" "cursor =" row col exit 1 end; "cursor =" row 0 do forever "seek" token pair1 if rc \= 0 then leave "label .zcsr = .beg 1" "seek" token pair2 if rc \= 0 then do "line_before .zf = noteline", """Last .cs" word(token,i) "on -- is not matched with off""" "reset .beg .beg x" "line_after .beg = msgline ", """Last .cs" word(token,i) "on -- is not matched with off""" leave end "reset .beg .zcsr x " end /* test .kp on .******* .kp off .************ .cs 2 off .cs 1 on .******* .cs 1 off .************ .cs 2 off ****************************/