{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: FINISH867)}}
====== FINISH867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BC|BC]], [[george:macro:BROADCAST|BROADCAST]], [[george:macro:BXGE|BXGE]], [[george:macro:COMERRX|COMERRX]], [[george:macro:COOR3|COOR3]], [[george:macro:DOWN|DOWN]], [[george:macro:ENDCOM|ENDCOM]], [[george:macro:FCAJO|FCAJO]], [[george:macro:FON|FON]], [[george:macro:FPUT|FPUT]], [[george:macro:FSHENTRY|FSHENTRY]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HLSAV|HLSAV]], [[george:macro:HUNTMISB|HUNTMISB]], [[george:macro:INFORM|INFORM]], [[george:macro:JOBLOCK|JOBLOCK]], [[george:macro:LFNOTFIN|LFNOTFIN]], [[george:macro:LINKSET|LINKSET]], [[george:macro:LONGON|LONGON]], [[george:macro:LONGWAIT|LONGWAIT]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MONOUT|MONOUT]], [[george:macro:OPS|OPS]], [[george:macro:OUTBLOCN|OUTBLOCN]], [[george:macro:OUTMESS|OUTMESS]], [[george:macro:OUTNUM|OUTNUM]], [[george:macro:OUTPAR|OUTPAR]], [[george:macro:OUTPARAM|OUTPARAM]], [[george:macro:PARAPASS|PARAPASS]], [[george:macro:PARSPLIT|PARSPLIT]], [[george:macro:PERCOUNT|PERCOUNT]], [[george:macro:REPEAT|REPEAT]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SPARANOT|SPARANOT]], [[george:macro:SPRIVJUMP|SPRIVJUMP]], [[george:macro:SPRIVTEST|SPRIVTEST]], [[george:macro:TRACE|TRACE]], [[george:macro:UNSET|UNSET]], [[george:macro:WHILE|WHILE]]
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 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