CONTROL ASIS ISREDIT MACRO NOPROCESS (FLOW) /* TITLE: Reformat and sort dictionary update ".du add " cards */ /* Users: SCRIPT users */ /* Entry: Used as an EDIT CLIST within ISPF EDIT ===> DUADD */ /* Contributed: 1985/08/05 David McRitchie */ /* This clist replaces John Kennedy's DUADDOUT and DUADDIN. */ /* Options: FLOW option default is 70 e.g. ===> DUADD 70 */ /* The resulting sorted ".du add " entries will fit within the */ /* column specified since that is what ISREDIT TFLOW does. */ /* The DUADDSTR option default is ".du add " */ /* ===> DUADD (,'.du add') */ /* Requirements: */ /* All ".du add " in the section must begin in col 1 and have no */ /* other control statements .DUADF label required at beginning of */ /* a contiguous ".du add " section .DUADX label immediately */ /* after end of the contiguous ".du add " section. */ /* */ /* The reason that .DUADX must be below the last line is to be able */ /* to identify when there is only one line to be processed -- a */ /* possible alternative might have been to pass names of the line */ /* labels when invoking this edit macro, but I think the method */ /* used is better than the alternative. */ /* */ /* SPECIAL OR HIDDEN FEATURES: */ /* Used by the CLIST DUADDX to convert an entire list to .DU ADD */ /* cards provided that "DSMDOT459I WORDS NOT FOUND:" is found in */ /* appropriate place. */ /* e.g. DUADDX S6133 */ /* would convert users &SYSUID..S6133..LIST dataset by invok-*/ /* ing ISPEXEC EDIT DATASET('&SYSUID..S6133..LIST) MACRO(DUADD)*/ /* */ /* ************ ADDED D.MCR 1987/05/22 TO add/del list of names */ /* example ===> @duadd CNTL MIDILIST hasn haven */ /******************************/ ISREDIT PROCESS RANGE C IF &LASTCC = 0 THEN DO /* make CC process range look like original usage */ ISREDIT (#DUADF) = LINENUM .DUADF SET LCC1 = &LASTCC. ISREDIT (#DUADL) = LINENUM .DUADX SET LCC2 = &LASTCC. IF &LCC1. = 0 OR &LCC2. = 0 THEN DO SET &ZEDSMSG = .DUADF CC Conflict SET &ZEDLMSG = .DUADF .DUADX labels conflict with CC range ISPEXEC SETMSG MSG(ISRZ000) END ISREDIT LABEL .ZFRANGE = .DUADF 0 ISREDIT (LABL) = LINENUM .ZLRANGE SET LABL = &LABL. + 1 ISREDIT LABEL &LABL. = .DUADX 0 END /******************************/ SET LP = &STR(( SET RP = &STR()) IF &STR(&FLOW.) = &STR(&LP.1&RP.) THEN DO SET SFLOW = (1) ISREDIT c all .duadf .duadx 1 '.if &&&&locdu. ne no .du add ' + '.du add ' SET FLOW = 52 END IF &STR(&FLOW.) = &STR(&LP.3&RP.) THEN DO ISREDIT c all .duadf .duadx 1 '.du add ' + '.if &&&&locdu. ne no .du add ' EXIT CODE(1) END IF &STR(&FLOW.) = (2) THEN DO SET FLOW = 52 END IF &STR() ^= &STR(&FLOW) THEN + IF &SUBSTR(1:1,&STR(&FLOW.)) < &STR(0) THEN DO IF &STR(&SYSCAPS(&FLOW.)) = DICTIONARY THEN DO $EDIT SYS6.DCF40.INSTALL(DSMDMJCL) EXIT CODE(1) END ISREDIT (DSNX) = DATASET ISREDIT F 1 first '.if &&&&locdu. ne no ' IF &LASTCC = 0 THEN SET DSNX = TECH.LIBR2.TEXT /*fake it */ IF &STR(&DSNX) = TECH.LIBR2.TEXT THEN DO ISREDIT F 1 first '.if &&&&locdu. ne no .du add ' IF &LASTCC = 0 THEN DO ISREDIT LOC 30 ISREDIT f prev '.IF &&&&locdu. ne no .du add ' ISREDIT LINE_AFTER .ZCSR = + '.if &&&&locdu. ne no .du add &FLOW' ISREDIT LINE_AFTER .ZCSR = + NOTELINE '.* duadd --------------' END ELSE ISREDIT LINE_AFTER .ZFIRST = + '.if &&&&locdu. ne no .du add &FLOW' ISREDIT F 1 last '.if &&&&locdu. ne no .du del ' IF &LASTCC = 0 THEN - ISREDIT LINE_AFTER .ZCSR = + '.if &&&&locdu. ne no .du del &FLOW' ELSE ISREDIT LINE_AFTER .ZLAST = + '.if &&&&locdu. ne no .du del &FLOW' ISREDIT F 1 last '.if &&&&locdu. ne no .du del &FLOW.' ISREDIT loc .ZLAST ISREDIT up 15 END ELSE DO ISREDIT F 1 first '.du add ' IF &LASTCC = 0 THEN DO ISREDIT LOC 30 ISREDIT f prev 1 '.du add ' ISREDIT LINE_AFTER .ZCSR = '.du add &FLOW' ISREDIT LINE_AFTER .ZCSR = + NOTELINE '.* duadd --------------' END ELSE ISREDIT LINE_BEFORE .ZFIRST = '.du add &FLOW' ISREDIT F 1 last '.du del ' IF &LASTCC = 0 THEN - ISREDIT LINE_AFTER .ZCSR = '.du del &FLOW' ELSE ISREDIT LINE_AFTER .ZLAST = '.du del &FLOW' ISREDIT F 1 last '.du del &FLOW.' ISREDIT loc .ZLAST ISREDIT up 15 END ISREDIT (DSNX) = DATASET EXIT CODE(1) END /* + **** ADDED D.MCR 1987/03/06 TO ACCOMODATE OUTPUT LIST AS INPUT ISREDIT SEEK FIRST 1 '.' IF &LASTCC = 0 THEN GOTO NORML01 SET WANTED = 0 /****THE NEXT LINE CONTAINS X'09'||'DSMDOT459I WORDS NOT FOUND:' ISREDIT SEEK FIRST 1 + '09C4E2D4C4D6E3F4F5F9C940E6D6D9C4E240D5D6E340C6D6E4D5C47A40'X /* D S M D O T 4 5 9 I W O R D S N O T F O U N D : */ IF &LASTCC = 0 THEN SET WANTED = 1 ISREDIT SEEK FIRST 1 + 'C4E2D4C4D6E3F4F5F9C940E6D6D9C4E240D5D6E340C6D6E4D5C47A40'X /* D S M D O T 4 5 9 I W O R D S N O T F O U N D : */ IF &LASTCC = 0 THEN SET WANTED = 1 IF WANTED = 0 THEN GOTO NORML01 ELSE DO /* modified 1991/04/22 to combine words not found lines /* (error message never continues beyond two lines) ISREDIT X ALL ISREDIT C ALL 1 P'= ' '. ' ISREDIT C ALL 1 X P'=DSM' '.DSM' ISREDIT C ALL 1 X P'.' '›' ISREDIT X ALL ISREDIT F ALL 1 X P'=DSMDOT459I=WORDS=NOT=FOUND$=' ISREDIT X ALL 61 ' ' ISREDIT F ALL 1 NX P'=DSMDOT459I=WORDS=NOT=FOUND$=' ISREDIT (,VAR024) = FIND_COUNTS SET VAR024 = &EVAL(&VAR024.) DO WHILE (&VAR024. NE 0) ISREDIT TFLOW .ZCSR ISREDIT X .ZCSR .ZCSR ALL ISREDIT F NEXT 1 NX P'=DSMDOT459I=WORDS=NOT=FOUND$=' SET VAR024 = &VAR024 - 1 END ISREDIT C ALL X ' ›' '' /* end modified 1991/04/22 to combine words not found lines ISREDIT C ALL 1 P'=DSMDOT459I=WORDS=NOT=FOUND$=' '.du add ' /* ISREDIT C ALL 1 ' DSMDOT459I WORDS NOT FOUND: ' '.DU ADD ' ISREDIT C ALL 1+ '09C4E2D4C4D6E3F4F5F9C940E6D6D9C4E240D5D6E340C6D6E4D5C47A40'X + '.du add ' /* D S M D O T 4 5 9 I W O R D S N O T F O U N D : */ ISREDIT C ALL 1 + 'C4E2D4C4D6E3F4F5F9C940E6D6D9C4E240D5D6E340C6D6E4D5C47A40'X + '.du add ' /*D S M D O T 4 5 9 I W O R D S N O T F O U N D : */ ISREDIT F 'DSMMOM395I' ALL ISREDIT F 'DSMDOT459I' ALL ISREDIT F '.DU ADD' ALL ISREDIT C ALL p'.0DSMDOT459I.WORDS.NOT.FOUND$.' + ' DSMDOT459I WORDS NOT FOUND: ' ISREDIT C ALL p' DSMDOT459I.WORDS.NOT.FOUND$.' + ' DSMDOT459I WORDS NOT FOUND: ' ISREDIT LABEL .ZCSR = .DUADF 0 ISREDIT DEL X ALL ISREDIT LINE_AFTER .ZL = ".* .DUADX" ISREDIT LABEL .ZLAST = .DUADX 0 ISREDIT X ALL ISREDIT F 'DSMMOM395I' ALL ISREDIT LINE_AFTER 0 = NOTELINE " + ===> duadd " ISREDIT LINE_AFTER 0 = NOTELINE " + ===> c all p'.' ' ' << check changes" ISREDIT LINE_AFTER 0 = NOTELINE " + ===>