JHyz X}pe2(=$;@?52===GQ"C%X. x  p  ZxT{#vL=u!""L""##7#}$*$I$$$) )ɮH) )ɮH0 I0  0 I0 0AI0 ) )ɮ) p )70 7 0'A9AÉ Ā I AIAA 0 7AA @@H0 . 0 ' 0 ' 0 '0 @ )ۮ0 ).0 ).Err -xxxxxError xxxxx0  0 'AÀp) )ɮ G...Error XXXXX, LN ) )ɮ0  0%  0').Error xxxxx, READUPDATE $RECEIVE Err.)ɮH@0  0  0'...Error xxxxx, BEGINTRANSACTION.H@0  0  0'...Error xxxxx, ENDTRANSACTION.q) 0'q)i  0 Æ )ۮ )ۮ Ä )ۮ Ä )ۮÄ )ۮx 0'o 0'e 0'| 0'r 0'hy 0'^q 0'Ti 0'Ja 0'@Y 0'6Q 0',I 0'" !? 0' @G t}dd-mmm-yr hh:mm:ssJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC???  IO ) )ɮ H@ 0  0 0  IO 0'...Error xxxxx, OPEN of OUT file: 0 I0  0 I0 0AI 0 ) )ɮq)&n , %,0Kc 0'00 . 0$ )ۮ0$).) ))G0) ).04). 0G )ۮ0G). A $. "7y 075Ag 0'ÁyA9Éـ*7R 0 7I 07ĎA9 0'ÁyA9ÉѷÏ  Ïā ĆÉ 0' , :A0 B 0 AYO; 0'0 A )ۮ0 0 0  0'.AYOIA9X*Altfile xx, {  $ A $AAKOA $A $7A $AH!O0 AI O )ۮ0 ). 0  0 'AH!O@ p0  0'0 AIO )ۮ0 ).0 AIO )ۮ0 ).0 AIO )ۮ0 ).0 I0 I0 q)..A9*ALTKEY ( "", FILE xx, KEYOFF XXXX, KEYLEN XXXX, NULL xxx, UNIQUE ) 0 I 0 M 0'0  )ۮ0 )..0 . 0 2 0'0  )ۮ0 )..*Key Length: xxxxKey Offset: xxxx0I0 0 .  0'.0 ). 0 ~ 0'.  0 m 0 u 0'  0 e 0 k 0'  0 [ 0 d 0'  0 T 0 \ 0'.~~~.0 H 0 L 0'0 @ 0 D 0'.0 8 0 < 0'0  )ۮ0 )..0  0 " 0'0  )ۮ0 ).d0  )ۮ0 ).I0 q)..0  0  0'0  )ۮ0 )..0  0  0'0  )ۮ0 )..0  0  0'0  )ۮ0 )..File Type: UNSTRUCTUREDFile Type: RELATIVEFile Type: ENTRY SEQUENCEDFile Type: KEY SEQUENCEDAudited: YESAudited: NOFile Code: xxxxxExtents: ( xxxxx,xxxxx )Max Extents: xxxxxRecord Len: xxxxxData Block Len: xxxxx) )ɮ"0  0# 0  CO 0').ai LNq) )ɮ"0 Z 0# 0  CO[ 0').aiA0 @ 0 0  CO> 0'..*Error xxxxx, READ of PACKAGE file: Error xxxxx, READ of PACKAGE file: Corrupt data on PACKAGE file:  LN) )ɮ!0  0 0 K GO 0').*Error xxxxx, UNPACK file:  Ria . . IIq%I  COA22) AA))ɮ H@ 0  0% 0  CO 0'...Error xxxxx, CREATE of PACKAGE file: a)Ү!0  0( 0  CO 0').Error xxxxx, POSITION of PACKAGE file:   CO) )ɮ H  CO) )ɮ H*0  0# 0  CO 0'...*Error xxxxx, OPEN of package file: q)q )@@ .~@I7*y7yA)q)I) H@ MO MOd~qq) )ɮ!0  0$ 0  CO 0').A JH4q) )ɮ#0  0$ 0  CO 0').i). JHIq) )ɮ#U0 u 0$ 0  COv 0').,) )ɮ!0 U 0$ 0  COV 0').Error xxxxx, READ of PACKAGE file: Error xxxxx, READ of PACKAGE file: Error xxxxx, WRITE of PACKAGE file: Error xxxxx, WRITE of PACKAGE file:  # JO) >)ۮH@  JOq) )ɮ H@Aqq) )ɮA )ۮHA JH0 0  JO JO CNIhhh`). Rq) )ɮ4`hhhA0  0 0  CO 0'.."!0  0$ 0  CO 0').A R0  0 0  CO 0'..B .   EN) )ɮH@&I0 .0    EN..hhA`).A`h`hh`).A).h5Error. PACKAGE file corrupt: Error xxxxx, READ of PACKAGE file: Error. PACKAGE file corrupt: ..ŀ I7ď.7 7,$7 I, 73 0 7A977 0 Aĉ7 0  0  0'.0  0 0 0 z 0 x 0'.0 l 0 f 0'.0 Z 0 \ 0'.0 P 0, _ 0'.0 S 0? l 0'.0 ` 0 Z 0'. FORMAT: format: VIEW [, ] GET [, [, ]] 0 I LON I  LON0  0  0'... I  LON0  0  0'...0  KOh 0  LO0 ). CO LO0 ). EO LO0 (). FO CO0 " 0. 2 0'.Invalid command.Invalid command. Could not locate PACKAGE file name in command.  EO #))I) )ҮH@ 0 1 0) 0  EO5 0'...  EO  )HError xxxxx, Cannot resolve source file: EO0  0 ' EO.\*.$*.*.*q )q)q <0 .0  EO EO   EO) )ɮ H@ 0 u 0" 0  EOu 0'...I7)y7*y7+y7,y7-y7.y72y73y74y7By7Gy7Hy7y7y7dy7ey7fy7gy7hyA F)q)Iq) H@#@ 0  0- 0  EO 0'...I IIIIIIIIIIII ,I,IIA H8AB IA9XI AYOIA9X0IA0AYOAYOIA9XI0AIError xxxxx, OPEN of source file: Error xxxxx, FILE_GETINFOLIST_, source file: `). ) )ɮ!0  0$ 0  CO 0').Error xxxxx, WRITE of PACKAGE file:  LN ))I )"0  0" 0  EO 0').k) )ɮ!0 k 0% 0  COm 0'). LN) )ɮ!0 M 0% 0  COO 0').;Error xxxxx, READ of SOURCE file: Error xxxxx, WRITE of PACKAGE file: Error xxxxx, WRITE of PACKAGE file: a). Rq) )ɮA R0  0 0  CO 0'..Error. PACKAGE file corrupt: q)q #. EO0  0%  0'... F.'0  0 0  EO 0'. )ۮH  F`` R) )ɮ!0  0$ 0  CO 0').`:`).!`).` ) )ɮ!0  0$ 0  CO 0').`).! R. .0 s 0 0  EOh 0'. )ۮH )ۮHUnable to determine file to be added.Error. File already exists: Error xxxxx, WRITE of PACKAGE file: Error xxxxx, WRITE of PACKAGE file: Added -> ...'0  0! 0  EO 0'. )ۮH`). R) )ɮ!0  0$ 0  CO 0').`7`).!`).` R) )ɮ!0  0$ 0  CO 0').`8`).!`).` R) )ɮ!0 z 0$ 0  CO{ 0').0 l 0 0  EOa 0'. )ۮHError. File(s) not in package: Error xxxxx, WRITE of PACKAGE file: Error xxxxx, WRITE of PACKAGE file: Error xxxxx, WRITE of PACKAGE file: Deleted -> .0 *I EO 00 A 0) O 0" Y 0'....0 H 0! 0  EOH 0'. )ۮHFilename Code EOF Last Modification RecError. File(s) not in package: ....# )ۮH."q )q)q <.I7)y7*y7+y7,y7-y7.y72y73y74y7By7Gy7Hy7dy7ey7fy7gy7hyI IIIIIIIIIIIIIA J8CD IA9XI AYOIA9X0IA0AYOAYOIA9XI0AI K GOA)q) H@ 0 _ 0, 0 K GOd 0'... K GO) )ɮ H@$@ 0 ; 0! 0 K GO; 0'.... )ۮHError xxxxx, FILE_CREATELIST_, source file: Error xxxxx, OPEN of WRITE file: q qq20);I0 ( FO FOI AIOA9IAWN7 7.AA@A H077AINAAAAAII7AAKNAAIOIAIA9Ay0 .  I AIOA9IAWN7 7.AA@A H077AINAAAAAII7AAKNAAIOIAIA9Ay GO0 KI IIA H0\fAHO_AHOA H0; 0GI A I0AJO" 0' AIOI GOAINyA H0\ AHOy\A H0\QAHOJ A I0AJO 0' AIOI GOAINyAHOA H0 0yA H0$RAHOKAHOA H0r 03I A I0AJOY 0' AIOI GOAINyH A I0AJO) 0' AIOI GOAINAHOA H0 0yyAAHOAHODAHO A H0*1 A I0AJO 0' AIOI GOAINyC A I0AJO 0' AIOI GOAINAHO A H0*yyAHO.AHO A H0* A I0AJOAHO GO A I0AJOAHO GO\*..\*$*..$*..). Rq) )ɮ!0  0$ 0  CO 0').A R0  0 0  CO 0'..~ .   EN) )ɮH@0  0# 0  EO 0'.@` FO.'0 K0 .   GN K GO K )H0 l 0 0 . ` 0 0 K GNQ 0'..&).?Error xxxxx, READ of PACKAGE file: Error. PACKAGE file corrupt: Error. Invalid source specified: Unpacking to ...( )ۮH  KO  )H0 n 0 KO0 Y 0 KO0 E 0 KO0 0 0 KO0  0 KOADDDELETEVIEWREPLACEGET..+.$$.)"0  0 ! 0'. @GUnrecognized command:  LOH a 0#A0 0T# 0I\  )H  )HA0O # ,A0O , , A0O ,A0O  , A0O ,IA9  LOH 0IRAAI 0AJ 0+AH 0 OAI 0AH 0OOIA9ONIA9  0IRAAI0AJ0+AH0 OAI0AH 0OOIA9ONIA9 q0q 0)  JOq))H  JO#q))H0  0  0'.0  0  0'.0  0  0'.0  0  0'.0  0 A 0'.0  0 A 0 A 0'  0'.0  0  0'.0  0  0'..0  0G  0'.0  0  0'.0  0  0'...$0  0G  0'. Self Extracting Package. To extract: VOLUME RUN GET ,\*.$*.*.*, .* General Help:-----------------------------------------------------------------------Contents: -----------------------------------------------------------------------qq) LOH  , ,  , n# HO ))H # IO ))H.  LN LOB 07 0 LO LO   LO0  0B LO LO ../.)ɮ.IA0 0 0'A0O  ,'A0O LOGICAL-FILE-NAME FILENAMEI AI 0AH 05 0'AI 0IAI0AH0 0'AI0TEST-PARAM TRACE  KO0  0 0 ".1.2  q)II7OyyqAAq) )ҮIAaO ).4 DO  DO) )ɮ  ) )ɮH$RECEIVEq0)0A,')) )ɮ H@0  0  0'...Error xxxxx, OPEN of $RECEIVE. ) )p) )ɮ G@)ɮH@0 Y 0# d 0').. LO.0F )Ү!.-)ɮ..)ɮ)ɮ @G0 % 0 . 0').Error xxxxx, READUPDATE of $RECEIVEError xxxxx, REPLYX of $RECEIVEA0O A0O ,A0N ,A9,AH 00  0 AI 0 0'..A9ѪReqd param missing: .5.3.6.7 LO LO.8.9 ) Y@ ).q0)(.;.:.,)ɮ؃׃qedHxt'!  A@( 0|ARMTRAPAWAITIOX BEGINTRANSACTION DNUMOUTENDTRANSACTION FILENAME_DECOMPOSE_FILENAME_MATCH_FILENAME_RESOLVE_ FILE_CLOSE_ FILE_CREATELIST_  FILE_CREATE_ FILE_GETINFOLIST_ FILE_GETINFO_ FILE_OPEN_ INTERPRETTIMESTAMP LASTADDR NUMOUT OLDFILENAME_TO_FILENAME_ POSITION PROCESS_GETINFOLIST_ PROCESS_GETINFO_  PROCESS_STOP_ READUPDATEXREADX REPLYX STOP STRING_UPSHIFT_WRITEX $# $ !L NL G #7#R#' 2 _ I$|K4  nV>w !! " #0NDR_ E ' w#####"$Aav:b ^ FV ABEND^PROGRAM = ARM^THE^TRAP $; BEGINTRANS - BUILD^ERROR^NUMBER G BUILD^TIMESTAMP  COMMAND^ERROR COMPRESS CREATE^PACKAGE ] DETERMINE^TARGET n' DISPLAY^HELP   DISPLAY^INFO SDISPLAY^INFO^SHORT vXDISPLAY^SELF^EXTRACT^HELP/ENDTRANS *  FATAL^ABORT!"FIND^FILE^IN^PACKAGE : pFIND^SOURCE^FNAMEZ GET^HOMETERM 0"4 GET^INPUTGET^WORD `  HOMETERM^MSG DQ+INITIALIZE^VARIABLES ""3INIT^ASSIGN^DATA^TABLE 5"1INIT^PARAM^DATA^TABLEh"L2LJSF + MAIN^PROC $<OPEN^AND^INFO^ON^SOURCE^FILE x OPEN^HOMETERM-#5 OPEN^OUTFILE I  OPEN^PACKAGE  )m OPEN^RECVJ#36OUT^MSG3%PACK^POS =  POST^READ^RECV =C PREPROCESS^COMMAND + PROCESS^ADD^"PROCESS^ASSIGN^MSG uu-PROCESS^DELETE S## PROCESS^GET )PROCESS^PARAM^MSG. PROCESS^RECV #}7PROCESS^REPACK *PROCESS^REPLACE%PROCESS^STARTUP$:PROCESS^STARTUP^MSG!0PROCESS^UNPACK $k  PROCESS^VIEW v$ PROCESS^WORK 8=,READ^POS J{!RESOLVE^SOURCE^FILEnSELF^EXTRACTINGm  STOP^PROGRAM G UNPACK^FILE& UNPACK^FILES JL( UPDATE^DIR ETVERIFY^WE^HAVE^REQD^ASSIGNS$*8VERIFY^WE^HAVE^REQD^PARMS?$I9WRITE^PACKAGE^DATA   ZERO^SUPPRESS$;$ #imk*  9QY] " V1 D) F" $#\3 K   hj% w## =$t#j s K 4 nEl+U0o[G  :$""$!$$I^^GTOQg~V o i [ { O#}>#D#$$# B$dq" $u#k"om,W2  J$$S<v^F  xy(e=;e~w4 e\SWD.$TEST2.JWATCH.ALERT 0?TACLROUTINE#FRAME 9#PUSHprefix{Warningprefixoutputbythisroutine.!};#PUSHlocationq{Wherethealertmessageistobesent.!}(#PUSHmsg{Themessagetobesent.!}pU===============================================================================X#SETFprefixb!!ALERT!!@#APPENDlocationF[#OUT]#(#APPENDlocationE$HOME'#APPENDlocationB$0*U===============================================================================. [#DEFdisplay^helpMACRO|BODY|2g#OUTPUT6g#OUTPUTALERT.:g#OUTPUT> g#OUTPUT&BhNSendsthetext"[prefix]"followedbythetextpassedtothisroutineto1orFP g#OUTPUT&J8:moredevices,whosevaluesarehard-codeinthisroutine.N g#OUTPUTR!g#OUTPUTFORMAT:%ALERTU*g#OUTPUTEXAMPLE:ALERTThisisamessage.Yg#OUTPUT]]a[#DEFdo^workMACRO|BODY|ed#SETmsg[prefix][msg]ixf[#LOOPm`&|WHILE|NOT[#EMPTYV/BLANK/ location]qH|DO|u0"VARTOFILEmsg[#EXTRACTlocation]ya]}]%[#CASE[#ARGUMENT/TEXTmsg/TEXTEND] #|1|do^work#|2|display^help] #UNFRAMENFRAMESETnoabendgdo^work#|3|display^help]h #UNFRAMEnoabend d#SETnoabendgdo^work#|3|display^help]h #UNFRAMEdork#|3|display^help]h #UNFRAMEedgdo^work#|3|display^help]h #UNFRAMEmsg/TEXTEND]gdo^work#|2|#SETVmsgnoabend d#SETnoabendgdo^work#|3|display^help]h #UNFRAMEoTnoabendgdo^work#|3|display^help]h #UNFRAMEh/?TACLROUTINE#FRAME 9#PUSHprefix{Warningprefixoutputbythisroutine.!};#PUSHlocationq{Wherethealertmessageistobesent.!}(#PUSHmsg{Themessagetobesent.!}pU===============================================================================X#SETFprefixb!!ALERT!!@#APPENDlocationF[#OUT]#(#APPENDlocationE$HOME'#APPENDlocationB$0*U===============================================================================. [#DEFdisplay^helpMACRO|BODY|2g#OUTPUT6g#OUTPUTALERT.:g#OUTPUT> g#OUTPUT&BhNSendsthetext"[prefix]"followedbythetextpassedtothisroutineto1orFP g#OUTPUT&J8:moredevices,whosevaluesarehard-codeinthisroutine.N g#OUTPUTR!g#OUTPUTFORMAT:%ALERTU*g#OUTPUTEXAMPLE:ALERTThisisamessage.Yg#OUTPUT]]a[#DEFdo^workMACRO|BODY|ed#SETmsg[prefix][msg]ixf[#LOOPm`&|WHILE|NOT[#EMPTYV/BLANK/ location]qH|DO|u0"VARTOFILEmsg[#EXTRACTlocation]ya]}]%[#CASE[#ARGUMENT/TEXTmsg/TEXTEND] #|1|do^work#|2|display^help] #UNFRAME08P~w:D5e\SWD.$TEST2.JWATCH.JWATCH6h"#OUTPUT[process][action][text]:P #PUSHinvar>8#SET%invar[upfile]B 3TACL/INVinvar,NAME,NOWAIT,PRI[pri],TERM[term]/F #POP%invarI |OTHERWISE|Ma]Q]U[#DEFwprocessROUTINE|BODY|YJa{Thisroutinegetspassedaline,thefirstwordbeingaprocessname.}]x;a{Iftheprocessisrunning,thisroutinedoesnothing.!}a`Ia{Iftheprocessisnotrunning,thisroutineexecutesaTACLwiththe!}eHHa{2INfilebeingtheUPsubvolasdefinedatthestartofthisroutine}i0Ea{3andthefilenamebeingthepartoftheprocessnamethatfollowsA}ma{3the"$".}qMf[#CASE[#ARGUMENT/VALUEprocess/PROCESSNAMEPROCESSNAME/SYNTAX/TEXTEND]t|1|x(|2|SINK[#ARGUMENT/TEXTtext/TEXTEND]|?#SETcommand[#CHARGETprocess[#CHARFINDprocess1$]FOR30])execute[up].[#CHARGETcommand2FOR30] |OTHERWISE|pa]X]@TesamenameexistsontheDOWNsubvol,nothingis}(a{performed.}a{}3f[#CASE[#ARGUMENT/VALUEupfile/FILENAMETEXTEND]"C|1|[#IF[#FILEINFO/EXISTENCE/[down].[#FILEINFO/FILE/[ upfile]]]&|THEN|#RETURN*]. #OUTPUT&2R*****************************JWATCHPROCESSSTARTUP*************** ***********ithaschanged.1} check^dataload$(7{Runacycle.(Validatethatprocessesarerunning.)},cycle0h#DELAY[delay]4P]88a]< ]@$[#DEFdo^work^filterROUTINE|BODY|Cg#FILTER_ERROR_BREAKGf[#CASE[#EXCEPTION]K|_CALL|gdo^workO |_ERROR|W#OUTPUTRoutineerror!Su#PUSH*error^textWx!#ERRORTEXT/CAPTUREerror^text/[`vOUTVARerror^text_Ht#POP:error^textc0v#RESETFRAMESg w#RETURNk#|_BREAK|W#OUTPUTdetected.nv#RESETFRAMESr w#RETURNv"|OTHERWISE|'#OUTPUTOtherwise!!??za]~]p5[#CASE[#ARGUMENT/TEXTarg/KEYWORD/WORDLISTY/END]X#|1|do^work^filter@#|2|display^help(] #UNFRAME$[#DEFdataloadROUTINE|BODY|(d#SETwatchdat,0#d[#IF[filetov[datafile]watchdat]?TACLROUTINE&{JWATCHroutine,byJimHinsch.} #FRAME)#PUSHdatafileq{Ourwatchdatabase.a}B#PUSHdatafile^tsA{Thelastmodifiedtimestampofdatafile^ts.}p.#PUSHtemp{Atemporarycopyofwatchdat.}X/#PUSHtemp^linea{Alineofdatafromtemp.}@.#PUSHprocess{Aprocesstobelookedat.}#(D#PUSHcommand{Acommandtobeissuedifprocessisnotrunning.a}'C#PUSHdelay{Thenumberofcenti-secondswedelayineachloop.Q}*F#PUSHwatchdatq{AvariablecontainingourWATCHdatafilecontents.Q}.4#PUSHup{ThelocationoftheUPcommandfiles.1}28#PUSHdown{ThelocationoftheDOWNcommandfiles.}69#PUSHpri{ThepriorityofbackgroundTACLprocesses.}:H#PUSHupfile{TheupfiletobeusedastheINfiletoaTACLprocess.}>E#PUSHterm{Thehometermusedwhenstartingprocesses,JMOM,etc.!}Bh@#PUSHtext{Anypossiblecommenttobedisplayedonrestart.q}|DO| @'process^jmom^line[#EXTRACTjmom^out](a]f#DELAY[jmom^delay]] [#DEFdo^workROUTINE|BODY|!,%d[#IF[#PROCESSEXISTS[jmom^process]]!|THEN|!!a]$f[#LOOP|WHILE|-1(t|DO|,[#IF[#MATCH[jmom^y^n]Y]0h|THEN|4P check^jmom88< |ELSE|@5{Loadorre-loadthedatafile,ifithaschanged.1}Ccheck^dataloadGK7{Runacycle.(Validatethatprocessesarerunning.)}OcycleS#DELAY[delay]Wx][`a]_H]c0$[#DEFdo^work^filterROUTINE|BODY|gg#FILTER_ERROR_BREAKkf[#CASE[#EXCEPTION]n|_CALL|gdo^workr |_ERROR|W#OUTPUTRoutineerror!vu#PUSH*error^textz!#ERRORTEXT/CAPTUREerror^text/~vOUTVARerror^textpt#POP:error^textXv#RESETFRAMES@ w#RETURN(#|_BREAK|W#OUTPUTdetected.v#RESETFRAMES w#RETURN"|OTHERWISE|'#OUTPUTOtherwise!!??a]]5[#CASE[#ARGUMENT/TEXTarg/KEYWORD/WORDLISTY/END]#|1|do^work^filterh#|2|display^helpP]8 #UNFRAME(a]]?FP5#PUSHarg{Theargumentspassedtothisroutine.1}J8J#PUSHjmom^y^nq{Whensetto"Y",weuseJMOMinsteadofSTATUSlooping.}N >#PUSHjmom^process1{TheprocessnameforJMOM,whenused.1}RD#PUSHjmom^locq{Thevol.subwheretheJMOMprogramcanbefound.q}UF#PUSHjmom^outq{AvariabletocollectoutputfromJMOM,whenused.Q}Y3#PUSHjmom^linea{AsinglelineoutputbyJMOM.}]L#PUSHjmom^delayQ{Thenumberofcenti-secondswedelaybetweenJMOMcheck}a6#PUSHaction{ThereasonJMOMreportedaprocess.Q}eK#PUSH#OUTFORMATQ{EnablesthedisplayofspecialTACLcharacterspaces.!}ixU===============================================================================m`#SET(jmom^y^naNqH#SET,jmom^process%$JMOMu0#SET(jmom^loco$DISK1.MCGUTILSy&#SET(datafileo$DISK1.JWATCH.WATCHDAT}##SET%delay6000a{centi-seconds}'#SET*jmom^delayC500q{centi-seconds}#SET"up$DISK1.UP#SET$down$DISK1.DOWN #SET#pri140#SET$term[#MYTERM]p#SET*#OUTFORMATFPRETTYXU===============================================================================@ [#DEFdisplay^helpMACRO|BODY|(g#OUTPUT+g#OUTPUTJWATCHprocessmonitoringroutine.g#OUTPUTg#OUTPUTFORMAT:&JWATCHYg#OUTPUTg#OUTPUT]hPN{Expandtotheresultofloadingthepassedfileintothepassedvariable.1}8[#DEFfiletovROUTINE|BODY| f#FRAME+e#PUSHfileA{Thefiletobeprocessed.}vROUTINE|BODY| f#FRAME+e#PUSHfileA{Thefiletobeprocessed.}eor^textc0v#RESETFRAMESg w#RETURNk#|_BREAK|W#OUTPUTdetected.nv#RESETFRAMESr w#RETURNv"|OTHERWISE|'#OUTPUTOtherwise!!??za]~]p5[#CASE[#ARGUMENT/TEXTarg/KEYWORD/WORDLISTY/END]X#|1|do^work^filter@#|2|display^help(] #UNFRAMEtherwise!!??za]~]p5[#CASE[#ARGUMENT/TEXTarg/KEYWORD/WORDLISTY/END]X#|1|do^work^filter@#|2|display^help(] #UNFRAME]" @|THEN|(|ELSE|7#SETdatafile^ts[#FILEINFO/MODIFICATION/[datafile]]a]]"{Delaywhiledatafileisopen}[#DEFopen^delayMACRO|BODY|#a{Donotprocessiffileisopen}hf[#LOOPP|WHILE|8 [#FILEINFO/OPENNOW/[datafile]] |DO|!#DELAY2000!{Delay20seconds}a]]بO{Ifdatafile'slastmod.timestampdoesn'tmatchprev.value,reloadfile.}ܐ$[#DEFcheck^dataloadROUTINE|BODY|x+jopen^delay1{waitwhiledatafileisopen}`HBd[#IF[#MATCH[datafile^ts][#FILEINFO/MODIFICATION/[datafile]]]0|THEN||ELSE| dataloada]][#DEFexecuteROUTINE|BODY|Ga{ThisroutineispassedthenameofanUPfiletobeusedastheINA}Ia{filetoabackgroundTACLprocess."Ifitdoesnotexists,nothingis} pa{performed.}Xa{}@Ja{Also,ifafileofthesamenameexistsontheDOWNsubvol,nothingis}(a{performed.}a{}3f[#CASE[#ARGUMENT/VALUEupfile/FILENAMETEXTEND]"C|1|[#IF[#FILEINFO/EXISTENCE/[down].[#FILEINFO/FILE/[ upfile]]]&|THEN|#RETURN*]. #OUTPUT&2R*****************************JWATCHPROCESSSTARTUP*************** ***********nges.}[#DEFdataloadROUTINE|BODY|d#SETwatchdatpX#d[#IF[filetov[datafile]watchdat]ormoreinformation.g#OUTPUT]hPN{Expandtotheresultofloadingthepassedfileintothepassedvariable.1}8[#DEFfiletovROUTINE|BODY| f#FRAME+e#PUSHfileA{Thefiletobeprocessed.}e#RESETFRAMESh w#RETURNP#|_BREAK|W#OUTPUTdetected.8v#RESETFRAMES w#RETURN"|OTHERWISE|'#OUTPUTOtherwise!!??a]]5[#CASE[#ARGUMENT/TEXTarg/KEYWORD/WORDLISTY/END]Ҩ#|1|do^work^filter֐#|2|display^helpx]` #UNFRAMEXTEND]X?#SETcommand[#CHARGETprocess[#CHARFINDprocess1$]FOR30]@)execute[up].[#CHARGETcommand2FOR30]( |OTHERWISE|a]]"[filetov[datafile]watchdat]!.e#PUSHvarQ{Thevariabletoputdatainto.}0e#PUSHerrQ{TheresultsofanI/Ooperation.}2e#PUSHprompt!{The#REQUESTORpromptvariable.}ިNo============================================================ =============&dSINK[#ARGUMENT/VALUEfile/FILENAME]xDdSINK[#ARGUMENT/VALUEvar/VARIABLE/FORBIDSTRUCTITEMDIRECTORY/]`3d#SETerr[#REQUESTERREAD[file]err[var]prompt]Hd[#IFerr|THEN|0#RESULT[err]#RESETFRAMES#RETURNf|ELSE| #SETerr[#LOOP |DO| #APPENDprompt?pSINK[#WAIT[var]err]X|UNTIL|@NOT[#EMPTYVerr](]![#IFerrAND(err<>1)$|THEN|(#RESULT[err],#RESETFRAMES0#RETURN4]8 #RESULT0detected.v#RESETFRAMES w#RETURN"|OTHERWISE|'#OUTPUTOtherwise!!??ha]P]85[#CASE[#ARGUMENT/TEXTarg/KEYWORD/WORDLISTY/END] #|1|do^work^filter#|2|display^help] #UNFRAMEx(M{Processeverylineinthedatafilebyinsuringeachprocessisrunning.}[#DEFcycleMACRO|BODY|e#SETVtempwatchdatf[#LOOP|WHILE|NOT[#EMPTYV/BLANK/temp]|DO|#EXTRACTVtemptemp^linehPD{Thisroutinegetspassedaline,thefirstwordbeingaprocess!}8C{name.Iftheprocessisrunning,thisroutinedoesnothing.If1} D{theprocessisnotrunning,thisroutineexecuteswhatevertext!} {followstheprocessname.}wprocessemp^line]a]Ҩ]֐([#DEFprocess^jmom^lineROUTINE|BODY|x&dSINK[#ARGUMENT/TEXTaction/WORDEND]`'dSINK[#ARGUMENT/TEXTprocess/WORDEND]H$dSINK[#ARGUMENT/TEXTtext/TEXTEND]0)gexecute[up].[#CHARGETprocess2FOR30]] [#DEFcheck^jmomROUTINE|BODY|+kverify^jmom!{makesureJMOMisrunning.!}+jopen^delay1{waitwhiledatafileisopen}f[#LOOPp&|WHILE|NOT[#EMPTYV/BLANK/ jmom^out] X|DO| @'process^jmom^line[#EXTRACTjmom^out](a]f#DELAY[jmom^delay]] [#DEFdo^workROUTINE|BODY|$%d[#IF[#PROCESSEXISTS[jmom^process]](|THEN|,SINK[#STOP[jmom^process]]0ha]4Pf[#LOOP|WHILE|-188t|DO|< [#IF[#MATCH[jmom^y^n]Y]@|THEN|C check^jmomGK|ELSE|O5{Loadorre-loadthedatafile,ifithaschanged.1}Scheck^dataloadWx[`7{Runacycle.(Validatethatprocessesarerunning.)}_Hcyclec0#DELAY[delay]g]ka]n]r$[#DEFdo^work^filterROUTINE|BODY|vg#FILTER_ERROR_BREAKzf[#CASE[#EXCEPTION]~|_CALL|gdo^workp |_ERROR|W#OUTPUTRoutineerror!Xu#PUSH*error^text@!#ERRORTEXT/CAPTUREerror^text/(vOUTVARerror^textt#POP:error^textv#RESETFRAMES w#RETURN#|_BREAK|W#OUTPUTdetected.v#RESETFRAMES w#RETURN"|OTHERWISE|'#OUTPUTOtherwise!!??ha]P]85[#CASE[#ARGUMENT/TEXTarg/KEYWORD/WORDLISTY/END] #|1|do^work^filter#|2|display^help] #UNFRAME@FP5#PUSHarg{Theargumentspassedtothisroutine.1}J8J#PUSHjmom^y^nq{Whensetto"Y",weuseJMOMinsteadofSTATUSlooping.}N >#PUSHjmom^process1{TheprocessnameforJMOM,whenused.1}RD#PUSHjmom^locq{Thevol.subwheretheJMOMprogramcanbefound.q}UF#PUSHjmom^outq{AvariabletocollectoutputfromJMOM,whenused.Q}Y3#PUSHjmom^linea{AsinglelineoutputbyJMOM.}]L#PUSHjmom^delayQ{Thenumberofcenti-secondswedelaybetweenJMOMcheck}a6#PUSHaction{ThereasonJMOMreportedaprocess.Q}eK#PUSH#OUTFORMATQ{EnablesthedisplayofspecialTACLcharacterspaces.!}ixU===============================================================================m`#SET(jmom^y^naNqH#SET,jmom^process%$JMOMu0#SET(jmom^loco$DISK1.MCGUTILSy&#SET(datafileo$DISK1.JWATCH.WATCHDAT}##SET%delay6000a{centi-seconds}'#SET*jmom^delayC500q{centi-seconds}#SET"up$DISK1.UP#SET$down$DISK1.DOWN #SET#pri140#SET$term[#MYTERM]p#SET*#OUTFORMATFPRETTYXU===============================================================================@ [#DEFdisplay^helpMACRO|BODY|(g#OUTPUT+g#OUTPUTJWATCHprocessmonitoringroutine.g#OUTPUTg#OUTPUTFORMAT:&JWATCHYg#OUTPUT]hPN{Expandtotheresultofloadingthepassedfileintothepassedvariable.1}8[#DEFfiletovROUTINE|BODY| f#FRAME+e#PUSHfileA{Thefiletobeprocessed.}oBhX2@^ .~w;䚕 e\SWD.$TEST2.JWATCH.UPWATCH  ?TACLMACROJ{ExecuteabackgroundtaclwhoseINfileisaWAITEDLOOPforstartingq} H{JWATCHwheneveritisnotrunning,withadelayineachloopcycle.} {!}A{TheTACLweexecutehere,runsinthebackground,non-stop.!}p6{ShouldJWATCHblowup,theLOOPwillrestartit.}X@ TACL/NAME$JWMON&#(C,IN$TEST2.JWATCH.UPWINA&'D,OUT$HOME!&*E,TERM$HOME&. D,CPU0a&2 G,NOWAITQ&6 D,PRI50/16 ?TACLMACROJ{ExecuteabackgroundtaclwhoseINfileisaWAITEDLOOPforstartingq} H{JWATCHwheneveritisnotrunning,withadelayineachloopcycle.} {!}A{TheTACLweexecutehere,runsinthebackground,non-stop.!}p6{ShouldJWATCHblowup,theLOOPwillrestartit.}X@ TACL/NAME$JWMON&#(C,IN$DISK1.JWATCH.UPWINA&'D,OUT$HOME!&*E,TERM$HOME&. D,CPU0a&2 G,NOWAITQ&6 D,PRI50/160 ~w<% <e\SWD.$TEST2.JWATCH.UPWIN <#FRAME #PUSHinvar ##SET%invar$DISK1.JWATCH.JWATCHY[#LOOP|WHILE|-1$|DO|pD[#IF[#PROCESSEXISTS$JWTCH]Xf|THEN|@f|ELSE|#(TACL/NAME$JWTCHQ&',INVinvarq&*,OUT$HOMEq&.,TERM$HOMEa&2 ,PRI50/6A]: F#DELAY12000>]Bh #UNFRAMEBh#FRAME #PUSHinvar ##SET%invar$TEST2.JWATCH.JWATCHY[#LOOP|WHILE|-1$|DO|pD[#IF[#PROCESSEXISTS$JWTCH]Xf|THEN|@f|ELSE|#(TACL/NAME$JWTCHQ&',INVinvarq&*,OUT$HOMEq&.,TERM$HOMEa&2 ,PRI50/6A]: F#DELAY12000>]Bh #UNFRAMEBh^~w=} e\SWD.$TEST2.JWATCH.WATCHDAT {FORMAT:,PROCESS-NAME} {!} J{Whenanyprocessnamelistedinthisfileisfoundtonotberunning,q}P{afilenameisbuiltbydroppingthecharactersuptoandincludingthe"$".}5{So,\SYS101.$ABCbecomesABC,$XYZbecomesXYZ.}p {!}XK{TheJWATCHroutinehastheUPandDOWNvol.subvollocationshardcodeda}@K{init."IftheconstructedfilenameexistsontheUPvol.subvolandtheQ}#(J{filenamedoesnotexistsontheDOWNvol.subvol,abackgroundtaclisq}'I{executedwithavariableastheINfile.#Thevariablewillcontainaq}*;{commandtoexecutethefilenameontheUPvol.subvol.}. {!}2P{Anytextfollowingtheprocessnameinthisfileisconsideredcommentsand}6F{isdisplayedjustpriortoexecutingthebackgroundTACLprocess.}:U{============================================================================}>$BBh $ATestingnBhs.>C$D2F1dMSF1Switchdriverprocessfor$OMSTpathway(seconddriver)Y3$D1F2dMSF1Switchdriverprocessfor$OMSQpathway]F$D1F3dMSF1SwitchdriverprocessforBRASSinterface(15,255userid)a5$DAOMTTMSF3SwitchdriverprocessforQFRdeliveriese5$DAOMQTMSF3SwitchdriverprocessforQFRdeliveriesixm`3$D4F1dMSF4Switchdriverprocessfor$OMSTpathwayqHC$D4F2dMSF4Switchdriverprocessfor$OMSTpathway(seconddriver)u0y=$D340dMSF9Switchdiriverprocessforclient340(year2000)} $MSW1dMSF1Switchwatchprocess $MSC1dMSF1Switchcleanprocess $MSW3dMSF3Switchwatchprocess $MSC3dMSF3SwitchcleanprocesspX/$ONTtTestenvironmentS04CANEXCanadianparser@-$ONQrQAenvironmentS04CANEXCanadianparser(2$ROTtTestenvironmentS04BRASSBRASSlineprocess0$ROQrQAenvironmentS04BRASSBRASSlineprocess$OQOMTTTestParser$OQOMQRQA6Parser$OQ340TC340Parserh$XMQxFALLBACKTESTP$OOOMQXFALLBACKTEST8{FORMAT:,PROCESS-NAME} {!} J{Whenanyprocessnamelistedinthisfileisfoundtonotberunning,q}P{afilenameisbuiltbydroppingthecharactersuptoandincludingthe"$".}5{So,\SYS101.$ABCbecomesABC,$XYZbecomesXYZ.}p {!}XK{TheJWATCHroutinehastheUPandDOWNvol.subvollocationshardcodeda}@K{init."IftheconstructedfilenameexistsontheUPvol.subvolandtheQ}#(J{filenamedoesnotexistsontheDOWNvol.subvol,abackgroundtaclisq}'I{executedwithavariableastheINfile.#Thevariablewillcontainaq}*;{commandtoexecutethefilenameontheUPvol.subvol.}. {!}2P{Anytextfollowingtheprocessnameinthisfileisconsideredcommentsand}6F{isdisplayedjustpriortoexecutingthebackgroundTACLprocess.}:U{============================================================================}>$BBh $ATestingnBh