)ATTR /*******************************************************************/ /* */ /* Panel modified to highlight SDSF data using */ /* a rexx panel exit. */ /* */ /*******************************************************************/ /* */ /* Author of hilighting exit: Doug Nadel (nadel@us.ibm.com) */ /* Highlighting modifications are supplied "as-is" and */ /* have no warranty of any kind. */ /* */ /*******************************************************************/ B TYPE(CHAR) COLOR(BLUE) G TYPE(CHAR) COLOR(GREEN) P TYPE(CHAR) COLOR(PINK) R TYPE(CHAR) COLOR(RED) T TYPE(CHAR) COLOR(TURQ) W TYPE(CHAR) COLOR(WHITE) Y TYPE(CHAR) COLOR(YELLOW) b TYPE(CHAR) COLOR(BLUE) hilite(REVERSE) g TYPE(CHAR) COLOR(GREEN) hilite(REVERSE) p TYPE(CHAR) COLOR(PINK) hilite(REVERSE) r TYPE(CHAR) COLOR(RED) hilite(REVERSE) t TYPE(CHAR) COLOR(TURQ) hilite(REVERSE) w TYPE(CHAR) COLOR(WHITE) hilite(REVERSE) y TYPE(CHAR) COLOR(YELLOW) hilite(REVERSE) u TYPE(CHAR) COLOR(WHITE) hilite(USCORE) ~ TYPE(AB) ` TYPE(ABSL) ^ TYPE(CEF) 03 TYPE(DATAOUT) INTENS(LOW) COLOR(BLUE) 05 TYPE(DATAOUT) INTENS(LOW) COLOR(BLUE) 06 TYPE(DATAOUT) INTENS(LOW) COLOR(BLUE) 07 TYPE(DATAOUT) INTENS(HIGH) COLOR(WHITE) 08 TYPE(DATAOUT) INTENS(LOW) COLOR(TURQ) 09 TYPE(DATAOUT) INTENS(HIGH) COLOR(WHITE) SKIP(ON) 10 TYPE(DATAIN) INTENS(NON) 11 TYPE(DATAIN) INTENS(LOW) COLOR(GREEN) 13 TYPE(DATAIN) INTENS(HIGH) COLOR(RED) 1C TYPE(DATAIN) INTENS(NON) CAPS(ON) 1D TYPE(DATAIN) INTENS(LOW) COLOR(GREEN) CAPS(ON) 1F TYPE(DATAIN) INTENS(HIGH) COLOR(RED) CAPS(ON) @ TYPE(INPUT) INTENS(HIGH) COLOR(WHITE) | TYPE(INPUT) INTENS(HIGH) COLOR(RED) ? TYPE(INPUT) INTENS(LOW) COLOR(BLUE) * TYPE(INPUT) INTENS(LOW) COLOR(GREEN) $ TYPE(TEXT) INTENS(HIGH) COLOR(WHITE)  TYPE(OUTPUT) INTENS(HIGH) COLOR(WHITE) JUST(ASIS) CAPS(OFF) ! TYPE(OUTPUT) INTENS(LOW) COLOR(BLUE) # AREA(DYNAMIC) EXTEND(ON) SCROLL(ON) )ABC DESC('Display') MNEM(1) PDC DESC('Panels...') UNAVAIL(PNLUNA) PDC DESC('Logs...') UNAVAIL(LOGSUNA) PDC DESC('Exit SDSF') UNAVAIL(EXUNA) MNEM(2) PDSEP(ON) )ABCINIT .ZVARS=ZPDC &ZPDC=' ' &PNLUNA = '0' &LOGSUNA = '0' IF (&ISFPLBLK NE ' ') &EXUNA = '1' IF (&ISFPLPAN NE ' ') &PNLUNA = '1' IF (&ISFPLLGS NE ' ') &LOGSUNA = '1' )ABCPROC VER (&ZPDC,RANGE,01,3) IF (&ZPDC=1) IF (&ISFPLPAN = ' ') &ABDISP='P' &ABSELECT='DISP' ELSE .MSG = &ISFPLPAN IF (&ZPDC=2) IF (&ISFPLLGS = ' ') &ABDISP='L' &ABSELECT='DISP' ELSE .MSG = &ISFPLLGS IF (&ZPDC=3) IF (&ISFPLBLK = ' ') &ABDISP='X' &ABSELECT='DISP' ELSE .MSG = &ISFPLBLK )ABC DESC('Filter') MNEM(1) PDC DESC('Filter...') UNAVAIL(FILUNA) MNEM(1) PDC DESC('Prefix of jobname...') UNAVAIL(PREUNA) MNEM(1) PDC DESC('Owner...') UNAVAIL(OWNUNA) MNEM(1) PDC DESC('Destination...') UNAVAIL(DESUNA) MNEM(1) PDC DESC('System name...') UNAVAIL(SYSUNA) MNEM(1) PDC DESC('Change APPC to &APPCV') UNAVAIL(APCUNA) MNEM(8) PDC DESC('Replies on the Log...') UNAVAIL(RSYUNA) MNEM(1) )ABCINIT .ZVARS=ZPDC &ZPDC=' ' &FILUNA = '0' &PREUNA = '0' &OWNUNA = '0' &DESUNA = '0' &SYSUNA = '0' &APCUNA = '0' &RSYUNA = '0' IF (&ISFPLFIL NE ' ') &FILUNA = '1' IF (&ISFPLPRF NE ' ') &PREUNA = '1' IF (&ISFPLOWN NE ' ') &OWNUNA = '1' IF (&ISFPLDES NE ' ') &DESUNA = '1' IF (&ISFPLSYN NE ' ') &SYSUNA = '1' IF (&ISFPLAPT = 'ON') &APPCV = 'OFF' ELSE &APPCV = 'ON' IF (&ISFPLAPC NE ' ') &APCUNA = '1' IF (&ISFPLRSY NE ' ') &RSYUNA = '1' )ABCPROC VER (&ZPDC,RANGE,01,07) IF (&ZPDC=1) IF (&ISFPLFIL = ' ') &ABFILT='F' &ABSELECT='FILT' ELSE .MSG = &ISFPLFIL IF (&ZPDC=2) IF (&ISFPLPRF = ' ') &ABFILT='P' &ABSELECT='FILT' ELSE .MSG = &ISFPLPRF IF (&ZPDC=3) IF (&ISFPLOWN = ' ') &ABFILT='O' &ABSELECT='FILT' ELSE .MSG = &ISFPLOWN IF (&ZPDC=4) IF (&ISFPLDES = ' ') &ABFILT='D' &ABSELECT='FILT' ELSE .MSG = &ISFPLDES IF (&ZPDC=5) IF (&ISFPLSYN = ' ') &ABFILT='S' &ABSELECT='FILT' ELSE .MSG = &ISFPLSYN IF (&ZPDC=6) IF (&ISFPLAPC = ' ') &ABFILT='A' &ABSELECT='FILT' ELSE .MSG = &ISFPLAPC IF (&ZPDC=7) IF (&ISFPLRSY = ' ') &ABFILT='R' &ABSELECT='FILT' ELSE .MSG = &ISFPLRSY )ABC DESC('View') MNEM(1) PDC DESC('Sort...') UNAVAIL(SORUNA) MNEM(1) PDC DESC('Arrange...') UNAVAIL(ARRUNA) MNEM(1) PDC DESC('Set hex to &HEXTOG') UNAVAIL(HEXUNA) MNEM(5) PDC DESC('Change field list to &OTTOG ') UNAVAIL(OTUNA) MNEM(8) PDC DESC('Who...') UNAVAIL(WHOUNA) MNEM(1) PDSEP(ON) )ABCINIT .ZVARS=ZPDC &ZPDC=' ' &SORUNA = '0' &ARRUNA = '0' &HEXUNA = '0' &OTUNA = '0' &WHOUNA = '0' IF (&ISFPLSOR NE ' ') &SORUNA = '1' IF (&ISFPLARR NE ' ') &ARRUNA = '1' IF (&ISFPLHEX='OFF') &HEXTOG = 'ON' ELSE &HEXTOG = 'OFF' IF (&ISFPLBLK NE ' ') &HEXUNA = '1' IF (&ISFPAFLD ='0') &OTTOG = 'PRIMARY' ELSE &OTTOG = 'ALTERNATE' IF (&ISFPLOTH NE ' ') &OTUNA = '1' IF (&ISFPLBLK NE ' ') &WHOUNA = '1' )ABCPROC VER (&ZPDC,RANGE,01,05) IF (&ZPDC=1) IF (&ISFPLSOR = ' ') &ABVIEW='S' &ABSELECT='VIEW' ELSE .MSG = &ISFPLSOR IF (&ZPDC=2) IF (&ISFPLARR = ' ') &ABVIEW='A' &ABSELECT='VIEW' ELSE .MSG = &ISFPLARR IF (&ZPDC=3) IF (&ISFPLBLK = ' ') &ABVIEW='H' &ABSELECT='VIEW' ELSE .MSG = &ISFPLBLK IF (&ZPDC=4) IF (&ISFPLOTH = ' ') &ABVIEW='O' &ABSELECT='VIEW' ELSE .MSG = &ISFPLOTH IF (&ZPDC=5) IF (&ISFPLBLK = ' ') &ABVIEW='W' &ABSELECT='VIEW' ELSE .MSG = &ISFPLBLK )ABC DESC('Print') MNEM(1) PDC DESC('Print open sysout...') UNAVAIL(PROUNA) MNEM(12) PDC DESC('Print open data set...') UNAVAIL(PROUNA) MNEM(12) PDC DESC('Print open file...') UNAVAIL(PROUNA) MNEM(12) PDC DESC('Print...') UNAVAIL(PRTUNA) MNEM(1) PDSEP(ON) PDC DESC('Print close') UNAVAIL(PRCUNA) MNEM(7) PDSEP(ON) PDC DESC('Print screen with ISPF') UNAVAIL(PRIUNA) MNEM(19) PDSEP(ON) ACTION RUN(PRINTS) )ABCINIT .ZVARS=ZPDC &ZPDC=' ' &PROUNA = '0' &PRTUNA = '0' &PRCUNA = '0' IF (&ZGUI NE ' ') &PRIUNA = '1' IF (&ISFPLPRO NE ' ') &PROUNA = '1' IF (&ISFPLPRP NE ' ') &PRTUNA = '1' IF (&ISFPLPRC NE ' ') &PRCUNA = '1' )ABCPROC VER (&ZPDC,RANGE,01,06) IF (&ZPDC=1) IF (&ISFPLPRO = ' ') &ABPRNT='S' &ABSELECT='PRNT' ELSE .MSG = &ISFPLPRO IF (&ZPDC=2) IF (&ISFPLPRO = ' ') &ABPRNT='D' &ABSELECT='PRNT' ELSE .MSG = &ISFPLPRO IF (&ZPDC=3) IF (&ISFPLPRO = ' ') &ABPRNT='F' &ABSELECT='PRNT' ELSE .MSG = &ISFPLPRO IF (&ZPDC=4) IF (&ISFPLPRP = ' ') &ABPRNT='P' &ABSELECT='PRNT' ELSE .MSG = &ISFPLPRP IF (&ZPDC=5) IF (&ISFPLPRC = ' ') &ABPRNT='C' &ABSELECT='PRNT' ELSE .MSG = &ISFPLPRC )ABC DESC('Options') MNEM(1) PDC DESC('Set action character display...') UNAVAIL(SACUNA) MNEM(5) PDC DESC('Find limit...') UNAVAIL(FNLUNA) MNEM(1) PDC DESC('Change include SYSIN to &INPUT') UNAVAIL(INPUNA) MNEM(8) PDC DESC('Set bookshelf...') UNAVAIL(SBKUNA) MNEM(5) PDC DESC('Set display values to &DISPV') UNAVAIL(SDIUNA) MNEM(5) PDC DESC('Set screen characteristics...') UNAVAIL(SCRUNA) MNEM(6) PDC DESC('Set delay for responses...') UNAVAIL(SDEUNA) MNEM(15) PDC DESC('Set communications timeout...') UNAVAIL(STOUNA) MNEM(20) PDC DESC('Set console name...') UNAVAIL(SCOUNA) MNEM(7) PDC DESC('Set search characters...') UNAVAIL(SSCUNA) MNEM(5) PDC DESC('Assign PF keys...') MNEM(11) PDSEP(ON) ACTION RUN(KEYS) PDC DESC('Change show PF keys to &SHOWPF') MNEM(13) ACTION RUN(PFSHOW) PARM(&SHOWPF) PDC DESC('Set language for help and tutorial...') UNAVAIL(SLAUNA) MNEM(5) PDSEP(ON) PDC DESC('Set cursor option...') UNAVAIL(SCUUNA) MNEM(6) PDC DESC('Set confirmation to &SCONFRM') UNAVAIL(SCNUNA) MNEM(11) PDC DESC('Operlog limit for filter...') UNAVAIL(FLMUNA) MNEM(1) PDC DESC('Set date format...') UNAVAIL(SDTUNA) MNEM(12) PDC DESC('Set log default...') UNAVAIL(SLGUNA) MNEM(7) PDC DESC('Set default browse action...') UNAVAIL(SBRUNA) MNEM(16) )ABCINIT .ZVARS=ZPDC &ZPDC=' ' &SACUNA = '0' &FNLUNA = '0' &INPUNA = '0' &SBKUNA = '0' &SDIUNA = '0' &SCRUNA = '0' &SDEUNA = '0' &SCOUNA = '0' &SSCUNA = '0' &SLAUNA = '0' &SCUUNA = '0' &SCNUNA = '0' &SDTUNA = '0' &SLGUNA = '0' &FLMUNA = '0' &STOUNA = '0' &SBRUNA = '0' IF (&ISFPLFNL NE ' ') &FNLUNA = '1' IF (&ISFPLINO = 'ON') &INPUT = 'OFF' ELSE &INPUT = 'ON' IF (&ISFPLINP NE ' ') &INPUNA = '1' IF (&ISFPLDIS = 'ON') &DISPV = 'OFF' ELSE &DISPV = 'ON' IF (&ISFPLDLY NE ' ') &SDEUNA = '1' IF (&ISFPLCNS NE ' ') &SCOUNA = '1' IF (&ZPFSHOW = 'OFF') &SHOWPF = 'ON' ELSE &SHOWPF = 'OFF' IF (&ISFCONF = 'ON') &SCONFRM = 'OFF' ELSE &SCONFRM = 'ON' IF (&ISFPLLGL NE ' ') &FLMUNA = '1' IF (&ISFPLBLK NE ' ') &SBKUNA = '1' &SACUNA = '1' &SDIUNA = '1' &SCRUNA = '1' &STOUNA = '1' &SSCUNA = '1' &SLAUNA = '1' &SCUUNA = '1' &SCNUNA = '1' &SDTUNA = '1' &SLGUNA = '1' &SBRUNA = '1' )ABCPROC VER (&ZPDC,RANGE,01,19) IF (&ZPDC=1) IF (&ISFPLBLK = ' ') &ABOPTN='A' &ABSELECT='OPTN' ELSE .MSG = &ISFPLBLK IF (&ZPDC=2) IF (&ISFPLFNL = ' ') &ABOPTN='F' &ABSELECT='OPTN' ELSE .MSG = &ISFPLFNL IF (&ZPDC=3) IF (&ISFPLINP = ' ') &ABOPTN='I' &ABSELECT='OPTN' ELSE .MSG = &ISFPLINP IF (&ZPDC=4) IF (&ISFPLBLK = ' ') &ABOPTN='B' &ABSELECT='OPTN' ELSE .MSG = &ISFPLBLK IF (&ZPDC=5) IF (&ISFPLBLK = ' ') &ABOPTN='D' &ABSELECT='OPTN' ELSE .MSG = &ISFPLBLK IF (&ZPDC=6) IF (&ISFPLBLK = ' ') &ABOPTN='S' &ABSELECT='OPTN' ELSE .MSG = &ISFPLBLK IF (&ZPDC=7) IF (&ISFPLDLY = ' ') &ABOPTN='L' &ABSELECT='OPTN' ELSE .MSG = &ISFPLDLY IF (&ZPDC=8) IF (&ISFPLBLK = ' ') &ABOPTN='N' &ABSELECT='OPTN' ELSE .MSG = &ISFPLBLK IF (&ZPDC=9) IF (&ISFPLCNS = ' ') &ABOPTN='C' &ABSELECT='OPTN' ELSE .MSG = &ISFPLCNS IF (&ZPDC=10) IF (&ISFPLBLK = ' ') &ABOPTN='H' &ABSELECT='OPTN' ELSE .MSG = &ISFPLBLK IF (&ZPDC=13) IF (&ISFPLBLK = ' ') &ABOPTN='G' &ABSELECT='OPTN' ELSE .MSG = &ISFPLBLK IF (&ZPDC=14) IF (&ISFPLBLK = ' ') &ABOPTN='U' &ABSELECT='OPTN' ELSE .MSG = &ISFPLBLK IF (&ZPDC=15) IF (&ISFPLBLK = ' ') &ABOPTN='M' &ABSELECT='OPTN' ELSE .MSG = &ISFPLBLK IF (&ZPDC=16) IF (&ISFPLLGL = ' ') &ABOPTN='O' &ABSELECT='OPTN' ELSE .MSG = &ISFPLLGL IF (&ZPDC=17) IF (&ISFPLBLK = ' ') &ABOPTN='T' &ABSELECT='OPTN' ELSE .MSG = &ISFPLBLK IF (&ZPDC=18) IF (&ISFPLBLK = ' ') &ABOPTN='Z' &ABSELECT='OPTN' ELSE .MSG = &ISFPLBLK IF (&ZPDC=19) IF (&ISFPLBLK = ' ') &ABOPTN='W' &ABSELECT='OPTN' ELSE .MSG = &ISFPLBLK )ABC DESC('Help') MNEM(1) PDC DESC('Extended help...') MNEM(1) ACTION RUN(EXHELP) PDC DESC('Keys help...') MNEM(1) ACTION RUN(KEYSHELP) PDC DESC('Help Index...') MNEM(6) ACTION RUN(INDEX) PDC DESC('Tutorial...') MNEM(1) ACTION RUN(TUTOR) PDC DESC('Book...') UNAVAIL(BKUNA) MNEM(1) PDSEP(ON) PDC DESC('Web sites...') MNEM(1) ACTION RUN(WEBHELP) PDC DESC('REXX help...') MNEM(1) ACTION RUN(REXXHELP) PDC DESC('Columns help...') MNEM(1) ACTION RUN(COLSHELP) )ABCINIT .ZVARS=ZPDC &ZPDC=' ' &BKUNA = '0' &ZKEYHELP = ISFJFK&ISFLANG IF (&ISFPLBMG NE ' ') &BKUNA = '1' )ABCPROC VER (&ZPDC,RANGE,01,08) IF (&ZPDC=5) IF (&ISFPLBMG = ' ') &ABHELP='B' &ABSELECT='HELP' ELSE .MSG = &ISFPLBMG )BODY WIDTH(&ZSCREENW) EXPAND(//) $~ Display~ Filter~ View~ Print~ Options~ Help `-------------------------------/-/-------------------------------------------- ISFLN1 $COMMAND INPUT ===>_ISFCMD $SCROLL ===>_ISFS+ #ISFBUF,SHADOW ----------------/-/---------------------------------------------# )INIT &ZKLUSE = Y VPUT (ZKLUSE) PROFILE .HELP = &ISFHELP &ISFH4H = 'ISFJHE&ISFLANG' /******************************************************/ /* Override default colors with user specified colors */ /******************************************************/ .ATTRCHAR() = 'HILITE(&ISFH1) INTENS(&ISFI1) COLOR(&ISFC1) TYPE(OUTPUT)' .ATTRCHAR($) = 'HILITE(&ISFH2) INTENS(&ISFI2) COLOR(&ISFC2) TYPE(TEXT)' .ATTRCHAR(!) = 'HILITE(&ISFH3) INTENS(&ISFI3) COLOR(&ISFC3) TYPE(OUTPUT)' .ATTRCHAR(06) = 'HILITE(&ISFH3) INTENS(&ISFI3) COLOR(&ISFC3)' .ATTRCHAR(@) = 'HILITE(&ISFH4) INTENS(&ISFI4) COLOR(&ISFC4)' .ATTRCHAR(07) = 'HILITE(&ISFH4) INTENS(&ISFI4) COLOR(&ISFC4)' .ATTRCHAR(09) = 'HILITE(&ISFH4) INTENS(&ISFI4) COLOR(&ISFC4) SKIP(ON)' .ATTRCHAR(|) = 'HILITE(&ISFH5) INTENS(&ISFI5) COLOR(&ISFC5)' .ATTRCHAR(13) = 'HILITE(&ISFH5) INTENS(&ISFI5) COLOR(&ISFC5)' .ATTRCHAR(1F) = 'HILITE(&ISFH5) INTENS(&ISFI5) COLOR(&ISFC5)' .ATTRCHAR(?) = 'HILITE(&ISFH6) INTENS(&ISFI6) COLOR(&ISFC6)' .ATTRCHAR(05) = 'HILITE(&ISFH6) INTENS(&ISFI6) COLOR(&ISFC6)' .ATTRCHAR(*) = 'HILITE(&ISFH7) INTENS(&ISFI7) COLOR(&ISFC7)' .ATTRCHAR(11) = 'HILITE(&ISFH7) INTENS(&ISFI7) COLOR(&ISFC7)' .ATTRCHAR(1D) = 'HILITE(&ISFH7) INTENS(&ISFI7) COLOR(&ISFC7)' .ATTRCHAR(08) = 'HILITE(&ISFH8) INTENS(&ISFI8) COLOR(&ISFC8)' .ATTRCHAR(03) = 'HILITE(&ISFH9) INTENS(&ISFI9) COLOR(&ISFC9)' .CURSOR = &ISFCSRN .CSRPOS = &ISFCSRP &ZHTOP = ISFJTOC&ISFLANG &ZHINDEX = ISFJ010&ISFLANG &ZENTKTXT = 'ENTER' &ZAPPTTL = 'z/OS SDSF' /* URLs for hotspots; ISFBKURL needs to be updated each release */ &ISFILURL = 'http://www.ibm.com/servers/eserver/zseries/zos/bkserv/' &ISFBKURL = 'http://publibz.boulder.ibm.com/epubs/pdf/isf4cs70.pdf' &ISFSDURL = 'http://www.ibm.com/servers/eserver/zseries/zos/sdsf/' &CMD=TRUNC(&LASTISFC,' ') IF (&CMD = 'F','FIND') IF (.TRAIL NE &Z) &FINDSTRQ = .TRAIL &FINDSTRQ = '*&FINDSTRQ.*' IF (&CMD = 'RES','RESET') &FINDSTRQ = &Z &SHADOW=&ISFBUF *REXX(ISFBUF,SHADOW,ZSCREENW,ISFLN1,FINDSTRQ,LASTISFC) /* REXX **************************************************************/ /* Name this Rexx exec SDSFXIT !!! */ /* */ /* Used in conjunction with panel ISFPCU41 to do */ /* highlighting of SDSF data (log, job output, etc) */ /* Author: Doug Nadel (nadel@us.ibm.com) */ /* This code is as-is with no warrenty of any kind */ /*********************************************************************/ Call hello Signal On Novalue Call initialize /* Specify keywords to highlight */ Call add "CPU,20,W" /* JES messages */ Call add "TYPE:,14,W" /* SCLM listing */ Call add "Return Code is,19,Y" /* ADRDSSU listing */ Call add "No Statements Flagged in this Assembly,,g" /* Asm listing */ Call add "Top of Data,,b" /* General */ Call add "BOTTOM OF DATA,,b" /* General */ Call add "JES2 JOB STATISTICS,,W" /* JES listing */ Call add "NOT EXECUTED,,y" /* Calls to 'addp' specify strings that are to be highlighted after */ /* all other highlighting is complete. Use this to force highlights */ /* of specific strings in all cases. For exammple, any reference to */ /* the current user id.' Symantics are the same as for add: */ Call addp userid() || ",,Y" /* General highlighting of userid */ /* Calls to 'addq' specify a pattern with @=a-z, #=number and other */ /* characters being themselves. Only the pattern itself is */ /* highlighted. Use this sparingly. It is relatively expensive. */ /* addqx is similar. #=hexdigit, @ is not meaningful */ Call addq "@@@###E,R" Call addq "@@@###S,R" Call addq "@@@###W,u" Call addq "@@@####E,R" Call addq "@@@####S,R" Call addq "@@@####W,u" Call addq "IGY@@####-U,r" Call addq "IGY@@####-S,p" Call addq "IGY@@####-E,p" Call addq "IGY@@####-W,u" Call addq "IBM####@ S,p" Call addq "IBM####@ E,p" Call addq "IBM####@ W,u" Call addqx "ABEND###-##,r" /* Calls to 'addt' specify a string, And an optional color to be */ /* Used to highlight from the start of the string to the end of the */ /* Screen line in the specified color. */ Call addt "IKT100,W" Call addt "J E S 2 ,W" Call addt "** ASMA,R" /* Asm listing */ Call addt " //,G" /* Part of jcl coloring */ Call addt " //*,T" /* Part of jcl coloring */ Call addt " XX,Y" /* Part of jcl coloring */ Call addt " XX*,B" /* Part of jcl coloring */ Call addt "DFH5109,P" /* end of job highest retcode dfhcsdup*/ Call addt "ICH408I,R" /* Racf failures */ Call addt "ICH70001I,W" /* Last access */ Call addt "IEB147I,P" /* end of job highest retcode iebcopy */ /* Call addt "IEC331I,R" /* Severe catalog errors */ Call addt "IEC332I,R" /* Severe catalog errors */ Call addt "IEC333I,R" /* Severe catalog errors */ */ Call addt "IEE600I,Y" /* Reply to xx is; */ Call addt "IEFC01,y" /* Job interpreter messages */ Call addt "IEFC02,y" /* Job interpreter messages */ Call addt "IEFC03,y" /* Job interpreter messages */ Call addt "IEFC452I,Y" Call addt "IEFC6,y" /* Job interpreter messages */ Call addt "IEFC653I,P" /* Jcl substitution message */ Call addt "IEFC7,y" /* Job interpreter messages */ Call addt "IEFC8,y" /* Job interpreter messages */ Call addt "IEF125I,W" /* Logon */ Call addt "IEF126I,W" /* Logoff */ Call addt "IEF212I,y" Call addt "IEF272I,y" /* step was not executed */ /*Call addt "IEF4,y" */ Call addt "IEW2008I,Y" /*Call addt "IGYDS,Y" */ Call addt "SYSTEM COMPLETION CODE,y" /* Calls to 'addn' specify a string, And an optional color to be */ /* Used to highlight from the start of the string to the end of the */ /* Screen line in the specified color. All numbers must be zero */ /* In the string to enable number data to be recognized for all */ /* Numbers so that things like timestamps and jobids can be shown. */ Call addn "00.00.00 JOB00000 ,W" Call addn "COND CODE 0000,Y" Call addn "Return Code 0000,Y" /* Call addn '00.00.00 job00000 -,Y' */ Call addn "NC0000000 ,w,56" /* Commands in syslog */ Call addn "SC ,w,56" Call addn "==000000==,Y" Call addn " *00 ,Y" /* Calls to 'addj' are jcl verbs to be highlighted in red if they */ /* Are found after a // Or xx. */ Call addj "CNTL DLM EXEC JOB SET" Call addj "COMMAND ELSE IF OUTPUT THEN" Call addj "DATA ENDCNTL INCLUDE PEND XMIT" Call addj "DD ENDIF JCLLIB PROC" /* -------------- end of customization ----------------------------- */ Call Highlight_pattern Call Highlight_keywords_preprocessing Call Highlight_SCLM_and_jobnames Call Highlight_keywords_to_end_of_line Call Highlight_number_triggers_to_end_of_line Call Highlight_JCL Call Highlight_data_set_names Call Highlight_keywords_postprocessing Call Highlight_find_string Call GoodBye Highlight_SCLM_and_jobnames: /* Highlight SCLM listings where first non blank is an asterisk */ /* Also highlight local jobs in da, St, O, H listings */ userid = userid() ulen = length(userid) If screenType = 1 & column < 3 Then Do r = 1 to rows line = substr(isfbuf,((r - 1) * zscreenw) + 1,zscreenw) If substr(strip(line),1,1) == "*" Then Do c = 1 to zscreenw If substr(line,c,1) == "*" Then shadow = overlay("R",shadow,(r - 1) * zscreenw + c,1) Else shadow = overlay("Y",shadow,(r - 1) * zscreenw + c,1) End If substr(line,7,ulen) == userid Then Do i = length(strip(substr(line,7,8))) shadow = overlay("Y",shadow,(r - 1) * zscreenw + 7,ulen,"Y") shadow=overlay("P",shadow,(r-1)*zscreenw+7+ulen,i-ulen,"P") End End Return /* Look at the copy, Finding keywords and update shadow accordingly */ /* Highlight keys for key to end of line */ Highlight_keywords_to_end_of_line: Do a = 1 to targets.0 target = targets.a wordlen = length(target) position = pos(target,isfbuf) Do While position > 0 tlen = zscreenw - (position - 1) // zscreenw tlen = length(strip(substr(isfbuf,position,tlen),"T")) shadow = overlay(tcolor.a,shadow,position,tlen,tcolor.a) position = pos(target,isfbuf,position + 1) End End Return /* Highlight to end of line for number keys */ Highlight_number_triggers_to_end_of_line: Do a = 1 to keynums.0 keynum = translate(keynums.a) position = pos(keynum,isfbufzero) Do While position > 0 position = position + nlen.a len = zscreenw - (position - 1) // zscreenw len = length(strip(substr(isfbuf,position,len),"T")) shadow = overlay(ncolor.a,shadow,position,len,ncolor.a) position = pos(keynum,isfbufzero,position + 1) End End Return /* Highlight jcl verbs in // And xx lines */ Highlight_jcl: Do r = 0 to rows line = substr(isfbuf,zscreenw * r + 1,zscreenw) p = pos("//",line) If p = 0 Then p = pos("XX",line) If p > 0 & substr(line,p + 2,1) <> "*" Then Do line = substr(isfbuf,zscreenw * r + 1,zscreenw) Do a = 1 to jclwords.0 jclword = jclwords.a position = pos(jclword,line,p) If position > 0 Then Do s = zscreenw * r + position shadow = overlay(jcolor.a,shadow,s,jlen.a,jcolor.a) Leave a End End End End Return /* Highlight real dsnames in jcl (Dsn= Only) */ Highlight_data_set_names: Do j = 1 to 2 jclword = word("DSN= DSNAME=",j) ln = length(jclword) Do r = 0 to rows line = substr(isfbuf,zscreenw * r + 1,zscreenw) position = pos(jclword,line) If position > 0 & substr(line,position + ln,1) <> "&" Then Do c = substr(line,position + ln,1) Do p = position + ln to zscreenw While c <> " " & c <> "," s = zscreenw * r + p shadow = overlay("W",shadow,s,1,"W") c = substr(line,p + 1,1) End End End End Return /* Highlight patterns before everything else is done */ /* $$ */ Highlight_pattern: Procedure Expose keywords_pat. keywords_xpat. , isfbufcopy shadow qcolor. qxcolor. zscreenw isfbuf alf = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" if keywords_pat.0 > 0 then do newcopy = translate(isfbuf,copies("@",length(alf)),alf) newcopy = translate(newcopy,"##########","0123456789") end Do a = 1 to keywords_pat.0 keyword = keywords_pat.a wordlen = length(keyword) keywordt = translate(keyword ,copies("@",length(alf)),alf) keywordt = translate(keywordt,"##########","0123456789") position = pos(keywordt,newcopy) Do While position > 0 found = 0 fndword = translate(substr(isfbuf,position,wordlen)) If position = 1 Then Do If substr(isfbufcopy,position + wordlen,1) == " " Then found = 1 End Else If substr(isfbufcopy,position - 1,1) == " " Then If substr(isfbufcopy,position + wordlen,1) == " " Then found = 1 If found Then Do b = 1 to wordlen pattern_char = substr(keyword,b,1) found_char = substr(fndword,b,1) If pattern_char <> "@" & pattern_char <> "#" & , pattern_char <> found_char Then found = 0 End If found Then Do qcolor = qcolor.a shadow = overlay(qcolor,shadow,position,wordlen,qcolor) End position = pos(keywordt,newcopy,position + 1) End End if keywords_xpat.0 > 0 then do newcopy = translate(isfbuf,"################","0123456789ABCDEF") End Do a = 1 to keywords_xpat.0 keyword = keywords_xpat.a wordlen = length(keyword) keywordt= translate(keyword,"################","0123456789ABCDEF") position = pos(keywordt,newcopy) Do While position > 0 found = 0 fndword = translate(substr(isfbuf,position,wordlen)) If position = 1 Then Do If substr(isfbufcopy,position + wordlen,1) == " " Then found = 1 End Else If substr(isfbufcopy,position - 1,1) == " " Then If substr(isfbufcopy,position + wordlen,1) == " " Then found = 1 If found Then Do b = 1 to wordlen pattern_char = substr(keyword,b,1) found_char = substr(fndword,b,1) If pattern_char <> "#" & pattern_char <> found_char Then found = 0 End If found Then Do qxcolor = qxcolor.a shadow = overlay(qxcolor,shadow,position,wordlen,qxcolor) End position = pos(keywordt,newcopy,position + 1) End End Return /* Highlight keywords before everything else is done */ Highlight_keywords_preprocessing: Do a = 1 to keywords_pre.0 keyword = keywords_pre.a wordlen = length(keyword) position = pos(keyword,isfbufcopy) Do While position > 0 If position = 1 Then Do If substr(isfbufcopy,position + wordlen,1) == " " Then Do pcolor = pcolor.a plen = min(plen.a,zscreenw - (position - 1) // zscreenw) shadow = overlay(pcolor,shadow,position,plen,pcolor) End End Else If substr(isfbufcopy,position - 1,1) == " " Then If substr(isfbufcopy,position + wordlen,1) == " " Then Do pcolor = pcolor.a plen = min(plen.a,zscreenw - (position - 1) // zscreenw) shadow = overlay(pcolor,shadow,position,plen,pcolor) End position = pos(keyword,isfbufcopy,position + 1) End End Return /* Highlight keywords after everything else is done */ Highlight_keywords_postprocessing: Do a = 1 to keywords_post.0 keyword = keywords_post.a wordlen = length(keyword) position = pos(keyword,isfbufcopy) Do While position > 0 If position = 1 Then Do If substr(isfbufcopy,position + wordlen,1) == " " Then Do kcolor = kcolor.a klen = min(klen.a,zscreenw - (position - 1) // zscreenw) shadow = overlay(kcolor,shadow,position,klen,kcolor) End End Else If substr(isfbufcopy,position - 1,1) == " " Then If substr(isfbufcopy,position + wordlen,1) == " " Then Do kcolor = kcolor.a klen = min(klen.a,zscreenw - (position - 1) // zscreenw) shadow = overlay(kcolor,shadow,position,klen,kcolor) End position = pos(keyword,isfbufcopy,position + 1) End End Return Highlight_find_string: len = length(findstr) If len > 0 Then Do r = 0 to rows position = 1 line = translate(substr(isfbuf,zscreenw * r + 1,zscreenw)) Do Until position = 0 position = pos(findstr,line,position) If position > 0 Then Do s = zscreenw * r + position shadow = overlay("w",shadow,s,len,"w") position = position + len End End End Return setup_find_string: findstr = findstrq If length(findstr) > 2 Then If substr(findstr,1,1) = "*" Then If substr(findstr,1,1) = substr(findstr,length(findstr))Then findstr = delstr(delstr(findstr,length(findstr)),1,1) If length(findstr) > 2 Then If substr(findstr,1,1) = "'" | substr(findstr,1,1) = '"' Then If substr(findstr,1,1) = substr(findstr,length(findstr))Then findstr = delstr(delstr(findstr,length(findstr)),1,1) Return hello: inline = (ISFBUF == value('isfbuf')) if inline=0 then Call ISPREXPX 'I' If "ISFBUF" = value("isfbuf") Then Do; Say "Error in SDSF screen panel exit." Say "Variables passed incorrectly." Say "Calls to ISPREXPX may be missing." Call GoodBye End; Call setup_find_string Return GoodBye: if inline=0 then Call ISPREXPX 'T' Return add: a = keywords_post.0 + 1 keywords_post.0 = a Parse value Arg(1) With keywords_post.a "," klen.a "," kcolor.a keywords_post.a = translate(keywords_post.a) If klen.a = "" Then klen.a = length(keywords_post.a) If kcolor.a = "" Then kcolor.a = default_highlight_color Return addp: a = keywords_pre.0 + 1 keywords_pre.0 = a Parse value Arg(1) With keywords_pre.a "," plen.a "," pcolor.a keywords_pre.a = translate(keywords_pre.a) If plen.a = "" Then plen.a = length(keywords_pre.a) If pcolor.a = "" Then pcolor.a = default_highlight_color Return addq: a = keywords_pat.0 + 1 keywords_pat.0 = a Parse value Arg(1) With keywords_pat.a "," qcolor.a keywords_pat.a = translate(keywords_pat.a) If qcolor.a = "" Then qcolor.a = default_highlight_color Return addqx: a = keywords_xpat.0 + 1 keywords_xpat.0 = a Parse value Arg(1) With keywords_xpat.a "," qxcolor.a keywords_xpat.a = translate(keywords_xpat.a) If qxcolor.a = "" Then qxcolor.a = default_highlight_color Return addt: a = targets.0 + 1 targets.0 = a Parse value Arg(1) With targets.a "," tcolor.a targets.a = translate(targets.a) If tlen.a = "" Then tlen.a = length(targets.a) If tcolor.a = "" Then tcolor.a = default_highlight_color Return addn: a = keynums.0 + 1 keynums.0 = a Parse value Arg(1) With keynums.a "," ncolor.a "," nlen.a keynums.a = translate(keynums.a) If nlen.a == "" Then nlen.a = 0 If ncolor.a == "" Then ncolor.a = default_highlight_color Return addj: v = strip(space(Arg(1))) Do While v <> "" a = jclwords.0 + 1 jclwords.0 = a Parse Var v jclwords.a v jclwords.a = " "jclwords.a" " jlen.a = length(jclwords.a) End Return initialize: shadow = copies(" ",length(shadow)) screenType = 0 Parse Var isfln1 . display . If display == "STATUS" | display == "OUTPUT" | display == "DA" | , display == "HELD" | display == "INPUT" Then screenType = 1 If display == "SYSLOG" Then screenType = 2 If screenType = 0 Then Call GoodBye default_highlight_color = "R" Parse value 0 With keywords_pre.0 pcolor. plen. Parse value 0 With keywords_post.0 kcolor. klen. Parse value 0 With keywords_pat.0 qcolor. qlen. Parse value 0 With keywords_xpat.0 qxcolor. qxlen. Parse value "0 R" With jclwords.0 jcolor. jlen. Parse value 0 With targets.0 tcolor. tlen. Parse value 0 With keynums.0 ncolor. nlen. /* Make a copy of isfbuf with only alphanumerics. This will be used */ /* As the reference string for finding keyword. */ /* Set up translate table of valid keyword characters */ trtable = "ABCDEFGHIJKLMNOPQRSTUVWXYZ$#@0123456789_:*/" trtable = translate(xrange("00"x,"FF"x),,trtable," ") isfbufcopy = translate(isfbuf) isfbufcopy = translate(isfbufcopy,,trtable," ")/* Remove non-kwd chars*/ /* Make a copy of isfbuf with only dsname characters incl parens */ /* And quotes */ /* trtable = "ABCDEFGHIJKLMNOPQRSTUVWXYZ$#@0123456789@$#_()""" trtable = translate(xrange("00"x,"FF"x),,trtable," ") isfbufdsns = translate(isfbuf) isfbufdsns = translate(isfbufdsns,,trtable," ")/* Remove non-kwd chars*/ */ isfbufzero = translate(translate(isfbuf,"0","123456789","0")) rows = ((length(isfbuf) + zscreenw - 1) % zscreenw ) column = 1 Parse Var isfln1 . "COLUMNS" column . Parse Var column column "-" . If column = "" | datatype(column,"N") = 0 Then column = 1 Return *ENDREXX )PROC &LASTISFC = &ISFCMD IF (&ISFCMD = 'RES','RESET') &ISFCMD = &Z &ISFCSRN = .CURSOR &ISFCSRP = .CSRPOS &ISFLVL = LVLINE(ISFBUF) )HELP FIELD(ZABC01) PANEL(ISFJYD) FIELD(ZPDC0101) PANEL(ISFJYPN) FIELD(ZPDC0102) PANEL(ISFJYLG) FIELD(ZPDC0103) PANEL(ISFJYDE) FIELD(ZABC02) PANEL(ISFJYF) FIELD(ZPDC0201) PANEL(ISFJYFF) FIELD(ZPDC0202) PANEL(ISFJYFP) FIELD(ZPDC0203) PANEL(ISFJYFO) FIELD(ZPDC0204) PANEL(ISFJYFD) FIELD(ZPDC0205) PANEL(ISFJYFS) FIELD(ZPDC0206) PANEL(ISFJYFB) FIELD(ZPDC0207) PANEL(ISFJYFR) FIELD(ZABC03) PANEL(ISFJYV) FIELD(ZPDC0301) PANEL(ISFJYVS) FIELD(ZPDC0302) PANEL(ISFJYVA) FIELD(ZPDC0303) PANEL(ISFJYVH) FIELD(ZPDC0304) PANEL(ISFJYVO) FIELD(ZPDC0305) PANEL(ISFJYVW) FIELD(ZABC04) PANEL(ISFJYP) FIELD(ZPDC0401) PANEL(ISFJYPS) FIELD(ZPDC0402) PANEL(ISFJYPD) FIELD(ZPDC0403) PANEL(ISFJYPF) FIELD(ZPDC0404) PANEL(ISFJYPP) FIELD(ZPDC0405) PANEL(ISFJYPC) FIELD(ZPDC0406) PANEL(ISFJYPI) FIELD(ZABC05) PANEL(ISFJYO) FIELD(ZPDC0501) PANEL(ISFJYOA) FIELD(ZPDC0502) PANEL(ISFJYOF) FIELD(ZPDC0503) PANEL(ISFJYOI) FIELD(ZPDC0504) PANEL(ISFJYOB) FIELD(ZPDC0505) PANEL(ISFJYOD) FIELD(ZPDC0506) PANEL(ISFJYOC) FIELD(ZPDC0507) PANEL(ISFJYOE) FIELD(ZPDC0508) PANEL(ISFJYOT) FIELD(ZPDC0509) PANEL(ISFJYOO) FIELD(ZPDC0510) PANEL(ISFJYOS) FIELD(ZPDC0511) PANEL(ISFJYOK) FIELD(ZPDC0512) PANEL(ISFJYOP) FIELD(ZPDC0513) PANEL(ISFJYOL) FIELD(ZPDC0514) PANEL(ISFJYOU) FIELD(ZPDC0515) PANEL(ISFJYON) FIELD(ZPDC0516) PANEL(ISFJYOM) FIELD(ZPDC0517) PANEL(ISFJYOY) FIELD(ZPDC0518) PANEL(ISFJYOG) FIELD(ZPDC0519) PANEL(ISFJYOH) FIELD(ZABC06) PANEL(ISFJYH) FIELD(ZPDC0601) PANEL(ISFJYHE) FIELD(ZPDC0602) PANEL(ISFJYHK) FIELD(ZPDC0603) PANEL(ISFJYHI) FIELD(ZPDC0604) PANEL(ISFJYHT) FIELD(ZPDC0605) PANEL(ISFJYHB) FIELD(ZPDC0606) PANEL(ISFJYHW) FIELD(ZPDC0607) PANEL(ISFJYHX) FIELD(ZPDC0608) PANEL(ISFJYHC) )END /************************************************/ /* Proprietary Statement = */ /* */ /* Licensed Materials - Property of IBM */ /* */ /* 5694-A01 */ /* (c) Copyright IBM Corp. 1981, 2007. */ /* */ /* Status = HQX7740 */ /************************************************/