CONTROL ASIS ISREDIT MACRO (COMMAND) /* TITLE: @STRAPQ -- TRAP CLIST WRITE STATEMENTS AND IMBED AT + /* END OF FILE IN EDIT */ /* USERS: TSO ISPF EDIT USERS */ /* ENTRY: USED AS AN EDIT CLIST WITHIN ISPF EDIT */ /* ===> &STRAP DDNAME ALL */ /* CONTRIBUTED: 1985/08/29 DAVID MCRITCHIE */ /* EXAMPLE: ===> @STRAPQ DDNAME ALL */ SET BLANKS = &STR( + ) IF &STR(&COMMAND.) = &STR() THEN DO WRITE PLEASE SUPPLY TSO COMMAND ENTRY FOR @STRAP MACRO CLIST WRITE &RBL. USE SINGLE QUOTES OR PARENTHESIS IF WRITE &RBL. IF REPLY HAS SPACES OR COMMAS WRITE &RBL. TO CANCEL REQUEST HIT ENTER READ COMMAND WRITE BY YOUR COMMAND ... &COMMAND. END IF &STR() = &STR(&COMMAND) THEN DO WRITE REQUEST TERMINATED DUE TO NULL ENTRY EXIT CODE(0) END ISREDIT CAPS OFF ISREDIT LINE_AFTER .ZLAST = DATALINE " " ISREDIT LINE_AFTER .ZLAST = DATALINE "COMMAND INVOKING @STRAPQ + CLIST + MACRO ===> @STRAPQ &STR(&COMMAND)" ISREDIT LINE_AFTER .ZLAST = DATALINE " " SET SYSOUTTRAP = 1400 &COMMAND SET N = &SYSOUTLINE SET SYSOUTTRAP = 0 WRITE ===> @STRAPQ &COMMAND SET I = 1 DO WHILE &I <= &N SET X = &SYSNSUB(2,&&SYSOUTLINE&I..) IF &EVAL(10000 + &I.) > 10050 THEN DO SET XXM = 0&XXM. + 1 IF &XXM = 4 THEN WRITENR &STR(....) IF &XXM = 5 THEN DO WRITENR &I SET XXM = 0 END END ELSE WRITENR &I SET J = 1 SET NJ = 100 SET JJJ = &SYSINDEX(&STR("),&SYSNSUB(1,&X.)) IF &EVAL(&JJJ.) = 0 THEN - ISREDIT LINE_AFTER .ZLAST = DATALINE "&NRSTR(&X.)" ELSE DO SET JJJ = &SYSINDEX(&STR('),&SYSNSUB(1,&X.)) IF &EVAL(&JJJ.) = 0 THEN - ISREDIT LINE_AFTER .ZLAST = DATALINE '&NRSTR(&X.)' ELSE DO SET J = 1 SET NJ = &LENGTH(&STR(&X)) DO WHILE &J <= &NJ IF &SUBSTR(&J:&J,&STR(&X)) = &STR(") THEN DO SET JM1 = &J. - 1 SET JP1 = &J. + 1 SET X = &SUBSTR(1:&JM1,&STR(&X))~&SUBSTR(&JP1:&NJ,+ &STR(&X)) END SET J = &J. + 1 END /* WILL BOMB IF HAS AT LEAST ONE OF QUOTE DQUOTE AMPERSAND /* WRITE &NRSTR(&X.) I=&I. ISREDIT LINE_AFTER .ZLAST = DATALINE "&NRSTR(&X.)" ISREDIT C .ZLAST .ZLAST "~" '"' ALL END END SET I = &I. + 1 END