{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: FREEZE864)}}
====== FREEZE864 ======
(George Source)
**Macros used:** [[george:macro:BACKSPACE|BACKSPACE]], [[george:macro:BC|BC]], [[george:macro:BS|BS]], [[george:macro:BWNZ|BWNZ]], [[george:macro:BWZ|BWZ]], [[george:macro:BXE|BXE]], [[george:macro:CHEKPRIV|CHEKPRIV]], [[george:macro:CLOSETOP|CLOSETOP]], [[george:macro:COMBRKIN|COMBRKIN]], [[george:macro:COMERR|COMERR]], [[george:macro:DICTJL|DICTJL]], [[george:macro:DICTWELL|DICTWELL]], [[george:macro:ENDCOM|ENDCOM]], [[george:macro:ERROR|ERROR]], [[george:macro:FINDFCB|FINDFCB]], [[george:macro:FNORM|FNORM]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FSHCODE|FSHCODE]], [[george:macro:FSHENTRY|FSHENTRY]], [[george:macro:FSHSKIP|FSHSKIP]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETJOB|GETJOB]], [[george:macro:JBC|JBC]], [[george:macro:JBS|JBS]], [[george:macro:LONGONALL|LONGONALL]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREE|MFREE]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAME|NAME]], [[george:macro:NAMETOP|NAMETOP]], [[george:macro:OPENDIR|OPENDIR]], [[george:macro:OPENSYS|OPENSYS]], [[george:macro:POP|POP]], [[george:macro:READDICT|READDICT]], [[george:macro:REPALLER|REPALLER]], [[george:macro:REWRITE|REWRITE]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SPARAPAS|SPARAPAS]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:TRANCHKN|TRANCHKN]], [[george:macro:TRANSBEG|TRANSBEG]], [[george:macro:TRANSFIN|TRANSFIN]], [[george:macro:UNIFREE|UNIFREE]], [[george:macro:VOP|VOP]]
22FL SEG FREEZE,84,MIKE PUTNAM,USERCOMS
22^= #
23DW # THIS SEGMENT IMPLEMENTS THE FREEZE AND CANCEL FREEZE
23YG # COMMANDS. ENTRY 1 = FREEZE, ENTRY 2= CC FREEZE.
24D6 #
24XQ SEGENTRY K1FREEZE,X1
25CB SEGENTRY K2FREEZE,X2
25M8 ... FSHENTRY K3FREEZE,X3,,X3
25X2 #
2648 ... FSHSKIP B
269B ...(
26BL PRIV 8HFREEZE
26C? ...USERJ 24HJOBLIST 00010001****
26CY ...#
26DK ...SFABS MHUNT 2,FILE,FABSNB [SR TO LOCATE FABS FOR ALTLENG
26F= ... EXIT 1 0
26FX ...#
26GJ ...YJOBNO [SR TO PUT X0 JOBNO INTO FILE FINTER
26H9 ... [CALLED ON X2
26HW ... SMO FX2
26JH ... STO 2 ACOMMUNE1 [SAVE LINK
26K8 ... LDX 7 0 [MHUNT USES X0
26KT ... MHUNTW 2,FILE,FINTER
26LG ... LDX 0 A1(2) [COUNT OF NOS IN FINTER
26M7 ... SBN 0 199 [HAS IT OVERFLOWED
26MS ... BZE 0 STARTJOBS [J IF SO
26NF ... ADN 0 200 [RESTORE AND INCREMENT BY 1
26P6 ... SMO 0
26PR ... STO 7 A1(2) [STORE NUMBER
26QD ... STO 0 A1(2) [STORE UPDATED COUNT
26R5 ... SMO FX2
26RQ ... LDX 2 ACOMMUNE1
26SC ... EXIT 2 0 [EXIT
26T4 ...#
26TM ...)
26W= #
27*W X1 LDN 6 0 [SET K1 ENTRY MARKER
27TG MAINCODE [SEGMNT IS MOSTLY COMMON TO BOTH
27W9 ...#
27WY ...X3
27XM ...#
27YB ... FSHCODE B,XENDB1
27^5 ...(
27^S ...# THE FREEZE COMMAND IS AN 'A' MACHINE FUNCTION. SO TRANSFER TO
282H ...# 'A' IF WE ARE STARTED ON 'B'
283= ...#
283^ ... TRANSBEG FSHFZCOMID,FREEZE,3,CLB,,ACOMMUNE1
284N ...#
285C ... BRN XCOMBRK [BREAK-IN RETURN POINT
2866 ... ENDCOM [ENDCOM RETURN POINT
286T ...#
287J ...XCOMBRK
288? ... COMBRKIN
2892 ...#
289P ...XENDB1
28=D ...)
28?7 ... FSHSKIP B,XNOTBX
28?W ...(
28*6 CHEKPRIV ,PRIV,XPRIV [CHECK USER HAS FREEZE PRIV
28SQ LDN 7 0 [CLEAR PARAMS FOUND MARKER
29#B NEXTPAR
29S2 SPARAPAS
2=?L MHUNT 3,CPB,CUNI
2=R= LDX 0 ANUM(3)
2?=W BNG 0 THEEND [J IF NO MORE PARAMS
2?QG LDN 7 1 [SET PARAMS FOUND MARKER
2#=6 BZE 0 NULLPAR [NULL PARAMS NOT ALLOWED
2#PQ NAMETOP 3,FILE,FNAME [RENAME CPB CUNI FOR FNORM.
2*9B FNORM [NORMALIZE ENTRANT NAME
2*P2 MHUNT 3,FILE,FNAME
2B8L NAMETOP 3,CPB,CUNI [NAME IT BACK FOR ERROR MSSGE CODE
2BN= TESTRPN2 OK,NUNI [J IF NAME IN ERROR
2BRC ...
2BSD ... MHUNT 3,FILE,FABSNB
2BS^ ... LDN 0 #2200 [ERROR IF TSN OR WF FORMAT
2BTG ... ANDX 0 ATYPE(3)
2BW3 ... BNZ 0 XTSN
2BWJ ... BNZ 6 NFREEZE3
2B^P ...#
2C4W ...# IN THE FREEZE CASE WE MUST CHECK AND ERROR IF THE PARAMETER IS
2C83 ...# A DIRECTORY WITH STARTED JOBS RUNNING UNDER IT. WE TEST THIS BY
2C?8 ...#
2CB* ...# 1)OPENING THE SUPERIOR DIRECTORY AND CHECKING PARAM IS A DIR.
2CFG ...#
2CJM ...# 2)JUMPING INTO THE FREEZE CODE IF IT IS NOT.
2CMS ...#
2CQ^ ...# 3)WE SET UP A FILE/FINTER BLOCK AND ACCUMULATE A LIST OF JOBNOS
2CW6 ...# FOR THIS USER FROM THE JOB + HLS QUEUES (I.E. THE STARTED JOBS)
2C^? ...# IF THERE ARE NONE WE PROCEED WITH THE FREEZE.
2D4D ...#
2D7K ...# 4) WE OPEN :SYSTEM.JOBLIST(/B1) AND CHECK THAT ALL THE JOBS
2D=Q ...# MAY RUN UNDER A FROZEN USER.
2D*X ...#
2DF4 ...SEMWT POP SEMWT,,JWACCESS [LOCK OUT JOBWELL CODE
2DJ9 ... OPENDIR YBREAK,CLEAN,QUERY,NOWAIT[OPEN SUP DIR
2DMB ... TESTRPN2 OK,NOTOK [J IF NOTOK REPLY
2DQH ... MHUNTW 3,FILE,ENT
2DTN ... BWZ EUSE1(3),NOTDIR [J IF ITS NOT A DIRECTORY
2DYT ... LDX 4 EUSE2(3) [GET USERNAME OF THE DIR
2F42 ... LDX 5 EUSE3(3)
2F77 ... LDX 3 EUSE1(3) [FOR COMPARING WITH JOBQ BLOCKS
2F=# ... CLOSETOP [CLOSE DIRECTORY
2F*F ... MFREEW FILE,ENT
2FDL ...#
2FHR ...# WE SET UP A FILE/FINTER BLOCK AND ACCUMULATE A LIST OF JOBNOS OF
2FLY ...# JOBS UNDER THE USER WHICH ARE STARTED I.E. ARE IN THE JOB OR HSLQ.
2FQ5 ...# THE FORMAT OF THE BLOCK IS A1=COUNT OF JOBS, A1+1 ETC =JOBNOS
2FT= ...# WE DARE NOT COORDINATE DURING THE SEARCH SO WE MAKE THE CRUMMY
2FYC ...# BUT NOT UNREASONABLE ASSUMPTION THAT THERE WILL BE LESS THAN 200
2G3J ...# SUCH JOBS. IF THE FINTER OVERFLOWS WE MAKE THE EQUALLY CRUMMY
2G6P ...# ASSUMPTION THAT AT LEAST 1 OF THE 200 MUST BE UNPRIVILEGED TO
2G9W ...# RUN IN A FROZEN DIRECTORY
2G*3 ...#
2GD8 ... SETNCORE 200,2,FILE,FINTER
2GH* ... STOZ A1(2)
2GLG ... LDX 1 BJOBQ [X1->1ST BLOCK IN JOBQ
2GPM ...TESTJOB
2GSS ... BXE 1 CXJO,NDJOBQ [J IF END OF JOBQ
2GX^ ... LDX 0 ATYPE(1)
2H36 ... SRL 0 12 [CHECK ITS A BLOCK WE WANT
2H6? ... ERN 0 JOBQE
2H9D ... BNZ 0 NEXTJBLOCK [J IF NOT
2H#K ... TXU 3 JUSER(1)
2HCQ ... TXU 4 JUSER+1(1)
2HGX ... TXU 5 JUSER+2(1) [IS IT OUR USER
2HL4 ... BCS NEXTJBLOCK [J IF NOT
2HP9 ... LDX 0 JOBNUM(1)
2HSB ... CALL 2 YJOBNO [ADD JOBNO TO FINTER
2HXH ...NEXTJBLOCK
2J2N ... LDX 1 FPTR(1) [MOVE ONTO NEXTBLOCK
2J5T ... BRN TESTJOB [LOOP ROUND
2J92 ...NDJOBQ
2J#7 ... LDX 1 BHLSQ [NOW SEARCH THE HLSQ
2JC# ...TESTHLS
2JGF ... BXE 1 CXHL,NDHLSQ [J IF END OF HLSQ
2JKL ... LDX 0 ATYPE(1)
2JNR ... SRL 0 12 [CHECK ITS A BLOCK WE WANT
2JRY ... ERN 0 ADATA+JSWAP
2JX5 ... BNZ 0 NEXTHBLOCK [J IF NOT
2K2= ... TXU 3 HLSUNAM(1)
2K5C ... TXU 4 HLSUNAM+1(1) [IS IT OUR USER
2K8J ... TXU 5 HLSUNAM+2(1)
2K?P ... BCS NEXTHBLOCK [J IF NOT
2KBW ... LDX 0 HLSJONO(1)
2KG3 ... CALL 2 YJOBNO [PUT JOBNO IN FINTER
2KK8 ...NEXTHBLOCK
2KN* ... LDX 1 FPTR(1) [MOVE ONTO NEXT BLOCK
2KRG ... BRN TESTHLS
2KWM ...NDHLSQ
2K^S ... MHUNTW 3,FILE,FINTER
2L4^ ... LDX 5 A1(3) [COUNT OF STARTED JOBS
2L86 ... BZE 5 PROCEED [J IF NONE
2L?? ... OPENSYS YBREAK,JOBLIST,READ [OPEN JOBLIST
2LBD ... TESTRPN2 OK,(GEOERR)
2LFK ...NXSJREC
2LJQ ... MHUNTW 3,FILE,FINTER
2LMX ... SMO 5
2LR4 ... LDX 4 A1(3) [PICK UP NEXT JOB NO
2LW9 ... GETJOB 4,SYSTEM [LOCATE RECORD
2L^B ... TESTRPN2 OK,(GEOERR)
2M4H ... STEPAGAIN [X3->RECORD
2M7N ... ADX 3 JOBDATASIZE
2M=T ... JBC STARTJOBS,3,JLBFROZEN [J IF USER MAY NOT BE FROZEN
2MB2 ... BCT 5 NXSJREC [LOOP IF MORE JOBS TO CHECK
2MF7 ... CLOSETOP [CLOSE JOBLIST
2MJ# ...PROCEED
2MMF ... MFREEW FILE,FINTER
2MQL ...NOJOBS [PARAM IS DIRECTORY WITHOUT JOBS
2MTR ... [STARTED AND UNPRIVILEGED
2MYY ...#
2N45 ...# THE BASIC ACTION OF FZ AND CC FZ IS SIMPLE. WE OPEN THE SUP
2N7= ...# DIR, SET OR CLEAR THE FZ BIT, REWRITE THE RECORD AND CLOSE THE DIR.
2N=C ...# SOME FURTHER ACTIONS ARE NECESSARY FOR DIRECTORIES.
2N*J ...#
2NDP ...NFREEZE3
2NHW ... OPENDIR YBREAK,CLEAN,QUERY,NOWAIT [OPEN SUP DIR.
2NM3 ... TESTRPN2 OK,NOTOK [J IF NOT OK
2NQ8 ...NOTDIR
2NT* ... MHUNTW 3,FILE,ENT
2NYG ... JBS XMULTEL,3,BEMULT [NOT ALLOWED TO FREEZE ELEMS OF MULTS
2P3M ... JBS XTEMPDIR,3,BETEMP [OR TEMP DIRS
2P6S ... JBS XLIBENT,3,BELIB [OR TAPES
2P9^ ...REWRITE
2P*6 ... BZE 6 YFREEZE1 [J IF FREEZE COMMAND
2PD? ... BC 3,BEUSERFREZ [CANCEL SO CLEAR THE BIT
2PHD ... BRN NFREEZE1
2PLK ...YFREEZE1
2PPQ ... BS 3,BEUSERFREZ [SET THE BIT
2PSX ...NFREEZE1
2PY4 ... LDEX 0 ECOPS(3)
2Q39 ... BZE 0 NOBACK
2Q6B ... BACKSPACE [SKIP OVER BLOCKS REC IF ANY
2Q7Y ... MHUNTW 3,FILE,ENT
2Q9H ...NOBACK
2Q#N ... NAME 3,FILE,FWB
2QCT ... REWRITE
2QH2 ... MHUNTW 3,FILE,FWB
2QL7 ... NAME 3,FILE,ENT
2QP# ... BWNZ EUSE1(3),YDIR [J IF JUST FROZEN DIR
2QSF ...NDIR CLOSETOP [CLOSE THE UPDATED DIRECTORY
2QXL ...NENT MFREEW FILE,ENT
2R2R ...NFAB MFREE FILE,FABSNB
2R5Y ... BNZ 6 NUNI
2R95 ... VOP ,JWACCESS [IF FREEZE CASE RELEASE JW SEMA
2R#= ...NUNI UNIFREE
2RCC ... BRN NEXTPAR [J TO PROCESS NEXT PARAM
2RD8 ...#
2RD^ ...XNOTBX
2RFQ ...)
2RGJ ...#
2RKP ...X2 LDN 6 1 [SET X2 ENTRY MARKER
2RNW ... BRN MAINCODE
2RS3 ...#
2RT4 ... FSHSKIP B,XNOTBY
2RW5 ...(
2RX8 ...YBREAK
2S2* ... BNZ 6 NFREEZE6
2S5G ... VOP ,JWACCESS [IN FZ CASE RELEASE JWELL SEMA
2S8M ...NFREEZE6
2S8W ... FSHCODE A,XNOTB1
2S95 ...(
2S9# ...# SHARED FILESTORE: WE MUST RETURN TO 'B' IF WE STARTED THERE
2S9H ...#
2S9Q ... TRANCHKN FSHFZCOMID,EQUAL,XNOTB1,XNOTB1
2S9^ ...#
2S=8 ... LDN 3 0 [SET BREAK-IN OFFSET
2S=C ...#
2S=L ...XFIN TRANSFIN 3 [AND GO BACK TO 'B'
2S=T ...#
2S?4 ...XNOTB1
2S?? ...)
2S?S ... COMBRKIN [BREAKIN WHILE OPENING DIR OR JOBLIST
2SB^ ...#
2SG6 ...
2SK? ...#
2SND ...# THE FOLLOWING CODE IS NECESSARY WHEN FREEZENG/CC FZ ING A DIRECTORY.
2SRK ...# WE MUST UPDATE THE DICTIONARY AND INFORM THE JOB HANDLING CODE OF
2SWQ ...# THE USERS CHANGE OF STATE, SO IT CAN ADJUST THE RECORDS FOR ANY
2S^X ...# WELL JOBS BELONGING TO HIM.
2T54 ...#
2T89 ...YDIR
2T?B ... CLOSETOP [DIRECTORY
2TBH ... OPENSYS YBREAK,DICTIONARY,GENERAL
2TFN ... MHUNTW 3,FILE,ENT
2TJT ... READDICT ,EUSE1(3) [LOCATE AND READ DOWN USERS RECORD
2TN2 ... TESTRPN2 OK,REPLYQY
2TR7 ... MHUNT 3,FILE,ADICTENT [X3->TO RECORD
2TW# ... BNZ 6 NFREEZE4 [J IF CC FREEZE
2T^F ... BS 3,BFROZEN [SET BIT FOR FREEZE CASE
2W4L ... BRN YFREEZE4
2W7R ...NFREEZE4
2W=Y ... BC 3,BFROZEN [CLEAR BIT
2WB5 ...YFREEZE4
2WF= ... NAME 3,FILE,FWB
2WJC ... REWRITE [REWRITE THE RECORD
2WMJ ... MFREEW FILE,FWB
2WQP ... MHUNTW 3,FILE,ENT
2WTW ... JBS YFREEZE5,3,BNPSEUDO [DONT TELL JW ABOUT FZ ON PSEUDO
2W^3 ... BNZ 6 NFREEZE5 [J IF CC FREEZE
2X48 ... DICTWELL EUSE1(3),FREEZE,,ON [TELL JWELL USER IS FROZEN
2X7* ... BRN YFREEZE5
2X=G ...NFREEZE5
2X*M ... DICTWELL EUSE1(3),FREEZE,,OFF[TELL JWELL THE FREEZE IS CANCELLED
2XDS ...YFREEZE5
2XH^ ... CLOSETOP [DICTIONARY
2XM6 ...#
2XQ? ...# ALL THAT REMAINS TO DO IS THE SETTING OF THE BIT IN THE FCB IF IT
2XTD ...# IS IN CORE.
2XYK ...#
2Y3Q ... LDN 4 6
2Y=Q LDX 5 3
2YQB FINDFCB 4,3,NORC
2^=2 TESTRPN2 OK,NOTFOUND
2^PL BZE 6 YFREEZE2 [J IF ITS FREEZE
329= BC 3,BFUSERFREZ [CLEAR BIT IF CANCEL
32NW BRN NFREEZE2
338G YFREEZE2
33N6 BS 3,BFUSERFREZ [SET BIT
347Q NFREEZE2
34MB NOTFOUND
3572 LDX 3 5
35LL ... BRN NENT [BACK TO MAIN LINE CODE
366= #
36KW THEEND
375G BNZ 7 YPARS [ERROR IF NO PARAMS GIVEN
37K6 ERROR JPARMIS
37Q# ...YPARS
37XG ... DICTJL [ENSURE THAT ANY DICTWELLS ISSUED
384N ... [ARE FULLY IMLEMENTED
389W ... LONGONALL #6 [WAKE ALL ACTS WANTING FILES
38C4 ... LONGONALL #10
38J= ... LONGONALL #12
38JL ... FSHCODE A,XNOTB2
38K2 ...(
38KB ...# SHARED FILESTORE: AS WITH COMBRKIN ABOVE, WE MUST GO BACK TO 'B'
38KQ ...# IF THAT IS OUR HOME MACHINE
38L6 ...#
38LG ... TRANCHKN FSHFZCOMID,EQUAL,XNOTB2,XNOTB2
38LW ...#
38M= ... LDN 3 1 [SET THE ENDCOM RETURN OFFSET
38ML ... BRN XFIN
38N2 ...#
38NB ...XNOTB2
38NQ ...)
38PD ... ENDCOM
38WL ...#
3942 NULLPAR
39HL ERROR JPARNULL
3=3= BRN NUNI
3=GW #
3?2G NOTOK
3?G6 REPALLER
3?^Q ... BRN NFAB
3#FB #
3#H^ ...XTSN
3#LJ ... FREECORE 3
3#P7 ... ERROR ERVRYWRONG
3#RQ ... BRN NUNI
3#W* ...#
3#^2 XMULTEL
3*DL ERROR ERMULTEL
3*Y= ... BRN NDIR
3BCW #
3BXG XTEMPDIR
3CC6 ERROR ERTEMPDIR
3CWQ ... BRN NDIR
3DBB #
3DW2 XLIBENT
3F*L ERROR ERLIBENT
3FC3 ... BRN NDIR
3FDD ...STARTJOBS
3FFT ... CLOSETOP [JOBLIST
3FH= ... ERROR ERFZSTJBS
3FJM ... MFREEW FILE,FINTER
3FL4 ... BRN NFAB
3FMF ...#
3FNW ...REPLYQY
3FQ? ... GEOERR BRIEFPM,REPLYQY
3FRN ...#
3FT= #
3G#W XPRIV COMERR ERNOFPRIV
3GSG #
3H#6 MENDAREA 30,K99FREEZE
3HRQ #
3HYY ...XNOTBY
3J66 ...)
3J?B #END
^^^^ ...605223540001