. THIS SECTION CONTAINS THE CODE CONNECTED WITH LABEL ANALYSIS AND . LINKING TOGETHER OF SUBEXPRESSIONS RGS . REGISTER DEFINITIONS LGFIF . NESTED LOGICAL IF DEFINITIONS IDX EQU 1 . PERMIT DIAGNOSTICS STACK EQU N3STCK $(1) LIT . . THIS SECTION DETERMINES THE OPTIMUM PLACE TO INSERT CODING 24930 DC1* SX,1 B9,DC1X 24940 L B5,LGLNST NESTING LEVEL OF LOGICAL IF'S LA,H1 A0,1,A3 SSL A0,6 JZ A0,DC1XX . EXPRESSION NUMBER ZERO DOES NOT EXIST SA A0,SAVE . SAVE NUMBER OF LEAD EXPRESSION SZ TA L A4,SXLNK LNKSBX S A4,TC . NEXT ON CHAIN BEFORE CHAIN ALTERED LNKSBX SR R2,TB . SAVE MASK REGISTER JBL A14,3,A3,S4 010 DCJ1 J DC2 . LINKS EXPRESSIONS TOGETHER 24960 DCJ1 L,H1 A0,2,A3 L,S1 A1,FL30 TNE,M A1,027 J DC2 AT FIRST EXECUTABLE ITEM LOC EXPRESSIONS OK TP,XH2 3,A3 TEST FOR ZERO LEVEL J DC2 TNZ CRENT J DCJ11 TE,M A1,11 TEST FOR STATEMENT LABEL J DCJ11 TNZ,H2 LOOPNU TEST FOR ZERO LOOP LEVEL J DC2 PROCESS AT FIRST ZERO LEVEL LABEL IF ENTRYS DCJ11 . AND,M A0,077777 LOC FUNCTIONS WITH NON ZERO COMPUTE POINT JZ A1,DC1Y1 ONLY PROCESS ZERO D P AT BEG PROG ITEM TNE A1,LGDOP SPECIAL CASE FOR START OF LOGICAL IF J DC2 TE A1,DEFNO CAN ONLY BE EVALUATED AT ETHIER DEFINITION POINTS J DC1Y1 J DC2 XDC1 SXLOC A3 SAVE,0,T3 LOCATION OF LEAD EXPRESSION NKSBX NOP 0,0 LA,010 A15,0,A3 . PICK UP OP. TUPE 24990 TE,M A15,1 25000 J DC1J CONTINUE LOOKING FOR COMPUTE POINT25010 J DC1Y1 LNKSBX DC1J1 AND,M A14,073 . J3 IS SET TO ZERO SA,S4 A15,1,A3 JBL A14,1,A3,S4 040 DC1C+3 . R3=1 EXPRESSION MUST BE EVALUATED DC1Y1 LX A3,TC LR R2,TB . RESTORE MASK REGISTER J *DC1X DC1J TNZ DELF ONLY EXPRESSIONS WITH ZERO COUNT ARE DELTED TZ SXCNT LNKSBX J DC1C NN WAS NOT EQUAL TO ZERO 25060 L,S1 A14,2,A3 AND,M A14,050 JNZ A15,DC1C . A ZERO COUNT IS OK IF EITHER THE REFERENCED FROM DELETED EXPRESSION . OR THE DO NOT COUNT BIT ARE SET DC1XX XER 5 . IMPROPER SUBEXPRESSION DC1C JBL A14,1,A3,S4 4 DC1J1 . ALLOW PREVIOUS LINKS TO STAND LA,M A14,070 . MASK TO LOAD F AND,S4 A14,3,A3 25240 TG,M A15,030 J DC1D 25260 DC1EJ L,H1 A0,3,A3 LOAD LLLLL AND,M A0,077777 L,H1 A14,3,A3 SEQUENCE NUMBER OF LAST USE AND,M A14,077777 . EXTRACT SEQUENCE NUMBER TZ IDF J DC1EK SZ TA L,S4 A4,4,A3 . FIELD WHICH SHOWS USE BY LEVEL SSL A4,2 JB A4,DC1EQ DSL A4,2 . SET SIGN OF A5 NEGATIVE IF FIRST L,H2 A4,F31 . LAST PLACE TO MOVE BACK TO TLE A4,A1 J DC1EK JP A5,DPC2 . IF FIRST USE STILL VALID . USE OF EXPRESSION HAS BEEN UPDATED L,T3 A4,4,A3 TG,M A4,2 . ONLY MOVE BACK IF ONE USE J DC1EQ DPC2 . DPC1 SR,S3 R4,TA . FORCE EXPRESSION TO COME IN FRONT OF US L,S4 A4,3,A3 . TEST IF OPTIMAL EXPRESSION AND,M A4,010 JZ A5,DC1Z2 DC1EK . TZ IDF J DC1D DC1E SZ TA L,H1 A14,3,A3 SEQUENCE NUMBER OF LAST USE AND,M A14,077777 EXTRACT SEQUENCE NUMBER TG,H2 A1,F31 CAN IT BE MOED BACK TO LAST USE L,H2 A1,F31 NO ONLY THIS FAR . DETERMINE IF EVALUATION POINT IS WITHIN CURRENT LOGICAL IF L,H2 A4,MEL S,H1 A4,MEL SET FLAG FOR EACH EXPRESSION DC1LF L,H2 A4,LOGFCP SEQUENCE NUMBER OF FIRST STATEMENT OF IF L,H2 A5,LOGBCP SEQUENCE NUMBER OF LAST STATEMENT OF IF A,M A5,1 EXPAND BOUNDERIES SO TW WILL WORK TNW A4,A1 J DC1LA EVALUATION POINT IS WITHIN LOGICAL IF TNE,H2 A1,LOGFCP J DC1LB EVALUATION POINT IS START OF CURRENT IF . MAKE SURE EXPRESSION IS NOT MOVED WITHIN PRIOR LOGICAL IF BY MOVING IT . IN FRONT OF LAST LOGICAL IF PASSED DC1LD TG,H2 A1,LGLFCP L,H2 A1,LGLFCP TNE,H2 A1,LGLFCP J DC1LC SET FLAG TO COME IN FRONT OF STATEMENT TNE,H2 A1,DEFNO EVALUATION AT DEF POINT J DC1Z3 TNE A1,A15 EVALUATION AND LAST USE ARE EQUIVALENT PUT J DC1LC FRONT OF STATEMENT DC1Z2 TZ FLPR PUT ZERO LEVEL ESPRESSIONS OUT L,M A1,2 OUT AT SEQUENCE NUMBER 2 TZ FLPR SZ,S3 TA SSC A1,15 L,T1 A14,1,A3 EXPRESSION NUMBER LNKSBX S,T3 A14,TA LNKSBX TZ DELF L,M A1,0 PUT OUT AT SEQNO 0 IN THE DELETE MODE LX A2,CTF51 25350 AA A1,TA 25360 SA A1,TF51,A2 25370 DO IDX=1 , TZ DX4 253710 DO IDX=1 , SLJ XD4A 253720 LX A3,TC . RESTORE FOR SEARCHES LR R2,TB . RESTORE MASK REGISTER AX,016 A2,1 25380 SX A2,CTF51 25390 TLEM,M A2,LTF51 25400 J *DC1X SLJ EMPTY . TRY TO EMPTY TABLES 25420 J DC1X 25430 DC1EQ L A1,SEQNO . IF CANT GO BACK LEAVE IN PLACE J DC1EK DC1D LA,1 A1,SEQNO 25450 TNZ DEFNO TZ IDF J $+2 J DC1E SZ TA TZ IDF IF INDUCTION VARIABLE NOT DEFINED DO NOT ADD TO SEQUENCE AA,M A1,1 . PUT SEQUENCE NUMBER TO BEGIN DO 254610 L,S4 A4,2,A3 AND,M A4,010 JNZ A5,$+4 TZ IDF J DC1Z2 J DC1EJ TE,M A15,030 J DC1Z2 JE A15,FL30,0,S1 047 DC1Z2 JE A15,STTYA,0,S2 025 DC1Z2 L,M A15,01225 TNZ ABFCFL J $+3 TNE,T1 A15,FL30 J DC1Z2 XER 91 . INDUCTION VARIABLE DEFINED AT WRONG TIME DC1EJ2 L,H2 A4,LOGFCP L,H2 A5,LOGBCP A,M A5,1 L,H1 A14,3,A3 AND,M A14,077777 TNE A15,A1 J DC1LC TNW A4,A1 J DC1EJ DC1Z3 TE A1,A15 LAST USE AND DP SAME J DC1Z2 PUT IN FRONT OF STATEMENT DC1LC SR,S3 R4,TA FORCE IN FRONT OF EVALUATION STATEMENT TNZ,H1 MEL TEST FOR FORCED ELIMINATION J DC1Z2 SZ,H1 MEL TE,H2 A1,SEQNX J DC1Z2 SZ,S3 TA L,M A4,0,NSEQN AN,M A4,1 L A2,(1,F31) L,S1 A0,1,*A2 L,H2 A1,0,A2 . TEST STATEMENT TYPE ITEM TNE,M A0,10 J DC1LF JGD A4,$-4 L,H2 A1,SEQNO J DC1LF DC1LB . IF AN EXPRESSION HAS AN EVALUATION POINT AT THE FIRST STATEMENT OF AN IF . IT MUST BE COMPUTED IN FRONT OF THE IF UNLESS THE LAST USE OF THE . EXPRESSION IS WITH THE BOUNDERIES OF THE IF TNE A4,A15 . TEST FOR LAST USE BEING IN IF EXPR J DC1LC . MOVE IN FRONT OF IF L,S4 A14,4,A3 SSL A14,2 JB A14,DC1LC . MOVE IN FRONT OF IF TNE A5,A15 . TEST FOR USE IN NEXT STATEMENT J DC1LC TNW A4,A15 . TEST LAST EXPRESSION WITHIN IF J DC1Z2 . MOVE IN BACK OF IF EXPR J DC1LC . MOVE IN FRONT OF IF DC1LA . IF AN EXPRESSION IS DEFINED WITHIN AN IF BUT USED OUTSIDE IT WILL BE DEFINED . ON END LOGICALI IF SEPARATOR IF F31 GETS WITHIN IF BOUNDERIES EXPRESSION . SHOULD BE MOVED IN FRONT OF IF UNLESS ITS LAST USE IW WITHIN IF BOUNDERIES . IN WHICH CASE IT SHOULD BE LEFT TO GO THE REST OF THE COURSE ALONE TNE A5,A1 SEQUENCE NUMBER OF NEXT STATEMENT IS OUT OF IF J DC1LD L,S4 A7,4,A3 . GET BIT WHICH SHOWS USE AT SSL A7,2 . DIFFERENT LEVEL JB A7,DC1LAA . CAN NOT MOVE INSIDE IF AN,M A5,1 TNW A4,A15 J DC1LE DC1LAA L A1,LOGFCP TZ LBX . IF LABEL IT CAN NOT GO FURTHER L,H2 A1,SEQNO TNE A1,IFELSE J DC1Z2 TNZ DEFNO J DC1LQ L,H2 A1,DEFNO J DC1Z3 DC1LQ TNZ LBX J DC1Z3 TE A1,LOGFCP J DC1Z3 J DC1LC . FORCE IN FRONT OF IT . THE NEXT SECTION MOVES EXPRESSIONS OUT OF LOGICAL IFS IF THEIR LAST USE IS W . WITHIN THE IF BUT THEY ARE COMMON OR HAVE THE J1 BIT SET DC1LE L,S4 A6,1,A3 TZ LOOPIF J DC1LM L A7,SXCNT IF AN EXPRESSION HAS MORE THAN ONE USE NKSBX TG,M A7,2 THEN IT WILL ALSO GO IN FRONT OF IF J $+3 IF COMPUTE POINT PERMITS AND,M A6,041 TEST FOR COMMON AND J1=1 JZ A7,DC1LD DC1LM L,H1 A6,2,A3 FORWARD COMPUTE POINT AND,M A6,077777 TG,H2 A7,LOGFCP TEST IF COMPUTE POINT J DC1LD IS WITHIN LOGICAL IF L A1,LOGFCP IF NOT MOVE IN J DC1LC FRONT OF IF . THIS SUBROUTINE LINKS SUBEXPRESSIONS TOGETHER 25490 DC2 LX B2,STNO 25500 DO IDX=1 , TZ DX4 DO IDX=1 , SLJ XD4 L A15,SXCNT COUNT OF LEAD EXPRESSION LNKSBC DO IDX=1 ,DC2EA TZ DX4 DO IDX=1 , SLJ XD4B 255320 DO IDX=1 , J DC2E 255325 DO IDX=0 ,DC2EA J DC2E 255330 DC2H JBL A13,3,A3,S1 030 DC2M . CHECK TO SEE IF LINKED SBT A13,3,A3,S1,010 . S1=1, IMPLIES LINKING 255410 LA,S5 A4,0,A3 . LOADS A AND B PRIME 25590 AND,M A4,070 25600 LA,H1 A14,1,A3 SSL A14,6 . FORM NUMBER OF REFERING SUBEXPRESSION TE,M A5,020 25610 J DC2A AAAA DID NOT REFER TO AN EXPRESSIO25620 SA,H2 A14,STACK,B2 . NUM#ER OF REFERING EXPRESSION LA,T1 A0,0,A3 25640 SA,7 A0,STACK,B2 AAAA IS TRANSFERED TO STACK 25650 LA,016 A0,010 25660 SA,013 A0,STACK,B2 A IS MADE ONE IN STACK 25670 AX,M B2,2 INCREASE BY 2 SINCE NEXT INSTRUCTI25680 TLEM,M B2,LTNO BY ONE 25690 J DC2A 25700 XER 6 . STACK LENGTH EXCEEDED 25710 DC2A AND,M A4,7 25720 TE,M A5,2 25730 J DC2B OPERAND B IS NOT AN EXPRESSION 25740 SA,H2 A14,STACK,B2 . NUMBER OF REFERING EXPRESSION LA,T2 A0,0,A3 25760 SA,7 A0,STACK,B2 BBBB IS TRANSFERED TO STACK 25770 SR,013 R4,STACK,B2 B IN STACK IS SET TO ONE 25780 AX,016 B2,2 INCREASE BY 2 SINCE NEXT INSTRUCTI25790 TLEM,M B2,LTNO DECREASES BY ONE 25800 J $+3 25810 XER 6 . STACK LENGTH EXCEEDED 25820 DC2B JMGI B2,$+2 25830 J XDC1 EXIT OF ROUTINE 25840 SXLOC A3 STACK,B2,T1 . LOC OF REFERD EXP LNKSBC SXLOC A1 STACK,B2,H2 . LOC OF REFERENCE LNKSBC L B4,A1 LNKSBC LA,M A11,2 . MASK TO CHECK J2 WITH TZ DELF J $+3 LINK ALLLEXPRESSIONS TOGETHER IN DELETE MODE TNZ,T3 4,A3 J DC2B LNKSBC DC2BJ1 L,S1 A13,3,A3 AND,M A13,057 CLEAR DELETE ONLY ONE S,S1 A13,3,A3 EXPRESSION IF REFERENCE IS MADE JBL A13,1,A3,S4 040 DC2B . SHIP OUT WHEN R3=1 AND,012 A11,1,A3 25900 JNZ A12,DC2JA JBL A12,1,A3,S4 1 DC2P . CAN NOT LINK IF J1 ON L,S5 A13,1,A3 LINKING COUNT TG,M A13,060 J DC2B DO NOT LINK IF CHAIN TOO LONG AND,M A12,4 MAKE EXPRESSION COMMON JNZ A13,DC2Q1 IF J4 BIT EXISTS AND LINK IS TRIED DC2Q L,T3 A14,4,B4 . COUNT FIELD FOR EXPRESSION TNE A14,SXCNT J DC2K COUNTS DO AGREE 25930 DC2Q1 OR,M A12,040 CSC20 DC2Q2 SA,S4 A13,1,A3 . R3 IS SET TO ONE J DC2B GO CHECK FOR MORE ITEMS IN STACK 25970 DC2K . LNKSBC L,M A0,077777 L,S4 A13,3,B4 . IF AN EXPRESSION IN AN INDUC- SSL A13,3 . TION VARIABLE SUBSCRIPT LINKS TN 3,A3 TE,M A13,3 . TO A NORMAL EXPRESSION THE J DC2K1 . LINK IS NOT MADE L,S4 A13,3,A3 SSL A13,3 TE,M A13,3 J DC2Q1 DC2K1 AND,2 A0,2,A3 TZ LBX 26000 J DC2JQ TE,1 A1,DEFNO CHECKS TO SEE IF COMPUTE POINTS AR26020 J DC2G COMPUTE POINTS WERE NOT EQUAL 26030 DC2J LA,M A1,2 CSC2/ AND,S4 A1,1,B4 . J2 EQ 0 CSC20 JZ A2,DC2J1 . YES CSC20 AND,S4 A1,1,A3 . CAN NOT SET COMMON BIT JNZ A2,DC2J1 . IF J2 IS ON LA,S6 A2,0,B4 . OP CODE CSC20 TE,M A2,020 . COLON CSC20 J DC2J1 . NO CSC20 TNZ,S6 1,B4 . INTRINSIC FUNC CSC20 J DC2J1 . NO CSC20 LA,M A2,1 TG,T3 A2,4,B4 . TEST USE FIELD J DC2J1 L,S6 A2,1,B4 L,S4 A12,1,A3 LOAD SO IF CONTROL GOES TO DC2Q1 J1 AND 4I WILL BE TE,M A2,056 . TEST FOR FLD J DC2Q1 DC2J1 LA,M A1,037 . NONE CSC20 AND,S4 A1,1,A3 SA,012 A2,1,A3 R3 IS SET TO ZERO 26070 LA,012 A1,1,B4 . R BITS TO BE SET 26080 LA,M A13,7 260900 TG,S3 A13,STACK,B2 261000 J $+4 26110 OR,016 A1,020 SET R2 FOR AAAA 26120 SA,S4 A2,1,B4 26130 J $+3 26140 OR,016 A1,010 26150 SA,S4 A2,1,B4 . SET R1 FOR BBBB 26160 SBT A13,3,B4,S1,010 . S1 IMPLIES EXPRESSION IS LINKED 261700 SXLOC A0 SAVE,0,T3 SBXLNK L,S5 A1,1,A3 TOTAL OF LINKS IN THIS EXPRESSION SBXLNK A,M A1,1 SBXLNK A,S5 A1,1,A0 SUM SO FAR SBXLNK TLE,M A1,60 DO NOT LET LINKING COUNT TO BIG SBXLNK S,S5 A1,1,A0 SBXLNK J DC2EA SBXLNK J DC2EA 26180 DC2JA L,S4 A12,1,A3 AND,M A12,01 JNZ A13,DC2P DC2JS J DC2J DC2JQ AND,S4 A11,1,B4 . IF J2 IS ON IN CONTAINING BUT JZ A12,DC2J . BUT NOT CONTAINED AND COUNT IS TNE,M A15,1 . GREATER THAN 1 MAKE COMMON J DC2J LA,S4 A12,1,A3 J DC2Q1 DC2G TZ FLPR . A LINK TO ZERO LEVEL SHOULD ALWAYS J DC2J . TURN ON R3 UNLESS AT PREAMBLE TP,XH2 3,A3 J DC2G1 SBT A5,1,A3,S4,4 . J3 IS SET TO ONE J DC2J DC2G1 LA,S4 A12,1,A3 J DC2Q1 DC2P JNBL A13,3,A3,S4 040 DC2B . CHECK FOR ZERO LEVEL 262710 TNZ FLPR . IF AT PREAMBLE ZER LEVEL J DC2B . EXPRESSIONS ARE EVALUATED AND JE A13,0,A3,S6 016 DC2Q1 L,S6 A14,1,A3 TE,M A14,044 J DC2Q TNE,M A13,020 J DC2Q1 J DC2Q . ZERO LEVEL ARE FORCED TO BE SEPARATE . THIS SECTION OF CODE DELETES AN EXPRESSION FROM THE NORMAL 26290 . SUBEXPRESSION TABLES AND STORES IT IN A TEMPORARY TABLE SUBEXW. UPON 26300 . ENTRY THE (LOCATION-4) OF THE SUBEXPRESSION IS IN A3. 26310 DC2E JBL A13,1,A3,S4 4 DC2JX . DO NOT MOVE IF J3 ON JBL A13,3,A3,S1 040 DC2H . DO NOT MOVE IF S3 ON DC2J2 . NKSBX TP,XH2 3,A3 J DC2S DC2E2 LA,2 A1,1,A3 26470 SSL A1,6 LOADS NUMBER OF EXPRESSION BEING D26480 TNE,H2 A1,TLOC SN,H2 A1,TLOC L A1,SXLNK LNKSBX TNE A3,TC LNKSBX S A1,TC ADVANCE LINK IF NEXT ON CHAIN IS MOVED LNKSBX SLJ DLINK REMOVE FROM A CHAIN LNKSBX L,S4 A4,3,A3 LNKSBX AND,M A4,070 LNKSBX A,M A5,3 LNKSBX S,S4 A5,3,A3 SET FOR W CHAIN LNKSBX SLJ SLINK ADD TO W CHAIN LNKSBX J DC2EX 26590 DC2S L,M A13,010 SBXLNK OR,S1 A13,2,A3 SBXLNK TN,XH2 1,A3 DO NOT SET IF COMMON SBXLNK S,S1 A14,2,A3 SBXLNK DC2EX SBT A13,3,A3,S1,040 . S3=1, EXP HAS BEEN MOVED 266400 J DC2H . THIS SECTION REMOVES THE ENTRY FROM TF51 IF AN EXPRESSION IS 266801 . LATER FOUND TO BE CONTAINED IN A LARGER ONE 266805 DC2M LA,H1 A0,1,A3 SSL A0,6 LR R2,(02007777) LR,H2 R1,CTF51 266820 LX B1,CTF51 LX B6,CTF51 MSE A0,TF51-1,*B1 266835 J DC2B 266840 MVW TF51-1,B6 TF51,B1 266845 L A14,CTF51 AN,M A14,1 S A14,CTF51 J DC2B 266855 DC2JX LA,H1 A13,2,A3 . FORWARD COMPUTE POINT AND,M A13,077777 TNZ LBX TNE A14,DEFNO J DC2J2 . EXPRESSION MUST BE MOVED AT COMPUTE POINT J DC2H $(2) . DC1X* J $-$ END