(George Source)
Macros used: ACROSS, CLOSETOP, COMBRKIN, FJOCA, FSHCODE, FSHSKIP, GETJOB, HUNT, HUNT2, HUNTACTF, HUNTW, JBC, MENDAREA, OPENSYS, SEGENTRY, STEPAGAIN, TRACE
22FL #OPT K0IFXCODES=0 22^= #LIS K0IFXCODES>K0ALLGEO>K0GREATGEO>K0COMMAND 23DW #SEG IFXCODES701 [R TERRY 23YG ... 8HIFXCODES 24D6 # THIS SEGMENT IS ENTERED FROM IFEXPAN TO DEAL WITH THOSE SIMPLE IF 24XQ # CONDITIONS WHICH INVOLVE COMPARISON OF CHARACTER STRINGS 25CB # ON ENTRY:XCHPTR CONTAINS CHAR PTR RELATIVE TO START OF LINE BUFFER 25X2 # XCHARS CONTAINS COUNT OF CHARS REMAINING 26BL # ON EXIT :XCHPTR & XCHARS MAY HAVE BEEN UPDATED 26W= # X7 CONTAINS RESULT- 0-TRUE,1-FALSE,B0=1-ERROR,B1=1-ERROR 27*W # ENTRY POINTS 27TG SEGENTRY K1IFXCODES,XHALTED [IF HALTED ETC 28*6 SEGENTRY K2IFXCODES,XDELETED 28SQ SEGENTRY K3IFXCODES,XDISPLAYED 29#B SEGENTRY K4IFXCODES,XFAILED 29S2 SEGENTRY K5IFXCODES,XMONITOR 2=?L SEGENTRY K7IFXCODES,XSTRING 2=R= SEGENTRY K12IFXCODES,XABSENT 2?=W SEGENTRY K13IFXCODES,XPRESENT 2?QG SEGENTRY K14IFXCODES,XREPLY 2?T5 ...#SKI JWPHASE3 2?XN ...( 2#2? ... SEGENTRY K15IFXCODES,XRES 2#4W ... SEGENTRY K16IFXCODES,XGEN 2#7F ...) 2#8* ...#UNS FPARTRES 2#99 ... SEGENTRY K17IFXCODES,XPAR 2#9# ... FSHSKIP 2#9C ...( 2#9G ...#UNS FSHIFMAC 2#9K ... SEGENTRY K18IFXCODES,XMACRV 2#9N ...) 2#9R ... FSHCODE AORB 2#9W ... SEGENTRY K18IFXCODES,XMAC 2#=6 # WORKING SPACE USED IN ACT BLOCK. 2#PQ #DEF XSTATE=EXT+3 2*9B #DEF XLBP=EXT 2*P2 #DEF XCHARS=EXT+1 2B8L #DEF XCHPTR=EXT+2 2BN= # POSITIONS IN APED BLOCKS-RELATIVE TO APEDSP1/2 2C7W #DEF VMCOND=1 [CATEGORY OF EVENT 2CMG #DEF VCOUNT=2 [NO OF CHARS IN MESSAGE 2D76 #DEF VMESS=3 [START OF MESSAGE 2DLQ # WORKING SPACE 2F6B #DEF XSTPTR=ACOMMUNE1 2FL2 #DEF XSTCHS=ACOMMUNE2 2G5L #DEF XSTSP=ACOMMUNE3 2GK= #DEF XCONDITION=ACOMMUNE4 2H4W #DEF XCURRENT=ACOMMUNE5 2HJG # THIS SECTION SETS THE RESULT OF A CONDITION IN X7 & RETURNS TO IFE 2J46 XTRUE LDN 7 0 2JHQ XRET ACROSS IFEXPAN,3 2K3B XFALSE 2KH2 LDN 7 1 2L2L BRN XRET 2LG= XERROR 2L^W LDCT 7 #400 2MFG BRN XRET 2M^6 XERROR1 [REPORTED ERROR 2NDQ LDCT 7 #600 2NYB BRN XRET 2PD2 XBREAK 2PXL LDCT 7 #700 2QC= BRN XRET 2QWW # THIS SECTION DEALS WITH THE SIMPLE CONDITIONS DELETED,HALTED,FAILE 2RBG # & MONITOR WHICH ARE VERY SIMILAR. 2RW6 # IF A CHARACTER STRING IS INCLUDED IN THE CONDITION THE NEXT CHAR S 2S*Q # BE (,'," & IN THIS CASE WE READ THE CHAR STRING UPDATING THE PTR & 2STB # COUNT IN XCHPTR,XCHARS & OBTAINING A PTR TO & COUNT OF THE NO.OF C 2T*2 # GIVEN IN THE CHAR STRING. 2TSL # A SEARCH IS MADE FOR AN APED,ADELETE OR APED,ANEVENT BLOCK WHICH W 2W#= # CONTAIN THE CATEGORY & MESSAGE ASSOC WITH THE MOST RECENT PROGRAM 2WRW # EVENT.THESE ARE COMPARED WITH THE CATEGORY AND CHAR STRING OF THE 2X?G # CONDITION.THE CONDITION IS ONLY SATISFIED IF THEY MATCH. 2XR6 # DEAL WITH'FAILED' 2Y=Q XFAILED 2YQB LDN 0 APEDFAIL 2^=2 BRN XHALTED1 2^PL # DEAL WITH'MONITOR' 329= XMONITOR 32NW LDN 0 APEDMON 338G BRN XHALTED1 33N6 # DEAL WITH 'DELETED 347Q XDELETED 34MB LDN 0 APEDDEL 3572 BRN XHALTED1 35LL # DEAL WITH 'HALTED' 366= XHALTED 36KW LDN 0 APEDHALT 375G XHALTED1 37K6 #SKIP K6IFEXPAN>99-99 384Q TRACE 0,IFHALDEL 38JB STO 0 XCONDITION(2) 3942 CALL 7 XFLB [FIND LB & SET CHAR PTR 39HL CALL 7 XFSTR [FIND STRING 3=3= STOZ XSTCHS(2) [SET 'NULL' STRING 3=GW CALL 7 XFAPED [FIND TERMINAL APED BLOCK 3?2G BRN XFALSE [IF NONE-FALSE 3?G6 LDX 0 VMCOND(1) [COMPARE SUB-CONDS 3?^Q SBX 0 XCONDITION(2) 3#FB BNZ 0 XFALSE 3#^2 LDX 5 XSTCHS(2) [SET UP PTRS & COUNTS FOR STRINGS 3*DL LDX 3 XSTPTR(2) 3*Y= LDX 4 VCOUNT(1) 3BCW ADN 1 VMESS 3BXG CALL 7 XCOMPARE 3CC6 ANDN 0 1 3CWQ BZE 0 XFALSE 3DBB BRN XTRUE 3DW2 # DEAL WITH'DISPLAY' 3F*L # THE CHAR STRING FOLLOWING"DISPLAY"IS COMPARED WITH THE DISPLAY MES 3FT= # STORED AN "APEDDISM"IN AN APED,ADISPLAY BLOCK 3G#W XDISPLAYED 3GSG #SKIP K6IFEXPAN>99-99 3H#6 TRACE 3,IFDISPLY 3HRQ CALL 7 XFLB [FIND LINE BUFFER & SET CHAR PTR 3J?B CALL 7 XFSTR [FIND STRING 3JR2 STOZ XSTCHS(2) 3K=L HUNT 1,APED,ADISPLAY 3KQ= BNG 1 XFALSE 3L9W LDX 5 XSTCHS(2) 3LPG LDX 3 XSTPTR(2) 3M96 LDX 4 APEDDISM(1) 3MNQ ADN 1 APEDDISM+1 3N8B CALL 7 XCOMPARE [COMPARE STRINGS-TRUE IF MATCH 3NN2 ANDN 0 1 [TO END OF GIVEN STRING 3P7L BZE 0 XFALSE 3PM= BRN XTRUE 3Q6W # DEAL WITH'REPLY' 3QLG # THE CHAR STRING FOLLOWING"REPLY" IS COMPARED WITH THE CURRENT 3R66 # REPLY WHICH IS HELD IN AN ADATA,BREPLY BLOCK CHAINED AFTER THE 3RKQ # CPAT . THIS BLOCK HAS THE SAME FORMAT AS GMON,AOUT : 3S5B # A1 - WORDS IN RECORD (SO CHARS=[A1]-2X4) & REPLY STARTS AT A1+2 3SK2 XREPLY 3T4L CALL 7 XFLB [FIND LINE BUFFER 3TJ= CALL 7 XFSTR [FIND CHAR STRING FOLLOWING REPLY 3W3W STOZ XSTCHS(2) [IF NONE TREAT AS NULL STRING 3WHG HUNTW 1,ADATA,BREPLY [LOOK FOR REPLY BLOCK 3X36 BNG 1 XFALSE [IF NONE CONDITION FALSE 3XGQ LDX 4 A1(1) [CALC NO OF CHARS IN REPLY 3Y2B SBN 4 2 3YG2 SLL 4 2 3Y^L ADN 1 A1+2 [SET PTR TO START OF REPLY 3^F= LDX 5 XSTCHS(2) [NO OF CHARS IN STRING AFTER REPLY 3^YW LDX 3 XSTPTR(2) [START OF STRING AFTER REPLY 42DG CALL 7 XCOMPARE [COMPARE STRINGS-CONDITION IS TRUE 42Y6 ANDN 0 1 [IF THEY MATCH TO THE END OF THE 43CQ BZE 0 XFALSE [SPECIFIED (IE X3,5)STRING 43XB BRN XTRUE 44C2 # THIS SUBR FINDS THE LINE BUFFER AND SETS X3 AS THE CHAR PTR 44WL XFLB HUNTACTF CLB,1,FX2 45B= STO 1 XLBP(2) 45TW ADX 3 1 46*G LDX 1 FX1 46T6 #SKIP K6IFEXPAN>999-999 47#Q TRACE 3,IFXFLB 47SB EXIT 7 0 48#2 # TABLE OF POSSIBLE DELIMITERS OF A CHARACTER STING.THREE WORDS FOR 48RL # 1)START CHARACTER 2)FINISH CHAR 3)SPACE CHAR(IGNORED DURING COMPAR 49?= #DEF VDELIMS=5 49QW QDELIMS #30 4==G #31 4=Q6 QSP #20 4?9Q #37 4?PB #37 4#92 #20 4#NL #17 4*8= #17 4*MW #20 4B7G #27 4BM6 #27 4C6Q #100 4CLB #22 4D62 #22 4DKL #100 4F5= # THIS SUBR EXPECTS TO FIND A CHARACTER STRING ENCLOSED IN ONE OF TH 4FJW # DELIMITER SETS.IF THERE IS NO CHAR STRING(I.E.START CHAR NOT THERE 4G4G # IT EXITS+0.OTHERWISE IT EXITS+1 WITH WITH A PTR TO THE STRING PROP 4GJ6 # & THE NO.OF CHARS IT CONTAINS&ITS SPACE CHAR (LEFT IN XSTPTR,XSTCH 4H3Q # X3,4 ARE USED AS CHAR PTR & COUNT & LEFT UPDATED.CHAR PTR & COUNT 4HHB # XCHPTR,XCHARS ARE UPDATED TOO.X1=FX1,X2=FX2,X7=LINK,X0,5,6 USED 4J32 ZF1 BCHX 3 £ 4JGL XFSTR BCT 4 ZF2 [ERROR IF NO MORE CHARS 4K2= BRN XERROR 4KFW ZF2 LDCH 0 0(3) [FIND FIRST NON-SPACE 4K^G TXU 0 QSP(1) 4LF6 BCC ZF1 4LYQ LDN 2 QDELIMS-3(1) [LOOK UP CHAR IN DELIMETER TABLE 4MDB LDN 5 VDELIMS 4MY2 ZF3 ADN 2 3 4NCL TXU 0 0(2) 4NX= BCC ZF4 4PBW BCT 5 ZF3 4PWG LDX 2 FX2 4QB6 EXIT 7 0 [EXIT IF NO DELIMETER 4QTQ ZF4 BCHX 3 £ 4R*B #SKIP K6IFEXPAN>999-999 4RT2 TRACE 0(2),IFXFSTR1 4S#L SMO FX2 4SS= STO 3 XSTPTR [STORE PTR TO STRING 4T?W LDX 5 4 [STORE CHAR COUNT 4TRG LDN 6 0 [INIT DEPTH COUNT 4W?6 ZF6A ADN 6 1 4WQQ ZF6 BCT 4 ZF5 4X=B BRN XERROR [ERROR IF NO MORE CHARS 4XQ2 ZF5 LDCH 0 0(3) 4Y9L BCHX 3 £ 4YP= TXU 0 1(2) [JUMP IF TERMINATOR 4^8W BCC ZF7 4^NG TXU 0 0(2) [JUMP UNLESS START CHAR 5286 BCS ZF6 52MQ BRN ZF6A [JUMP TO INCREASE DEPTH COUNT 537B ZF7 BCT 6 ZF6 [REDUCE DEPTH COUNT 53M2 SBX 5 4 [STORE NO OF CHARS IN STRING 546L SBN 5 1 54L= SMO FX2 555W STO 5 XSTCHS 55KG #SKIP K6IFEXPAN>999-999 5656 TRACE 5,IFXFSTR2 56JQ LDX 5 2(2) [STORE SPACE CHAR 574B LDX 2 FX2 57J2 STO 5 XSTSP(2) [UPDATE CHAR PTR & COUNT IN 583L LDX 0 3 [THE ACTIVITY BLOCK 58H= SBX 0 XLBP(2) 592W STO 0 XCHPTR(2) 59GG STO 4 XCHARS(2) 5=26 EXIT 7 1 5=FQ # THIS SUBR COMPARES THE CHAR STRINGS WITH PTRS IN X1,X3 & COUNTS IN X4, 5=^B # USING THE SPACE CHAR IN XSTSP.ON EXIT X0 IS SET AS FOLLOWS: 5?F2 # 0-NO MATCH,3-EXACT MATCH,1-MATCH TO END OF X3,5 STRING,2-MATCH TO END 5?YL # OF X1,4 STRING 5#D= XCOMPARE 5#XW ADN 4 1 [ADJUST COUNTS 5*CG ADN 5 1 5*X6 ZG1 BCT 5 ZG2 [EXIT IF END OF X3 STRING 5BBQ ZG7 BCT 4 ZG6 [EXIT IF EXACT MATCH 5BWB LDN 0 3 5CB2 EXIT 7 0 5CTL ZG6 LDCH 0 0(1) [SEARCH FOR 'NON-SPACE' 5D*= BCHX 1 £ 5DSW TXU 0 XSTSP(2) 5F#G BCC ZG7 5FS6 LDN 0 1 [EXIT IF MATCH TO END OF X3,5 STRING 5G?Q EXIT 7 0 5GRB ZG2 LDCH 0 0(3) [FIND NON 'SPACE'CHAR 5H?2 BCHX 3 £ 5HQL TXU 0 XSTSP(2) 5J== BCC ZG1 5JPW ZG4 BCT 4 ZG5 5K9G LDN 0 2 [EXIT IF MATCH TO END OF X1,4 STRING 5KP6 EXIT 7 0 5L8Q ZG5 LDCH 6 0(1) [FIND NON 'SPACE' CHAR 5LNB BCHX 1 £ 5M82 TXU 6 XSTSP(2) 5MML BCC ZG4 5N7= SBX 0 6 [COMPARE CHARS 5NLW BZE 0 ZG1 [EXIT IF NO MATCH 5P6G LDN 0 0 5PL6 EXIT 7 0 5Q5Q # THIS SUBR SEARCHES FOR AN APED BLOCK & SETS A PTR TO THE EVENT INF 5QKB # IN AN APED,ANEVENT THIS IS AT APEDSP1,& IN AN APED,ADELETE AT APES 5R52 XFAPED 5RJL HUNT 1,APED,ANEVENT 5S4= BPZ 1 ZH2A 5SHW HUNT 1,APED,ADELETE 5T3G BPZ 1 ZH2 5TH6 EXIT 7 0 5W2Q ZH2 ADN 1 APEDSP2 5WGB BRN ZH2B 5X22 ZH2A ADN 1 APEDSP1 5XFL ZH2B 5X^= #SKI K6IFEXPAN>999-999 5YDW TRACE ATYPE(1),IFXFAPED 5YYG EXIT 7 1 5^D6 # THIS SUBR READS THE NEXT SIGN CHAR INTO X0.USES X7 AS LINK & X38X4 5^XQ # AS POINTER AND LINK 62CB XNONSP 62X2 BCT 4 ZSP1 63BL BRN XERROR 63W= ZSP1 LDCH 0 0(3) 64*W BCHX 3 £ 64TG TXU 0 QSP(1) 65*6 BCC XNONSP 65SQ #SKIP K6IFEXPAN>999-999 66#B TRACE 0,IFNONSP 66S2 EXIT 7 0 67?L # THIS SECTION DEALS WITH THE IF STRING CONDITION 67R= # THE'STRING'SHOULD BE FOLLOWED BY TWO CHAR STRINGS ENCLOSED IN SUIT 68=W # DELIMETERS.& SEPERATED BY = OR < OR > .THE SPACE CHAR ASSOC WITH 68QG # DELIMETER SETS SHOULD BE THE SAME THE STRINGS ARE THEN COMPARED : 69=6 # IF SEPERATOR IS = THE CONDITION IS SATISFIED ONLY IF THEY MATCH EX 69PQ # IF IT IS < THE MATCH SHOULD BE TO THE END OF THE FIRST STRING & IF 6=9B # TO THE END OF THE SECOND. 6=P2 XSTRING 6?8L CALL 7 XFLB [FIND LINE BUFFER 6?N= CALL 7 XFSTR [FIND STRING 6#7W BRN XERROR [IF NONE-ERROR 6#MG LDN 7 XSTPTR(2) [MOVE PTR TO STRING ETC 6*76 LDN 0 XSTPTR1(2) 6*LQ MOVE 7 3 6B6B CALL 7 XNONSP [CHECK FOR = 6BL2 LDN 7 3 6C5L TXU 0 QEQ(1) [IF'=':EXACT COMP 6CK= BCC ZSTR1 6D4W LDN 7 1 6DJG TXU 0 QLT(1) [IF'<':UP TO END OF FIRST STRING 6F46 BCC ZSTR1 6FHQ TXU 0 QGT(1) [IF'>':UP TO END OF SECOND STRING 6G3B BCS XERROR [ELSE ERROR 6GH2 LDN 7 2 6H2L ZSTR1 STO 7 XSEP(2) 6HG= CALL 7 XFSTR [SECOND STRING 6H^W BRN XERROR 6JFG LDX 0 XSTSP(2) 6J^6 TXU 0 XSTSP1(2) 6KDQ BCS XERROR 6KYB LDX 5 XSTCHS1(2) 6LD2 LDX 3 XSTPTR1(2) 6LXL LDX 4 XSTCHS(2) 6MC= LDX 1 XSTPTR(2) 6MWW CALL 7 XCOMPARE 6NBG ANDX 0 XSEP(2) [COMPARE RESULT OF COMPARISON 6NW6 TXU 0 XSEP(2) [WITH RESULT REQD BY SEPERATOR 6P*Q BCS XFALSE [I.E. > OR < OR = 6PTB BRN XTRUE 6Q*2 #DEF XSEP=ACOMMUNE6 6QSL #DEF XSTPTR1=ACOMMUNE7 6R#= #DEF XSTCHS1=ACOMMUNE8 6RRW #DEF XSTSP1=ACOMMUNE9 6S?G #DEF XPTRPAR=XSTCHS1 6SR6 QLT #14 [< 6T=Q QGT #16 [> 6TQB QEQ #15 [= 6W=2 # THIS SECTION DEALS WITH THE PRESENT & ABSENT(=NOT PRESENT) CONDITI 6WPL # THE CHAR STRING GIVEN IS COMPARED IN TURN WITH EACH ENTRY IN THE 6X9= # PARAMETER BLOCK ASSOCIATED WITH THE COM PROC LEVEL ABOVE THE CURRE 6XNW # IF NO SUCH BLOCK EXISTS(MOP?)THE CONDITION IS FALSE 6Y8G # ASSUMED FORMAT:-FIRST PARAM STARTS AT APARAFIR.PARAM STORED AS NO 6YN6 # IN BOTTOM 12BITS(MAY BE ZERO)FOLLOWED BY CHARS OF 6^7Q # A'MINUS ONE'TERMINATES THE LIST OF PARAMETERS. 6^MB XPRESENT 7272 LDN 7 1 [PRESENT = NOT ABSENT 72LL ERS 7 XSTATE(2) 736= XABSENT 73KW #SKIP K6IFEXPAN>99-99 745G TRACE 3,IFABSPRE 74K6 CALL 7 XFLB [FIND LINE BUFFER 754Q CALL 7 XFSTR [FIND STRING-ERROR IF NONE 75JB BRN XERROR 7642 HUNT 3,CPB,CALAS [FIND SECOND PARAM BLOCK 76HL HUNT2 3,CPB,CALAS 773= #SKIP K6IFEXPAN>999-999 77GW TRACE 3,IFPARAMB 782G BNG 3 XTRUE [IF NONE THE CONDITION IS TRUE 78G6 ADN 3 APARAFIR [PTR TO FIRST PARAM 78^Q STO 3 XPTRPAR(2) 79FB ZABS2 LDX 1 XPTRPAR(2) 79^2 STO 1 XCURRENT(2) [DUMP CURRENT POINTER 7=DL LDX 4 0(1) [TEST FOR LAST PARAM (-) & 7=Y= SMO FX1 7?CW TXU 4 QMINUS1 7?XG BCC XTRUE [IF SO COND IS TRUE 7#C6 ANDN 4 #7777 [MASK OFF NO OF CHARS 7#WQ SMO 4 7*BB LDN 0 7 [UPDATE PTR TO PARAM 7*W2 SRL 0 2 7B*L ADS 0 XPTRPAR(2) 7BT= ADN 1 1 7C#W #SKIP K6IFEXPAN>999-999 7CSG TRACE 0(1),IFABSPAR 7D#6 LDX 5 XSTCHS(2) 7DRQ LDX 3 XSTPTR(2) 7F?B CALL 7 XCOMPARE 7FR2 ANDN 0 1 7G=L [IF MATCH COND FALSE ELSE TRY 7GQ= BZE 0 ZABS2 [NEXT PARAM 7H9W LDCT 7 #400 [IF PARAMETER ACCESSED 7HPG LDX 3 XCURRENT(2) [SET B0 IN CPB,CALAS 7J96 ORS 7 0(3) 7JNQ BRN XFALSE 7K8B QMINUS1 #77777777 [THIS INDICATES LAST PARAM IN BLOCK 7K8J ...#SKI JWPHASE3 7K8Q ...( 7K8Y ...# 7K96 ...# IF RESTARTED AND IF GENRES 7K9# ...# 7K9G ...XJLBITS #01100000 [RESTARTED BITS 7K9N ... #00400000 [GENRES BIT 7K9Q ...#UNS FPARTRES 7K9S ... #40000000 [PARTRES BIT 7K9W ...TEXT1 5HRERUN 7K=4 ...TEXT2 5HBREAK 7K== ...TEXT3 5HQUERY 7K=D ...TEXT4 7HABANDON 7K=L ...TEXT5 7HRUNDUMP 7K=S ...XTP1 +5,+TEXT1 7K?2 ... #00001000 7K?8 ... +5,+TEXT2 7K?B ... #00200000 7K?J ... +5,+TEXT3 7K?Q ... #00002000 7K?Y ... +7,+TEXT5 7K#6 ... #00000400 7K## ... +0 7K#G ...XTP2 +5,+TEXT2 7K#N ... #01000000 7K#W ... +7,+TEXT4 7K*4 ... #00100000 7K*= ... +0 7K*D ...XGEN NGNC 7 1 7K*L ...XRES LDN 7 0 7K*S ... STO 7 AWORK2(2) 7KB2 ... CALL 7 XFLB 7KB8 ... CALL 7 XFSTR 7KB? ...XPAR1 7KBB ... LDN 7 0 7KBJ ... LDX 0 CONTEXT(2) 7KBQ ... ANDN 0 1 7KBY ... BZE 0 XFALSE [FALSE IF IN NO USER CONTEXT 7KC6 ... FJOCA 3,2 7KC# ... JBC XFALSE,3,JBRESTARTED 7KCG ... BZE 7 NOQUAL 7KCN ... LDN 6 XTP1 7KCW ... LDX 7 AWORK2(2) 7KD4 ... BNZ 7 NRES 7KD= ... LDN 6 XTP2 7KDD ...NRES STO 6 AWORK1(2) 7KDL ... SMO 6 7KDS ... LDX 4 0(1) 7KF2 ... BZE 4 XFALSE [J TO FALSE IF END OF TABLE 7KF8 ... SMO 6 7KFB ... LDX 1 1(1) 7KFJ ... ADX 1 FX1 7KFQ ... LDX 5 XSTCHS(2) 7KFY ... LDX 3 XSTPTR(2) 7KG6 ... CALL 7 XCOMPARE 7KG# ... LDX 1 FX1 7KGG ... LDX 6 AWORK1(2) 7KGN ... ANDN 0 1 7KGW ... BNZ 0 XFND [J IF GOOD ENOUGH MATCH 7KH4 ... ADN 6 3 7KH= ... BRN NRES 7KHD ...NOQUAL 7KHL ... LDX 7 AWORK2(2) 7KHS ... SMO 7 7KJ2 ... LDX 7 XJLBITS(1) 7KJ8 ... BRN XFND1 7KJB ...XFND SMO 6 7KJJ ... LDX 7 2(1) 7KJQ ...XFND1 OPENSYS XBRK,JOBLIST,READ 7KJY ... LDX 6 JOBNO(2) 7KK6 ... GETJOB 6,SYSTEM 7KK# ... STEPAGAIN 7KKG ... ADX 3 JOBDATASIZE 7KKH ...#UNS FPARTRES 7KKJ ...( 7KKK ... BPZ 7 NPAR [J IF NOT "IF PAR" 7KKL ... ANDX 7 JLSTATX(3) 7KKM ... BRN XPAR2 7KKN ...NPAR 7KKP ...) 7KKQ ... ANDX 7 JLSTAT(3) 7KKR ...XPAR2 7KKW ... CLOSETOP 7KL4 ... BNZ 7 XTRUE 7KL= ... BRN XFALSE 7KLD ...XBRK COMBRKIN 7KLL ...) 7KLR ...#UNS FPARTRES 7KLY ...( 7KM5 ...XPAR 7KM= ... LDN 0 2 7KMC ... STO 0 AWORK2(2) 7KMJ ... BRN XPAR1 7KMP ...) 7KN7 ... FSHCODE AORB 7KNK ...( 7KP3 ...XMAC 7KPF ...# 7KPX ...# THIS CODE IMPLEMENTS THE 'IF MACHINE(X)' COMMAND FOR SHARED 7KQ* ...# FILESTORE 7KQR ...# 7KR9 ... CALL 7 XFLB [FIND THE COMMAND LINE BLOCK 7KRM ... CALL 7 XFSTR [& LOCATE THE STRING IN IT!! 7KS5 ... BRN XERROR [ERROR IF THERE ISN'T ANY STRING 7KSH ...# 7KS^ ... LDN 4 1 [SET LENGTH OF STRING FOR COMPARISON 7KTC ... FSHCODE A,XNOTA 7KTT ...( 7KW? ... LDN 1 TEXTMACA(1) [SET ADDRESS OF STRING FOR COMPARISON 7KWP ...XNOTA 7KX7 ...) 7KXK ... FSHCODE B,XNOTB 7KY3 ...( 7KYF ... LDN 1 TEXTMACB(1) [SET ADDRESS OF STRING FOR COMPARISON 7KYX ...XNOTB 7K^* ...) 7K^R ... LDX 5 XSTCHS(2) [LENGTH OF USER SUPPLIED STRING 7L29 ... LDX 3 XSTPTR(2) [ADDRESS OF USER SUPPLIED STRING 7L2M ... CALL 7 XCOMPARE [COMPARE STRINGS 7L35 ... ERN 0 3 7L3H ... BZE 0 XTRUE [JIF STRING MATCHES EXACTLY 7L3^ ... BRN XFALSE [JIF NO MATCH 7L4C ...# 7L4T ...#UNS FSHA 7L5? ...TEXTMACA 4HA 7L5P ...#UNS FSHB 7L67 ...TEXTMACB 4HB 7L6K ...) 7L6L ...[SHFS REVERSION CODE FOR "IF MACHINE(X)" COMMAND 7L6M ...[GIVES FALSE REPLY FOR CORRECTLY FORMATED COMMAND 7L6N ...[& COMMAND ERROR FOR INCORRECTLY FORMATED COMMAND 7L6P ...#UNS FSHIFMAC 7L6Q ...( 7L6R ...XMACRV 7L6S ... CALL 7 XFLB [FIND CLB 7L6T ... CALL 7 XFSTR [FIND STRING ENCLOSED IN DELIMITERS 7L6W ... BRN XERROR [NO STRING - COMMAND ERROR 7L6X ... BRN XFALSE [CORRECTLY FORMATED - FALSE REPLY 7L6Y ...) 7L73 ... MENDAREA 15,GAPIFXCODES 7L7L #END ^^^^ ...14122511000200000000