(George Source)
Macros used: ABANDCOM, BS, BXU, CATMASK, CLOSE, CLOSEABANDON, CLOSETOP, COMBRKIN, COMERR, CREATEB, ENDCOM, ERROR, FINDFEXTRA, FINDWFN, FJOCA, FNORM, FSHCODE, JBC, LOGACCESS, MASK, MFREE, MHUNT, MONOUT, NAMETOP, OPENDIR, OUTMON, READ, REPALLER, REPERR, SEG, SEGENTRY, SETNCORE, SETREP2, SPARAPAS, STEP, TESTBRKIN, TESTRACE, TESTREP2, TESTRPN2, TRACE, TRANSBEG, TRANSFIN, UNIFREE, USEROPEN, VFREE
22FL ... SEG TRAPLIST,85,FILESTORE [P.R. CRUICKSHANK,FILE 22^= ... 23DW ...# THIS SEGMENT IMPLEMENTS THE TRAPLIST (TL) 23YG ...# COMMAND, OUTPUTING EITHER TO MONITORING 24D6 ...# FILE OR SPECIFIED FILE. ERRORS ARE REPORTED 24XQ ...# WHEN A USER ATTEMPTS TO ASCRTAIN THE ACCESS 25CB ...# OF ANOTHER USER IN ANOTHER USER'S FILE. 25X2 ...# USE OF AWORK WORDS : 26BL ...# AWORK1 ... NUMBER OF TRAP RECORDS 26W= ...# ONE FINTER BLOCK FOR EACH RECORD 27*W ... 27TG ... SEGENTRY K1TRAPLIST,XLISTRAP 28*6 ...PARA1 28SQ ... 8H,GROUP 29#B ... 29S2 ...PARA2 2=?L ... 8H,ALL 2=R= ... 2?=W ...PARA3 2?QG ... 8H,ERASE 2#=6 ... 8H,WRITE 2#PQ ... 8H,APPEND 2*9B ... 8H,READ 2*P2 ... 8H,EXECUTE 2B8L ... 2BN= ...MASK 2C7W ... CATMASK FILES,COMMENT [ USED TO CHECK TRACING LEVELS 2CMG ... 2D76 ...NUSERP 2DLQ ... 40HNO USER IS PERMITTED ACCESS TO THIS FILE 2F6B ... 2FL2 ...# 2G5L ...# SUBROUTINE TO CHECK FILE NAME PARAMETERS 2GK= ...# ENTRY X3->CPB/CUNI BLOCK, EXIT SAME, LINK X6 2H4W ...# FILE/FABSNB BLOCK CREATED 2HJG ...# 2J46 ... 2JHQ ...SCHECKPAR 2K3B ... SBX 6 FX1 [ SET LINK RELATIVE 2KH2 ... NAMETOP 3,FILE,FNAME [ RENAME FOR FNORM 2L2L ...# 2LG= ...# IF ADJUNCTS ARE PRESENT IN THE FILENAME, THEY ARE ANALYSED 2L^W ...# THE INFORMATION PUT INTO A FILE/ADJUNCTS BLOCK AND THE 2MFG ...# REPLY ADJUNCTS GIVEN. IN THE CASE OF A WORKFILE 2M^6 ...# SET UP A 10 WORD FILE/FABSNB CONTAINING THE 2NDQ ...# WORKFILE NAME. OTHERWISE, CONVERTS A FILE NAME FROM 2NYB ...# ITS EXTERNAL WRITTEN FORM TO A FILE ABSOLUTE NAME 2PD2 ...# 2PXL ... FNORM 3 [ ERRORS REPORTED 2QC= ... TESTREP2 NAMEFORM,SERROR [ J - IF ERROR IN PARAMETER 2QWW ... MHUNT 3,FILE,FNAME 2RBG ... NAMETOP 3,CPB,CUNI [ RENAME FOR ANY ERROR MESSAGES 2RW6 ... ADX 6 FX1 [ RESET LINK 2S*Q ... EXIT 6 0 [ END CHECKPARAM ROUTINE 2STB ...# 2T*2 ...# FREE REMAINING FILE.FINTER BLOCKS ROUTINE 2TSL ...# 2W#= ...SFREEFINT 2WRW ... SMO FX2 2X?G ... LDX 5 AWORK1 [ NUMBER OF TRAPS RECORDS 2XR6 ... BZE 5 SFEXIT [ J - IF NONE LEFT 2Y=Q ...SFREELP 2YQB ... MFREE FILE,FINTER [ FREE NEXT ONE 2^=2 ... BCT 5 SFREELP 2^PL ...SFEXIT 329= ... EXIT 6 0 [ END OF FREE FINTER ROUTINE 32NW ...# 338G ...# FREE CPB.CUNI BLOCK ROUTINE 33N6 ...# 347Q ...SFREEUNI 34MB ... UNIFREE 3572 ... EXIT 6 0 [ END OF FREE UNI ROUTINE 35LL ...# 366= ...# FREE FILE.FABSNB & FILE.ADJUNCTS BLOCK ROUTINE 36KW ...# 375G ...SFREEFAB 37K6 ... VFREE FILE,FABSNB 384Q ... VFREE FILE,ADJUNCTS [ MAY NOT BE THERE 38JB ... EXIT 6 0 [ END OF FREE FAB ROUTINE 3942 ... 39HL ...# 3=3= ...# OUTPUT TO FILE/MONITORING FILE ROUTINE 3=GW ...# X7 -VE MEANS O/P TO FILE . X6 = LINK 3?2G ...# X1=FX1, X2=FX2 3?G6 ...# 3?^Q ...SOUTPUTF 3#FB ... SBX 6 FX1 [ SET LINK RELATIVE 3#^2 ... BNG 7 STARTOP [ J - IF NOT M/F 3*DL ...# 3*Y= ...# CHECK TRACING LEVELS OF M/F 3BCW ...# 3BXG ... TESTRACE MASK(1),SNCCF [ NOT COMMENT NOR FILE CATAGORY 3CC6 ... BRN STARTOP 3CWQ ...SNCCF 3DBB ... MONOUT JMTRACE1 [ CURRENT TRACING LEVELS NOT OKAY 3DW2 ... ADX 6 FX1 3F*L ... EXIT 6 0 [ TRACE ERROR EXIT 3FT= ...# 3G#W ...# SET UP BUFFER FOR O/P LINES 18 WORDS LOG LEN 3GSG ...# DATA WORD 1 = ":" RED TAPE 0 = REC LENGTH, 1 = #41 3H#6 ...# 3HRQ ...STARTOP 3J?B ... SETNCORE 18,3,FILE,FWB [ X3 -> BLOCK 3JR2 ... LDN 0 #41 [ PFCC 3K=L ... STO 0 A1+1(3) [ STORED IN 2ND RED TAPE WORD 3KQ= ... LDCT 0 #120 [ ":" 3L9W ... STO 0 A1+2(3) [ STORED IN 1ST DATA WORD 3LPG ...# 3M96 ...# CHECK NO OF TRAPS RECORDS (X5) 3MNQ ...# 3N8B ... LDX 5 AWORK1(2) [ NUMBER OF TRAPS RECORDS 3NN2 ... TRACE 5,NU TRAPS 3P7L ... BZE 5 SNOTRAPS [ J - IF NOTRAPS 3PM= ...# 3Q6W ...# TRAPS RECORDS BLOCK LOOP. CONVERTS TRAPS RECORD IN FINTER 3QLG ...# BLOCK TO CHAR FORM IN FWB. FREES FINTER BLOCK AND OUTPUTS 3R66 ...# FWB TO FILE (MONITORING FILE) . X5 = COUNT,X6 = LINK,X7 =0 IF NOT 3RKQ ...# X0 = COUNT OF WORDS USED IN FWB 3S5B ...# 3SK2 ...STRBL 3T4L ... MHUNT 2,FILE,FINTER [ NEXT TRAPS RECORD BLOCK 3TJ= ... MHUNT 3,FILE,FWB [ REHUNT BUFFER BLOCK 3W3W ... LDX 4 A1+4(2) [ TRAP MODES OPEN 3WHG ...# 3X36 ...# MOVE ACROSS INTO FWB 3XGQ ...# 3Y2B ... ADN 2 A1+1 [ START OF USERNAME 3YG2 ... ADN 3 A1+2 [ WORD IN BUFFER CONTAINING ":" 3Y^L ... LDCT 0 #200 [ SPECIFY CHAR POSITION 1 3^F= ... ORX 3 0 [ READY FOR MVCH 3^YW ... MVCH 2 12 [ MOVE IN USERNAME 42DG ... MFREE FILE,FINTER [ FREE FINTER BLOCKS ( ONE BY ONE) 42Y6 ...# DECREMENT AWORK1 IN CASE OF BREAKINS 43CQ ... LDX 0 5 [ NUMBER OF REMAINING TRAPS RECORDS + 1 43XB ... SBN 0 1 44C2 ... SMO FX2 44WL ... STO 0 AWORK1 45B= ...# 45TW ...# DECODE TRAP RECORDS X3 -> CURRENT CHAR IN FWB 46*G ...# 46T6 ... LDN 0 6 [ X0 ACCUMULATES RECORD SIZE 47#Q ... BPZ 4 SNGRP [ J - IF NOT GROUP TRAP 47SB ... ADN 0 2 [ 2 WORDS FOR " GROUP " 48#2 ... LDN 2 PARA1(1) [ ADDREASS OF CHAR STRING 48RL ... MVCH 2 8 [ MOVE TO FWB 49?= ...SNGRP 49*F ... ANDN 4 #37 [ REMOVE ALLBUT TRAP BITS 49CN ...# 49FX ...# INCASE WE OBTAIN A TRAPS RECORD WHICH HAS NO TRAP BITS SET 49J6 ...# WE DEFAULT TO "ALL". 49L* ...# 49NJ ... BZE 4 SALLTRAPS [ SOMETHING WRONG WITH TRAPS RECORD 49QW ... LDN 2 #37 [ TEST FOR ALL 4==G ... BXU 2 4,SNALL [ J - IF NOT " ALL " 4=G# ...SALLTRAPS 4=Q6 ... ADN 0 2 [ 2 WORDS FOR " ALL " 4?9Q ... LDN 2 PARA2(1) [ ADDRESS OF CHAR STRING 4?PB ... MVCH 2 8 [ MOVE TO FWB 4#92 ... BRN STRAPSDONE [ J TO TRAP MODES DONE 4#NL ...# 4*8= ...# LOOP TO CHECK ALL TRAPS 4*MW ...# 4B7G ...SNALL 4BM6 ... SLL 4 18 [ ERASE TRAP AT B1 ETC... 4C6Q ... LDN 2 PARA3-2(1) [ ADDRESS OF TRAPS STRINGS 4CLB ...STRAPSL1 4D62 ... ADN 2 2 [ TRAP ABSENT CASE 4DKL ...STRAPSL 4F5= ... SLL 4 1 [ NEXT TRAP BIT 4FJW ... BPZ 4 STRAPSL1 [ J - IF B0 NOT SET 4G4G ... ADN 0 2 [ 2 WORDS FOR TRAP STRING 4GJ6 ... MVCH 2 8 [ MOVE ACROSS STRING 4H3Q ... ERX 4 GSIGN [ REMOVE BIT 4HHB ... BZE 4 STRAPSDONE 4J32 ... BRN STRAPSL 4JGL ...# 4K2= ...# NO TRAPS RECORDS , X3 -> FWB 4KFW ...# 4K^G ...SNOTRAPS 4LF6 ... LDN 2 NUSERP(1) [ MESSAGE ADDRESS 4LYQ ... ADN 3 A1+2 [ POINTS TO 1ST DATA WORD IN FWB 4MDB ... MOVE 2 10 [ 10 WORDS OF MESSAGE 4MY2 ... LDN 0 12 [ 12 WORDS OF DATA 4NCL ... LDN 5 1 [ FOR BCT TO TERMINATE LOOP 4NX= ... BRN SNTDONE [ NO TRAPS DONE [ J - IF NO MO 4PBW ... 4PWG ...# 4QB6 ...# TRAPS DONE, FWB ALMOST READY ( SPACE FILL LAST CHARACTER 4QTQ ...# 4R*B ...STRAPSDONE 4RT2 ... LDN 2 ACES [ SPACE FILLING CHARACTERS 4S#L ... MVCH 2 3 [ MOVE ACROSS SPACE FILLING CHAR 4SS= ...# 4T?W ...# X3 SHOULD NOW POINT TO 1ST CHAR OF 1ST UNUSED WD OF FWB 4TRG ...# EXCEPT IN THE NO TRAPS CASE 4W?6 ...# 4WQQ ...SNTDONE 4X=B ... BNG 7 SFILE [ J - IF NOT MONITORING FILE 4XQ2 ... SLL 0 2 [ NO CHARS IN MESSAGE 4Y9L ... SBN 0 8 [ OMIT A1 & PFCC WORDS 4YP= ... OUTMON 0,A1+2,MASK(1),FILE,FWB 4Y^4 ... TESTBRKIN XBREAKIN2 [ TEST IF USER HAS BROKEN IN 4^8W ... BRN SBCTEST [ J TO BCT TEST ON X5 4^NG ...SFILE 5286 ... LDX 2 0 [ FOR RECORD HEADER 52MQ ... MHUNT 3,FILE,FWB [ REHUNT FWB 537B ... STO 2 A1(3) [ RECORD HEADER 53M2 ... STEP ,0(2),XBREAKIN [ X3 -> PLACE IN FUWB 546L ... TESTREP2 FILEFULL,XFILEFULL [ FILE FULL CASE 54L= ...# 555W ...# NOW WE MOVE ACROSS THE RECORD 55KG ...# 5656 ... MHUNT 2,FILE,FWB [ X2 -> FWB 56JQ ... ADN 2 A1 [ MOVING RECORD FROM 574B ... SMO 0(2) [ NUMBER OF WORDS TO MOVE 57J2 ... MOVE 2 0 583L ...SBCTEST 58H= ... BCT 5 STRBL [ X5 +VE MORE TRAPS RECORDS 59GG ... MFREE FILE,FWB 5=26 ... ADX 6 FX1 [ RESTORE LINK 5=FQ ... EXIT 6 0 [ END OF SOUTPUTF ROUTINE 5=^B ...# 5?F2 ... 5?YL ... 5#D= ... 5#XW ...# 5*CG ...# **************************************** 5*X6 ...# 5BBQ ...# ENTRY POINT TO ANALYSE PARAMETERS 5BWB ...# 5C3J ...# **************************************** 5C8Q ...# 5CB2 ...XLISTRAP 5CF6 ... FSHCODE B,SKIPINA1 5CJ= ...( 5CMB ... TRANSBEG FSHTRAPID,TRAPLIST,1,CLB,,ACOMMUNE1 5CQG ... BRN TOMONOUT [ RETURN TO DO MONOUT 5CTL ... BRN TOENDCOM [ OR TO ENDCOM 5CYQ ... BRN TOCOMBRK [ OR FOR COMBRKIN 5D3W ... BRN TOABAND [ OR TO ABANDCOM 5D72 ...SKIPINA1 5D=6 ...) 5D*= ... STOZ AWORK1(2) [ FOR NUMBER OF TRAP RECORDS 5DSW ... SPARAPASS [ PASS ENTRANT PARAMATER 5F#G ... MHUNT 3,CPB,CUNI 5FS6 ...# 5G?Q ...# IF NULL ANUM = 0, IF NON EXISTANT ANUM = -1 5GRB ...# 5H?2 ... NGX 0 ANUM(3) 5HQL ... BNG 0 YESENTRY [ J - IF THERE IS A PARAM 5J== ... COMERR JPARMIS,JFENTRANT [ FILENAME PARAM MISSING 5JPW ...YESENTRY 5K9G ... CALL 6 SCHECKPAR [ CHECK FILENAME 5KP6 ... MHUNT 3,FILE,FABSNB 5L8Q ...# 5LNB ...# TEST TO SEE IF TRAPLISTING A WORKFILE. 5M82 ...# 5MML ... BS 3,BFABANY [ ANY ENTRANT ACCEPTABLE 5N7= ... JBC NOTWF,3,BFABWORK [ J - NOT WORKFILE 5NLW ...# 5P6G ...# IN THE WORKFILE CASE, WE HAVE TO SET UP OUR OWN FILE.FINTER 5PL6 ...# (5 WDS) BLOCK AND PUT THE JOB'S USERNAME AND THE WORKFILE'S 5Q5Q ...# TRAPWORD IN THE FEXTRA BLOCK. ALSO WE SET AWORK1 TO 1. 5QKB ...# 5SHW ... FINDWFN ,2 [ X2-> FCB OF WORKFILE 5T3G ... FINDFEXTRA 2,2 [ X2 -> FEXTRA OF WORKFILE CONTAINS TRAPS 5TH6 ... LDX 5 FWORKTRAP(2) 5TN# ... BZE 5 XCLEARUP1 [ IF TRAPWORD IS ZERO 5TTG ... SETNCORE 5,3,FILE,FINTER [ X3 -> FILE FINTER TO STORE TRAPS 5W2Q ... STO 5 A1+4(3) [ STORE TRAPS IN FINTER BLOCK 5WGB ... FJOCA 2,FX2 [ X2 -> JOB BLOCK 5X22 ... LDN 2 JUSER(2) [ X2-> JOB'S USERNAME 5XFL ... ADN 3 A1+1 [ X3 -> START OF U.N IN FINTER BLOCK 5X^= ... MOVE 2 3 [ MOVE ACROSS U.N INTO FINTER 5Y57 ... LDN 0 1 5Y94 ... SMO FX2 5Y#^ ... STO 0 AWORK1 [ 1 TRAPS RECORD 5YDW ... BRN XCLEARUP1 5YYG ...NOTWF 5^D6 ...# 5^XQ ...# OPEN DIRECTORY IN MODE READ (QUERY) 62CB ...# 62X2 ... OPENDIR XBREAKIN1,READ,QUERY 63BL ...# 63W= ...# IF NAME RECORD IS FOUND, BLOCK FILE/ENT SET UP 64*W ...# CONTAINING IT 64TG ...# 65*6 ... TESTRPN2 OK,REPERROR [ J - IF NOT OPEN OKAY 65SQ ... OWNERCHECK [ CHECK IF OWNER X2 -> FX2 66#B ... TESTREP2 OK,OKOWNED [ J - IF OWNED 66S2 ... SETREP2 NOTOWN 67?L ... BRN REPERROR 67R= ...OKOWNED 67WB ...#UNS ILOGACC 67^G ...( 684L ... LOGACCESS 10 687Q ...) 68=W ... MHUNT 3,FILE,ENT [ HUNT NAME RECORD 68QG ... LDX 7 ENUSE(3) [ STORE NUMBER OF TRAPS RECORDS 69=6 ... STO 7 AWORK1(2) [ IN AWORK1 69PQ ... BZE 7 XCLEARUP [ J - IF NO TRAPS RECORDS 6=9B ... JBC NOINDX,3,BEINDEX [ J - IF NO INDEX RECORD 6=P2 ... STEP [ STEP OVER INDEX RECORD 6?8L ...NOINDX 6?N= ... READ [ GET NEXT TRAPS RECORD 6#7W ... MHUNT 3,FILE,FRB [ HUNT TRAPS RECORD BUFFER 6#MG ... NAMETOP 3,FILE,FINTER [ RENAME - SO IT REMAINS THERE 6*76 ... BCT 7 NOINDX 6*LQ ...# 6B6B ...# CLEAR UP BLOCKS AND CLOSE DIRECTORY 6BL2 ...# 6C5L ...XCLEARUP 6CK= ... CLOSETOP 6D4W ... MFREE FILE,ENT 6DJG ...XCLEARUP1 6F46 ... CALL 6 SFREEUNI 6FHQ ... CALL 6 SFREEFAB 6G3B ...# 6GH2 ...# NOW CHECK SECOND PARAMETER (FILENAME) 6H2L ...# 6HG= ... SPARAPAS [ NEXT PARAMETER 6H^W ... MHUNT 3,CPB,CUNI 6JFG ...# 6J^6 ...# IF NULL OR NON EXISTANT SEND TO MONITORING 6KDQ ...# FILE ELSE SEND TO SPECIFIED FILE AFTER CHECKING 6KYB ...# 6LD2 ... NGX 7 ANUM(3) [ ANUM -VE IF NON EXISTANT ,0 IF NULL 6LXL ... BNG 7 YESFILE [ J - IF FILENAME PRESENT 6MC= ...# 6MWW ...# X7 IS USED AS A FLAG (-VE IF FILE) ELSE MONITORING FILE 6NBG ...# 6NDP ... FSHCODE A,SKIPINB1 6NGY ...( 6NK7 ... TRANSFIN ,,ALIEN 6NMB ...SKIPINB1 6NPK ...) 6NRS ...TOMONOUT 6NW6 ... CALL 6 SOUTPUTF [ M/F OUTPUT 6P*Q ... BRN SFINISHED 6PTB ...# 6Q*2 ...# PARAM 2 NOT NULL, CHECK FILENAME AS BEFORE 6QSL ...# X3-> CPB/CUNI BLOCK 6R#= ...# 6RRW ...YESFILE 6S?G ... CALL 6 SCHECKPAR [ CHECK FILENAME 6SR6 ... CREATEB 2 [ CREATES FILE/CREATES (X2->) 6T=Q ... LDCT 0 #400 6TQB ... ORN 0 #12 6W=2 ... STO 0 CETM(2) [ INDICATES GRAPHIC MODE FILE 6WPL ... BS 2,CESERIAL [ MAINLY FOR WORKFILES 6X9= ...# 6XNW ...# OPEN FILE 6Y8G ...# 6YN6 ... USEROPEN XBREAKIN1,APPEND,CREATE,EMPTY 6^7Q ... REPERR OPENOK 6^MB ... BRN SFINISHED 7272 ...# 72LL ...# OUTPUT FILE READY FOR APPENDING 736= ...# 73KW ...OPENOK 745G ... CALL 6 SOUTPUTF [ FILE OUTPUT 74K6 ...# 754Q ...# CLOSE FILE 75JB ...# 7642 ... CLOSE 76HL ... BRN SFINISHED 76JN ...# 76KQ ...# BREAKIN WITH FILE OPEN DURING A STEP. 76LS ...# 76MW ...XBREAKIN 76NY ... TRACE 5,TL BRKIN 76Q2 ... CLOSE [ THE OUTPUT FILE 76R4 ...# 76S6 ...# BREAKIN DURING OUTPUT TO MONITORING FILE 76T8 ...# 76W= ...XBREAKIN2 76X# ... MFREE FILE, FWB 76YB ... CALL 6 SFREEFINT 76^D ... CALL 6 SFREEUNI 772G ... CALL 6 SFREEFAB 772L ... FSHCODE A,SKIPINB4 772Q ...( 772W ... LDN 7 3 7732 ... TRANSFIN 7,,ALIEN 7736 ...SKIPINB4 773= ...) 773B ...TOABAND 773J ... ABANDCOM [ NON-RESTARTABLE 774L ...# 775N ...# BREAKIN DURING USEROPEN, CLEAR UP BLOCKS 776Q ...# 777S ...XBREAKIN1 778W ... CALL 6 SFREEFINT 779Y ... CALL 6 SFREEUNI 77?2 ... CALL 6 SFREEFAB 77?6 ... FSHCODE A,SKIPINB3 77?= ...( 77?B ... LDN 7 2 77?G ... TRANSFIN 7,,ALIEN 77?L ...SKIPINB3 77?Q ...) 77?W ...TOCOMBRK 77#4 ... COMBRKIN [ RESTARTABLE 77*6 ... 77B8 ...# 77C= ...# OUTPUT FILE FULL 77D# ...# 77FB ...XFILEFULL 77GW ... TRACE 2,TL FILEF 782G ... MFREE FILE,FWB [ IN THE CASE OF FILE FULL 7849 ... CLOSEABANDON 785Y ... CALL 6 SFREEFINT 787M ... CALL 6 SFREEFAB 789B ... COMERR ERTOOBIG 78?5 ... 78#S ...# 78BH ...# CLEAR UP BLOCKS AND FINISH 78D= ...# 78G6 ... 78^Q ...REPERROR 79FB ... REPALLER 79^2 ...SERROR 7=DL ... TRACE 2,TL ERROR 7=Y= ...SFINISHED 7?CW ... CALL 6 SFREEFINT 7?XG ... CALL 6 SFREEUNI 7#C6 ... CALL 6 SFREEFAB 7#F4 ... FSHCODE A,SKIPINB2 7#H2 ...( 7#JY ... LDN 7 1 7#LW ... TRANSFIN 7,,ALIEN 7#NS ...SKIPINB2 7#QQ ...) 7#SN ...TOENDCOM 7#WQ ... ENDCOM 7*BB ...# 7*W2 ...#END 7B*L ...# ^^^^ ...112721230001