WHATGENS867
(George Source)
Macros used: BCONTEXT, CLOSETOP, COMBRKIN, ELSE, ENDCOM, ERRORX, FI, FNORM, FREECORE, HUNT, IF, JANAL, JBC, JBS, MHUNT, MONOUT, NAMETOP, OPENDIR, OUTPARAM, REPALLER, SEG, SEGENTRY, STEP, TESTREP2, TESTRPN2, THEN, UP, UPPLUS
- WHATGENS867.txt
22FL SEG WHATGENS,867,SECT.FILE,,G262 22^= #LIS K0WHATGENS 23DW # FOR UGUG MEND M262 (WHATGENS COMMAND) 23YG SEGENTRY K1WHATGENS,START 24D6 SEGENTRY K2WHATGENS,SPENT 24XQ # 25CB # WHATGENS (WG) COMMAND - GIVEN AN ENTRANT DESCRIPTION AS %A, 25X2 # RETURNS HIGHEST AND LOWEST F.G.N. OF ANY ENTRANT MATCHING 26BL # THAT DESCRIPTION, IN FORMAT $3ZD",",3ZD$ . 26W= # 27*W # RESTRICTIONS - WORKTAPES AND WORKFILES NOT ALLOWED (COMMAND 27TG # IS POINTLESS IN THESE CASES, EXCEPT TO CHECK EXISTENCE), 28*6 # DIRECTORIES SIMILARLY (ALSO TECHNICALLY INCONVENIENT); 28SQ # MAGNETIC TAPE DESCRIPTIONS NOT ALLOWED IF A T.S.N., R.S.N. 29#B # OR R.P. IS INCLUDED, BUT HANDLED CORRECTLY OTHERWISE (THIS 29S2 # COULD BE RELAXED, BUT CODING EFFORT WOULD BE DISPROPORTIONATE 2=?L # TO USEFULNESS). SIMILARLY, A CHECK THAT ANY GIVEN QUALIFIERS 2=R= # WERE MATCHED WOULD BE A LOT OF EFFORT; TO AVOID MISLEADING 2?=W # USERS, ADJUNCTS ARE CHECKED FOR, AND ERROR "AN ILLEGAL 2?QG # QUALIFIER HAS BEEN GIVEN" OCCURS IF ANY QUALIFIERS AT ALL WERE 2#=6 # SUPPLIED. 2#PQ # ERROR : "FILE NAME PARAMETER NOT APPROPRIATE TO THIS COMMAND" 2*9B # IF ONE OF THE RESTRICTIONS IS VIOLATED, OTHERWISE STANDARD 2*P2 # ERROR MESSAGES RELEVANT TO ENTRANT DESCRIPTIONS. 2B8L # 2BN= TEN +10 2C7W XBCH +0.1 2CMG ZCOMM 4H , 2D76 # 2DLQ # ERROR MESSAGES 2F6B ZFNAPP +FNAPP [ NOT APPROPRIATE 2FL2 ZJPARMIS +JPARMIS [ PARAMETER MISSING 2G5L ZALQUAL +ALQUAL [ ILLEGAL QUALIFIER 2GK= ZAMISS +AMISS [ .... MISSING 2H4W ZUSNA +JUSNA [ USER NAME 2HJG ZGENERR +GENERR [ ERROR ... %C 2J46 # 2JHQ START 2K3B SPARAPASS 2KH2 NGNC 0 1 2L2L SPENT NGN 0 0 [ SIDE-ENTRY FROM SETPARAM 2LG= STO 0 AWORK4(2) 2L^W MHUNT 3,CPB,CUNI 2MFG NGX 6 ANUM(3) 2M^6 LDX 7 ZJPARMIS(1) 2NDQ BPZ 6 PERR [ NO PARAMETER OR 1ST PARAMETER NULL 2NYB LDX 7 ZAMISS(1) 2PD2 BCONTEXT USER,2,USER 2PXL LDCH 0 APARA(3) [ NO USER CONTEXT - 2QC= ERN 0 #12 [ FAIL IF NOT ABSOLUTE NAME 2QWW LDX 6 ZUSNA(1) 2RBG BNZ 0 PERR2 2RW6 USER NAMETOP 3,FILE,FNAME 2S*Q FNORM 1 2STB MHUNT 3,FILE,FNAME 2T*2 NAMETOP 3,CPB,CUNI 2TSL TESTREP2 NAMEFORM,XIT [ FNORM FAIL - ERROR MESSAGE IN FNORM 2W#= LDX 7 ZFNAPP(1) [ 'FILE NAME NOT APPROPRIATE' 2WRW HUNT 3,FILE,FABSNB 2X?G BNG 3 PERR [ FNORM GROSS ERROR 2XR6 LDN 0 #2600 2Y=Q ANDX 0 ATYPE(3) 2YQB BNZ 0 PERR [ *MT OR WORKFILE 2^=2 LDN 0 4 2^PL TXL 0 ALOGLEN(3) 329= BCC PERR [ USERNAME ONLY - NOT CATERED FOR 32NW LDX 7 ZGENERR(1) 338G LDX 6 ZALQUAL(1) [ ALL ACTUAL ADJUNCTS ARE ILLEGAL 33N6 TESTREP2 ADJUNCTS,PERR2 [ BUT ! FILES GIVE 'ADJUNCTS' REPLY 347Q LDX 7 ZFNAPP(1) 34MB TESTRPN2 OK,PERR [ ANY POSSIBLE NASTIES 3572 LDX 6 ATYPE(3) [ TO CHECK IF LANG PRESENT LATER 35LL LDN 0 2 366= ORS 0 ATYPE(3) [ TO ACCEPT FILE OR *MT IN OPENDIR 36KW ADX 3 A1(3) [ NOW = WORD AFTER LOCAL NAME DETAILS 375G LDN 5 0 37K6 LDX 4 A1-2(3) [ FGN GIVEN - FIDDLE TO CHECK 384Q BNZ 4 RIGF [ EXISTENCE BUT AVOID SEARCH 38JB ANDN 6 #100 3942 BZE 6 NLANG [ LEAVE X4 ZERO IF NO LANG GIVEN 39HL LDX 4 A1-1(3) [ LANGUAGE 3=3= NLANG LDX 5 A1-6(3) [ LOCAL NAME 3=GW RIGF LDX 6 A1-5(3) 3?2G LDX 7 A1-4(3) 3?G6 LDN 1 A1-6(3) 3?^Q SUM 0 3 [ INDEX KEY IN DIRECTORY 3#FB STO 0 AWORK3(2) 3#^2 OPENDIR XBRK,READ,QUERY 3*DL # NOW HAVE DIRECTORY OPEN, FIRST RELEVANT NAME RECORD IN A 3*Y= # FILE/ENT, AND DIRECTORY POSITIONED JUST AFTER IT. 3B84 ... TESTREP2 OK,OK 3BCW ... JANAL XIT 3BMN ... REPALLER 3BXG XIT IF +AWORK4(2),PZ 3CC6 THEN 3CWQ UP 3DBB ELSE 3DW2 ENDCOM 3F*L FI 3FT= OK MHUNT 1,FILE,ENT 3G#W LDX 3 EGEN(1) 3GSG STO 3 AWORK2(2) [ LOWEST FGN SO FAR 3H#6 JBC NMDF,1,BEMDF [ = HIGHEST UNLESS MDF 3HRQ BZE 5 NMDF [ MDF WAS SPECIFIED EXPLICITLY 3J?B LDEX 3 ESTREND(1) [ NO. OF ELTS = TOP FGN 3JR2 LDN 5 0 [ TO AVOID SCANNING 3K=L NMDF STO 3 AWORK1(2) [ HIGHEST FGN 3KQ= FREECORE 1 3L9W BZE 5 STOP [ FGN WAS GIVEN BY USER 3LPG # 3M96 SRCH [ LOOK FOR OTHER FILES MATCHING %A 3MNQ STEP 3N8B BZE 3 STOP [ END OF DIRECTORY 3NN2 LDX 0 FRH+1(3) 3P7L BNZ 0 SRCH [ NOT NAME RECORD 3PM= TXU 5 ELOC1N(3) 3Q6W TXU 6 ELOC2N(3) 3QLG TXU 7 ELOC3N(3) 3R66 BCS XNAME [ DIFFERENT NAME - CHECK IF SAME KEY 3RKQ JBS SRCH,3,BNERASE [ IGNORE IF TO-BE-ERASED 3S5B BZE 4 XLANG 3SK2 TXU 4 ELANN(3) [ CHECK LANG IF GIVEN 3T4L BCS SRCH 3TJ= XLANG LDX 0 EGENN(3) [ NEW LOWEST FGN 3W3W STO 0 AWORK2(2) 3WHG BRN SRCH [ SEE IF ANY MORE 3X36 # 3XGQ XNAME LDN 1 ELOC1N(3) 3Y2B SUM 0 3 3YG2 TXU 0 AWORK3(2) [ IF NAME HAS SAME KEY, 3Y^L BCC SRCH [ KEEP ON TRYING 3^F= # 3^YW STOP CLOSETOP [ FREE DIRECTORY A.S.A.P. 42DG IF +AWORK4(2),PZ 42Y6 THEN 43CQ LDX 5 AWORK1(2) 43XB LDX 6 AWORK2(2) 44C2 STO 5 ACOMMUNE1(2) 44WL STO 6 ACOMMUNE2(2) 45B= UPPLUS 2 45TW FI 46*G LDN 6 0 [ FIRST TIME 46T6 LDX 5 AWORK1(2) 47#Q NUM LDX 7 ACES [ EASY 4-CHAR NUMBER CONVERSION 47SB LDCT 3 #600 48#2 NDIG DVS 4 TEN(1) 48RL DCH 4 7(3) 49?= SBX 3 XBCH(1) 49QW BNZ 5 NDIG 4==G BVSR £ [ THE SBX MAY HAVE SET OVERFLOW 4=Q6 BNZ 6 PRINT 4?9Q LDX 6 7 4?PB LDX 5 AWORK2(2) 4#92 TXU 5 AWORK1(2) [ ONLY NEED TO CONVERT 2ND NUMBER 4#NL BCS NUM [ TO CHARS IF DIFFERENT 4*8= # 4*MW PRINT MHUNT 3,CPB,CUNI [ MUST BE >= 3 WORDS LONG 4B7G STO 6 A1(3) 4BM6 LDX 6 ZCOMM(1) 4C6Q SLC 67 18 4CLB STO 6 A1+1(3) 4D62 STO 7 A1+2(3) 4DKL LDN 4 9 4F5= OUTPARAM 4,A1,CPB,CUNI 4FJW MONOUT AWSNAME 4G4G ENDCOM 4GJ6 # 4H3Q XBRK IF +AWORK4(2),PZ 4HHB THEN 4J32 UPPLUS 1 4JGL ELSE 4K2= COMBRKIN 4KFW FI 4K^G # 4LF6 PERR NGN 6 1 4LYQ PERR2 ERRORX 7,6 4MDB IF +AWORK4(2),PZ 4MY2 THEN 4NCL UP 4NX= ELSE 4PBW ENDCOM 4PWG FI 4QB6 # 4QTQ #END 4R*B ... ^^^^ ...744345250003