FINISH867

(George Source)

Macros used: ACROSS, BC, BROADCAST, BXGE, COMERRX, COOR3, DOWN, ENDCOM, FCAJO, FON, FPUT, FSHENTRY, GEOERR, HLSAV, HUNTMISB, INFORM, JOBLOCK, LFNOTFIN, LINKSET, LONGON, LONGWAIT, MENDAREA, MHUNT, MONOUT, OPS, OUTBLOCN, OUTMESS, OUTNUM, OUTPAR, OUTPARAM, PARAPASS, PARSPLIT, PERCOUNT, REPEAT, SEG, SEGENTRY, SPARANOT, SPRIVJUMP, SPRIVTEST, TRACE, UNSET, WHILE

FINISH867.txt
22FL    #LIS  K0FINISH>K0ALLGEO>K0GREATGEO>K0COMMAND
22PD ...      SEG FINISH,867,SECTION CENT   
22^= ...[   
2394 ...[   
23DW ...[  (C)  COPYRIGHT INTERNATIONAL COMPUTERS LTD  1982 
23NN ...[   
23YG    [ THE ENTRY POINTS  
24D6    [     THESE ENTRY POINTS MUST BE KEPT FIXED WITHIN THE SEGMENT  
24XQ          SEGENTRY K1FINISH,QENTRY1 
25CB          SEGENTRY K2FINISH,QENTRY2 
25X2    [   
26BL          FSHENTRY K3FINISH,,QENTRY3,QENTRY3
26W=          FSHENTRY K4FINISH,,QENTRY4,QENTRY4
27*W          FSHENTRY K5FINISH,,QENTRY5,QENTRY5
27TG          FSHENTRY K7FINISH,QENTRY7,,QENTRY7
28*6          SEGENTRY K8FINISH,NOPAR   
28SQ          SEGENTRY K9FINISH,PHAST   
29#B          SEGENTRY K10FINISH,WAIT   
29S2          FSHENTRY K11FINISH,,QENTRY11,QENTRY11 
2=?L          FSHENTRY K12FINISH,,QENTRY12,QENTRY12 
2=R=          FSHENTRY K13FINISH,,QENTRY13,QENTRY13 
2?=W    [   
2?QG    [     SEGENTRY K14FINISH IS MENDING POINT FOR MACRO FNDELE  
2#=6    [   
2#PQ    [   
2*9B    #     THIS SEGMENT IMPLEMENTS THE FINISH COMMAND (SURPRISE! SURPRISE!)  
2*P2    #     THERE ARE 3 CASES:-   
2B8L    #     1) PARAMETER =NOW 
2BN=    #        ALL JOBS ARE ABANDONED ,ALL LF/IN STOPPED  
2C7W    #     2) PARAMETER =TIME
2CMG    #        ALL JOBS ABANDONED AFTER SPECIFIED TIME. NO MORE JOBS MADE 
2D76    #        FULLY STARTED DURING TIME, LF/IN ALLOWED TO FINISH 
2DLQ    #     3) PARAMETER MISSING  
2F6B    #        NO MORE JOBS MADE FULLY STARTED
2FL2    #   
2G5L    #     IN ALL CASES NO NEW JOBS ARE ACCEPTED AFTER FINISH
2GK=    #   
2H4W    #     WORD IN FIXED USED AS MARKER TO OTHER ACTIVITIES  ON STATE OK 
2HJG    #     FINISH  COMMAND :-
2J46    #       B0=1   FINISH COMMAND BEEN GIVEN
2JHQ    #       B1=1   TIME UP  
2K3B    #       B2=1   FINISH NOW   
2KH2    #       B3=1   ALL BUT SYSTEM ISSUED JOBS HAVE FINISHED 
2L2L    #       B4-23  TIME LEFT IN CASE 2  
2LG=    #   
2NDQ    XIN   4HIN  
2NYB    NOW   4HNOW 
2PD2    TIME  4HSECS
2PXL          4HMINS
2QC=          4HHRS 
2QWW    TLIMH +73   
2RBG    TLIMM +4321 
2RW6    TLIMS +259201   
2S*Q    XBACTRING      +BACT+ACTRING
2STB    STOPPED        #52700002           [STOPPED FOR ABANDON BITS IN JOBEVENT
2T*2    [   
2TSL    #   
2X?G    #   
2XR6    [ S/R TO UNSET THE 'CURRENT FINISH ACTIVITY' BIT.  FIRST IT TEST THAT   
2Y=Q    [     THE BIT IS SET.   
2YQB    UNSET STO   0  GL2  
2^=2          LDCT  0  #20  
2^PL          ANDX  0  EXT+11(2)
329=          BNZ   0  X1                  [ IF ZERO, THE BIT IS UNSET  
32NW          GEOERR   0,OOPS!  
338G    X1    ERS   0  EXT+11(2)
33N6          BRN      (GL2)
347Q    [   
34MB    [ S/R TO STOP A FINISH ACTIVITY BY FORCING AN ENDCOM.  IT LOADS THE 
3572    [     ENDCOM LINK INTO THE ACTIVITY BLOCK AND THEN PUTS THE BLOCK ON
35LL    [     THE ACTIVITY LIST SO THAT IT CAN END ITSELF TIDILY.  THIS ALLOWS  
366=    [     FINISH TO BE ISSUED FROM A MACRO.  THE S/R ALSO UNSETS THE
36KW    [     'CURRENT FINISH ACTIVITY' BIT 
375G    NL    ENDCOM
37K6    STOPFIN 
384Q          STO   1  GL1  
38JB          LDX   2  3
3942          LDX   1  FX1  
39HL          LINKSET  2,NL+1(1)           [ PUTS ENDCOM LINK IN ACTIVITY   
3=3=          CALL  0  UNSET
3=GW          FPUT                         [ PUTS ACTIVITY ON ACTIVITY LIST 
3?2G          BRN      (GL1)
3?^Q    #   
3#FB    #   
3#^2    #     S/R TO STOP A JOB. CHECKS WHY NOT STOPPABLE (IF THIS IS THE   
3*DL    #     CASE) AND UPDATES X7 EVERY TIME FINDS A JOB NOT CURRENTLY 
3*Y=    #     STOPPABLE 
3BCW    STOP2 SBX   5  FX1                 [STOP JOB FOR WHENEVER ONLY  
3BXG          DOWN     PROCONTX,7   
3CC6          BRN      WHY                 [NOT STOPPABLE   
3CWQ          BRN      STOP3               [STOPPED 
3DBB    STOP  SBX   5  FX1                 [STOP JOB
3DW2          DOWN     PROCONTX,2   
3F*L          BRN      WHY                 [NOT STOPPABLE   
3FT=          BRN      XGER                [SYS ISS 
3G#W    STOP3   
3GSG          JOBLOCK  6,3                 [OK  
3H#6          BNG   3  TOURA
3HRQ    XIT   ADX   5  FX1  
3J?B          EXIT  5  1                   [EXIT +1 IF STOPPED  
3JR2    WHY   JOBLOCK  6,3                 [CHECK WHY   
3K=L          BPZ   3  PHOUND   
3KQ=    TOURA   
3L9W          LDN   3  BJOBQ
3LPG    TOUR  LDX   3  FPTR(3)  
3M96          TXU   3  CXJO 
3MNQ          BCC      REND 
3N8B          BXGE  6  JOBNUM(3),TOUR   
3NN2    REND  LDX   3  BPTR(3)             [THUS RIGHT ADDRESS WILL BE PICKED   
3P7L          BRN      XIT                 [UP NEXT TIME THRU LOOP  
3PM=    PHOUND  
3Q6W          HLSAV 3,SET,SAVING,JOBQ,XINHIB
3QLG          FCAJO    2,3  
3R66    #SKI  K6FINISH>199-199  
3RKQ          TRACE    JOBEVENTS(2),YNOTSTOP
3S5B          LDX   0  JOBEVENTS(2) 
3SK2          LDX   2  FX2  
3T4L          BPZ   0  XINHIB              [J IF INHIBIT
3TJ=          ANDX  0  STOPPED(1)          [J IF ALREADY BEING ABANDONED
3W3W          BNZ   0  XIT  
3WHG    XINHIB  
3X36          ADX   5  FX1  
3XGQ          EXIT  5  0                   [EXIT +0 IF NOT STOPPABLE
3Y2B    #     SUBROUTINE TO CHECK BG JOBS: LINK X5  
3YG2    #     EXITS  0 IF STILL SOME LEFT, WITH X7 -VE  
3Y^L    #     EXITS  1 IF DONE, WITH X7= NO OF MOP JOBS 
3^F=    WHATBG  
44WL          HUNTMISB 3,JWELL  
45B=          LDEX  7  JOBENTS+JOBCTS(3)
45TW          NGX   7  7
47SB          BZE   7  XIT1A
4J32          LDN   3  BHLSQ               [NOW TAKE OFF NO OF SAVED JOBS!  
4JGL    SEARCH                             [AS THESE WILL STAY OVER A SYSTEM
4K2=          LDX   3  FPTR(3)             [BREAK AND BE RESTARTED  
4KFW          TXU   3  CXHL 
4K^G          BCC      QENDX               [J IF END OF QUEUE   
4LF6          HLSAV    3,CLEAR,SAVED,HLSQ,SEARCH
4LYQ          ADN   7  1                   [REDUCE (NEGATIVE) COUNT IF SAVED.   
4MDB          BRN      SEARCH   
4MY2    QENDX   
4NCL          BZE   7  XIT1A               [ZERO IF ONLY MOP LEFT   
4NX=    #SKI  K6FINISH>199-199  
4PBW          TRACE    7,JOBSLEFT   
4PWG          EXIT  5  0
4S#L    XIT1A HUNTMISB 3,JWELL  
4SS=          LDEX  7  JWENTRY+JOBENTS+JOBCTS(3)
4Y9L    XIT1  EXIT  5  1
5SHW    #   
5W2Q    #     SUBROUTINE TO FIND CPA FOR CANCEL OR SECOND FINISH
5WGB    SEEKCPA 
5X22          LDN   2  BACT+ACTRING 
5XFL    XLOOP9  
5X^=          LDX   2  FPTR(2)  
5YDW          TXU   2  XBACTRING(1) 
5YYG          BCC      QEND9
5^D6          LDX   3  2
5^XQ          SBN   3  ACTRING             [ADJUST TO START OF BLOCK
62CB          LDCH  0  ATYPE(3) 
62X2          SBN   0  CPAT/64  
63BL          BNZ   0  XLOOP9   
63W=          LDCT  0  #20  
64*W          ANDX  0  EXT+11(3)           [TEST IF FINISH  
64TG          BZE   0  XLOOP9              [J IF NOT
65*6          LDX   2  FX2                 [RESET X2
65SQ          EXIT  6  1
66#B    QEND9 EXIT  6  0                   [EXIT 0 IF NOT FOUND 
66S2    #   
67R=    #   
68=W    QENTRY1 
68QG    #SKI  K6FINISH>99-99
69=6          TRACE    FINISH,FINISH
6=P2          LDX   6  FINISH   
6?8L          BPZ   6  PHIRST              [J IF NOT A SECOND FINISH
6?N=          LDCT  0  #200 
6#7W          ANDX  0  6
6#MG          BNZ   0  TOOLATE             [J IF PAST TIME  
6*76          BRN     NOMARK
6*LQ    PHIRST  
6B6B          LDCT  0  #20  
6BL2          ORS   0  EXT+11(2)           [SET FINISH ACTIVITY MARKER  
6DJG    NOMARK  
6G3B    NOTWRMC 
6GH2          LDN   4  0                   [SET ZERO
6H2L          LDN   7  0                   [MARKER FOR NO PARAMETER 
6HG=          PARAPASS  
6H^W          MHUNT    3,CPB,CUNI   
6JFG          LDX   0  ANUM(3)  
6J^6          BNG   0  SLOW                [J IF NO PARAM   
6KDQ          BZE   0  NULL                [ERROR IF NULL   
6KYB          NGN   7  1                   [MARKER FOR NOW  
6LD2          LDX   0  APARA(3) 
6LXL          TXU   0  NOW(1)   
6MC=          BCC      SLOW                [J IF NOW
6S?G          LDN   7  1                   [MARKER FOR TIME 
6SR6          PARSPLIT 5                   [CONVERT TIME
6T=Q          STO   5  AWORK2(2)           [SAVE MARKER ON WHETHER UNITS SPEC   
6TQB          LDX   3  ACOMMUNE1(2) 
6W=2          BZE   5  MINS                [J IF NO CHAR STRING= MINS   
6WPL ...      BPZ   5  XEND                [ERROR OTHERWISE 
6X9=          TXU   5  TIME(1)  
6XNW          BCC      SECS 
6Y8G          TXU   5  TIME+1(1)
6YN6          BCC      MINS 
6^7Q          TXU   5  TIME+2(1)
6^MB          BCS      WOOPS
7272          LDN   5  60   
72LL          TXL   3  TLIMH(1) 
736=          BCC      YUK                 [TOO LONG A TIME 
73KW          MPY   3  5
745G          LDX   3  4
74K6    MINS  LDN   5  60   
754Q          TXL   3  TLIMM(1) 
75JB          BCC      YUK  
7642          MPY   3  5
76HL          BRN      SECS1
773=    SECS  LDX   4  3
77GW          BZE   4  NOTIM               [J IF TIME ZERO  
782G          TXL   3  TLIMS(1) 
78G6          BCC      YUK  
78^Q          STOZ     3
79FB          ADN   4  FONINTP-1           [IN CASE TIME<FONINTP SECONDS
79^2    SECS1 BZE   4  NOTIM               [J IF TIME ZERO  
7=DL          LDN   5  FONINTP  
7=Y=          DVR   3  5
7?CW    NOTIM   
7?XG    SLOW
7MLG          BPZ   7  SOON                [J IF NOT NOW CASE   
7N66          OUTMESS  HNOW 
7NKQ          OUTPAR   TIMENOW             [ O/P TIME   
7RHG          INFORM   3,HWARN,1           [TELL OPS
7WYW    SOON  BNG   6  SECOND              [J IF SECOND FINISH  
7^WL          STO   4  FINISH              [STORE TIME OR ZERO  
82B=          LDCT  0  #400 
82TW          ORS   0  FINISH              [SET FINISH BIT  
83*G          LDCT  0  #600 
83T6          ORS   0  HLSWAIT             [SET FINISH BIT AND  
84#Q          LDCT  0  #200                [ENSURE CANCEL FINISH
84SB          ERS   0  HLSWAIT             [BIT UNSET   
8JDB    #     THIS SECTION DOES STOPJOB FOR WHENEVER FINISH 
8JY2    #   
8KCL    #     MUST BE DONE IN M/C 'B' FOR 'B' MACHINE JOBS AS   
8KX=    #     BITS 14 & 17 MAY ONLY BE SET IN THE 'B' M/C CPAT  
8LBW    #   
8LWG    XTH 
8QRG          LDN   3  BJOBQ
8R?6    XLOOP8  
8RQQ          LDX   3  FPTR(3)  
8S=B          TXU   3  CXJO 
8SQ2          BCC      QEND8
8Y7B          LDX   6  JOBNUM(3)
9356          HLSAV 3,SET,SAVING,JOBQ,XLOOP8
93JQ          FCAJO    2,3  
944B    #     B14 OF EXT+11=1 => A WE FN HAS BEEN GIVEN 
94J2    #     B17 OF EXT+11=1 => RUN OF END OF JD FILE, IF SET DO NOT DO STOPJOB
953L    #     FOR WE FN,EVEN IF B14 IS SET  
95H=          LDN   0  #1100               [TEST IF WE FN OR WAITING: E.O.F 
962W          ANDX  0  EXT+11(2)           [THE END OF ITS JDF FILE,IT CAN HAVE 
96GG          BZE   0  XLOOP8              [IF NO WE FN OR WAITING E.O.F
9726          ERN   0  #1000               [CLEAR OUT WE FINISH BIT 
97FQ          BNZ   0  XLOOP8   
97^B                                       [IN CASE WE WANT TO ABANDON IT LATER 
98F2          BPZ   7  STOP4               [J IF NOT NOW CASE   
98YL          SPRIVTEST    JSISSUE,3,XLOOP8 
99D=    STOP4 CALL  5  STOP2
99XW          BRN      XLOOP8   
9=CG          BRN      XLOOP8   
9=X6    QEND8   
9B#G          FON      #33                 [WAKE HLS ACT (IF ASLEEP)
9BS6          BZE   7  NOPAR               [J IF NO PARAM   
9C?Q          BPZ   7  WAIT                [J IF TIME   
9CRB    PHAST   
9MKB          LDCT  0  #300 
9N52          ORS   0  FINISH              [SET OTHER BITS  
9R2Q    SNOTRETINA  
9RGB    #     THIS SECTION ATTEMPTS TO ABANDON ALL USER JOBS IN THE JOB QUEUE   
9S22    # THIS LOOP WILL WAIT FOR NOUSER INPUT JOBS WHILE THERE ARE NON-SAVED   
9SFL    # USER-JOBS (ACCORDING TO JOBCOUNT) IN CASE THESE INPUTS TURN OUT TO
9S^=    # BE JOBS - BUT NOT IN THE NOUSER-NOJOBBLOCL CASE, WHERE IT MIGHT FAIL. 
9TDW    # IN BOTH CASES IT NEEDS REWRITING - PARTLY BECAUSE OF THE WAY IT DECIDE
9TYG    # TO RERUN THE LOOP.
9WD6    XCOM  LDN   4  0
9WXQ          LDN   3  BJOBQ
9XCB    XLOOP LDX   3  FPTR(3)  
9XX2          TXU   3  CXJO 
9YBL          BCC      QEND                [J IF END OF JOB QUEUE   
=4?L          LDX   6  JOBNUM(3)
=?L2          SPRIVJUMP JSISSUE,3,XLOOP    [J IF SYS ISSUED 
=#5L    STOP1 CALL  5  STOP                [STOP JOB
=#K=          ADN   4  1                   [INCREMENT COUNT OF UNSUCCESFUL ABAND
=*4W          BRN      XLOOP
=*JG    QEND  CALL  5  WHATBG   
=B46          BRN      WAITF
=BHQ          BZE   7  XDONE
=C3B    WAITF COOR3    #62                 [WAIT FOR A FONINT   
=CH2          BNZ   4  XCOM                [REPEAT LOOP IF SOME ABANS UNSUCCESSF
=D2L          BRN     QEND  
=DG=    XDONE   
=FFG          LONGON   #145           [FOR MOP WELL JOBS
=F^6    #     NOW WE CHECK LF AND IN AND THEN SYS ISS JOBS  
=GDQ    #   
=GYB    #     THIS NEXT SECTION CAN BE REWRITTEN TO BE MUCH MORE EFFICIENT AS   
=HD2    #     SOON AS BOTH IDENTIFIERS ARE SET  
=HXL    #   
=JC=          LDN   4  0
=QQB    QEND1 LDN   3  BACT+ACTRING 
=R=2    XLOOP2  
=RPL          LDX   3  FPTR(3)             [SEARCH ACTIVITY RING FOR LFS
=S9=          TXU   3  XBACTRING(1) 
=SNW          BCC      QEND2
=T8G          LDX   2  3
=TN6          SBN   2  ACTRING  
=W7Q          LDCH  0  ATYPE(2) 
=WMB          SBN   0  ACTLF/64 
=Y6=          SBN   0  CPAT-ACTLF/64
=YKW          BNZ   0  XLOOP2   
=^5G          LDN   0  #2000
=^K6          ANDX  0  EXT+11(2)
?24Q          BZE   0  XLOOP2   
?6FB    XADDONE 
?8CW          BZE   0  QEND2
?8XG          ADN   4  1                   [UPDATE CT IF LF 
?9C6    QEND2   
?H7L          LFNOTFIN QEND4
?HM=    XCHEKIN 
?J6W          BZE   4  XLFIN
?JLG    QEND4   
?K66    #SKI  K6FINISH>199-199  
?KKQ          TRACE    4,LFINDONE   
?L5B          COOR3    #62                 [WAIT A FEW SECONDS  
?LK2          BRN      XDONE               [TRY AGAIN   
?M4L    XLFIN   
?Q2B          MONOUT   HDONE               [TELL OPS ALL USER JOBS DONE 
#3QW    QENTRY5 
#4=G          LDCT  0  #40  
#4Q6          ORS   0  FINISH              [SET FINISHED BIT
#8M6    #    'FINISHED' HAS OCCURRED SO WE MUST TELL SYS.ISSUED JOBS
#96Q    SYSIS   
#9LB          LDN   7  1
#=62    REPEAT  
#=KL          LDN   3  BJOBQ
#?5=    XLOOP3                             [NOW CHECK SYS ISSUED JOBS   
#?JW          LDX   3  FPTR(3)  
##4G          TXU   3  CXJO 
##J6          BCC      QEND3
#C^G          SPRIVTEST JSISSUE,3,XLOOP3
#HWG          ADN   4  1
#JB6          BZE   7  XLOOP3              [DONT STOP JOB IF NON-FIRST PASS OF J
#JTQ          LDX   6  JOBNUM(3)
#K*B    RETRY CALL  5  STOP2
#KT2          BRN      ODEAR
#L#L          BRN      XLOOP3   
#LS=    QEND3 BZE   4  XFIN 
#MRG          COOR3    ASIFIN   
#N?6    NOT3INB 
#PQ2    TIS4INB 
#Q9L          LDN   4  0
#QP=          LDN   7  0
#R8W          BRN      REPEAT              [TRY AGAIN   
#RNG    XFIN
#S86    QENTRY11
#TM2          LDXC  0  AWORK4(2)   [
#W6L          BCS      NOWAKEDUMP  [ DON'T WAKE DUMPER IF 'FN LK' ELSE  
#WL=          FON      ADUMPWAIT   [MAKE SURE DUMPER HAS A GO   
#X5W    NOWAKEDUMP  
#^4B          PERCOUNT ALL  
*?#G ...      MONOUT   HDONE1,,NONAUT    [O/P EVERYTHING CONE MESSAGE   
*F82    WEND
*FML          LDX   2  FX2  
*G7=          LDCT  0  #20                 [ ENSURE THAT THE 'CURRENT FINISH
*GLW          ORS   0  EXT+11(2)           [   ACTIVITY' BIT
*H6G          ERS   0  EXT+11(2)           [   IS UNSET 
*HL6    [   
*J5Q    [     NB  FNDELE ASSUMES THAT ACROSS AND ENDCOM 
*JKB    [     ARE THE SAME LENGTH  (AT PRESENT 2 WORDS) 
*K52    [     MENDING POINT FOR MACRO FNDELE
*KJL          SEGENTRY K14FINISH
*L4=          ENDCOM
*L9D ...[   
*LBL ...[   
*LHW    ODEAR COOR3    #62                 [WAIT A WHILE
*M3G          BRN      RETRY               [TRY AGAIN   
*M8N ...[   
*M*W ...[   
*MH6    #     THIS SECTION IMPLEMENTS THE TIME CASE OF FINISH   
*N2Q    WAIT  STOZ     AWORK1(2)           [CLEAR MARKER
*NGB    WAIT1 OUTBLOCN 8
*P22    #SKI  K0FINISH>199-199  
*PFL          TRACE    4,FINTIME
*P^=          BNZ   4  XTIME               [J IF NOT ZERO   
*QDW          OUTMESS  HNOW 
*QYG          BRN      XBBC 
*RD6    XTIME LDX   5  AWORK2(2)
*X*6          SPARANOT 1
*XSQ          LDN   6  XIN(1)              [MOVE IN 'IN'
*Y#B          LDN   7  ACOMMUNE1(2) 
*YS2          MVCH  6  3
*^?L          MHUNT 3,CPB,CUNI  
*^R=          LDX   2  ANUM(3)  
B2=W          ANDN  2  4095 
B2QG          LDN   6  APARA(3) 
B3=6          MVCH  6  0(2)                [MOVE IN TIME
B3PQ          BNZ   5  SPEC 
B49B          LDN   5  #20  
B4P2          LDX   2  7                   [IF NOT SPEC =MINS SO MOVE   
B58L          DCH   5  0(2)                [IN 'MINS'   
B5N=          BCHX  7  £
B67W          LDN   6  TIME+1(1)
B6MG          MVCH  6  4
B776    SPEC  LDX   2  FX2  
B7LQ          SBN   7  ACOMMUNE1(2) 
B86B          SLC   7  2
B8L2          OUTPARAM 7,ACOMMUNE1  
B95L    XBBC  OUTPAR   TIMENOW             [ O/P TIME   
B9K=          LDX   0  AWORK1(2)
B=4W          BNZ   0  OPSINF              [J IF TO TELL OPS
B*2L          BROADCAST HWARN   
BDXL          STO   1  AWORK1(2)           [SET MARKER  
BFC=          BRN      WAIT1
BFWW    OPSINF  
BJSL          INFORM   3,HWARN,1           [TELL OPS
BNPL          BNZ   4  SOME 
BY42          LDCT  0  #200                [IF TIME ZERO
BYHL          ORS   0  FINISH              [SET TIME UP BIT 
B^3=          BRN      XCOM                [AND JOIN MAIN ROUTINE   
B^GW    #     IN THIS SECTION X7 IS SET AS FOLLOWS:-
C22G    #     X7= 0  IF  ALL JOBS FINISHED  
C2G6    #     X7 +VE IF  ALL BG JOBS FINISHED   
C2^Q    #     X7 -VE IF  STILL SOME BG JOBS LEFT
C3FB    SOME  NGN   7  1
C3^2    XLOOP4  
C4DL          BPZ   7  WHILE
C4Y=          CALL  5  WHATBG              [CHECK BG JOBS   
C5CW          BRN      WHILE               [J IF SOME LEFT  
C5XG          BZE   7  WHILE               [J IF NO JOBS LEFT   
C6C6          OUTNUM   7,0  
C6WQ          MONOUT   HDONEBG             [O/P 'ALL BG JOBS DONE' MESSAGE  
C7BB    WHILE LONGWAIT XBRK,#62 
CBNQ          LDN   0  1
CC8B          SBS   0  FINISH              [UPDATE TIME IN FINISH   
CCN2    SUBFINB 
CD7L          BCT   4  XLOOP4   
CT*G          LDCT  0  #200                [WAIT FINISHED   
CTT6          ORS   0  FINISH              [SET TIME UP BIT 
CW#Q    XYNSETA 
CWSB          BZE   7  XDONE
CX#2          CALL  5  WHATBG   
CXRL          BRN      XCOM                [JOIN ABANDON ROUTINE IF JOBS LEFT   
CY?=          BZE   7  XDONE
CYQW          OUTNUM   7,0  
C^=G          MONOUT   HDONEBG             [O/P MESSAGE 
C^Q6          BRN      XCOM 
D29Q    #     THIS SECTION IMPLEMENTS THE CASE WHEN THERE ARE NO PARAMETERS 
D2PB    NOPAR LDN   4  1                   [MARKER  
D392    NOPAR1  
D3NL          OUTMESS  HSOON
D48=          OUTPAR   TIMENOW             [ O/P TIME   
D4MW          BZE   4  OPS                 [J TO TELL OPS   
D7KL          BROADCAST HWARN              [O/P WARNING TO MOP JOBS 
D?GL          LDN   4  0
D#2=          BRN      NOPAR1   
D#FW    OPS 
DCCL          INFORM   3,HWARN,1
DH#L    TESTBG  
DHS=          CALL  5  WHATBG              [CHECK BG JOBS   
DJ?W          BRN      TARRY               [J IF STILL SOME LEFT
DJRG          BZE   7  NOMORE              [J IF NO JOBS LEFT.  
DK?6          BNZ   4  TARRY               [J IF MESS ALREADY O/P   
DKQQ          OUTNUM   7,0  
DNNG          MONOUT   HDONEBG             [O/P B.G JOBS DONE MESSAGE   
DSKG          LDN   4  1
DT56    TARRY COOR3    #44                 [WAIT
DTJQ          BRN      TESTBG   
DW4B    NOMORE  
F6TL          LDCT  0  #200 
F7*=          ORS   0  FINISH   
F=?2          BRN      XDONE
F=QL    SECOND  
F?==          ACROSS   FINISHB,4
F?PW    QENTRY2                            [ 'CANCEL FINISH' ENTRY POINT
F#9G          ACROSS   FINISHB,5
FMYG    XBRK
FND6    XGER
FNXQ          GEOERR   1,FINWRONG   
FPCB    XMDF  CALL  1  ZERROR   
FPX2          +HNEMDF   
FQBL    TOOLATE 
FQW=          CALL  1  ZERROR   
FR*W          +HTOOLATE 
FRTG    WOOPS CALL  1  ZERROR   
FS*6          +APFERR   
FSSQ    NULL  CALL  1  ZERROR   
FT#B          +JPARNULL 
FTS2    YUK   CALL  1  ZERROR   
FW?L          +JTOOLONG 
FWR=    ZERROR  
FX=W          COMERRX  0(1) 
FX#S ...[   
FXBQ ...XEND
FXDN ...[     PARAMETER ERROR FOUND, AND REPORTED, BY PARSPLIT  
FXGL ...      BC       2,EXFINACT          [CLEAR "CURRENT FINISH ACTIVITY" 
FXJJ ...[                                   BIT IN EXT+11   
FXLG ...      ENDCOM
FXND ...[   
FXQG          MENDAREA 30,K99FINISH 
FY=6    #END
^^^^ ...156230530001
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1