/* TITLE: XEVERY -- EXCLUDE LINES CONTAINING EVERY SPECIFIED STRING */ /* USERS: SCRIPT USERS */ /* ENTRY: USED AS AN EDIT CLIST WITHIN ISPF EDIT ===> XEVERY 'A' 'B' C */ /* CONTRIBUTED: 1986/04/28 DAVID MCRITCHIE */ /* */ /* EXAMPLE: XEVERY .ZFIRST .ZLAST 'STRING1' "STRING2" STRING3 STRING4 'STRING5' */ /* OPTIONS: */ /* LBL-RANGE (OPTIONAL) LABEL RANGE */ /* NX | X (INVALID ) LIMIT TO NON-EXCLUDED, OR EXCLUDED LINES */ /* (REQUIRED) STRING OPERAND SUITABLE FOR AN EXCLUDE COMMAND */ /* */ ISREDIT MACRO (TOK1,TOK2,TOK3,TOK4,TOK5,TOK6,TOK7,TOK8,TOK9,TOK10,TOK11,TOK12,TOK13,+ TOK14,TOK15,TOK16,TOK17,TOK18,TOK19,TOK20,TOK21,TOK22,TOK23,TOK24,TOK25,TOK26,+ TOK27,TOK28,TOK29,TOK30,TOK31,TOK32,TOK33,TOK34,TOK35,TOK36,TOK37,TOK38,TOK39,+ TOK40,TOK41,TOK42,TOK43,TOK44,TOK45,TOK46,TOK47,TOK48) ISREDIT (IMAC) = IMACRO SET R = 0 SET XCNT = 0 SET I = 0 /********* SET I = 1 DO WHILE &I <= 48 SET TOKEN = &&TOK&I SET TOKEN = &STR(&SYSCAPS(&TOKEN)) IF &STR(&TOKEN) = &STR() THEN GOTO END_TOK IF X = &STR(&TOKEN) | NX = &STR(&TOKEN) | ENTIRE = &STR(&TOKEN) - | ALL = &STR(&TOKEN) | NEXT = &STR(&TOKEN) | FIRST = &STR(&TOKEN) | LAST = &STR(&TOKEN) | PREV = &STR(&TOKEN) THEN DO SET &ZEDSMSG = &STR(&TOKEN INVALID) SET &ZEDLMSG = &STR("&TOKEN" NOT PROVIDED FOR NOR ARE NEXT ALL FIRST LAST PREV) ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(12) END IF &SUBSTR(1:6,&STR(&TOKEN) ) = &STR(BEGIN&STR(&LP)) THEN DO SET BEGIN = &SUBSTR(7:&EVAL(&LENGTH(&STR(&TOKEN))-1),&STR(&TOKEN) ) GOTO NXT_TOK END IF &STR(&TOKEN) = WORD | &STR(&TOKEN) = CHAR | &STR(&TOKEN) = CHARS - | &STR(&TOKEN) = PREFIX | &STR(&TOKEN) = SUFFIX THEN DO IF &STR(&WORD) ^= &STR() THEN DO SET &ZEDSMSG = &STR(INCONSISTENT PARAMETERS) SET &ZEDLMSG = &STR('&WORD' AND '&TOKEN' CANNOT BOTH BE SPECIFIED FOR XEVERY CMD.) ISPEXEC SETMSG MSG(ISRZ000) END SET WORD = &TOKEN GOTO NXT_TOK END IF &STR(&TOKEN) = LEFT THEN DO /* LEFT | RIGHT */ SET LEFT = LEFT GOTO NXT_TOK END IF &STR(&TOKEN) = RIGHT THEN DO SET RIGHT = RIGHT GOTO NXT_TOK END IF &SUBSTR(1,&TOKEN) = &STR(.) THEN DO IF &LABF = &STR() THEN DO SET LABF = &STR(&TOKEN) GOTO NXT_TOK END IF &STR(&LABL) = &STR() THEN DO SET LABL = &STR(&TOKEN) GOTO NXT_TOK END SET &ZEDSMSG = &STR(LABEL &STR(&TOKEN)) SET &ZEDLMSG = &STR(EXACTLY TWO LABELS ARE REQUIRED FOUND "&LABF", "&LABL" AND "&STR(&TOKEN)") ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(12) END IF &STR(&TOKEN) = &STR()) THEN DO SET &ZEDSMSG = &STR(LOST PARENTHESIS) SET &ZEDLMSG = BLANKS SEPARATE ALL OPERANDS; THEREFORE INVALID IN FROM() TO() COL() BEGIN() ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(12) END SET REMAIN = &STR(&REMAIN &STR(&TOKEN)) SET R = &R + 1 SET FIND&R = &STR(&TOKEN) NXT_TOK: - SET I = &I + 1 END END_TOK: SET I = &I /***************************************************************** /***************************************************************** SET RMAX = &R IF &STR(&FIND1) = &STR() THEN DO SET &ZEDSMSG = &STR(EXCLUDE STRINGS) SET &ZEDLMSG = &STR(&ZEDSMSG ARE MISSING) ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(12) END IF &LABL = &STR() AND &LABF ^= &STR() THEN DO SET &ZEDSMSG = &STR(LABEL MISSING) SET &ZEDLMSG = &STR(TWO LABELS MUST BE INDICATED FOR A RANGE) ISPEXEC SETMSG MSG(ISRZ000) END IF &LABF = &STR() THEN SET LABF = &STR(.ZFIRST) IF &LABL = &STR() THEN SET LABL = &STR(.ZLAST) ISREDIT (#LABF) = LINENUM &LABF IF &LASTCC ^= 0 THEN DO SET &ZEDSMSG = &STR(&LABF. LABEL) SET &ZEDLMSG = &STR(&ZEDSMSG DOES NOT EXIST) ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(12) END ISREDIT (#LABL) = LINENUM &LABL IF &LASTCC ^= 0 THEN DO SET &ZEDSMSG = &STR(&LABL. LABEL) SET &ZEDLMSG = &STR(&ZEDSMSG DOES NOT EXIST) ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(12) END /********************************** END OF LABEL REQUIREMENTS **********************/ ISREDIT (DWIDTH) = DATA_WIDTH SET DWIDTH2 = &DWIDTH + &DWIDTH /* CAN BE USED TO FORCE AN ERROR */ ISREDIT (LBOUND,RBOUND) = BOUNDS ISREDIT (VAR019,VAR020) = DISPLAY_COLS /****************************/ ISREDIT (VAR057) = RECFM ISREDIT (VAR049,VAR050) = NUMBER SET LLBOUND = &LBOUND SET LLADJ = 0 IF &VAR057 = V AND &VAR049 = ON THEN DO SET LLADJ = 8 SET LLBOUND = &LBOUND + 8 END /****************************/ /* WRITE LBOUND=&LBOUND + &LLADJ = &LLBOUND RBOUND=&RBOUND DWIDTH=&DWIDTH DISPLAY(&VAR019,&VAR020) /************************************** CODE FOR XEVERY COMMANDS ***************/ /************************************** CODE FOR XEVERY COMMANDS ***************/ /************************************** CODE FOR XEVERY COMMANDS ***************/ IF &EVAL(&#LABL.) < &EVAL(&#LABF.) THEN DO SET &ZEDSMSG = &STR(LABEL ERR .LABF/L) SET &ZEDLMSG = &STR(&LABF MUST APPEAR EARLIER THAN &LABL) ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(12) END /* ************************************************** ISREDIT SEEK &LABF. &LABL. NX FIRST &FIND1 IF &LASTCC ^= 0 THEN GOTO NONE SET I = &#LABF DO WHILE &I <= &#LABL ISREDIT (VAR075) = XSTATUS &I IF &VAR075 = NX THEN DO SET R = 1 DO WHILE &R <= &RMAX ISREDIT LABEL &I = .POINT SET TOKEN = &STR(&&FIND&R) SET TOKEN = &STR(&TOKEN) ISREDIT SEEK .POINT .POINT &TOKEN. &WORD. ALL IF &LASTCC > 0 THEN GOTO NFOUND SET R = &R + 1 END ISREDIT XSTATUS .POINT = X SET XCNT = 0&XCNT + 1 GOTO NXTT_I NFOUND: - SET K = &K /* NO CHANGE */ END NXTT_I: - SET I = &I. + 1 END ISREDIT F FIRST NX &LABF &LABL ' ' IF &STR(&IMAC) = NONE THEN ISREDIT UP 1 NONE: - SET &ZEDSMSG = &STR(&EVAL(&XCNT.) EXCLUDED) SET &ZEDLMSG = &STR(&EVAL(&XCNT.) LINE EXCLUDED BY MACRO ===> XEVERY &LABF &LABL &X &NX &WORD &FIND1 &FIND2 &FIND3 &FIND4 &FIND5 &FIND6 &FIND7 ) ISPEXEC SETMSG MSG(ISRZ000)