{{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