;<134-TENEX>JOBZRO.MAC;12 17-SEP-75 13:33:29 EDIT BY PLUMMER ; ALLOW FOR HSYST5 TO HAVE USER NUMBER IN LH ;<134-TENEX>JOBZRO.MAC;11 29-AUG-75 12:02:52 EDIT BY OPERATOR ;<134-TENEX>JOBZRO.MAC;10 28-AUG-75 13:34:23 EDIT BY ALLEN ;<134-TENEX>JOBZRO.MAC;7 27-AUG-75 11:57:12 EDIT BY ALLEN ;<134-TENEX>JOBZRO.MAC;6 27-AUG-75 11:55:05 EDIT BY ALLEN ; CORRECT MAINTENANCE OF PIE-SLICE GROUP CPU TIME ;<134-TENEX>JOBZRO.MAC;4 11-AUG-75 18:03:38 EDIT BY CLEMENTS ; Make system reset HSYS if one was pending before reload. ;<134-TENEX>JOBZRO.MAC;3 7-AUG-75 13:50:49 EDIT BY CLEMENTS ; Move CHKDRM error printer out into individual drum drivers ; so it can print device dependent stuff. ; Change err msg from CHECKDSK to CKECKDISK at RUNDD1 ;<134-TENEX>JOBZRO.MAC;2 3-JUN-75 15:53:55 EDIT BY ALLEN ; CHKR RUNS ON HIQ FOR PIE-SLICE SYSTEM ;<134-TENEX>JOBZRO.MAC;1 23-APR-75 13:04:12 EDIT BY CLEMENTS ;SPLITTING SWPMON.MAC INTO PIECES. THIS IS JOBZRO.MAC SEARCH PROLOG TITLE JOBZRO SWAPCD INTERNAL RUNDD,HSYS4,CHKR,CVTAD,CHKRI,CHKH1,CHKBG1 EXTERNAL CAPENB,CAPMSK,DISKP EXTERNAL ACCIFG,BHC,BLOCKW,BUGCHK,BUGHLT,BUGNTE,BUGTAB EXTERNAL CGFLG,CHKBT,CHKTIM,CHKTM1,CRSTAD,CTIMS EXTERNAL DDMP,DDMPFK,DDTIME,DONSJ,DRMCFE,DRMFRE,DRMIN0 EXTERNAL DSKNRE,DSKRCE,EDISMS,ENTFLG EXTERNAL FACTSW,FORKX,HSYST1,HSYST2,HSYST3,HSYST4,HSYST5 EXTERNAL IOIP,JB0FLG,JB0TT,JOBPT,JOBRT,MENTR,NXTDMP EXTERNAL OTYLIN,PRIMRY,R,SPC1,SPCSTJ,SPTC EXTERNAL SVNUM,SYSIFG,SYSRST,TNAMS1,TODCLK,TTFORK,XEFACT DEFINE TMSG < PUSHJ P,TMSGQ##> ; START OF JOB ZERO ONCE THE MONITOR INITIALIZATION HAS BEEN DONE, ; I.E. SWAPPABLE CODE IS IN AND DEVICES INITIALIZED. ; FIRE UP CHECKDSK, SYSJOB, THEN RUN CHKR BACKGROUND TASKS RUNDD:: MOVSI 1,777 ANDCAM 1,CAPENB ;FLUSH ANY SUPERIOR FORK CAPS SKIPN 1,CRSTAD ;DO WE HAVE A SAVED TIME FROM CRASH? JRST RUNDD3 ;NO STAD ;YES, SET IT JFCL RUNDD3: MOVEI 1,101 DOBE SETO 1, HRROI 2,[ASCIZ / TENEX RESTARTING, WAIT... /] MOVE 3,DBUGSW## ;IF USERS WILL GET A CHANCE AT IT, CAIGE 3,2 ; .. TTMSG ;TELL THEM SKIPG DISKP JRST RUNDD2 ;SKIP DISK STUFF IF NO DISK MOVEI 1,RUNDD1 ;BREAK TO RUNDD1 IF ANYTHING GOES WRONG HRRM 1,MONBK CALL CHKBT ;CHECK CONSISTENCY OF DISK BIT TABLE IFDEF IMPCHN, ;START IMP ASYNCH FORK MOVE 2,DBUGSW CAIN 2,2 ;IF REAL DEBUGGING, JRST RUNDD2 ;SKIP DISK CHECKING MOVSI 1,(1B2+1B17) HRROI 2,[ASCIZ /CHECKDISK.SAV/] GTJFN JRST RUNDD1 PUSH P,1 MOVSI 1,(1B1) ;XMIT CAPABILITIES CFORK ;CREATE A FORK FOR CHECKDSK BUG(HLT,) EXCH 1,0(P) HRL 1,0(P) GET MOVE 1,[CHKDSR] ;SAY CHECK DSK RUNNING IORM 1,FACTSW POP P,1 SETZ 2, SFRKV ;START AT MAIN ENTRY WFORK KFORK MOVE 1,[CHKDSR] ;SAY CHKDSK COMPLETED ANDCAM 1,FACTSW JRST RUNDD2 RUNDD1: HRROI 1,[ASCIZ / NO CHECKDISK /] PSOUT RUNDD2: MOVEI 1,RUNDD6 ;BREAK TO RUNDD6 IF ANY SCREWUP HRRM 1,MONBK MOVEI 1,101 DOBE ;WAIT FOR ANY JOB0 OUTPUT MOVE 1,[CHKDSE] ;DISK OK? TDNE 1,FACTSW JRST [HRROI 2,TNAMS1 SETO 1, TTMSG JRST .+1] MOVE 1,JB0TT ;JOB 0 TTY CAIE 1,377777 ;REAL TTY? JRST RUNDD4 ;YES MOVSI 1,(1B0+1B17) ;NONE, SO OPEN FILE FOR MESSAGES HRROI 2,[ASCIZ /ERROR.REPORT/] GTJFN BUG(CHK,) MOVE 2,[44B5+1B20] OPENF BUG(CHK,) RUNDD4: HRRM 1,PRIMRY ;USE IT FOR OUTPUT MOVE 1,FORKX MOVEM 1,DDMPFK ; RECORD FORKX OF DDMP FORK MOVEI 1,[SIXBIT '$RUNNING DDMP$$/'] TMSG ;ON TTY 0 MOVSI 1,(740B8) MOVEM 1,LOGBUF HRROI 1,LOGBUF EFACT ;RESTART ENTRY IN FACT FILE JSP 2,XEFACT ;CHECK EFACT FAILURE (ALWAYS SKIPS) SETOM ACCIFG ; IF SUCCESS, ASSUME ACCOUNTING GOOD AOS SYSIFG ;MAKE SYSTEM AVAILABLE CALL DONSJ ;START NEXT SPECIAL JOB MOVSI 1,(1B1) ;XMIT CAPABILITIES CFORK ;CREATE A FORK FOR SYSJOB BUG(HLT,) PUSH P,1 MOVSI 1,(1B2+1B17) HRROI 2,[ASCIZ /SYSJOB.SAV/] GTJFN JRST [ POP P,1 KFORK MOVEI 1,[SIXBIT '$NO SYSJOB$/'] TMSG JRST RUNDD5] HRL 1,0(P) GET POP P,1 SETZ 2, SFRKV ;START AT MAIN ENTRY, LET RUN FOREVER RUNDD5: RUNDD6: MOVEI 2,CTYLIN CALL SPCSTJ ; START UP FIRST AUTO JOB IFE PIESLC,< MOVEI 1,103 MOVEM 1,JOBBIT ;SET PRIORITY FOR CHKR > ; END NON-PIE-SLICE CONDITIONAL IFN PIESLC, MOVEI 1,CHKRI HRRM 1,MONBK ;SET DISPATCH FOR INTERRUPTS MOVE 1,FORKX ;SAVE FORK INDEX FOR DEBUGGING MOVEM 1,CHKFRK ; .. JRST CHKR ;GO DO BACKGROUND LS CHKFRK,1 ;FORKX OF THE DDMP FORK ;FORK STARTED BY CHKR AT ARMAGEDDON TIME. ;COMMENCE SHUTDOWN. PREVENT NEW JOBS, LOGOUT EXISTING JOBS, HALT. HSYS4: MOVSI 1,UMODF ;FAKE UP SLOW JSYS ENTRY MOVEM 1,FPC ; .. JSYS MENTR ; .. IFDEF IMPCHN,< MOVE 2,HSYST4 MOVE 1,HSYST5 ANDI 1,17 ;EXTRACT GOING DOWN REASON CALL IMPHLT##> MOVE 6,[XWD -NJOBS+1,1] ;START WITH JOB 1 MOVEI 5,^D60000 ; INITIAL TIME-OUT INTERVAL SKIPGE JOBRT(6) ;LOOK FOR EXISTING JOB HSYS41: AOBJN 6,.-1 JUMPGE 6,HSYS7 ;JUMP IF DONE HLRZ 1,JOBPT(6) ;WHAT TTY IS THE JOB ON? CAME 1,OTYLIN ;ONE OF THE PRIVILEGED ONES? CAIN 1,CTYLIN ; .. JRST HSYS41 ;YES. LET IT STAY ON MOVEI 1,(6) ;NO, LOG OUT THIS JOB NUMBER LGOUT ; .. JFCL ADDI 5,^D10000 ; AUGMENT TIME-OUT BY 10 SEC PER JOB JRST HSYS41 HSYS7: ADD 5,TODCLK ; TIME TO STOP WAITING FOR LOGOUTS HSYS8: CAMG 5,TODCLK ;WAITED MAX TIME? JRST HSYS9 ;YES, PROCEED WITH SHUTDOWN MOVE 6,[XWD -NJOBS+1,1] ;START WITH JOB 1 SKIPGE JOBRT(6) ;SEE IF ANY JOBS STILL EXIST HSYS81: AOBJN 6,.-1 JUMPGE 6,HSYS9 ;NONE FOUND, PROCEED HLRZ 1,JOBPT(6) ;TTY NUMBER OF THIS JOB CAME 1,OTYLIN ;PRIVILEGED? CAIN 1,CTYLIN ; .. JRST HSYS81 ;YES, IGNORE MOVEI 1,^D1000 ;NO, WAIT 1 SEC., THEN CHECK AGAIN DISMS JRST HSYS8 HSYS9: SETZM NXTDMP ;INITIATE DDMP SETZM DDTIME AOS JB0FLG MOVEI 5,^D30 ;MAX TIME FOR JOB 0 HSYS91: MOVEI 1,^D1000 ;WAIT 1 SEC DISMS SKIPN CGFLG ;EVERYTHING FINISHED? SKIPL NXTDMP SOJG 5,HSYS91 ;NO, WAIT MORE JUMPLE 5,HSYS9 ;IF TIMED OUT, TRY AGAIN SKIPE IOIP ;WRITES IN PROGRESS? JRST .-1 ;YES, WAIT FOR COMPLETION MOVEI 1,CTYLIN ;ANNOUNCE SHUTDOWN. HRROI 2,[ASCIZ /SHUTDOWN COMPLETE. /] TTMSG MOVEI 1,^D15000 ;FINALLY FOR TTY OUTPUT TO QUIT, DISMS ; WAIT JUST A BIT MORE MOVE 1,OTYLIN ;NOW HALT OR HALTF DEPENDING ON MOVEI 2,CTYLIN SKIPGE TTFORK(1) ;WHETHER A JOB IS STILL ON CTY/OTY SKIPL TTFORK(2) ; .. HALTF ;SOMEONE STILL ON. KEEP RUNNING. JRST [ PIOFF 610000 ;CLEAR EVERYTHING CONO APR,200000 ;IOB RESET SETOM ENTFLG ; IN CASE CONTINUED JRST 4,SYSRST] ;ROUTINE TOSEND GOING DOWN MESSAGE TO ALL LINES THSYS: PUSH P,1 ;1 CONTAINS NUMBER OF MINUTES SETO 1, HRROI 2,[SYSNAM(,< GOING DOWN IN />)] TTMSG MOVE 2,0(P) ;GET NUMBER OF MINUTES AGAIN CAIN 2,1 ;THE 'ONE' CASE? JRST [ HRROI 2,[ASCIZ /ONE MINUTE!! *** /] JRST HSYS51] ;YES, SPECIAL MESSAGE MOVEI 1,1(P) ;USE STACK TO HOLD STRING ADD P,BHC+2 HRLI 1,440700 PUSH P,1 MOVEI 3,^D10 NOUT JFCL POP P,2 ;POINTER TO STRING SETO 1, TTMSG ;PRINT NUMBER SUB P,BHC+2 ;FLUSH TEMPS FROM STACK HRROI 2,[ASCIZ / MINUTES. *** /] HSYS51: SETO 1, TTMSG POP P,1 ;RETURN NUMBER OF MINUTES RET ;PERIODIC (10 SEC) CHECK OF THINGS CHKR: SETZM JB0FLG ;CLEAR REQUEST FLAG MOVE 1,TODCLK ADDI 1,^D120000 ; IN 2 MINUTES GET HI-Q MOVEM 1,CHKTM1 ADDI 1,^D120000 ; 2 AFTER THAT CALL US HUNG MOVEM 1,CHKTIM ;LEAVE FOR SCHED TO CHECK SKIPE BUGHLT ;BUGHLTS LATELY? CALL CHKHLT ;REPORT SKIPE BUGCHK ;BUGCHK? CALL CHKBUG ;YES SKIPE BUGNTE ;ANY BUGNTES? CALL CHKNTE ;YES CALL CHKDMS ;CHECK DRUM SPACE CALL CHKSPT ;CHECK SPT SPACE MOVE 1,DRMCFE ;DRUM ERROR COUNT CAME 1,CHKDMC ;DIFFERENT FROM LAST TIME? CALL CHKDRM## ;YES MOVE 1,DSKRCE ;DISK RECOVERABLE ERRORS CAME 1,CHKDRE ;DIFFERENT FROM LAST CHECK? CALL CHKDE1## ;YES, GO PRINT INFO MOVE 1,DSKNRE ;DISK NON-REC ERRORS CAME 1,CHKDNE ;DIFFERENT? CALL CHKDSK## ;PRINT INFO IFDEF IMPCHN,< CALL CHKNET## ;YES, LOG IT > CALL TTHCK## ;SEE IF DATASETS NEED TO BE HUNG UP CALL DDMP ;DISK BACKUP SKIPN HSYSIN ;HAS HSYS.TIMES BEEN CHECKED? CALL CHSYSI ;NO, GO DO IT NOW. SKIPE HSYST1 ;SYSTEM SHUTTING DOWN? CALL CHKHSY ;YES. CHECK HSYS TIMERS. IFN PIESLC,< CALL CHKPIE ;CHECK IF PIE-SLICE CPU TIMES NEED UPDATE > ; END PIE-SLICE SCHED CONDITIONAL MOVE 2,TODCLK ;SETUP DISMISS CONDITION FOR ANDI 2,377777 ;NOW PLUS 30 SEC MOVSI 1,^D30000(2) HRRI 1,JB0TST ;OR JB0FLG JSYS EDISMS JRST CHKR RESCD JB0TST: MOVE 3,4 ;SAVE RETURN JSP 4,BLOCKW ;TEST CLOCK SKIPE JB0FLG ;OR FLAG JRST 1(3) ;RUN JRST 0(3) SWAPCD CHKH1: MOVEI 1,101 MOVEI 3,^D8 NOUT JFCL MOVEI 2," " BOUT CHKR1:: GTAD ;CURRENT TIME AND DATE JUMPL 1,CHKR2 ;IF NOT SET MOVE 2,1 MOVEI 1,101 SETZ 3, ODTIM ;INCLUDE TAD WITH MESSAGE CHKR2: HRROI 1,[ASCIZ / /] PSOUT RET CHKHLT: HRROI 1,[ASCIZ / *****BUGHLT AT /] PSOUT HRRZ 2,BUGHLT SETZM BUGHLT JRST CHKBG1 CHKNTE: HRROI 1,[ASCIZ / ***** BUGNOTE AT /] PSOUT HRRZ 2,BUGNTE SETZM BUGNTE SOJA 2,CHKBG1 CHKBUG: HRROI 1,[ASCIZ / *****BUGCHK AT /] PSOUT HRRZ 2,BUGCHK SUBI 2,1 ;TO POINT AT JSR SETZM BUGCHK CHKBG1: PUSH P,2 ;SAVE ADDRESS CALL CHKH1 ;PRINT IT SKIPE NBUGTP ;HAVE BUG TABLE NOW? JRST BUGLK5 ;YES MOVE 1,SVNUM ; VERSION NUMBER OF THIS SYSTEM HRLI 1,(1B2+1B17) ; OLD FILE & SHORT FORM STRING HRROI 2,[SYSNAM(BUGTABLE.>,<\>)] GTJFN JRST BUGLK0 MOVE 2,[44B5+1B19] OPENF JRST BUGLK0 BIN ;FIRST WORD IS (NEG) COUNT OF PTRS MOVEM 2,NBUGTP MOVE 7,[XWD -SBUGTF,BUGTAB] BUGLK3: BIN JUMPN 2,BUGLK2 GTSTS TLNE 2,(1B8) ;EOF? JRST BUGLK4 ;YES SETZ 2, BUGLK2: MOVEM 2,0(7) AOBJN 7,BUGLK3 BUGLK4: CLOSF JFCL BUGLK5: POP P,1 ;BUG ADDRESS HRLZ 7,NBUGTP BUGLK1: MOVE 6,BUGTAB(7) HLRZ 2,6 CAME 1,2 AOBJN 7,BUGLK1 JUMPGE 7,R ;FAILED TO FIND ADDRESS, PRINT NOTHING HRROI 1,[ASCIZ / - /] PSOUT HRROI 1,BUGTAB(6) ;STRING STORAGE RELATIVE TO START OF TABLE PSOUT JRST CHKR2 ;PRINT EOL AND RETURN BUGLK0: HRROI 1,[ASCIZ @ - (FAILED TO GTJFN/OPEN BUGTABLE FILE) @] PSOUT POP P,1 RET LS NBUGTP,1 ;NEG COUNT OF PTRS IN BUGTABLE ;CHECK IF SYSTEM SHUTDOWN MESSAGE NEEDS TO BE TYPED. ;CALLED ONLY FROM JOB 0, CHKR ROUTINE. CHKHSY: GTAD ; GET NOW CALL CVTAD ; LINEARIZE SKIPE HSYST3 ; ANY MSGS TYPED YET? JRST CHKHS2 ;YES. MOVE 2,HSYST2 ; GET SHUTDOWN TIME CAIG 2,^D<2*60*60>(1) ; MORE THAN TWO HOURS AWAY? SKIPA 2,1 ; NO, USE NOW SUBI 2,^D<60*60> ; YES, USE 1 HOUR BEFORE MOVEM 2,HSYST3 ; ELSE USE NOW CHKHS2: CAML 1,HSYST2 ; SHUT DOWN TIME YET? JRST CHKHS4 ; YES, GO DO IT CAMGE 1,HSYST3 ;UP TO NOTIFICATION TIME? JRST CHKHS3 ;NO. DO NOTHING. SUB 1,HSYST2 ;YES. COMPUTE TIME TILL SHUTDOWN. MOVNS 1 ADDI 1,^D30 ; ROUND TO NEAREST MINUTE IDIVI 1,^D60 CALL THSYS ;NOT TIME YET. SAY HOW LONG TO ALL TTY'S MOVE 3,[POINT 9,CTIMS] ;FIND WHEN NEXT NOTIFY SHOULD BE ILDB 2,3 ;LOOK THRU LIST OF TIMES CAMG 1,2 ;SHORTER TIME? JUMPG 2,.-2 ;NO. LOOK ON. (JUMPG IN CASE IMPOS ERR) IMULI 2,^D60 ;BACK TO SECONDS SUB 2,HSYST2 ; .. MOVNM 2,HSYST3 ;STORE FOR NEXT TYPEOUT TEST CHKHS3: RET ;DONE FOR THIS TIME. CHKHS4: SETZM ENTFLG ;THE TIME HAS COME. START SHUTDOWN. SETZM HSYST1 ;CLEAR FLAGS IN CASE RESTARTED, SETZM HSYST2 ; AND TO PREVENT MULTIPLE HSYS4 FORKS SETZM HSYST3 ; .. MOVSI 1,(1B1) ;CREATE A FORK WITH CAPABILITIES CFORK ; .. BUG (HLT,) ;OH WELL, TIME TO QUIT.. MOVEI 2,HSYS4 ;WHERE TO START INFERIOR, EXEC MODE. MSFRK ;START IT. RET ;AND THATS ALL CHKR DOES ABOUT IT. ; CONVERT GTAD FORMAT TO LINEAR TIME AND DATE CVTAD: PUSH P,1 HRRZS 0(P) HLRZS 1 IMULI 1,^D<60*60*24> ADD 1,0(P) SUB P,BHC+1 RET ;Routine to get back HSYS times from before system restart LS HSYSIN,1 ;Flag nonzero when this has been done already CHSYSI: GTAD ;HAS SYSTEM GOT A TAD YET? JUMPL 1,R ;NO IF NEG. DO IT LATER. MOVE 4,1 ;HOLD THE CURRENT TIME SETOM HSYSIN ;FLAG DOING THIS NOW, DO ONLY ONCE. MOVSI A,100001 ;SEE IF FILE EXISTS HRROI B,[ASCIZ /HSYS.TIMES;1/] GTJFN RET ;NO FILE. ALL THROUGH. MOVE C,A ;SAVE THE JFN MOVE B,[440000,,200000] ;OPEN FOR READ OPENF JRST [MOVE A,C RLJFN JFCL RET] BIN ;GET SHUTDOWN TIME PUSH P,B BIN ;GET TIME BACK UP PUSH P,B BIN ;AND REASON MOVE C,B ;TO RIGHT AC'S CLOSF JFCL POP P,B POP P,A CAMLE 1,4 ;PAST THIS TAD ALREADY? HSYS ;NO, SET THE SHUTDOWN JFCL RET CHKDMS: MOVE 1,DRMFRE CAMLE 1,DRMIN0 ;DRUM SPACE LOW? RET ;NO HRROI 1,[ASCIZ / *****DRUM SPACE LOW, /] PSOUT MOVE 2,DRMFRE JRST CHKH1 ;PRINT FREE COUNT CHKSPT: MOVE 1,SPTC CAMGE 1,SPC1 ;SPT LOW? RET ;NO HRROI 1,[ASCIZ / *****SPT SPACE LOW, /] PSOUT MOVN 2,[NOFN-SSPT] SUB 2,SPTC ;SPACE LEFT JRST CHKH1 ;ANY INTERRUPT WILL EVENTUALLY TRAP TO HERE CHKRI: MOVE P,UPP ADD P,BHC+2 ;RESET STACK SETZM SLOWF SETOM INTDF SETZM PSIBW HRROI 1,[ASCIZ / *****JOB 0 CRASH, CONTINUING /] PSOUT JRST CHKR GS CHKDRE,1 ;COUNT OF REC. ERRORS AT LAST REPORT GS CHKDNE,1 ; "" NON-REC. "" LS CHKDMC,1 IFN PIESLC,< ; ROUTINE TO PERIODICALLY UPDATE PIE-SLICE GROUP CPU TIMES CHKPIE: MOVE 1,TODCLK ;TIME TO DO CHECK? CAMGE 1,PIETIM RET ;NOT TIME YET ADD 1,[^D<30*60*1000>] ;YES, DO IT AGAIN 30 MINUTES FROM NOW MOVEM 1,PIETIM MOVSI 1,-NJOBS ;PREPARE TO LOOP THRU ALL JOBS SKIPL JOBRT##(1) ;DON'T CALL IF JOB NOT THERE CALL UPDPIE AOBJN 1,.-2 RET ;ROUTINE TO UPDATE CPUSED FOR GROUP OF WHICH JOB IN AC1 IS A MEMBER UPDPIE:: SKIPN PIEFLG## ;PIE-SLICE DATA FILE MAPPED? RET ;NO, FORGET IT NOINT LOCK GRPLOK## SKIP JOBORT(1) ;TOUCH PRIOR TO GOING NOSKED NOSKED MOVE 3,JOBRT(1) ;GET JOB'S CURRENT RUNTIME JUMPL 3,[OKSKED ;JOB NOT THERE, RETURN JRST UPDPI1] SUBM 3,JOBORT(1) ;COMPUTE TIME SINCE LAST UPDATE EXCH 3,JOBORT(1) MOVE 2,PIEGRP##(1) ;AND GET HIS GROUP OKSKED JUMPGE 3,UPDPI2 ;MAKE SURE NO SCREW-UP BUG (NTE,) JRST UPDPI1 UPDPI2: IMULI 2,NWDGRP ;GET OFFSET INTO DATA FILE ADDM 3,CPUSED##(2) ;AND ACCUMULATE UPDPI1: UNLOCK GRPLOK OKINT RET ;STORAGE FOR ABOVE ROUTINES NGS JOBORT,NJOBS NGS PIETIM,1 > ;END OF PIE-SLICE SCHED CONDITIONAL END ; OF JOBZRO.MAC