diff --git a/SYMBOL/ALGOL.alg_m b/SYMBOL/ALGOL.alg_m index 18703a5..2ae3391 100644 --- a/SYMBOL/ALGOL.alg_m +++ b/SYMBOL/ALGOL.alg_m @@ -405,7 +405,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 STATEMENT. 00291000 454 LOCKSTMT:MISSING RIGHT PARENTHESIS IN A LOCK STATEMENT. 00292000 455 CLOSESTMT:MISSING LEFT PARENTHESIS IN A CLOSE STATEMENT. 00293000 - 456 CLOSESTMT:IMPROPER FILE PART IN A CLOSE STATEMETN. 00294000 + 456 CLOSESTMT:IMPROPER FILE PART IN A CLOSE STATEMENT. 00294000 457 CLOSESTMT:MISSING COMMA IN A CLOSE STATEMENT. 00295000 458 CLOSESTMT:IMPROPER UNIT DISPOSITION PART IN A CLOSE 00296000 STATEMENT. 00297000 @@ -486,7 +486,7 @@ BOOLEAN REL; 00504801 SI~SORCE; SI~SI+SK; DI~DI+DK; DS~N CHR; 00521000 END MOVECHARACTERS; 00522000 INTEGER STREAM PROCEDURE GETF(Q); VALUE Q; 00523000 - BEGIN SI~LOC GETF; SI~SI+7; DI~LOC Q; DI~DI+5; 00524000 + BEGIN SI~LOC GETF; SI~SI-7; DI~LOC Q; DI~DI+5; 00524000 SKIP 3 DB; 9(IF SB THEN DS~SET ELSE DS~RESET; SKIP SB); 00525000 DI~LOC Q; SI~Q; DS~WDS; SI~Q; GETF~SI 00526000 END GETF; 00527000 @@ -495,7 +495,7 @@ BOOLEAN REL; 00504801 BEGIN RR1~2; RR2~150END; 00530000 IF EXAMIN(RR11+5)!12 THEN RR3~4 ELSE 00531000 BEGIN RR3~2; RR4~150END; 00532000 - IF EXAMIN(RR11+10)!12 THEN 00533000 + IF EXAMIN(RR11+10)=12 THEN 00533000 BEGIN RR5~2; RR6~10; RR7~150END ELSE 00534000 BEGIN RR5~1; RR6~56; RR7~10 END; 00535000 IF EXAMIN(RR11+15)=12 THEN 00536000 @@ -511,7 +511,7 @@ BOOLEAN REL; 00504801 01000600 INTEGER NUMSEQUENCEERRORS; 01000700 INTEGER OPINX; % USED FOR INDEXING INTO OPTIONS ARRAY. 01000800 -BOOLEAN SETTING; % USED BY DOLLARCARD FOR AN OPTIONS SETTING 01000802 +BOOLEAN SETTING; % USED BY DOLLARCARD FOR AN OPTION"S SETTING 01000802 BOOLEAN GOGOGO; % TRUE FOR SPECIAL WRITES AND READS 01000810 PROCEDURE CHECKBOUNDLVL;FORWARD; 01000830 BOOLEAN ARRAYFLAG;% USED TO INFORM PRIMARY AND BOOPRIM THAT WE ARE 01000840 @@ -625,7 +625,7 @@ ARRAY %116-01007025 % AROUND THIS REFERENCE 01007090 % IN THE XREF %116-01007095 % %116-01007100 - % .[6:16] IDENTIFIER ID. NO. %116-01007105 + % .[6:15] IDENTIFIER ID. NO. %116-01007105 % THIS IS A UNIQUE NUMBER THAT 01007110 % IS ASSIGNED WHEN THE %116-01007115 % IDENTIFIER IS ENCOUNTERE %116-01007120 @@ -702,9 +702,9 @@ DEFINE % %116-01007400 BEGIN IF DEFINING.[1:1] THEN CROSSREFDUMP(INDEX); END#, %116-01007475 % %116-01007480 XREFINFO[INDEX] = % DEFINE TO TRANSLATE INFO ROW AND COLUMN TO%116-01007481 - XINFO[(INDEX),LINKR,(INDEX).LINKC DIV 2]#, % XINFO ROW AND COL %116-01007482 + XINFO[(INDEX).LINKR,(INDEX).LINKC DIV 2]#, % XINFO ROW AND COL %116-01007482 % %116-01007483 - FORWARDREF = 0#, % DEFINES FOR DIFFERENCE REFERENCE TYPES %116-01007485 + FORWARDREF = 0#, % DEFINES FOR DIFFERENT REFERENCE TYPES %116-01007485 LBLREF = 1#, % %116-01007486 DECLREF = 2#, % %116-01007490 NORMALREF = 4#, % %116-01007495 @@ -716,16 +716,16 @@ DEFINE % %116-01007400 THE INTERNAL CODE (OR ELBAT WORD AS IT IS USUALLY 01010000 CALLED). THE SECOND WORD CONTAINS THE FORWARD BIT (IN 01011000 [1:1]) FOR PROCEDURES. THE LINK TO PREVIOUS ENTRY (IN 01012000 - [4:8]). THE NUMBER OF CHARACTERS IN THE ALPHA REPRESENTA- 01013000 + [4:8]). THE NUMBER OF CHARACTORS IN THE ALPHA REPRESENTA- 01013000 TION (IN [12:6]), AND THE FIRST 5 CHARACTERS OF ALPHA. 01014000 - SUCCEDING WORDS CONTAIN THE REMAINING CHARACTERS OF ALPHA,01015000 + SUCCEDING WORDS CONTAIN THE REMAINING CHARACTORS OF ALPHA,01015000 FOLLOWED BY ANY ADDITIONAL INFORMATION. THE ELBAT WORD 01016000 AND THE ALPHA FOR ANY QUANTITY ARE NOT SPLUT ACROSS A ROW 01017000 OF INFO. FOR PURPOSES OF FINDING AN IDENTIFIER OR 01018000 RESERVED WORD THE QUANTITIES ARE SCATTERED INTO 125 01019000 DIFERENT LISTS OR STACKES. WHICH STACK CONTAINS A QUANTITY01020000 IS GIVEN BY TAKING NAAAAA MOD 125 WHERE N IS THE NUMBER 01021000 - OF CHARACTORS AND AAAAAIS HTE FIRST 5 CHARACTORS OF 01022000 + OF CHARACTORS AND AAAAA IS THE FIRST 5 CHARACTORS OF 01022000 ALPHA, FILLED IN WITH ZEROS FROM THE RIGHT IF NEEDED. 01023000 THIS NUMBER IS CALLED THE SCRAMBLE NUMBER OR INDEX. 01024000 THE FIRST ROW OF INFO IS USED FOR OTHER PURPOSES. THE 01025000 @@ -738,8 +738,8 @@ COMMENT INFO FORMAT 01028000 THE INCR FIELD ([27:8]) CONTAINS AN INCREMENT WHICH WHEN 01032000 ADDED TO THE CURRENT INDEX INTO INFO YELDSAN INDEX TO ANY 01033000 ADDITIONAL INFO (IF ANY) FOR THIS ENTRY. 01034000 - E.G. IF THE INDEX IS IX THEN INFO[(IX+INCR),LINKR,(IX+INCR). 01035000 - LINKC) WILL CONTAIN THE FIRST WORD OF ADDITIONAL INFO. 01036000 + E.G. IF THE INDEX IS IX THEN INFO[(IX+INCR).LINKR,(IX+INCR). 01035000 + LINKC] WILL CONTAIN THE FIRST WORD OF ADDITIONAL INFO. 01036000 THE LINK FIELD OF THE ELBAT WORD IN INFO IS DIFFERENT FROM 01037000 THAT OF THE ENTRY IN ELBAT PUT IN BY TABLE.THE ENTRY IN ELBAT 01038000 POINTS TO ITS OWN LOCATION (RELATIVE) IN INFO. 01039000 @@ -751,15 +751,15 @@ COMMENT INFO FORMAT 01028000 ASSUME THAT THREE IDENTIFIERS A,B,AND C "SCRAMBLE" INTO 01045000 THE SAME STACKHEAD LOCATION IN THE ORDER OF APPEARANCE. 01046000 FURTHER ASSUME THERE ARE NO OTHER ENTRIES CONNECTED TO 01047000 - THIS STACKHEAD INDEX, LET THIS STACKHEAD LOCATION BE 01048000 + THIS STACKHEAD INDEX. LET THIS STACKHEAD LOCATION BE 01048000 S[L] 01049000 NOW THE DECLARATION 01050000 BEGIN REAL A,B,C IS ENCOUNTERED 01051000 IF THE NEXT AVAILABLE INFO SPACE IS CALLED NEXTINFO 01052000 THEN A IS ENTERED AS FOLLOWS:(ASSUME AN ELBAT WORD T HAS BEEN 01053000 CONSTRUCTED FOR A) 01054000 - T.LINK~ S[L], (WHICH IS ZERO AT FIRST), 01055000 - INFO[NEXTINFO]~T, S[L]~NEXTINFO, 01056000 + T.LINK~ S[L]. (WHICH IS ZERO AT FIRST). 01055000 + INFO[NEXTINFO]~T, S[L]~NEXTINFO. 01056000 NEXTINFO~NEXTINFO+NUMBER OF WORDS IN THIS 01057000 ENTRY. 01058000 NOW S[L] POINTS TO THE ENTRY FOR A IN INFO AND THE ENTRY 01059000 @@ -772,7 +772,7 @@ COMMENT INFO FORMAT 01028000 POINTS TO A. 01066000 THE SECOND WORD OF EACH ENTRY IN INFO IS MADE UP AS FOLLOWS: 01067000 FWDPT =[1:1],THIS TELLS WHETHER A PROCEDURE WAS DECLARED 01068000 - FORWARD,IT IS RESET AT THE TIME OF ITS ACTUAL 01069000 + FORWARD.IT IS RESET AT THE TIME OF ITS ACTUAL 01069000 FULL DECLARATION. 01070000 PURPT =[4:8] THIS GIVES A DECREMENT WHICH GIVES THE RELATIVE 01071000 INDEX TO THE PREVIOUS INFO ENTRY WHEN SUBSTRACTED 01072000 @@ -806,7 +806,7 @@ COMMENT INFO FORMAT 01028000 OTHER ENTRIES REQUIRE ADDITIONAL INFORMATION. 01100000 ARRAYS: 01101000 THE FIRST WORD OF ADDITIONAL INFO CONTAINS THE NUMBER OF 01102000 - DIMENSIONS(IN THE LOW ORDER PART),[40:8] 01103000 + DIMENSIONS(IN THE LOW ORDER PART).[40:8] 01103000 EACH SUCCEEDING WORD CONTAINS INFORMATION ABOUT EACH LOWER 01104000 BOUND IN ORDER OF APPEARANCE,ONE WORD FOR EACH LOWER BOUND. 01105000 THESE WORDS ARE MADE UP AS FOLLOWS: 01106000 @@ -1019,7 +1019,7 @@ COMMENT INFO FORMAT 01028000 STREAMV =18#, COMMENT 22; 01297000 DEFINEV =19#, COMMENT 23; 01298000 AUXMEMV =20#, COMMENT 24; %117-01298500 - FIELDV =21#, COMMENT 25; %117-01298600 + FIELDV =21#; COMMENT 25; %117-01298600 DEFINE ADES=0#,LDES=2#,PDES=1#,CHAR=3#; 01299000 REAL TIME1; 01300000 INTEGER SCRAM; 01301000 @@ -1029,7 +1029,7 @@ ARRAY FILEATTRIBUTES[0:30] ; 01303500 ALPHA ARRAY ACCUM[0:10]; 01304000 COMMENT ACCUM HOLDS THE ALPHA AND CHARACTER COUNT OF THE LAST 01305000 SCANNER ITEM IN A FORM COMPATIBLE WITH ITS APPEARANCE 01306000 - IN INFO. THAT IS ACCUN[1] = 00NAAAAA, ACCUM[I] , I> 1. 01307000 + IN INFO. THAT IS ACCUM[1] = 00NAAAAA, ACCUM[I] , I> 1. 01307000 HAS ANY ADDITIONAL CHARACTERS. ACCUM[0] IS USED FOR 01308000 THE ELBAT WORD BY THE ENTER ROUTINES; 01309000 ARRAY STACKHEAD,SUPERSTACK[0:124]; %WF 01310000 @@ -1046,7 +1046,7 @@ ARRAY FILEATTRIBUTES[0:30] ; 01303500 FOR MORE INFORMATION ON THE USE OF SUPERSTACKM SEE %WF 01312000 COMMENTS IN THE TABLE PROCEDURE. ; %WF 01312100 INTEGER COUNT; 01313000 - COMMENT COUNT CONTAINS THE NUMBER OF CHARACTERS OF THE LAST ITEM 01314000 + COMMENT COUNT CONTAINS THE NUMBER OF CHARACTORS OF THE LAST ITEM 01314000 SCANNED; 01315000 ALPHA Q; 01316000 COMMENT Q CONTAINS ACCUM[1] FOR THE LAST IDENTIFIER OR RESERVED 01317000 @@ -1066,7 +1066,7 @@ ARRAY FILEATTRIBUTES[0:30] ; 01303500 COMMENT LASTELCLASS IS SET TO PREV ELCLASS BY NEXTENT; 01329200 INTEGER FCR, NCR, LCR,TLCR,CLCR; 01330000 INTEGER MAXTCLR; 01331000 - COMMENT FCR CONTAINS ABSOLUTE ADDRESS OF THE FIRST CHARACTER OF 01332000 + COMMENT FCR CONTAINS ABSOLUTE ADDRESS OF THE FIRST CHARACTOR OF 01332000 THE CARD IMAGE CURRENTLY BEING SCANNED. NCR THE ADDRESS 01333000 OF THE NEXT CHARACTOR TO BE SCANNED, AND LCR THE LAST 01334000 CHARACTOR (COLUMN 73). TLCR AND CLCR CONTAIN ADDRESS OF 01335000 @@ -1252,7 +1252,7 @@ DEFINE FS = 1#, FP = 2#, FL = 3#, FR = 4#, FA = 5#, 01420000 LSTRTN IS A CELL USED AS LINKAGE BETWEEN A LIST AND 01446000 THE I-O FORMATING ROUTINES. THE FIRST SYLLABLES EXECUTED 01447000 BY A LIST ARE: 1) OPDC LSTRTN, 2) BFW, THIS CARRIES YOU 01448000 - TO THE PROPOER ITEM IN THE LIST. THE FORMATING ROUTINES 01449000 + TO THE PROPER ITEM IN THE LIST. THE FORMATING ROUTINES 01449000 SET LSTRTN INITIALLY TO ZERO. THE LIST ITSELF UPDATES 01450000 LSTRTN. THE LIST EXHAUSTED FLAG IS -1; 01451000 DEFINE BTYPE =1#, DTYPE =2#, ATYPE =3#; 01452000 @@ -1300,7 +1300,7 @@ REAL P, COMMENT CONTAINS NUMBER OF FORMALS FOR STREAM PROCS; 01489000 Z; COMMENT CONTAINS 1ST WORD OF INFO FOR STREAM FUNCTIONS; 01490000 SAVE ALPHA ARRAY DEFINEARRAY[0:34]; 01491000 COMMENT THESE VARIABLES ARE USED TO CONTROL ACTION OF THE DEFINE. 01492000 - DEFINECTR COUNTS DEPTH OF NESTING OF DEFINE=# PAIRS. 01493000 + DEFINECTR COUNTS DEPTH OF NESTING OF DEFINE-# PAIRS. 01493000 THE CROSSHATCH PART OF THE TABLE ROUTINE USES DEFINECTR 01494000 TO DETERMINE THE MEANING OF A CROSSHATCH. DEFINEINDEX IS 01495000 THE NEXT AVAILABLE CELL IN THE DEFINEARRAY. THE DEFINE- 01496000 @@ -1354,7 +1354,7 @@ DEFINE FUNCMONFILE = [27:11]#; COMMENT FUNCMONFILE DESIGNATES THE BIT 01543000 POSITION IN THE FIRST WORD OF ADDITIONAL 01544000 INFO THAT CONTAINS THE MONITOR FILE 01545000 ADDRESS FOR LABELS; 01546000 -DEFINE DUMPEE = [2,11]#; COMMENT THE DUMPEE FIELD IN THE FIRST 01547000 +DEFINE DUMPEE = [2:11]#; COMMENT THE DUMPEE FIELD IN THE FIRST 01547000 ADDITIONAL WORD OF INFO FOR LABELS CONTAINS 01548000 THE ADDRESS OF THE COUNTER THAT IS INCREMENTED 01549000 EACH TIME THE LABEL IS PASSED IF THAT LABEL 01550000 @@ -1395,7 +1395,7 @@ ARRAY LIBARRAY[0:24]; % LIBARRAY IS USED TO KEEP INFORMATION AS 01561065 INDICATING LAST ENTRY MADE IN THE ARRAY. 01561140 LTLCR AND MAXLTLCR CORRESPOND TO TLCR AND 01561150 MAXTLCR USED IN READACARD, FILEINX IS THE 01561160 - LIBRARY SWITCH FILE INDEX, SEQSUM IS THE 01561170 + LIBRARY SWITCH FILE INDEX. SEQSUM IS THE 01561170 SUM OF BASE SEQUENCE NUMBERS AT THIS POINT. 01561180 FINISHPT IS THE LAST RECORD NUMBER TO COMPILE; 01561190 REAL RECOUNT,FINISHPT; 01561200 @@ -1411,7 +1411,7 @@ ARRAY LIBARRAY[0:24]; % LIBARRAY IS USED TO KEEP INFORMATION AS 01561065 ARRAY DIRECTORY[0:3|NOROWS-1, 0:55]; COMMENT THIS IS THE ACTUAL 01561240 DIRECTORY AND IS MADE UP AS FOLLOWS: 01561250 A: 1 CAR- NUMBER OF DIRECTORY BLOCKS. 01561260 - B: 2 CHR - NUMBER OF CHARACTERS IN THE LIBRARY 01561270 + B: 1 CHR - NUMBER OF CHARACTERS IN THE LIBRARY 01561270 IDENTIFIER NAME. 01561280 C N CHR - ACTUAL ALPHA OF THE LIBRARY IDENTIFIER. 01561290 D: 3 CHR - STARTING RECORD NUMBER FOR THE ACTUAL 01561300 @@ -1486,7 +1486,7 @@ INTEGER FILENO; 01584000 BOOLEAN 01585000 FUNCTOG, COMMENT TELLS WHETHER PROCEDURE BEING DECLARED IS A 01586000 FUNCTION; 01587000 - P2, COMMENT GNERALLY TELLS WHETHER OWN WAS SEEN; 01588000 + P2, COMMENT GENERALY TELLS WHETHER OWN WAS SEEN; 01588000 P3, COMMENT TELSS WHETHER SAVE WAS SEEN; 01589000 P4, COMMENT TELLS WHETHER AUXMEM WAS SEEN; 01589500 VONF, COMMENT VALUE OR OWN FIELD OF ELBAT WORD; 01590000 @@ -1598,11 +1598,11 @@ INTEGER SEGSIZEMAX; COMMENT CONTAINS MAX SEGMENT SIZE; 01687000 INTEGER F; 01688000 STREAM PROCEDURE MOVECODE(EDOC,TEDOC); 01688010 BEGIN LOCAL T1,T2,T3; 01688020 - SI~EDOC;T1~SI;SI+TEDOC;T2~SI;SI~LOC EDOC;SI~SI+3;DI~LOC T3; 01688030 + SI~EDOC;T1~SI;SI~TEDOC;T2~SI;SI~LOC EDOC;SI~SI+3;DI~LOC T3; 01688030 DI~DI+5;SKIP 3 DB;15(IF SB THEN DS~1 SET ELSE DS~1 RESET; 01688040 SKIP 1 SB);SI~LOC EDOC;DI~LOC T2; DS~5 CHR;3(IF SB THEN DS~ 01688050 1 SET ELSE DS ~ 1 RESET; SKIP 1 SB);DI~T3;SI~LOC T2;DS~WDS; 01688060 - DI~LOC T3;DI~DI+5;SKIP 3 DB;SI~LOCL TEDOC;SI~SI+3;15(IF SB 01688070 + DI~LOC T3;DI~DI+5;SKIP 3 DB;SI~LOC TEDOC;SI~SI+3;15(IF SB 01688070 THEN DS~1 SET ELSE DS~1 RESET;SKIP 1 SB);SI~ LOC TEDOC;DI~LOC 01688080 T1; DS~5 CHR;3(IF SB THEN DS~1 SET ELSE DS~1 RESET;SKIP 1 SB); 01688090 DI~T3;SI~LOC T1;DS~WDS 01688100 @@ -1623,7 +1623,7 @@ ARRAY GTA1[0:10]; 01697000 PRT CELL HAS A PERMANENT ASSIGNMENT; 01702000 INTEGER PRTI,PRTIMAX; 01703000 COMMENT PRTIMAX GIVES NEXT PRT CELL AVAILABLE FOR PERMANENT ASSIGN-01704000 - MENT. ORTI GIVES NEXT PRT CELL POSSIBLY AVAILABLE FOR 01705000 + MENT. PRTI GIVES NEXT PRT CELL POSSIBLY AVAILABLE FOR 01705000 TEMPORARY ASSIGNMENT; 01706000 DEFINE ALPHASIZE = [12:6]#; COMMENT ALPHASIZE IS THE DEFINE FOR THE BIT01707000 POSITION IN THE SECOND WORD OF INFO WHICH 01708000 @@ -1688,11 +1688,11 @@ STREAM PROCEDURE SEQUENCEWARNING(L); 01742100 SI~FCR; 01742700 TALLY~0; 01742800 2(36(IF SC ! " " THEN JUMP OUT 2 TO NED; SI~ SI+1)); 01742900 - TALLEY~63; 01743000 + TALLY~63; 01743000 NED: TALLY~TALLY+1; 01743100 NONBLANK~TALLY 01743200 END NONBLANK; 01743300 - INTEGER FAULTLEVEL; COMMENT THIS IS FOR THE RUN0TIME ERROR KLUDGE** 01750000 + INTEGER FAULTLEVEL; COMMENT THIS IS FOR THE RUN0TIME ERROR KLUDGE-- 01750000 GIVES THE LOWEST LEVEL AT WHICH THERE IS AN ACTIVE 01751000 FAULT DECL OR LABEL USED IN A FAULT STATEMENT; 01752000 BOOLEAN FAULTOG; COMMENT FAULTSTMT USES THIS TO TELL DEXP TO WORRY 01753000 @@ -1747,15 +1747,15 @@ PROCEDURE DATIME; 01820000 WRITE(LINE, 01829000 $ SET OMIT = NOT ALGOL 01829900 "XVI.0.122" %123-01831000 - ," ",A6,"DAY, ",0,", ",I2.":",A2,X1,A3, 01832000 + ," ",A6,"DAY, ",O,", ",I2,":",A2,X1,A3, 01832000 ////X45,A1,A6,"/",A1,A6,/X45,15("=")//>, 01832500 TIME(6),DATER(TIME(5)),12|REAL(Q:=H MOD 12=0)+Q, 01833000 Q:=MIN MOD 10+(MIN DIV 10)|64, 01834000 IF H}12THEN "PM." ELSE "AM.", 01835000 - N1,[6:6],N1,N2,[6:6],N2); 01835500 + N1.[6:6],N1,N2.[6:6],N2); 01835500 IF MERGETOG THEN % INDICATE NAME OF SOURCE FILE. %120-01835600 WRITE(LINE,, %120-01835700 - (N1:=TAPE.MFID),[6:6],N1,(N2:=TAPE.FID),[6:6],N2); %120-01835800 + (N1:=TAPE.MFID).[6:6],N1,(N2:=TAPE.FID).[6:6],N2); %120-01835800 NOHEADING:=FALSE; 01836000 END OF DATIME; 01837000 DEFINE DOT= BEGIN IF ELCLASS = PERIOD THEN DOTIT END#; 01841000 @@ -1863,8 +1863,8 @@ BEGIN %116-02001755 % %116-02001790 IF XREFINFO[INDEX].IDNOF ! 0 THEN % DUMP IT %116-02001795 BEGIN %116-02001800 - MOVEXREFINFO(INFO[INDEX,LINKR,INDEX,LINKC+1],XREFAY1[*], %116-02001805 - TAKE(INDEX+1),[12:6]); %116-02001810 + MOVEXREFINFO(INFO[INDEX.LINKR,INDEX.LINKC+1],XREFAY1[*], %116-02001805 + TAKE(INDEX+1).[12:6]); %116-02001810 XREFAY1[8] := XREFINFO[INDEX]; %116-02001815 XREFAY1[9] := TAKE(INDEX); % ELBAT WORD %116-02001820 WRITE(DSK1,10,XREFAY1[*]); %116-02001821 @@ -1879,7 +1879,7 @@ COMMENT OCTIZE REFORMATS ACCUM FOR OCTAL CONSTANTS; 02001836 BOOLEAN STREAM PROCEDURE OCTIZE(S,D,SKP,CNT); VALUE SKP,CNT; 02001838 BEGIN 02001840 SI:=S; SI:=SI+3; DI:=D; SK(DS:=3 RESET); % RIGHT JUSTIFY. 02001842 - CNT(IF SC}"8"THEN TALLY:=1 ELSE IF SC{"0"THEN TALLY:=1; SKIP 3 SB; 02001844 + CNT(IF SC}"8"THEN TALLY:=1 ELSE IF SC<"0"THEN TALLY:=1; SKIP 3 SB; 02001844 3(IF SB THEN DS:=SET ELSE DS:=RESET; SKIP SB)); 02001846 % 02001848 % 02001850 @@ -1892,9 +1892,9 @@ COMMENT LOCAL VARIABLES ARE LOCATED IN REVERSE ORDER FROM THE 02001862 WAY THEY ARE DECLARED IN STREAM PROCEDURES; 02001864 DI:=LOC TEMP1; CNT(DS:=LIT"1"); % IN CASE A CHAR=A,B,C,D,OR F. 02001866 SI:=S; SI:=SI+3; DI:=LOC TEMP1; % WE MAY OVERFLOW INTO TEMP2. 02001868 - CNT(IF SC<"0" THEN IF SC}"A"THEN IF SC{"F"THEN % WORK HARD. 02001870 + CNT(IF SC<"0" THEN IF SC}"A" THEN IF SC{"F" THEN % WORK HARD. 02001870 BEGIN 02001872 - T1:=SIL T2:=DI; DI:=T1; SI:=T2; % FLIP, MAN. 02001874 + T1:=SI; T2:=DI; DI:=T1; SI:=T2; % FLIP, MAN. 02001874 DS:=3 RESET; SI:=T1; DI:=T2; % FLIP BACK. 02001876 DS:=1 ADD; DI:=DI-1; SKIP 2 DB; DS:=1 SET; SKIP 3 DB; 02001878 GO AGIN; 02001880 @@ -1984,7 +1984,7 @@ PROCEDURE SEARCHLIB(DOLLAR); VALUE DOLLAR; BOOLEAN DOLLAR; 02013165 BEGIN COMMENT ERROR 501 - ITEM NOT IN DIRECTORY; 02013300 FLAGIT(501); GO EXIT; 02013305 END; 02013310 - WHILE LCR.[33:15] - NCR.[33:15] !1 OR NCR.[30:3] ! 7 02013313 + WHILE LCR.[33:15] - NCR.[33:15] ! 1 OR NCR.[30:3] ! 7 02013313 DO BEGIN 02013315 IF EXAMIN(NCR) = "[" THEN GO TO EXITOUT ; 02013317 RESULT~5; SCANNER; 02013318 @@ -2010,7 +2010,7 @@ PROCEDURE SEARCHLIB(DOLLAR); VALUE DOLLAR; BOOLEAN DOLLAR; 02013165 END; 02013410 GT2 ~ GT1 + CONV(ACCUM[1],0,ACCUM[1].[12:6]); 02013415 RESULT~ ACCUM[1]~ COUNT~0; SCANNER; 02013420 - IF ACCUM[1] ! "1D0000" THEN 02013425 + IF ACCUM[1] ! "1]0000" THEN 02013425 BEGIN COMMENT ERROR 505 - NO RIGHT BRACKET; 02013430 FLAGIT(505); GO EXIT; 02013435 END; 02013440 @@ -2023,7 +2023,7 @@ PROCEDURE SEARCHLIB(DOLLAR); VALUE DOLLAR; BOOLEAN DOLLAR; 02013165 LIBARRAY[LIBINDEX].STOPPOINT ~ FINISHPT; 02013495 LIBARRAY[LIBINDEX].NEXTENTRY ~ RECOUNT-1; 02013497 FINISHPT ~ GT2; 02013500 - IF LIBINDEX>0 THEN DIRECTORY[(LIBARRAY[LIBINDEX-3],FILEINDEX) 02013505 + IF LIBINDEX>0 THEN DIRECTORY[(LIBARRAY[LIBINDEX-3].FILEINDEX) 02013505 |3,0] ~ RECOUNT -1; 02013510 RECOUNT~GT1; 02013515 IF EXAMIN(LCR) ! "%" THEN 02013516 @@ -2031,7 +2031,7 @@ PROCEDURE SEARCHLIB(DOLLAR); VALUE DOLLAR; BOOLEAN DOLLAR; 02013165 MOVE(1,INFO[LASTSEQROW,LASTSEQUENCE],LIBARRAY[LIBINDEX+1]); 02013520 MOVE(1,INFO[LASTSEQROW,LASTSEQUENCE],SEQSUM); 02013525 IF LASTUSED{2 OR LASTUSED=5 THEN GTI1~0 02013526 - ELSE IF MAXLTLCR.[33:15]=NCR.[33:15]<11 THEN 02013527 + ELSE IF MAXLTLCR.[33:15]-NCR.[33:15]<11 THEN 02013527 GTI1~MKABS(LIBRARY[FILEINX](0)) ELSE GTI1~(NCR+2).[33:15]; 02013528 LIBARRAY[LIBINDEX+2],NCRLINK~GTI1.[33:15]; COMMENT GTI1=NCR; 02013530 IF LASTUSED{2 OR LASTUSED=5 THEN 02013533 @@ -2078,11 +2078,12 @@ PROCEDURE SEARCHLIB(DOLLAR); VALUE DOLLAR; BOOLEAN DOLLAR; 02013165 SPACE(LIBRARY[FILEINX],GT3); 02013680 02013681 02013682 - READ(LIBRARY[FILEINX],GT3); 02013685 + READ(LIBRARY[FILEINX]); 02013685 02013690 02013693 + 02013695 MOVE(1,LIBRARY[FILEINX](0),GTI1); 02013697 - IF GTI1!GT2 AND GTI1 !0 THEN 02013699 + IF GTI1!GT2 AND GTI1 ! 0 THEN 02013699 BEGIN COMMENT ERROR 507 MEANS TAPE POSITIONING ERROR; 02013701 FLAG(507); GO TO EXIT; 02013702 END; 02013703 @@ -2152,7 +2153,7 @@ COMMENT "SCAN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 02067000 WHICH CHECKS FOR A QUANTITY BEING BROKEN ACROSS A CARD. "SCAN" 02068000 IS CONTROLLED BY A VARIABLE CALLED "RESULT". "SCAN" ALSO 02068500 INFORMS THE WORLD OF ITS ACTION BY MEANS OF THE SAME VARIABLE. 02069000 - HENCE THE VARIABLE "RESULTS" IS PASSED BY BOTH NAME AND VALUE. 02069500 + HENCE THE VARIABLE "RESULT" IS PASSED BY BOTH NAME AND VALUE. 02069500 THE MEANING OF "RESULT" AS INPUT IS: 02070000 VALUE MEANING 02070500 ===== ========================================= 02071000 @@ -2163,7 +2164,7 @@ COMMENT "SCAN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 02067000 2 LAST QUANTITY BUILT WAS SPECIAL CHARACTER. HENCE, 02073500 EXIT (INTERRUPTION BY END-OF-CARD BREAK IS NOT 02074000 IMPORTANT). 02074500 - 3 CONTINUE BUILDING A NUMBER (INTERRUPTED YB END-OF- 02075000 + 3 CONTINUE BUILDING A NUMBER (INTERRUPTED BY END-OF- 02075000 CARD BREAK). 02075500 4 LAST THING WAS AN ERROR (COUNT EXCEEDED 63). HENCE,02076000 EXIT (INTERRUPTION BY END-OF-CARD BREAK NOT 02076500 @@ -2184,7 +2185,7 @@ COMMENT "SCAN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 02067000 "SCAN" HAS PUT INTO THE "ACCUMULATOR". SINCE "SCAN" NEEDS 02084000 THE VALUE SO THAT IT CAN PUT MORE CHARACTERS INTO THE "ACCUM- 02084500 ULATOR" AND NEEDS TO UPDATE "COUNT" FOR THE OUTSIDE WORLD. 02085000 - "COUNT" IS PASSED BY BOTH NAME AND VALUE/ IT IS ALSO 02085500 + "COUNT" IS PASSED BY BOTH NAME AND VALUE. IT IS ALSO 02085500 CONVENIENT TO HAVE (63-COUNT). THIS IS CALLED "COMCOUNT". 02086000 "NCR" (NEXT CHARACTER TO BE SCANNED) IS ALSO PASSED BY 02086500 NAME AND VALUE SO THAT IT MAY BE UPDATED. 02087000 @@ -2196,7 +2197,7 @@ COMMENT "SCAN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 02067000 COUNT,ST2,NCRV,ST1); 02090000 VALUE COUNTV, COMCOUNT,RESULTV,ST2,NCRV,ST1; 02090500 BEGIN 02091000 - LABEL DEBLANK,NUMBERS,IDBLDR,GNC,K,EXIT,FINIS.L,ERROR, 02091500 + LABEL DEBLANK,NUMBERS,IDBLDR,GNC,K,EXIT,FINIS,L,ERROR, 02091500 COMMENTS,COMMANTS; 02092000 DI:=RESULT; DI:=DI+7; SI:=NCRV; 02092500 COMMENT SETUP "DI" FOR A CHANGE IN "RESULT" AND "SI" FOR A LOOK AT 02093000 @@ -2431,7 +2432,7 @@ END; %105-02202090 IF ERRORCOUNT}ERRMAX THEN ERR(611);% ERR LIMIT EXCEEDED - STOP. 02211500 USETHESWITCH: 02211750 GO TO USESWITCH[LASTUSED]; 02212000 - MOVE(1,TEXT[LASTUSED,LINKR,LASTUSED,LINKC], 02212250 + MOVE(1,TEXT[LASTUSED.LINKR,LASTUSED.LINKC], 02212250 DEFINEARRAY[DEFINEINDEX-2]); 02212500 LASTUSED := LASTUSED + 1; 02212750 NCR := LCR-1; 02213000 @@ -2568,7 +2569,7 @@ PROCEDURE INCLUDECARD; %107-02238100 REAL STREAM PROCEDURE SCNN(A,B); VALUE B; %107-02238130 BEGIN %107-02238140 SI:=A; DI:=LOC SCNN; DS:=8 LIT"0 "; %107-02238150 - DI:=DI-7; SI:=SI+3; DS:=8 CHR; %107-02238160 + DI:=DI-7; SI:=SI+3; DS:=B CHR; %107-02238160 END; %107-02238170 STREAM PROCEDURE MVE(A,B,C,D); VALUE B,C; %107-02238180 BEGIN %107-02238190 @@ -2624,8 +2625,8 @@ GETEM: %107-02238560 WRITE(NEWTAPE,10,LBUFF[*]); %107-02238590 END; %107-02238600 IF INSERTMID=0 THEN ERR(613); %107-02238602 - IF INSERTMID=0 THEN INSERTFID:=TIME(-1); %107-02238610 - IF INSERTMID=0 THEN %107-02238620 + IF INSERTFID=0 THEN INSERTFID:=TIME(-1); %107-02238610 + IF INSERTFID=0 THEN %107-02238620 BEGIN INSERTFID:=INSERTMID; INSERTMID:=0; END; %107-02238630 IF INSERTDEPTH > 1 THEN CLOSE(LF,RELEASE); %107-02238640 FILL LF WITH INSERTMID,INSERTFID; %107-02238650 @@ -2660,7 +2661,7 @@ REAL PROCEDURE CONVERT; 02248000 FOR N~ TCOUNT+N STEP 8 UNTIL COUNT- 1 DO 02252000 IF DPTOG THEN 02253000 BEGIN 02254000 - DOUBLE(THI,TLO,100000000.0,0,|,CONV(ACCUM[1],N,8),0,+,?, 02255000 + DOUBLE(THI,TLO,100000000.0,0,|,CONV(ACCUM[1],N,8),0,+,~, 02255000 THI,TLO); 02256000 T~THI; 02257000 END ELSE 02258000 @@ -2675,7 +2676,7 @@ PROCEDURE DUMPINFO; 02264000 STREAM PROCEDURE OCTALWORDS(S,D,N); VALUE N; 02264400 BEGIN 02264450 SI:=S; DI:=D; 02264500 - N(2(8(DS:=3 RESET; SKIP 1 SB)); DS:=1 LIT " "); DS:=2 LIT " ");02264550 + N(2(8(DS:=3 RESET; 3(IF SB THEN DS:=1 SET ELSE 02264550 DS:=1 RESET; SKIP 1 SB)); DS:=1 LIT " ");DS:=2 LIT" "); 02264600 END OF OCTALWORDS; 02264650 STREAM PROCEDURE ALPHAWORDS(S,D,N); VALUE N; 02264700 @@ -2726,7 +2727,7 @@ COMMENT DOLLARCARD HANDLES THE COMPILER CONTROL CARDS. 02282000 HISTORY OF THE SETTINGS OF THIS OPTION. 02293000 02294000 IN "FINDOPTION", ALL COMPILER-DEFINED OPTIONS ARE USUALLY 02295000 - LOCATION BASED UPON A UNIQUE NUMBER ASSIGNED TO EACH. 02296000 + LOCATES BASED UPON A UNIQUE NUMBER ASSIGNED TO EACH. 02296000 FOR ALL USER-DEFINED OPTIONS, A SEQUENTIAL TABLE SEARCH IS 02297000 INITIATED USING "USEROPINX" AS THE INITIAL INDEX INTO THE 02298000 "OPTIONS" ARRAY. IF THE NUMBER OF COMPILER-DEFINED OPTIONS 02299000 @@ -2806,7 +2807,7 @@ LENGTH: 02374000 IF Q = "1%0000" THEN GO EXIT; 02375000 IF Q = "1$0000" THEN 02376000 BEGIN SWITCHIT(PRINTDOLLARBIT); GO AGAIN END; 02377000 - IF Q = "1.0000" THEN GO SKANAGAIN; 02378000 + IF Q = "1,0000" THEN GO SKANAGAIN; 02378000 GO WHATISIT; 02379000 LENGTH2: % NO OPTIONS OF THIS LENGTH ARE CURRENTLY IMPLEMENTED. 02380000 LENGTH3: 02381000 @@ -2983,7 +2984,7 @@ LENGTH6: 02518000 "LITC"," ", 02537000 "OPDC","DESC", 02538000 10,"DFL ", 11,"NOP ", 12,"XRT ", 16,"ADD ", 17,"AD2 ", 18,"PRL ", 02539000 - 19,"LNG ", 21,"GFQ ", 22,"BBC ", 24,"INX ", 35,"LOR ", 37,"GTR ", 02540000 + 19,"LNG ", 21,"GEQ ", 22,"BBC ", 24,"INX ", 35,"LOR ", 37,"GTR ", 02540000 38,"BFC ", 39,"RTN ", 40,"COC ", 48,"SUB ", 49,"SB2 ", 64,"MUL ", 02541000 65,"ML2 ", 67,"LND ", 68,"STD ", 69,"NEQ ", 71,"XIT ", 72,"MKS ", 02542000 128,"DIV ",129,"DV2 ",130,"COM ",131,"LQV ",132,"SND ",133,"XCH ", 02543000 @@ -3122,7 +3123,7 @@ DOT: 02668000 NHI:=NLO:=0; 02681000 C:=0; FSAVE:=0; GO FPART; 02682000 ATSIGN: 02683000 -% RESULT:0; SCANNER; 02684000 +% RESULT:=0; SCANNER; 02684000 % IF COUNT>17 THEN GO ARGH; 02685000 % IF OCTIZE(ACCUM[1],COUNT-1,17-COUNT,C) THEN GO ARGH 02686000 % ELSE GO NUMBEREND; 02687000 @@ -3170,8 +3171,8 @@ CROSSHATCH: 02714000 BEGIN % PURGING PARAMETERS FROM DEFSTACKHEAD %122-02722000 GT2 := TAKE(GT2).LINK; % GET POINTER TO NEW DEFSTACKHEAD 02722500 DO %122-02723000 - PUT(TEXT[(NEXTTEXT:=(GT1:=TAKE(DEFSTACKHEAD)),DYNAM-1) 02723500 - ,LINKR,NEXTTEXT,LINKC],DEFSTACKHEAD) %122-02724000 + PUT(TEXT[(NEXTTEXT:=(GT1:=TAKE(DEFSTACKHEAD)).DYNAM-1) 02723500 + .LINKR,NEXTTEXT.LINKC],DEFSTACKHEAD) %122-02724000 % THIS RESTORES THE PREVIOUS ELBAT WORD FOR %122-02724500 % THIS PARAMETER IN CASE OF NESTED DEFINE. %122-02725000 UNTIL %122-02725500 @@ -3255,7 +3256,7 @@ IPART: TCOUNT:=FSAVE:=0; C:=CONVERT; 02758000 IF DPTOG THEN 02794000 BEGIN 02795000 DOUBLE(CONVERT,TLO,TEN[(COUNT-TCOUNT)MOD 12], 02796000 - 0,.,:=,THI,TLO); 02797000 + 0,/,:=,THI,TLO); 02797000 FOR T:=12 STEP 12 UNTIL COUNT - TCOUNT DO 02798000 DOUBLE(THI,TLO,TEN[12],0,/,:=,THI,TLO); 02799000 DOUBLE(THI,TLO,NHI,NLO,+,:=,NHI,NLO); 02800000 @@ -3268,7 +3269,7 @@ IPART: TCOUNT:=FSAVE:=0; C:=CONVERT; 02758000 IF EXAMIN(NCR)="@" THEN 02807000 BEGIN 02808000 RESULT:=0; SCANNER; 02809000 - FPART: TCOUNT:=COUNT; 02810000 + EPART: TCOUNT:=COUNT; 02810000 C:=C|1.0; 02811000 RESULT:=7; SCANNER; 02812000 IF T:=EXAMIN(NCR)>9 THEN 02813000 @@ -3364,7 +3365,7 @@ COMMENT SETUP FOR DEFINED IDS - SEE DEFINEGEN FOR MORE DETAILS; 02895000 BEGIN FLAG(139);GO ARGH END; 02899000 DEFINEARRAY[DEFINEINDEX]:=LASTUSED & GT1[18:33:15]; 02900000 LASTUSED:=T.DYNAM; 02901000 - DEFINEARRAY[DEFINEINDEX+2]262144|LCR+NCR; 02902000 + DEFINEARRAY[DEFINEINDEX+2]:=262144|LCR+NCR; 02902000 LCR:=(NCR:=MKABS(DEFINEARRAY[DEFINEINDEX+1]))+1; 02903000 PUTSEQNO(GT4,LCR); 02904000 TURNONSTOPLIGHT("%",LCR); DEFINEINDEX:=DEFINEINDEX+3; 02905000 @@ -3382,7 +3383,7 @@ COMPLETE: 02909000 BSPOINT:=BSPOINT - REAL(BSPOINT > 0); % PREVENT INVALID INDEX 02910700 END; 02910800 STOPDEFINE:=FALSE; COMMENT ALLOW DEFINES AGAIN; 02911000 - IF NXTELBT:=NXTELBT+ ! > 74 THEN 02912000 + IF NXTELBT:=NXTELBT+1 > 74 THEN 02912000 IF NOT MACROID THEN 02913000 BEGIN 02914000 COMMENT ELBAT IS FULL: ADJUST IT; 02915000 @@ -3690,7 +3691,7 @@ PROCEDURE EMITC(REPEAT,OPERATOR); VALUE REPEAT,OPERATOR; 04010000 CODE CONSISTS OF A SERIES OF DUPS AND MULS, AS WITH 04038000 EMITLNG CARE MUST BE TAKEN TO AVOID CONFUSION WITH LINKS 04039000 AND CONDITIONAL EXPRESSIONS. IF THESE SPECIAL CASES DO 04040000 - NOT HOLD, THEN A CALL ON AN INTRINSIC PROCEDURE, XTOTHE, 04041000 + NOT HOLD, THEN A CALL ON AN INTRINSIC PROCEDURE, XTOTHEI, 04041000 IS CONSTRUCTED. XTOTHEI PRODUCES A SERIES OF MULTIPLIES 04042000 (APPROXIMATELY LN I MULTIPLIES) IF I IS AN INTEGER. 04043000 OTHERWISE IT CALLS LN AND EXP; 04044000 @@ -3777,7 +3778,7 @@ PROCEDURE EMITC(REPEAT,OPERATOR); VALUE REPEAT,OPERATOR; 04010000 BRANCH ~ BRANCH&1[39:47:1]; 04120400 GT1 ~ TOWARDS DIV 4 - (FROM-1) DIV 4 END; 04120500 EMITNUM(ABS(GT1)); 04121000 - EMITO(BRANCH&(REAL(GT1}0)+1)[42:46:2]); 04122000 + EMITO(BRANCH&(REAL(GT1} 0)+1)[42:46:2]); 04122000 IF BOOLEAN(BRANCH.[38:1]) THEN DIALA ~ DIALB ~ 0; 04123000 L ~ TL; 04124000 END EMITB; 04125000 @@ -3827,7 +3828,7 @@ PROCEDURE EMITC(REPEAT,OPERATOR); VALUE REPEAT,OPERATOR; 04010000 DIALA ~ DIALB ~ 0; 04169000 FOR J ~ 1 STEP 2 UNTIL LASTENTRY DO 04170000 BEGIN 04171000 - ADJUST; TEMPL~L; L~INFO[0.255-J+1]; 04172000 + ADJUST; TEMPL~L; L~INFO[0,255-J+1]; 04172000 CREL ~ FALSE; 04173000 DO BEGIN 04174000 IF D~(TEMPL-L+3)DIV 4}128 THEN 04175000 @@ -3895,7 +3896,7 @@ PROCEDURE EMITC(REPEAT,OPERATOR); VALUE REPEAT,OPERATOR; 04010000 INTEGER N,I ; 04237000 N ~ 64 ; 04238000 FOR I ~ 66 STEP IF Q[I] 47 THEN FLAG(95); 06331100 + SKIP2: IF THIRD { 0 OR THIRD > 47 THEN FLAG(95); 06331100 END ELSE 06331200 BEGIN 06331300 L3: IF NOT P2 THEN 06331500 @@ -5204,7 +5205,7 @@ PROCEDURE COMPOUNDTAIL; 07006000 ERR(119); GO TO ANOTHER END; 07015000 ENDTOG~TRUE; 07016000 DO STOPDEFINE~TRUE UNTIL 07017000 - STEPI{END AND ELCLASS}UNTILV 07018000 + STEPI{ENDV AND ELCLASS}UNTILV 07018000 OR NOT ENDTOG; 07019000 ENDTOG~FALSE; 07020000 IF BEGINCTR ~ BEGINCTR-1 ! 0 EQV ELCLASS = PERIOD 07021000 @@ -5609,10 +5610,10 @@ FCR:= (LCR:=MKABS(TBUFF[9]))-9 END; %104-07025030 L32: 07378000 COMMENT LITERAL; 07379000 EMITL(ADDRSF); 07380000 - BSXXX: ACLASS ~ REALID; 07381000 + BSXX: ACLASS ~ REALID; 07381000 BSX: IF SBIT AND NOT VBIT THEN FLAG(150); GO TO BS; 07382000 L31:L33: 07383000 - EMITNUM(C); GO TO BSXXX; 07384000 + EMITNUM(C); GO TO BSXX; 07384000 EXIT: STACKCT ~ 0 END OF ACTUALPARAPART; %A 07385000 COMMENT PROCSTMT COMPILES CODE FOR ALL PROCEDURE STATEMENTS AND 07386000 FUNCTION CALLS (EXCEPT FOR STREAM PROCEDURES). THE 07387000 @@ -5651,7 +5652,7 @@ FCR:= (LCR:=MKABS(TBUFF[9]))-9 END; %104-07025030 EMITL(JUNK); EMITL(PASSTYPE(HOLE)); 07419000 EMITPAIR(GNAT(POWERSOFTEN),LOD);PASSALPHA(HOLE);07420000 EMITPAIR(GNAT(CHARI ),LOD); PASSMONFILE(TAKE07421000 - (GIT(HOLE)),FUNCMONFILE); %109-07422000 + (GIT(HOLE)).FUNCMONFILE); %109-07422000 EMITNUM(1&CARDNUMBER[1:4:44]); %109-07422100 EMITV(GNAT(PRINTI)); 07423000 END; 07424000 @@ -5796,8 +5797,8 @@ EXIT: 07472000 BEGIN EMITO(MKS); EMITL(9); EMITV(5); EMITO(BFW) END 07529100 ELSE BEGIN EMITO(PRTE); EMITO(LOD); EMITO(BFW) END; 07529200 EXIT:END GOSTMT; 07530000 - COMMENT GOGEN GENERATES CODE TO GO TO A LABEL. GIVEN THAT LABEL AS A 07531000 - PARAMETER. GOGEN ASSUMES THA THE LABEL IS LOCAL. THE 07532000 + COMMENT GOGEN GENERATES CODE TO GO TO A LABEL, GIVEN THAT LABEL AS A 07531000 + PARAMETER. GOGEN ASSUMES THAt THE LABEL IS LOCAL. THE 07532000 PARAMETER BRANCH TYPE TELL WHETHER THE JUMP IS CONDITIONAL07533000 OR NOT; 07534000 PROCEDURE GOGEN(LABELBAT,BRANCHTYPE); 07535000 @@ -5966,7 +5967,7 @@ LOOP: 07646470 ERRORTOG ~ TRUE; 07646475 IF STEPI = SEMICOLON THEN 07646480 BEGIN COMMENT NULL STATEMENT; 07646485 - TEDOC[N,[38:3], N.[41:7]] ~ NULL; 07646490 + TEDOC[N.[38:3], N.[41:7]] ~ NULL; 07646490 NULL ~ N ~ N+1; GO TO LOOP; 07646495 END; 07646500 TEDOC[N.[38:3], N.[41:7]] ~ L-ADR; N ~ N + 1; 07646510 @@ -5979,7 +5980,7 @@ LOOP: 07646470 END ELSE IF ELCLASS = ENDV THEN 07646538 BEGIN IF NOT GOTOG THEN 07646540 BEGIN EMIT(LINK); LINK ~ L ~ L+1; END; 07646543 - TEDOC[N,[38:3], N.[41:7]]~ L-ADR; 07646545 + TEDOC[N.[38:3], N.[41:7]]~ L-ADR; 07646545 N ~ N+1; 07646548 END; 07646550 IF ELCLASS ! ENDV THEN BEGIN ERR( 71); GO TO LOOP END; 07646555 @@ -6010,7 +6011,7 @@ LOOP: 07646470 BEGIN TEMP ~ GET(LINK-2); 07646720 EMITB(BFW, LINK, L); 07646730 LINK ~ TEMP; 07646740 - IF LASTENTRY }126 THEN 07646750 + IF LASTENTRY } 126 THEN 07646750 BEGIN REAL C; 07646760 COMMENT PERMITS SEVERAL LONG BRANCHES IF NECESSARY; 07646770 C ~ BUMPL; 07646780 @@ -6211,7 +6212,7 @@ PROCEDURE CMPLXSTMT; FORWARD ; 07777777 GO TO XXX; 07809000 END; 07810000 IF Q="7COMPL" THEN BEGIN CMPLXSTMT; GO XXX END ; 07810100 - IF Q = "3ZIPOO" THEN 07811000 + IF Q = "3ZIP00" THEN 07811000 BEGIN IF TABLE(I+1) = WITHV THEN 07812000 BEGIN STEPIT; 07813000 IF STEPI < BOOARRAYID OR ELCLASS > 07814000 @@ -6313,7 +6314,7 @@ PROCEDURE KLUDGE(T); VALUE T; INTEGER T; 07930000 BEGIN COMMENT KLUDGE HANDLES ARRAY-ROW READS AND WRITES FOR 07931000 THOSE CASES WHICH DO NOT NEED TO GO THROUGH THE 07932000 FORMATTING INTRINSICS. A NEW MCP INTRINSIC IS 07933000 - USED. TO FURTHER IMPROVE SPEED/DECREASE CORE USE; 07934000 + USED, TO FURTHER IMPROVE SPEED/DECREASE CORE USE; 07934000 LABEL EXIT; 07935000 L ~ ABS(T); 07936000 AEXP; 07937000 @@ -6384,7 +6385,7 @@ PROCEDURE KLUDGE(T); VALUE T; INTEGER T; 07930000 INFO[0,K] ~ A ~ C; B ~ TRUE END 08035000 ELSE BEGIN 08036000 B ~ FALSE; A ~ ELBAT[I]; 08037000 - SIMPLE ~ REALID { ELCLASS AND ELCLASS{INTID END; 08038000 + SIMPLE ~ REALID { ELCLASS AND ELCLASS { INTID END; 08038000 COMMENT TEST EMITS THE STEP-UNTIL ELEMENT TEST; 08040000 PROCEDURE TEST; 08041000 BEGIN 08042000 @@ -6658,7 +6659,7 @@ PROCEDURE READSTMT; 08290000 ::=REVERSE/ 08303000 ::=/ 08304000 ::=[NO]/ 08305000 - ::=[:<[PARITY LABEL>]/ 08306000 + ::=[:]/ 08306000 []/[:]/08307000 08308000 CIMI IS THE CHARACTER MODE INPUT EDITING ROUTINE. 08309000 @@ -6787,7 +6788,7 @@ PROCEDURE READSTMT; 08290000 %%% THE EXP-SIGN BIT OF DSKADDR,X"S ARE EMPTIES 08411030 %%% IN THE ABOVE, NS = NO OR STOP. 08411040 STEPIT; %%% STEP OVER [, AND POINT AT NEXT ITEM. 08412000 - IF RR1~IF ACCUM[1]="2N0000" THEN 1 ELSE 08412010 + IF RR1~IF ACCUM[1]="2NO000" THEN 1 ELSE 08412010 IF ACCUM[1]="4STOP0" THEN 2 ELSE 08412020 0 ! 0 THEN %%% HAVE [NS 08412030 IF STEPI=COMMA THEN %%% HAVE [NS, 08412040 @@ -7344,7 +7345,7 @@ WRITXFORM: IF STEPI = RTPAREN 08647000 EMITPAIR(ELBAT[I].ADDRESS,LOD); 08696520 END; 08696530 STEPIT; 08696540 - IF CHECK(RTPAREN,448( THEN GO TO EXIT; 08696550 + IF CHECK(RTPAREN,448) THEN GO TO EXIT; 08696550 COMMENT 448 IS IMPROPER LIST DELMETER IN WRITE STATEMENT; 08696560 STEPIT; 08697000 EMITCALL: IF ELCLASS=LFTBRKET AND NOT ARC THEN 08698000 @@ -7383,7 +7384,7 @@ PROCEDURE LOCKSTMT; 08701000 SAVE OR RELEASE LITERAL THAT 08719000 GETS PASSED TO KEN MEYERS; 08720000 STEPIT; 08721000 - IF CHECK(LEFTPAREN,45) 08722000 + IF CHECK(LEFTPAREN,450) 08722000 THEN GO TO EXIT; 08723000 COMMENT ERROR NUMBER 450 MEANS MISSING LEFT PARENTHESIS 08724000 IN A LOCK STATEMENT; 08725000 @@ -7447,7 +7448,7 @@ PROCEDURE CLOSESTMT; 08756000 ** ** ** ** ** ** *** ** ** ** ** ** ; 08771400 LABEL EXIT; COMMENT THE LABEL EXIT APPEARS AFTER THE LAST 08772000 EXECUTABLE STATEMENT IN THE CLOSESTMT ROUTINE; 08773000 - DEFINE THISL = RR1#; COMMENT THUSL IS A TEMP CELL 08774000 + DEFINE THISL = RR1#; COMMENT THISL IS A TEMP CELL 08774000 FOR THE CURRENT LREGISTER; 08775000 DEFINE LTEMP = RR2#; COMMENT LTEMP CONTAINS THE 08776000 L REGISTER SETTING FOR THE 08777000 @@ -7588,10 +7589,10 @@ PROCEDURE EXPLICITFORMAT; 08860050 ... MSCW 08892000 0 SORT-FILE MOTHER 08893000 0 DESCRIPTORS 08894000 - 0 " 08895000 - 0 " 08896000 - 0 " 08897000 - 0 " 08898000 + 0 . 08895000 + 0 . 08896000 + 0 . 08897000 + 0 . 08898000 MSCW; 08900000 PROCEDURE MERGESTMT; 08901000 BEGIN INTEGER J,K,FILER,FILEND; 08902000 @@ -7603,7 +7604,7 @@ PROCEDURE EXPLICITFORMAT; 08860050 IF OPTOG~(STEPI=FILEID OR ELCLASS=SUPERFILEID) THEN EMIT(0) 08908000 ELSE IF NOT OUTPROCHECK(ELBAT[I]) THEN GO QUIT ELSE 08909000 EMITPAIR(ELBAT[I].ADDRESS,LOD); 08910000 - EMIT(0);IF OPTOG THEN BEGIN PASSFILE; I+I-1 END ELSE 08911000 + EMIT(0);IF OPTOG THEN BEGIN PASSFILE; I~I-1 END ELSE 08911000 EMITN(GNAT(SORTA)); 08911100 IF NOT COMMACHECK THEN GO QUIT; 08912000 EMIT(0); EMITL(REAL(TRUE AND NOT OPTOG)); EMIT(0); 08913000 @@ -7727,7 +7728,7 @@ STREAM PROCEDURE WRTINTRSC(SGNO,ALFA,PRT,FIL); 09010000 3(IF SC="0" THEN % DONT PRINT LEADING ZEROES. 09014000 BEGIN SI:=SI+1; TALLY:=TALLY+63 END ELSE JUMP OUT); 09015000 COUNT:=TALLY; DS:=COUNT CHR; DS:=4 LIT") = "; 09016000 - SI:=ALFA; SI:=SI+2; DEST:=DI; SAVE DI. 09017000 + SI:=ALFA; SI:=SI+2; DEST:=DI; % SAVE DI. 09017000 DI:=LOC COUNT; DS:=7 LIT"0"; DS:=CHR; % NO OF CHARS IN NAME. 09018000 DI:=DEST; DS:=COUNT CHR; % INT. NAME. 09019000 DS:=29 LIT" INTRINSIC, SEGMENT NUMBER = "; 09020000 @@ -7811,7 +7812,7 @@ COMMENT START FILLING TABLES NEEDED TO COMPILE A PROGRAM; 09040100 09056000 OCT1141000000000000, OCT1131200000000000, 09057000 OCT1121440000000000, OCT1111750000000000, OCT1102342000000000, 09058000 - OCT1045753604000000, OCT1063641100000000, OCT1054611320000000, 09059000 + OCT1073032400000000, OCT1063641100000000, OCT1054611320000000, 09059000 OCT1045753604000000, OCT1037346545000000, OCT1011124027620000, 09060000 OCT0001351035564000, OCT0011643245121000, OCT0022214116345200,09061000 OCT0032657142036440, OCT0043432772446150, OCT0054341571157602,09062000 @@ -7828,7 +7829,7 @@ COMMENT START FILLING TABLES NEEDED TO COMPILE A PROGRAM; 09040100 OCT0501060411731665, OCT0511274514320242, OCT0521553637404312, 09073000 OCT0532106607305375, OCT0542530351166674, OCT0553256443424453, 09074000 OCT0564132154331566, OCT0575160607420123, OCT0606414751324150, 09075000 - OCT0621012014261120, OCT0631214417455344, OCT0641457523370635, 09076000 + OCT0621012014361120, OCT0631214417455344, OCT0641457523370635, 09076000 OCT0651773450267005, OCT0662372362344606, OCT0673071057035747, 09077000 OCT0703707272645341, OCT0714671151416632, OCT0726047403722400, 09078000 OCT0737461304707100, OCT0751137556607072, OCT0761367512350710, 09079000 @@ -7906,8 +7907,8 @@ COMMENT THIS IS THE FULL FOR THE SECOND ROW OF INFO: 09081000 OCT0430000020000773, "4SAVE0", COMMENT 398;09151000 OCT0460000000000000, "5SPACE", COMMENT 400;09152000 OCT1110000000000000, "4STEP0", COMMENT 402;09153000 - OCT0430000022000000, "6STREA", "M0000000", COMMENT 404;09154000 - OCT0430000015000562, "6SWITC", "H0000000", COMMENT 407;09155000 + OCT0430000220000000, "6STREA", "M0000000", COMMENT 404;09154000 + OCT0430000150000562, "6SWITC", "H0000000", COMMENT 407;09155000 OCT1120000000000000, "4THEN0", COMMENT 410;09156000 OCT1130000000000000, "2TO000", COMMENT 412;09157000 OCT0360000010000000, "4TRUE0", COMMENT 414;09158000 @@ -7929,9 +7930,10 @@ COMMENT THIS IS THE FULL FOR THE SECOND ROW OF INFO: 09081000 OCT0140000000040000, "3ZIP00", 0, COMMENT 455;09174000 OCT0130000000060000, "9OUTPU", "T(W)0000", OCT0000000000100000,%461;09175000 OCT0130000050060000, ":BLOCK", " CONTROL", OCT0000000000200000,%465;09176000 - OCT0130000000060000, "4SORT0", 0, OCT0000000000400000,% 473 09177000 - OCT0130000000040000, "4DUMP0", OCT0000000000500000,%477;09178000 - OCT0130000000060000, "#X TO ", "THE 1000", OCT0000000000600000,%480;09180000 + OCT0130000000060000, "8INPUT", "(W)00000", OCT0000000000300000,%469;09177000 + OCT0000000000060000, "4SORT0", 0, OCT0000000000400000,% 473 09178000 + OCT0130000000040000, "4DUMP0", OCT0000000000500000,%477;09179000 + OCT0130000000060000, "#X TO ", "THE I000", OCT0000000000600000,%480;09180000 OCT0130000000060000, ":GO TO", " SOLVER ", OCT0000000002100000,%484;09181000 OCT0130000140060000, ":ALGOL", " WRITE ", OCT0000000002200000,%488;09182000 OCT0130000150060000, ":ALGOL", " READ ", OCT0000000002300000,%492;09183000 @@ -7963,7 +7965,7 @@ COMMENT THIS IS THE FULL FOR THE SECOND ROW OF INFO: 09081000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,424, 0; %WF 09196900 COMMENT THIS IS THE FILL FOR THE SPECIAL CHARACTORS; 09197000 FILL SPECIAL[*] WITH 09198000 - OCT1200000000000000, COMMENT #; OCT0000000000100000, COMMENT @; 09199000 + OCT1200000000200000, COMMENT #; OCT0000000000100000, COMMENT @; 09199000 OCT0000000000000000, OCT1160000000120000, COMMENT :; 09200000 OCT1340000450002763, COMMENT >; OCT1340000250002662, COMMENT }; 09201000 OCT1350000200000000, COMMENT +; OCT0000000000000000, 09202000 @@ -8128,7 +8130,7 @@ NEXTTEXT~26 ; 09251300 EMITL(0);EMIT0(MKS); 09272000 GT1~PROGDESCBLDR(3,0,0); 09273000 GT1 := GETSPACE(TRUE,-5); % SEG.#2 DESCR. 09274000 - INSERTCO:=1; %107-09274100 + INSERTCOP:=1; %107-09274100 ERRORTOG~TRUE; BLOCK(FALSE); 09275000 COMMENT THIS CODE WILL PUT AN EXTRA CARD ON OCRDIMG TAPE 09275100 THUS AVOIDING E.O.F. NO LABEL CONDITION WHEN PATCHING 09275200 @@ -8140,6 +8142,7 @@ NEXTTEXT~26 ; 09251300 WRITE(NEWTAPE,10,LIBARRAY[*]) 09275500 END; 09275550 09275600 + 09275650 09275700 09275750 09275800 @@ -8214,9 +8217,9 @@ COMMENT THE PRT AND SEGMENT DICTIONARY ARE NOW BUILT; 09333000 09345000 09346000 09347000 - FOR I~0 STEP 1 UNTIL PDINX DO 09348000 + FOR I~0 STEP 1 UNTIL PDINX-1 DO 09348000 IF (GT1~PDPRT[I.[37:5],I.[42:6]]).[38:10]=0 THEN 09349000 - BEGIN PR[ADR~GT1.[8:10]; SEGMNT~GT1.[28:10]; 09350000 + BEGIN PRTADR~GT1.[8:10]; SEGMNT~GT1.[28:10]; 09350000 LINK~SEGDICT[SEGMNT.[36:5],SEGMNT.[41:7]].[8:10]; 09351000 MDESC(GT1.[18:10]&SEGMNT[18:33:15] 09352000 &(IF LINK=0 THEN SEGMNT+2048 ELSE LINK) 09353000 @@ -8233,11 +8236,11 @@ COMMENT THE PRT AND SEGMENT DICTIONARY ARE NOW BUILT; 09333000 COMMENT CODE TO ADD IN CORE STORAGE REQUIREMENTS; 09361010 GTI1~0; 09361020 COMMENT ADD IN ARRAYS; 09361030 - GTI1~GTI1+( IF NOOFARRAYS =0 THEN 0 ELSE IF NOOFARRAYS{4 09361040 + GTI1~GTI1+( IF NOOFARRAYS =0 THEN 0 ELSE IF NOOFARRAYS {4 09361040 THEN 2000 ELSE IF NOOFARRAYS { 8 THEN 3500 09361050 ELSE 5000); 09361060 COMMENT ADD IN SEGMENT SIZE REQUIREMENTS; 09361070 - GTI1~GTI1+ (IF NEWINX { 1000 THEN NEWINX ELSE IF NEWINX{2000 09361080 + GTI1~GTI1+ (IF NEWINX { 1000 THEN NEWINX ELSE IF NEWINX {2000 09361080 THEN 1000 ELSE NEWINX/2); 09361100 COMMENT ADD IN STACK AND PRT; 09361110 GTI1~GTI1+ 512 + PRTIMAX; 09361120 @@ -8404,7 +8407,7 @@ END END END PROGRAM; 09420000 W ~ REPEAT & W [ 6:42:6] 10091000 & SKIP [32:42:6] 10092000 & W1 [28:44:4] 10093000 - & W2 [28:44:4] 10094000 + & W2 [24:44:4] 10094000 & D1 [20:44:4] 10095000 & D2 [16:44:4] 10096000 & CODE [ 2:44:4] 10097000 @@ -8498,7 +8501,7 @@ END END END PROGRAM; 09420000 IF ELCLASS = "." THEN 10150155 BEGIN %%% PHRASE IS AT LEAST UW. OR U*.. 10150160 NEXTENT ; 10150165 - IF ELCLASS = "*" OR ELCLASS{0 THEN 10150170 + IF ELCLASS = "*" OR ELCLASS { 0 THEN 10150170 BEGIN %%% PHRASE IS UW*.D*. 10150175 IF ELCLASS = "*" THEN REPEAT.[14:1]~1 10150185 ELSE SKIP ~ -ELCLASS ; 10150190 @@ -8576,7 +8579,7 @@ END END END PROGRAM; 09420000 PRINCIPALLY ELIMINATES BLANKS AND COMMENTS. PUTOGETHER 10194000 ACTUALLY DOES THE MECHANICAL WORK OF PROCESSING THE 10195000 CHARACTORS FROM ACCUM TO INFO. THE FINAL TRANSFER IS DONE10196000 - IN PACKINFO. THE OTHER FUNCTION SERVED DEFINEGEN IS 10197000 + IN PACKINFO. THE OTHER FUNCTION SERVED BY DEFINEGEN IS 10197000 THAT OF COUNTING DEFINES AND CROSSHATCHES IN ORDER TO 10198000 ALLOW NESTED DEFINES. 10199000 A WORD ON THE OVERALL PLAN OF ATTACK ON HANDLEING 10200000 @@ -8596,7 +8599,7 @@ END END END PROGRAM; 09420000 LASTUSED DOUBLES AS A DEVICE FOR DIRECTING THE FLOW OF 10214000 INFORMATION FROM I/O GEAR AND FROM INFO DURING ANALYSIS OF10215000 DEFINES. THIS STACKING IS DONE HERE BY THE TABLE ROUTINE.10216000 - THIRD IS READACARD WHICH HAS NOT BEEN FAIRLY WELL 10217000 + THIRD IS READACARD WHICH HAS NOW BEEN FAIRLY WELL 10217000 DESCRIBED. THE ONLY ADDITIONAL COMMENT NECESSARY IS THAT 10218000 LASTUSED SERVES AS AN INDEX TO FETCH NEXT WORD OF ALPHA 10219000 FROM INFO. READACARD FETCHES ONLY ONE WORD AT A TIME. 10220000 @@ -8714,7 +8717,7 @@ EXIT: DEFINECTR := 0; STREAMTOG~TSSTREAMTOG; % 1289 10284000 THEN BEGIN COMMENT GORUP OF LIST ELEMENTS; 10296000 DO BEGIN STEPIT; LISTELEMENT END UNTIL ELCLASS!COMMA;10297000 IF ELCLASS = RTBRKET THEN STEPIT ELSE ERR(158) END 10298000 - ELSE BEGIN COMMENT THE MEAT OF THE MATTER; 10299000 + ELSE BEGIN COMMENT THE MEAT OF THE MATTER: 10299000 VARIABLES AND EXPRESSIONS; 10300000 L ~ (T1~L)+1; COMMENT SAVE L FOR LATER FIXUP; 10301000 EMITPAIR(LSTRTN,STD); COMMENT PREPARE LSTRTN FOR 10302000 @@ -8728,7 +8731,7 @@ EXIT: DEFINECTR := 0; STREAMTOG~TSSTREAMTOG; % 1289 10284000 EMITN(ELBAT[I].ADDRESS); STEPIT END 10309000 ELSE BEGIN IF ELCLASS } BOOARRAYID 10310000 AND ELCLASS { INTARRAYID 10311000 - THEN BEGIN COMMENT IS EITHER A SUBSCRIPTED VARIABLE10312000 + THEN BEGIN COMMENT IS EITHER A SUBCRIPTED VARIABLE 10312000 OR THE BEGINNING OF AN EXPRESSION. THIS10313000 SITUATION IS VERY SIMILAR TO THAT IN 10314000 ACTUALPARAPART (SEE COMMENTS THERE FOR 10315000 @@ -9034,7 +9037,7 @@ MARKMONITORED:STEPIT; ACCUM[0]~-ABS(ELBAT[I]); 10573000 SUBSCRIPT EXPRESSION MUST BE GENERATED10610000 AND JUMPED AROUND, AN ACCIDENTAL ENTRY10611000 PROGRAM DESCRIPTOR CREATED AND THE 10612000 - ADDRESS SAVED IN SUBSCRIPT, SUBSCRIPT10613000 + ADDRESS SAVED IN SUBSCRIPT. SUBSCRIPT10613000 MUST BE MARKED FOR AN OPDC; 10614000 JUMPCHKNX; SUBSCRIPT~PROGDESCBLDR( 10615000 ADES,L,0); AEXP; EMITO(RTS); 10616000 @@ -9232,7 +9235,7 @@ PROCEDURE DMUP; 10681000 COMMENT ERROR 410 MEANS MISSING LEFT PAREN IN DUMP DEC; 10799000 JUMPCHKNX; ADJUST; DUMPLOC~PROGDESCBLDR10800000 (ADES,L,0); TESTLOC~L; L~L+3; 10801000 - LABELCTRINX~1; EMITO(NOP); BUMPL; 10802000 + LABELCTRINX~-1; EMITO(NOP); BUMPL; 10802000 STARTCALL:EMITO(MKS); STEPIT; ELBATWORD~-ABS(ELBAT10803000 [I]); 10804000 IF RANGE(BOOARRAYID,INTARRAYID) 10805000 @@ -9471,7 +9474,7 @@ BOOLEAN PROCEDURE SWITCHGEN(BEFORE,PD); %113-10954000 IF ELCLASS=ADOP OR ELCLASS=MULOP THEN 12022000 BEGIN 12023000 EMITO(ELBAT[I].ADDRESS+1); 12024000 - L4: IF (S~S-1){0THEN FLAG(282); STEPIT ; 12025000 + L4: IF (S~S-1){0 THEN FLAG(282); STEPIT ; 12025000 GO TO L3; 12026000 END; 12027000 IF ELCLASS=ASSIGNOP THEN 12028000 @@ -9728,8 +9731,8 @@ END DEFINEPARAM; 12166000 IF ACCUM1="6REMOT" THEN TYPE ~ 19 ELSE 13088035 IF ACCUM1="5PUNCH" THEN TYPE~0 ELSE 13088040 IF ACCUM1="4DISK0" THEN BEGIN STOPDEFINE~TRUE ; 13088050 - TYPE:=12; IF STEPI {IDMAX THEN BEGIN IF ACCUM1 := ACCUM[1] ! 13088060 - "6SERIA" THEN BEGIN IF ACCUM1 = "6RAND0" THEN 13088070 + TYPE:=12; IF STEPI { IDMAX THEN BEGIN IF ACCUM1 := ACCUM[1] ! 13088060 + "6SERIA" THEN BEGIN IF ACCUM1 = "6RANDO" THEN 13088070 TYPE:=TYPE-2 ELSE IF ACCUM1 = "6UPDAT" THEN 13088075 TYPE:=TYPE+1 ELSE 13088080 IF ACCUM1="7PROTE" THEN TYPE~26 ELSE 13088082 @@ -9802,7 +9805,7 @@ END DEFINEPARAM; 12166000 ELSE 13146000 BEGIN 13147000 STEPIT; AEXP; 13148000 - 13148100 + ; 13148100 IF (IOTEMP~GET(L-1)).[46:2] = 0 THEN IOTEMP~IOTEMP DIV 4 13148200 ELSE IOTEMP~ 256; 13148300 IF ELCLASS!COMMA 13149000 @@ -9960,7 +9963,7 @@ DEFINE SUBOP=48#, 13211000 13275000 13276000 L ~ TL END 13277000 - ELSE IF ELCLASS }PROCID AND ELCLASS { INTPROCID 13278000 + ELSE IF ELCLASS } PROCID AND ELCLASS { INTPROCID 13278000 THEN IF TAKE(POINTER+1) < 0 13279000 THEN BEGIN GT1 ~ 161; 13280000 RECOV: MOVE(9,INFO[POINTER.LINKR,POINTER.LINKC],ACCUM);13281000 @@ -10018,7 +10021,7 @@ MOVE(WORDCOUNT,ACCUM,INFO[NEXTINFO.LINKR,NEXTINFO.LINKC]); 13310000 IF DEFINING.[1:1] THEN % WE ARE DOING XREFING %116-13310900 XREFINFO[NEXTINFO] := 0; %116-13310950 LASTINFO~NEXTINFO; 13311000 - IF NEXTINFO ~ NEXTINFO+WORDCOUNT }8192 THEN 13312000 + IF NEXTINFO ~ NEXTINFO+WORDCOUNT } 8192 THEN 13312000 BEGIN FLAG(199); GO TO ENDOFITALL END; 13312500 END; 13313000 PROCEDURE ENTRY(TYPE); 13314000 @@ -10059,10 +10062,10 @@ COMMENT 13317000 FLAG(1); %118-13340000 VONF~P2; 13341000 IF ((FORMALF~PTOG)OR (STREAMTOG AND NOT STOPGSP)) AND NOT P2 13342000 - THEN ADDRSF ~ PG ~PG+1 13343000 + THEN ADDRSF ~ PJ ~PJ+1 13343000 ELSE IF STOPGSP THEN ADDRSF ~ 0 13344000 ELSE ADDRSF:=GETSPACE(P2,1); % ID IN ACCUM[1]. 13345000 - IF TYPE{INTARRAYID AND TYPE>BOOARRAYID 13346000 + IF TYPE{INTARRAYID AND TYPE}BOOARRAYID 13346000 THEN IF P2 THEN BEGIN COMMENT OWN ARRAY; 13347000 EMITL(ADDRSF); EMITN(10); 13347500 END 13347510 @@ -10263,7 +10266,7 @@ CSZ: IF LLITOG AND ULITOG THEN 13527000 IF T>MAXROW THEN MAXROW~T; 13537000 END 13538000 ELSE 13539000 - BEGIN IF NOT(LLITOG AND T3=) 13540000 + BEGIN IF NOT(LLITOG AND T3=0) 13540000 OR P2 13541000 THEN 13542000 BEGIN 13543000 @@ -10293,7 +10296,7 @@ COMMENT KEEP COUNT OF NO. OF ARRAYS DECLARED; 13551400 IF STEPI!COMMA THEN GO TO START; 13564000 IF NOT SPECTOG THEN EMITO(MKS); 13565000 SAVEINFO~NEXTINFO; 13566000 - I~I+1;ENTRY(TYPEV);SAVEINFO2~NEXTINFO+1;GO TO BETA1; 13567000 + I~I+1;ENTRY(TYPEV);SAVEINFO2~NEXTINFO~NEXTINFO+1;GO TO BETA1; 13567000 BETA2: 13568000 IF T~ TABLE(I~I+1)=COMMA OR T=RTBRKET 13569000 THEN 13570000 @@ -10345,7 +10348,7 @@ END; 13615000 PROCEDURE JUMPCHKNX; 13616000 COMMENT JUMPCHKNX DETERMINES WHETHER ANY EXECUTABLE CODE HAS BEEN 13617000 EMITTED AND IF SO WHETHER IT WAS JUST PREVIOUS TO THE 13618000 - NON EXECUTABLE ABOUT TO BE EMITTED.IF BOTH HTEN L IS BUMPED 13619000 + NON EXECUTABLE ABOUT TO BE EMITTED.IF BOTH THEN L IS BUMPED 13619000 AND SAVED FOR A LATER BRANCH; 13620000 IF NOT SPECTOG THEN 13621000 BEGIN 13622000 @@ -10491,7 +10494,7 @@ L: GT1:=(2|SGAVL-1)&2[4:46:2]; STOPENTRY:=TRUE; 13780000 Z~PROGDESCBLDR(LDES,0,PRT); 13784000 IF TB2 THEN 13785000 BEGIN 13786000 - ENTRY(SUPERFRMTID);IF ELCLASS!ASSIGNOP THEN FLAG(37); 13787000 + ENTRY(SUPERFRMTID);IF ELCLASS!ASSIGNOP THEN FLAG(36); 13787000 PUT(TAKE(LASTINFO)&PRT[16:37:11],LASTINFO); 13788000 RR4~NEXTINFO;PUTNBUMP(0); 13789000 DO 13790000 @@ -10602,7 +10605,7 @@ INTEGER SNGOO,LOD,SAVELO,PRTIO,NINFOO; 14030000 INTEGER PROAD ; 14032000 INTEGER NTEXTO; 14032500 INTEGER FIRSTXO; 14033000 - BOOLEAN FUNCTOGO,AJUMP,FAULTOGO; 14034000 + BOOLEAN FUNCTOGO,AJUMPO,FAULTOGO; 14034000 BOOLEAN SAVEPRTOGO, NEXTSAVE; 14034100 BEGINCTR~BEGINCTR+1; 14035000 IF SOP THEN BLKAD~PROADO 14036000 @@ -10674,7 +10677,7 @@ START: IF TABLE(I)!SEMICOLON 14063000 IF BUP ! BUP:=BUP- TAKE(BUP + 1).PURPT THEN %102-14088000 GO TO GETLP 14089000 END; 14090000 - IF TYPEV~G.CLASS=FRMTID OR TYPEV=SERUPFRMTID THEN 14091000 + IF TYPEV~G.CLASS=FRMTID OR TYPEV=SUPERFRMTID THEN 14091000 G.ADDRESS~F~F+2 14092000 ELSE 14093000 IF TYPEV~G.CLASS{INTARRAYID AND 14094000 @@ -11079,7 +11082,7 @@ HF: 14382000 LABEL START,STOP; 14384000 IF STREAMTOG 14385000 THEN BEGIN 14386000 - JUMPCHKNX~PROGDESCBLDR(CHAR,L,PROAD);PJ~P; 14387000 + JUMPCHKNX;G~PROGDESCBLDR(CHAR,L,PROAD);PJ~P; 14387000 PTOG~FALSE; 14388000 IF FUNCTOG 14389000 THEN 14390000 @@ -11126,7 +11129,7 @@ HF: 14382000 PUT(TAKE(GT2~MARK+P-GT1.ADDRESS+1)&FILEID[2:41:7] 14430000 ,GT2); 14431000 END 14432000 - ELSE NLOC+1; 14433000 + ELSE NLOC~NLOC+1; 14433000 END 14434000 ELSE 14435000 BEGIN 14436000 @@ -11397,10 +11400,10 @@ PROCEDURE PASSALPHA(ELBATWORD); 15020000 EMITV(IF BOOLEAN(L.[46:1]) 15031000 THEN CPLUS2 15032000 ELSE CPLUS1);LTEMP~BUMPL; EMITWORD(GETALPHA( 15033000 - INFO[(INDEX~ELBATWORD.LINK+1).LINKR,INDEX,LINKC], 15034000 + INFO[(INDEX~ELBATWORD.LINK+1).LINKR,INDEX.LINKC], 15034000 IF SIZEALPHA~TAKE(INDEX).ALPHASIZE > 7 15035000 THEN 7 15036000 - ELSE SIZEALPHA)); EMITB(BFW.LTEMP,L); 15037000 + ELSE SIZEALPHA)); EMITB(BFW,LTEMP,L); 15037000 END PASSALPHA; 15038000 COMMENT THE FOLLOWING BLOCK HANDLES THE FOLLOWING CASES 15039000 OF SIMPLE VARIABLES: 15040000 @@ -11487,7 +11490,7 @@ L1: 15092000 BEGIN IF DOTSYNTAX(T1,T2) THEN GO TO EXIT ; 15112000 IF STEPI=ASSIGNOP THEN 15113000 BEGIN %116-15113100 - IF P1 ! FS THEN 15114000 + IF P1! FS THEN 15114000 BEGIN %116-15115000 ERR(201); % PARTIAL WORD NOT LEFT-MOST 15115100 GO TO EXIT; %116-15115200 @@ -11760,7 +11763,7 @@ COMMENT ***** MONITOR FUNCTION M6 GOES BEFORE EMITO(XCH); 15310000 ELSE 15346000 COMMENT ***** MONITOR FUNCTION M10 GOES HERE ; 15347000 BEGIN COMMENT MONITOR FUNCTION M10; 15348000 - SPCLMON~P1 = FP OR ELCLASS }AMPERSAND; 15349000 + SPCLMON~P1 = FP OR ELCLASS } AMPERSAND; 15349000 IF J = 1 15350000 THEN IF SPCLMON 15351000 THEN EMITV(TALL.ADDRESS) 15352000 @@ -11804,23 +11807,23 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 16000000 LOCFLD=36:36:12#,LGTFLD=24:24:12#; 16004000 DEFINE LEVEL=LVL#,ADDOP=ADOP#; 16005000 DEFINE 16006000 - JFW = 39#, COMMENT 7,5,5,1 JUMP FORWARD UNCONDITIONAL ; 16007000 - RCA = 40#, COMMENT 7,5,7,6 RECALL CONTROL ADDRESS ; 16008000 - JRV = 47#, COMMENT 7,5,5,2 JUMP REVERSE UNCONDITIONAL ; 16009000 - CRF = 35#, COMMENT 7,5,10,6 CALL REPEAT FIELD ; 16010000 - BNS = 42#, COMMENT 7,5,5,5 BEGIN LOOP ; 16011000 + JFW = 39#, COMMENT 7.5.5.1 JUMP FORWARD UNCONDITIONAL ; 16007000 + RCA = 40#, COMMENT 7.5.7.6 RECALL CONTROL ADDRESS ; 16008000 + JRV = 47#, COMMENT 7.5.5.2 JUMP REVERSE UNCONDITIONAL ; 16009000 + CRF = 35#, COMMENT 7.5.10.6 CALL REPEAT FIELD ; 16010000 + BNS = 42#, COMMENT 7.5.5.5 BEGIN LOOP ; 16011000 NOP = 1#, COMMENT ; 16012000 - ENS = 41#, COMMENT 7,5,5,6 END LOOP ; 16013000 - TAN = 30#, COMMENT 7,5,3,7 TEST FOR ALPHAMERIC ; 16014000 - BIT = 31#, COMMENT 7,5,3,8 TEST BIT ; 16015000 - JFC = 37#, COMMENT 7,5,5,3 JUMP FORWARD CONDITIONAL ; 16016000 - SFD = 06#, COMMENT 7,5,7,8 SET DESTINATION ADDRESS ; 16017000 - RSA = 43#, COMMENT 7,5,7,4 RECALL SOURCE ADDRESS ; 16018000 - TRP = 60#, COMMENT 7,5,2,2 TRANSFER PROGRAM CHARACTERS ; 16019000 - BSS = 3#, COMMENT 7,5,6,6 SKIP SOURCE BIT ; 16020000 - BSD = 2#, COMMENT 7,5,6,5 SKIP DESTINATION BITS ; 16021000 - SEC = 34#, COMMENT 7,5,10,1 SET COUNT ; 16022000 - JNS = 38#; COMMENT 7,5,5,7 JUMP OUT LOOP ; 16023000 + ENS = 41#, COMMENT 7.5.5.6 END LOOP ; 16013000 + TAN = 30#, COMMENT 7.5.3.7 TEST FOR ALPHAMERIC ; 16014000 + BIT = 31#, COMMENT 7.5.3.8 TEST BIT ; 16015000 + JFC = 37#, COMMENT 7.5.5.3 JUMP FORWARD CONDITIONAL ; 16016000 + SFD = 06#, COMMENT 7.5.7.8 SET DESTINATION ADDRESS ; 16017000 + RSA = 43#, COMMENT 7.5.7.4 RECALL SOURCE ADDRESS ; 16018000 + TRP = 60#, COMMENT 7.5.2.2 TRANSFER PROGRAM CHARACTERS ; 16019000 + BSS = 3#, COMMENT 7.5.6.6 SKIP SOURCE BIT ; 16020000 + BSD = 2#, COMMENT 7.5.6.5 SKIP DESTINATION BITS ; 16021000 + SEC = 34#, COMMENT 7.5.10.1 SET COUNT ; 16022000 + JNS = 38#; COMMENT 7.5.5.7 JUMP OUT LOOP ; 16023000 COMMENT FIXC EMITS BASICLY FORWARD JUMPS. HOWEVER IN THE CASE 16024000 OF INSTRUCTIONS INTERPTED AS JUMPS BECAUSE OF A CRF ON 16025000 A VALUE = 0 AND THE JUMP } 64 SYLLABLES A JFW 1 AND 16026000 @@ -11875,6 +11878,7 @@ F~GET( S); 16033000 LPRT ~ PROGDESCBLDR(2,T,0); 16075000 END ; 16076000 EMITC(ADDR,RCA); 16077000 + END 16078000 ELSE EMITC(D,IF D <0 THEN JRV ELSE JFW); 16079000 END EMIT JUMP; 16080000 COMMENT WHEN JUMPCHAIN IS CALLED THERE IS A LINKEDLIST IN THE CODE16081000 @@ -11951,7 +11955,7 @@ F~GET( S); 16033000 MATCHES THE LEVEL OF THE LABEL. 16152000 MULTIPLE OCCURANCES ARE ALSO CHECKED FOR AND FLAGGED. 16153000 FINALLY,JUMPCHAIN IS CALLED TO FIX UP ANY FORWARD GO TOS 16154000 - AND GET A PRT LOCATION FOR ANY JUMPS}64 SYLLABLES. ; 16155000 + AND GET A PRT LOCATION FOR ANY JUMPS }64 SYLLABLES. ; 16155000 PROCEDURE LABELS; 16156000 BEGIN 16157000 ADJUST; 16158000 @@ -11969,7 +11973,7 @@ PROCEDURE LABELS; 16156000 ELSE 16169000 BEGIN 16170000 IF GT1.LEVEL!NESTLEVEL THEN FLAG(257); 16171000 - PUT((-L)&TAKE(GT2)[LGTFLD].GT2); 16172000 + PUT((-L)&TAKE(GT2)[LGTFLD],GT2); 16172000 JUMPCHAIN(GT1); 16173000 END; 16174000 END 16175000 @@ -11997,7 +12001,7 @@ PROCEDURE LABELS; 16156000 GO TO IFSW[STEPI -SBV+1] ; 16197000 IF ELCLASS=LOCLID THEN 16198000 BEGIN 16199000 - EMITC(ELBAT[I],ADDRESS,CRF); 16200000 + EMITC(ELBAT[I].ADDRESS,CRF); 16200000 ADDR~0; 16201000 END 16202000 ELSE 16203000 @@ -12059,7 +12063,7 @@ IFTOG: IF STEPI!THENV THEN BEGIN ERR(266); GO EXIT END; 16217000 AN PRODUCES A JRV OR RCA IN THE CASE OF JUMPS}64 SYLLABL 16243000 ES. OTHERWISE, A LINK IS EMITTED POINTING ANY PREVIOUS 16244000 GO TOS IN THE CASE OF FORWARD JUMPS. 16245000 - FIRNALLY, IF THE NEST LEVEL IS DEFINED THEN IT IS CHECKED 16246000 + FINALLY, IF THE NEST LEVEL IS DEFINED THEN IT IS CHECKED 16246000 AGAINST THE CURRENT LEVEL MINUS THE NUMBER OF LEVELS TO 16247000 BE JUMPED OUT, OTHERWISE,NEST LEVEL IS DEFINED. ; 16248000 PROCEDURE GOTOS; 16249000 @@ -12181,11 +12185,11 @@ PROCEDURE DSS; 16362000 BEGIN 16363000 INTEGER ADDR,J,K,L,T; 16364000 LABEL EXIT,L1; 16365000 - DEFINE OPCODE=[27:16]#; 16366000 + DEFINE OPCODE=[27:6]#; 16366000 IF STEPI ! ASSIGNOP THEN BEGIN ERR(251); GO TO EXIT END; 16367000 IF STEPI = LOCLID THEN 16368000 BEGIN 16369000 - EMITC(ELBAT[I],ADDRESS,CRF); 16370000 + EMITC(ELBAT[I].ADDRESS,CRF); 16370000 ADDR~ 0; 16371000 IF STEPI = LITV THEN GO TO L1 16372000 END 16373000 @@ -12195,7 +12199,7 @@ PROCEDURE DSS; 16362000 END 16377000 ELSE ADDR ~ 1 ; 16378000 IF ELCLASS = TRNSFER OR ELCLASS = FILLV THEN %A 16379000 - EMITC(ADDR,ELBAT[I],OPCODE) %A 16379500 + EMITC(ADDR,ELBAT[I].OPCODE) %A 16379500 ELSE 16380000 IF ELCLASS = LITV THEN 16381000 BEGIN 16382000 @@ -12208,7 +12212,7 @@ PROCEDURE DSS; 16362000 C,8-COUNT,ACCUM[1],3); %111-16384900 IF ADDR MOD 2 ! 0 THEN 16385000 BEGIN 16386000 - EMIT(ACCUM[1],[18:6]); j ~ 1; 16387000 + EMIT(ACCUM[1].[18:6]); J ~ 1; 16387000 END ; 16388000 FOR K ~J+2 STEP 2 UNTIL ADDR DO 16389000 BEGIN 16390000 @@ -12229,7 +12233,7 @@ PROCEDURE SKIPS ; 16403000 REAL ADDR; 16405000 IF STEPI = LOCLID THEN 16406000 BEGIN 16407000 - EMITC(ELBAT[I],ADDRESS,CRF); ADDR~0; STEPIT; 16408000 + EMITC(ELBAT[I].ADDRESS,CRF); ADDR~0; STEPIT; 16408000 END 16409000 ELSE IF ELCLASS = LITNO THEN 16410000 BEGIN 16411000 @@ -12242,7 +12246,7 @@ PROCEDURE SKIPS ; 16403000 ELSE ERR(250); 16418000 END SKIPS ; 16419000 COMMENT JUMPS COMPILES JUMP OUT AND JUMP OUT TO STATEMENTS. 16420000 - JUMP OUT TO STATEMENTS CAUSE JUMP LEBEL TO BE SET TO 16421000 + JUMP OUT TO STATEMENTS CAUSE JUMP LEVEL TO BE SET TO 16421000 THE NUMBER OF LEVELS SPECIFIED. THEN THIS NUMBER OF 16422000 JNS ARE EMITTED AND GOTOS IS CALLED TO COMPILE THE 16423000 JUMP INSTRUCTION. 16424000 @@ -12251,14 +12255,14 @@ PROCEDURE SKIPS ; 16403000 THE GOTOS PROCEDURE WILL PERFORM THE ACTION OF SETTING 16427000 UP THE LINKS FOR LATER FIX UPS. THE NEST STATEMENT CAUSES 16428000 THESE FIX UPS(IF EMITTING OF JUMP INSTRUCTIONS) BY CALLING16429000 - GO TOSD WHEN THE RIGHT PAREN IS ENCOUNTERED. ; 16430000 + GO TOS WHEN THE RIGHT PAREN IS ENCOUNTERED. ; 16430000 PROCEDURE JUMPS; 16431000 BEGIN 16432000 JUMPLEVEL~1; 16433000 IF STEPI!DECLARATORS THEN FLAG(261); 16434000 - IF STEPI!LITNO THEN JUMPLEBEL~ ELBAT[I].ADDRESS 16435000 + IF STEPI!LITNO THEN JUMPLEVEL~ ELBAT[I].ADDRESS 16435000 ELSE BEGIN 16436000 - IF ELCLASS!TOV AND ELCLASS!STLABID THEN 16437000 + IF ELCLASS! TOV AND ELCLASS! STLABID THEN 16437000 BEGIN 16438000 COMMENT SIMPLE JUMP OUT STATEMENT; 16439000 IF JOINFO = 0 THEN 16440000 @@ -12297,7 +12301,7 @@ PROCEDURE JUMPS; 16431000 UPON EXITING,STREAMSTMT ASSURES THAT "I" POINTS TO 16473000 THE SEMICOLON ,END OR ) IN SYNTACICALLY CORRECT PROGRAMS; 16474000 LABEL L,L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,EXIT,FINI,START; 16475000 - SWITCH TYPE + FINI,L,FINI,L3,L4,L5,L6,L7,L7,L7,L7,L8,L9,L10; 16476000 + SWITCH TYPE ~ FINI,L,FINI,L3,L4,L5,L6,L7,L7,L7,L7,L8,L9,L10; 16476000 START: GO TO TYPE[ ELCLASS-ENDV+1]; 16477000 IF ELCLASS= RTPAREN THEN GO TO FINI ; 16478000 IF ELCLASS = LITNO OR ELCLASS=LOCLID AND TABLE(I+1) 16479000 @@ -12440,7 +12444,7 @@ IF (XREF OR DEFINING.[1:1) AND XLUN > 0 THEN %116-17001000 DS := 10 LIT " PARAMETER"); %116-17049440 DS := 26 LIT " -- DECLARED IN SEGMENT "; %116-17049500 SI := LOC SEG; %116-17049600 - S := SI; %116-17049700 + S := DI; %116-17049700 DS := 4 DEC; DI := DI - 4; DS := 3 FILL; % CONV AND ZERO SUPPR 17049800 DI := DI + 8; % TO FORCE STORE OF LAST WORD %116-17049900 SI := S; %116-17050000 @@ -12515,7 +12519,7 @@ IF (XREF OR DEFINING.[1:1) AND XLUN > 0 THEN %116-17001000 XREFPT:=0; %DFB17077000 END; %DFB17078000 IF ( I :=XREFAY2[XREFPT]).[21:27] GTR 99999999 THEN GO TO EOF;17079000 - A[0] := I & NEWID[I,REFIDNOF] REFIDNOF; %116-17080000 + A[0] := I & NEWID[I.REFIDNOF] REFIDNOF; %116-17080000 REFCOUNT := REFCOUNT + 1; %116-17080100 GO TO L; %DFB17081000 EOF: INPUT2:=TRUE; %DFB17082000 @@ -12552,8 +12556,8 @@ IF (XREF OR DEFINING.[1:1) AND XLUN > 0 THEN %116-17001000 "ALPHA ARRAY. ", % 27 %116-17084250 "INTEGER ARRAY. ", % 28 %116-17084260 "LABEL. ", % 29 %116-17084270 - "FAULT. ", % 30 (CLASS = 125) %117-17084275 - "SWITCH LIST. ", % 32 (CLASS = 126) %117-17084280 + "FIELD. ", % 30 (CLASS = 125) %117-17084275 + "FAULT. ", % 32 (CLASS = 126) %117-17084280 "SWITCH LIST. "; % 31 (CLASS = 127) %117-17084290 L: %DFB17085000 END; %DFB17086000 @@ -12626,8 +12630,8 @@ IF (XREF OR DEFINING.[1:1) AND XLUN > 0 THEN %116-17001000 WRITE(LINE); %116-17094550 XREFPT := 0; %116-17094600 BLANKET(PAY[*]); %116-17094650 - SETUPHEADING(XREFAY1[*],PAY[*],XREFAY1[8], 17094700 - SEGNOF,A[0],SEQNOF,FWDTOG,LBLTOG, %116-17094800 + SETUPHEADING(XREFAY1[*],PAY[*],XREFAY1[8]. 17094700 + SEGNOF,A[0].SEQNOF,FWDTOG,LBLTOG, %116-17094800 FWDSEQNO.IDTYPE[(IF (I := %116-17094900 XREFAY1[9].CLASS) } FIELDID THEN %117-17095000 (IDMAX + I - FIELDID + 1) ELSE %117-17095100 @@ -12643,7 +12647,7 @@ IF (XREF OR DEFINING.[1:1) AND XLUN > 0 THEN %116-17001000 ELSE % IT MUST BE A NORMAL REFERENCE %116-17095700 IF A[0].SEQNOF ! LASTADDRESS.SEQNOF THEN %116-17095750 BEGIN %116-17095800 - ADDASEQNO(A[0],SEQNOF,XREFPT,A[0].[5:1], 17095900 + ADDASEQNO(A[0].SEQNOF,XREFPT,A[0].[5:1], 17095900 PAY[*]); %116-17096000 IF (XREFPT := XREFPT + 1) = 11 THEN %FULL 17096100 BEGIN %116-17096200 @@ -12685,7 +12689,7 @@ IF (XREF OR DEFINING.[1:1) AND XLUN > 0 THEN %116-17001000 FALSE; %116-17117900 SAVETIMES(1); % SAVE TIMES FOR START OF REFERENCES SORT %116-17117910 FIRSTTIME := TRUE; % LET OUTPUT PROCEDURE KNOW ABOUT FIRST CAL 17117920 - XREFPT:=20; REWIND(DSK2); %DFB17118000 + XREFPT:=29; REWIND(DSK2); %DFB17118000 SORT(OUTPUT2,INPUT2,0,HV2,COMP2,1,6000); %116-17119000 UPDATETIMES(2); % UPDATE TIMES FOR PRINTING CROSS REFERENCE%116-17119100 PRINTXREFSTATISTICS; %116-17119200 diff --git a/tools/UTIL.NEATUP.alg_m b/tools/UTIL.NEATUP.alg_m new file mode 100644 index 0000000..ef02a28 --- /dev/null +++ b/tools/UTIL.NEATUP.alg_m @@ -0,0 +1,2024 @@ + $ VERSION 31.000.001 0000010081/10/14.1 + $ SET LINEINFO 0000020081/10/14.1 + $ SET LEVEL 2 0000030081/10/14.1 +PROCEDURE NEATUP(PARA); 0000100076/07/14 +ARRAY 0000200076/07/14 + PARA[*]; 0000300076/07/14 +BEGIN 00004000 + $ SET OMIT 0000495081/10/14.1 + SRCE/NEATUP 0000500081/10/14.1 + 0000600081/10/14.1 +MODIFICATION LOG. 0000601081/10/14.1 +----------------- 0000602081/10/14.1 +81/10/14 PHK 31.000.001 0000603081/10/14.1 + CLONE FROM EDITOR/NEATUP/SYM: CHANGE FILE FAMILY DEFAULTS, 0000604081/10/14.1 + REMOVE EXTRA $PAGE COMMANDS, INCLUDE ELBAT IN SYMBOLIC. 0000605081/10/14.1 + 0000790081/10/14.1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0000791081/10/14.1 +% %0000792081/10/14.1 +% DOCUMENTATION %0000793081/10/14.1 +% 12/1/75 %0000794081/10/14.1 +% NEATUP/ALGOL %0000795081/10/14.1 +% %00008000 +% FILES: %00009000 +% AN INPUT FILE WITH THE NAME "INPUT" AND AN OUTPUT FILE WITH %00010000 +% THE NAME "OUTPUT" ON DISK ARE ASSUMED. THESE SHOULD BE FILE %00011000 +% EQUATED AS DESIRED. %00012000 +% $ OPTIONS: %00013000 +% AS WITH THE ALGOL COMPILERS DOLLAR CARDS ARE USED TO CONTROL %00014000 +% OPTIONS AVAILABLE FOR NEATING A SOURCE FILE. NOTE THAT THE %00015000 +% CARD IMAGE WILL BE COPIED TO THE OUTPUT FILE ONLY IF THE "$" %00016000 +% CHARACTER IS IN OTHER THAN COL 1. %00017000 +% %00018000 +% OPTION DEFAULT EFFECT %00019000 +% %00020000 +% BEGINOFFSET 0 MAY BE POSITIVE, NEGATIVE OR 0. %00021000 +% SPECIFIES THE POSITION OF A "BEGIN" %00022000 +% IN RELATION TO THE CURRENT MARGIN. %00023000 +% DECINDENT 7 MUST BE >= 0. SPECIFIES THE %00024000 +% INDENTATION OF DECLARATIONS. %00025000 +% DEFINEINDENT 22 MUST BE >= 0. SPECIFIES THE %0002600076/11/15 +% INDENTATION OF THE TEXT OF DEFINES. %0002700076/11/15 +% ELSEOFFSET 0 MAY BE POSITIVE, NEGATIVE OR 0. %00028000 +% SPECIFIES THE POSITION OF AN "ELSE" %00029000 +% IN RELATION TO THE CURRENT MARGIN. %00030000 +% INDENT 3 MUST BE >= 0. SPECIFIES THE AMOUNT %00031000 +% STATEMENTS ARE INDENTED. %00032000 +% INDENTELSEIF RESET MAY BE SET, RESET OR POP-ED. IF SET %00033000 +% AN "IF" FOLLOWING AN "ELSE" WILL BE %00034000 +% INDENTED. %00035000 +% INDENTTHENIF SET MAY BE SET, RESET OR POP-ED. IF SET %0003600080/08/04 +% AN "IF" FOLLOWING A "THEN" WILL BE %00037000 +% INDENTED. %00038000 +% LINELENGTH 72 MUST BE BETWEEN 22 AND 72. %00039000 +% SPECIFIES THE PORTION OF THE OUTPUT %00040000 +% CARD IMAGE THAT WILL BE USED. %00041000 +% LOCKCOMMENTS SET MAY BE SET, RESET OR POP-ED. %0004200076/09/01 +% CONTROLS PROCESSING OF "%" COMMENTS %00043000 +% WHEN RESET "%" COMMENTS ON A LINE %00044000 +% WITH A STATEMENT WILL BE RIGHT %00045000 +% JUSTIFIED, WHEN SET SUCH COMMENTS %00046000 +% WILL NOT BE MOVED. IN EITHER CASE %00047000 +% IF A "%" COMMENT WILL NOT FIT ON A %00048000 +% LINE IT IS MOVED TO THE NEXT LINE %00049000 +% BY ITSELF. %00050000 +% MARGIN 5 MUST BE >= 0. SPECIFIES THE %00051000 +% INDENTATION OF THE OUTER BLOCK %00052000 +% OF THE PROGRAM UNIT. %00053000 +% NEATUP SET MAY BE SET, RESET OR POP-ED. %00054000 +% CONTROLS REFORMATING - WHEN %00055000 +% RESET LINES ARE COPIED TO THE %00056000 +% OUTPUT FILE AS THEY ARE. %00057000 +% NEATUPLIST RESET MAY BE SET, RESET OR POP-ED. %00058000 +% SPECIFIES THAT A PRINTER LISTING %00059000 +% OF THE GENERATED OUTPUT IS TO BE %00060000 +% PRODUCED. %00061000 +% NEATUPSEQ 1000 + 1000 ALLOWS SPECIFICATION OF THE BASE %0006200076/08/19 +% VALUE AND INCREMENT USED IN %0006300076/08/19 +% SEQUENCING THE OUTPUT FILE. %0006400076/08/19 +% ONEPERLINE SET MAY BE SET, RESET OR POP-ED. %00065000 +% CONTROLS DECLARATIONS. WHEN SET %00066000 +% EACH DECLARED IDENTIFIER IS PLACED %00067000 +% ON A LINE OF ITS OWN. WHEN RESET %00068000 +% AS MANY IDENTIFIERS AS POSSABLE ARE %00069000 +% PLACED ON EACH LINE. %0007000079/01/03 +% PROCINDENT 5 MUST BE >= 0. SPECIFIES THE AMOUNT %00071000 +% STATEMENTS WITHIN A PROCEDURE ARE %00072000 +% TO BE INDENTED. %00073000 +% %00074000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00075000 + $ POP OMIT 0007599081/10/14.1 + $ PAGE 0007600081/10/14.1 +FILE 0007700078/05/03 + INPUT(KIND = DISK,FILETYPE = 8), 0007800081/10/14.1 + OUTPUT(KIND = DISK,MAXRECSIZE = 15,BLOCKSIZE = 450,AREAS = 20, 0007900081/10/14.1 + AREASIZE = 900,FLEXIBLE), 0008000081/10/14.1 + LINE(KIND = PRINTER); 00081000 +ARRAY 00082000 + STMARKS[0:2047], 00083000 + PARENSTACK, 00084000 + BRACKETSTACK, 00085000 + DOBLOCKCOUNTS[0:31]; 0008600077/07/05 +EBCDIC ARRAY 0008700076/07/19 + SOURCE, 0008800076/07/19 + DEST[0:89], 0008900076/07/19 + PBUF[0:131], 0009000076/07/19 + ACCUM[0:359], 0009100076/07/19 + SUPERTOK[0:6665]; 0009200076/07/19 +POINTER 0009300076/07/20 + PIN, 0009400076/07/20 + POUT, 0009500076/07/20 + PA, 0009600076/07/20 + STOKP; 0009700076/07/20 +REAL 00098000 + CA, 00099000 + CIN, 00100000 + COT, 00101000 + TYPE, 00102000 + LASTTYPE, 0010300077/07/05 + IDFRDESC, 0010400077/07/05 + INCREMENT, 00105000 + GMARGIN, 00106000 + OBMARGIN, 0010700078/07/24 + BLOCKBASE, 00108000 + SEQ, 00109000 + SEQINC, 00110000 + DECINDENT, 00111000 + DEFINEINDENT, 00112000 + PROCINDENT, 00113000 + BEGINOFFSET, 00114000 + ELSEOFFSET, 0011500076/07/22 + LINELENGTH, 0011600076/07/22 + MARKER, 0011700076/07/22 + STL, 0011800076/07/22 + ACTIVEPARENS, 0011900076/07/22 + ACTIVEBRACKETS, 00120000 + SUPERTOKENSTARTER, 00121000 + STM, 00122000 + LASTCOMMA, 00123000 + DOSDOING, 0012400077/03/18 + IFSDOING, 0012500077/07/05 + INPUTFKIND; 0012600077/07/05 +LABEL 0012700076/08/16 + EOF; 0012800076/08/16 +BOOLEAN 00129000 + DECLFLAG, 00130000 + LOOKINGFORDO, 00131000 + LISTTOG, 00132000 + DEFINEINPROGRESS, 00133000 + PROCINPROGRESS, 00134000 + PROCESSINGGLOBALDECS, 0013500078/07/25 + ONEPERLINE, 00136000 + INDENTTHENIF, 00137000 + INDENTELSEIF, 00138000 + INHIBITSCAN, 00139000 + NEATUPTOG, 00140000 + OMITTOG, 0014100081/10/14.1 + MAKENEWFILE, 00142000 + LOOKINGFOROF, 00143000 + LEFTCOMMENTS, 0014400077/07/05 + LOCKCOMMENTS, 0014500077/07/05 + ACTIVESUPERTOKEN, 00146000 + SPACEFLAG, 0014700077/03/22 + FIRSTBLOCK, 0014800078/07/25 + ALREADYINDENTED; 00149000 +TRUTHSET 0015000077/07/07 + NUMERICS("0123456789"), 0015100077/07/07 + IDFRSTARTERS(ALPHA AND ^ NUMERICS OR "'"), 0015200077/07/07 + IDFRVALIDS(IDFRSTARTERS OR NUMERICS OR "_"), 0015300081/05/07 + CLOSERS(")]"), 0015400077/07/07 + OPENERS("(["), 0015500076/07/22 + BLANKAROUNDS(":=<>^+-&*!"), 0015600079/06/25 + EDITLETTERS("ACDEFHIJKLORV"); 0015700081/10/14.1 +DEFINE 0015800081/09/21 + NXTCOMMA = [47:11] #, 0015900081/09/21 + FLNKINDX = [36:11] #, 0016000081/09/21 + STDISPF = [25:14] #, 0016100081/09/21 + STLENF = [11:08] #, 0016200081/09/21 + STTYPEF = [03:04] #, 0016300081/09/21 + STTYPE(I) = STMARKS[I].STTYPEF #, % TYPE OF THIS TOKEN 0016400076/11/16 + STLENGTH(I) = STMARKS[I].STLENF #, % LENGTH OF THIS TOKEN 0016500076/11/16 + STDISP(I) = STMARKS[I].STDISPF #, % START POS OF THIS TOKEN 0016600076/11/16 + STLINK(I) = STMARKS[I].FLNKINDX #, % LINK TO TERMINATOR 0016700076/11/16 + QUOTE = """ #, 0016800077/07/07 + UNDEFINED = 0 #, 0016900077/03/22 + IDFR = 1 #, 0017000077/07/06 + KIDFR = 2 #, 0017100077/07/06 + ANUMBER = 3 #, 0017200077/07/06 + SPECIALCHAR = 4 #, 0017300077/07/06 + ASTRING = 5 #, 0017400081/05/07 + PCOMMENT = 6 #, 0017500077/07/06 + CCOMMENT = 7 #, 0017600077/07/06 + BRKTCLASS = 0 #, 00177000 + PARENCLASS = 1 #, 00178000 + REPLCLASS = 2 #, 00179000 + COPY = BEGIN 0018000076/07/19 + REPLACE DEST BY SOURCE FOR 12 WORDS; 0018100076/07/19 + EMITWITHNOCOMMENTCHK; 0018200076/07/15 + END #, 00183000 + EMIT = EMITTER(FALSE) #, 0018400076/07/20 + EMITWITHNOCOMMENTCHK = 0018500076/07/20 + EMITTER(TRUE) #, 0018600076/07/20 + EMITANDINDENT2 = 00187000 + BEGIN 0018800076/07/23 + EMITWITHNOCOMMENTCHK; 0018900076/07/23 + COT := 0019000077/03/22 + IF DECLFLAG THEN 0019100077/03/22 + BLOCKBASE + DECINDENT + 2 0019200077/03/22 + ELSE 0019300077/03/22 + GMARGIN + 2; 0019400077/03/22 + POUT := DEST[COT]; 0019500076/07/20 + COT := LINELENGTH - COT; 0019600076/07/20 + END #, 00197000 + SCANTILNOTBLANK = 00198000 + DO BEGIN 00199000 + IF CIN <= 0 THEN 00200000 + NEXTCARD; 00201000 + SCAN PIN:PIN FOR CIN:CIN UNTIL ^= " "; 0020200076/07/20 + END 0020300076/07/20 + UNTIL CIN ^= 0 #, 0020400076/07/20 + TRANSFER(THISMUCH) = 00205000 + DO BEGIN 00206000 + IF CIN <= 0 THEN 00207000 + NEXTCARD; 00208000 + REPLACE PA:PA BY PIN:PIN FOR T:CIN THISMUCH;0020900076/07/20 + CA := CA + CIN - (CIN := T); 0021000076/07/20 + END 0021100076/07/20 + UNTIL CIN ^= 0 #, 0021200076/07/20 + TRANSFERCT(THISMANY) = 00213000 + THRU THISMANY DO 00214000 + BEGIN 00215000 + IF CIN <= 0 THEN 00216000 + NEXTCARD; 00217000 + REPLACE PA:PA BY PIN:PIN FOR 1; 0021800076/07/19 + CA := CA + 1; 00219000 + CIN := CIN - 1; 0022000076/07/20 + END #, 00221000 + INITIALIZEDEST(K) = 0022200077/03/21 + BEGIN 0022300076/07/19 + POUT := DEST[GMARGIN := K]; 0022400076/07/19 + COT := LINELENGTH - GMARGIN; 0022500076/07/20 + END #, 00226000 + STRIPTRAILINGBLANKS = 00227000 + BEGIN 0022800076/07/19 + DO 0022900076/07/19 + UNTIL ACCUM[CA := CA - 1] ^= " "; 0023000076/07/19 + CA := CA + 1; 00231000 + END #, 00232000 + PUTBLANK = IF ACTIVESUPERTOKEN THEN 0023300076/07/20 + BEGIN 0023400076/07/20 + REPLACE STOKP:STOKP BY " "; 0023500076/07/20 + STL := * + 1; 0023600077/03/21 + IF STM = 0 THEN 0023700077/03/21 + BEGIN 0023800077/03/21 + STMARKS[0] := SPECIALCHAR & 1 STLENF; 0023900077/03/21 + STM := 1; 0024000077/03/21 + END 0024100076/07/19 + ELSE 0024200076/07/19 + STLENGTH[STM - 1] := STLENGTH[STM - 1] + 1; 0024300076/07/19 + END 0024400076/07/19 + ELSE 0024500076/07/19 + IF COT = 0 THEN 0024600076/07/19 + EMITANDINDENT2 0024700076/07/19 + ELSE 0024800076/07/19 + BEGIN 0024900076/07/19 + REPLACE POUT:POUT BY " "; 0025000076/07/19 + COT := COT - 1; 0025100076/07/20 + END #, 00252000 + SPACENEEDED = (LASTTYPE = IDFR OR LASTTYPE = ANUMBER OR LASTTYPE00253000 + = ASTRING OR LASTTYPE = SPECIALCHAR AND 00254000 + SPACEKEY) #, 00255000 + NEXTLINESIZE = (LINELENGTH - 2 - (IF DECLFLAG THEN BLOCKBASE + 0025600076/07/22 + DECINDENT ELSE GMARGIN)) #, 0025700076/07/22 + HANDLECOMMENT = 00258000 + BEGIN 00259000 + INITIALIZEDEST(0); 00260000 + PUTTOKEN; % "COMMENT" 00261000 + PUTBLANK; 00262000 + DO BEGIN 0026300076/07/19 + IF CIN <= 0 THEN 0026400076/07/19 + BEGIN 0026500076/07/19 + EMITWITHNOCOMMENTCHK; 0026600076/07/19 + NEXTCARD; 00267000 + INITIALIZEDEST(0); 00268000 + END; 00269000 + REPLACE POUT:POUT BY 0027000076/07/20 + PIN:PIN FOR CIN:CIN UNTIL = ";"; 0027100076/07/20 + END 0027200076/07/19 + UNTIL PIN = ";"; 0027300076/07/19 + REPLACE POUT:POUT BY PIN:PIN FOR 1; 0027400076/07/19 + EMITWITHNOCOMMENTCHK; 0027500076/07/19 + CIN := CIN - 1; 0027600076/07/20 + END #, 00277000 + PROCESSCOMMA = IF DECLFLAG THEN 00278000 + IF ONEPERLINE AND ACTIVEPARENS = 0 AND 00279000 + ACTIVEBRACKETS = 0 00280000 + THEN 00281000 + BEGIN 00282000 + EMIT; 00283000 + INITIALIZEDEST(BLOCKBASE + DECINDENT); 0028400076/07/28 + END 00285000 + ELSE 00286000 + IF ACTIVEPARENS = 0 THEN 00287000 + PUTBLANK #, 00288000 + ITSAPROCEDURE = 00289000 + ITEMKEY[IDFRDESC] = PROCEDUREC #, 0029000077/07/05 + ITSACOMMENT = ITEMKEY[IDFRDESC] = COMMENTC #, 0029100077/07/05 + ITSASWITCH = ITEMKEY[IDFRDESC] = SWITCHC #, 0029200077/07/05 + ITSADEFINE = ITEMKEY[IDFRDESC] = DEFINEC #, 0029300077/07/05 + ITSABEGIN = ITEMKEY[IDFRDESC] = BEGINC #, 0029400077/07/05 + ITSANELSE = ITEMKEY[IDFRDESC] = ELSEC #, 0029500077/07/05 + ITSACASE = ITEMKEY[IDFRDESC] = CASEC #, 0029600077/07/05 + ITSATHEN = ITEMKEY[IDFRDESC] = THENC #, 0029700077/07/05 + ITSANITER = RESWORDTYPE[IDFRDESC,ITERATIONOP] #, 0029800077/07/05 + ITSANEND = ITEMKEY[IDFRDESC] = ENDC #, 0029900077/07/05 + ITSANIF = ITEMKEY[IDFRDESC] = IFC #, 0030000077/07/05 + ITSANOF = ITEMKEY[IDFRDESC] = OFC #, 0030100077/07/05 + ITSADO = ITEMKEY[IDFRDESC] = DOC #, 0030200077/07/05 + ITSABY = ITEMKEY[IDFRDESC] = BYC #, 0030300077/07/05 + ITSANUNTIL = ITEMKEY[IDFRDESC] = UNTILC #, 0030400077/07/05 + ITSARESWORD = (TYPE = KIDFR AND ITEMTYPE[IDFRDESC] = RESWORD) #,0030500077/07/06 + ITSADECLARATION = 0030600077/07/05 + (TYPE = KIDFR AND ITEMTYPE[IDFRDESC] = DECLARATOR 0030700077/07/05 + AND PIN ^= "(") #, 0030800077/07/05 + DOINGADO = DOSDOING > 0 #, 00309000 + DOBLOCKCOUNT = DOBLOCKCOUNTS[DOSDOING] #, 00310000 + ELSEMARGINF = [23:8] #, 00311000 + ATERMINATOR = (TYPE = SPECIALCHAR OR TYPE = ASTRING OR TYPE = 0031200077/07/05 + PCOMMENT OR TYPE = KIDFR AND 0031300077/07/05 + RESWORDTYPE[IDFRDESC,TERMINATOR]) #, 0031400077/07/05 + THISENDSTHESUPERTOKEN = 00315000 + IF SUPERTOKENSTARTER = BRKTCLASS THEN 0031600077/03/21 + PA = "]" AND ACTIVEBRACKETS = 0 0031700077/03/21 + ELSE 0031800077/03/21 + IF SUPERTOKENSTARTER = PARENCLASS THEN 0031900077/03/21 + PA = ")" AND ACTIVEPARENS = 0 0032000077/03/21 + ELSE 0032100077/03/21 + IF SUPERTOKENSTARTER = REPLCLASS THEN 0032200077/03/21 + (PA = "," OR PA = ";" OR ITSANELSE) AND 0032300077/03/21 + ACTIVEPARENS = 0 AND ACTIVEBRACKETS = 0 0032400077/03/21 + ELSE 0032500077/03/21 + FALSE #, 0032600077/03/21 + LENGTHOFGROUP(I) = 0032700076/11/16 + (STDISP[STLINK[I]] - THISSTARTPOS + 00328000 + STLENGTH[STLINK[I]]) #, 00329000 + CHECKFOREDITINGPHRASEN = 00330000 + BEGIN 0033100076/07/19 + IF PIN IN EDITLETTERS THEN 0033200076/07/19 + IF PIN + 1 IN NUMERICS THEN 0033300076/07/19 + BEGIN 0033400076/07/19 + TRANSFERCT(1); % TRANSFER EDIT-LETTER 0033500076/07/19 + GO TO NBR; 00336000 + END; 00337000 + END #, 00338000 + CHECKFOREDITINGPHRASEA = 00339000 + BEGIN 00340000 + IF CA = 1 THEN 00341000 + IF PA IN EDITLETTERS THEN 00342000 + IF PIN IN NUMERICS THEN 00343000 + GO TO NBR; 00344000 + END #, 00345000 + LINEEMPTY = DEST = " " FOR 72 #, 0034600076/07/19 + BLANKOUT = REPLACE DEST BY " " FOR 12 WORDS # , 0034700076/07/19 + DIGITSIN(N) = ((FIRSTONE(SCALERIGHTF(N,12)) - 1).[8:7] + 1) #; 0034800080/09/11 +EBCDIC VALUE ARRAY LEXICONTEXT 0034900081/10/14.1 + ("TRANSLATETABLELOCKCOMMENTSLEFTCOMMENTSINDENTTHENIFINDE", 0034901081/10/14.1 + "NTELSEIFDEFINEINDENTBEGINOFFSETELSEOFFSETLINELENGTHONE", 0034902081/10/14.1 + "PERLINEATUPLISTPROCINDENTNEATUPSEQDECINDENTREFERENCEPR", 0034903081/10/14.1 + "OCEDUREINTERRUPTINTERLOCKTRUTHSETDATABASECOMPLEXBOOLEA", 0034904081/10/14.1 + "NPOINTERPICTUREINTEGERMONITORMESSAGELIBRARYLAYOUTFORMA", 0034905081/10/14.1 + "TEXPORTNUMBERSTRINGSWITCHEBCDICDOUBLEDIRECTMARGINEVENT", 0034906081/10/14.1 + "ASCIIARRAYRESETALPHAVALUEQUEUEFIELDLABELWHILEUNTILCASE", 0034907081/10/14.1 + "THRUSTEPLONGFILEREALWORDOMITPAGEPOPBCLANDOWNHEXNOTNEQM", 0034908081/10/14.1 + "ODLSSEQLENDIVLEQIMPGTRGEQVBY"); 0034909081/10/14.1 +VALUE ARRAY COARSEINDEX( 0034910081/10/14.1 + 4"000000000003",4"000004000008",4"00000900000B",4"00000C000013", 0034911081/10/14.1 + 4"00001400001B",4"00001C00001F",4"000020000021",4"000022000022", 0034912081/10/14.1 + 4"00002300002B",4"000001000000",4"000001000000",4"00002C000036", 0034913081/10/14.1 + 4"00003700003A",4"00003B000040",4"000041000046",4"00004700004C", 0034914081/10/14.1 + 4"00004D00004D",4"00004E000050",4"000051000054",4"000055000058", 0034915081/10/14.1 + 4"000059000059",4"00005A00005A",4"00005B00005C",4"000001000000", 0034916081/10/14.1 + 4"000001000000",4"000001000000",4"000001000000",4"000001000000", 0034917081/10/14.1 + 4"000001000000",4"000001000000",4"000001000000",4"000001000000", 0034918081/10/14.1 + 4"000001000000",4"000001000000",4"000001000000"); 0034919081/10/14.1 +VALUE ARRAY INFOARRAY( 0034920081/10/14.1 + 4"0C30841A0012",4"145030144000",4"14502E149000",4"14502C153000", 0034921081/10/14.1 + 4"0820881CA002",4"0C303219D000",4"14508604A002",4"1C70340D2000", 0034922081/10/14.1 + 4"2CB00204A001",4"10408A176002",4"1C70380CB000",4"1C7036012000", 0034923081/10/14.1 + 4"08208E12D002",4"0C308C1BA002",4"18603C03E000",4"18604012D000", 0034924081/10/14.1 + 4"18603E133000",4"20803A0C3000",4"24900408E001",4"30C00603E001", 0034925081/10/14.1 + 4"0C30941B5022",4"0C30921B8182",4"0C30961C7012",4"104090038182", 0034926081/10/14.1 + 4"14504413F000",4"186042127000",4"18604610F000",4"28A008055001", 0034927081/10/14.1 + 4"0C3098109042",4"10404A186000",4"145048162008",4"18604C109000", 0034928081/10/14.1 + 4"0C309C1C3022",4"0C309A1C6022",4"0C304E1A6000",4"0820A0026022", 0034929081/10/14.1 + 4"08209E030002",4"0C30A21C0012",4"18600A026001",4"1C70500E7000", 0034930081/10/14.1 + 4"2490540A9000",4"2490520B2008",4"30C00C032001",4"30C00E026001", 0034931081/10/14.1 + 4"0C30A41BD022",4"0C30A61B2022",4"104060182000",4"10405E00E008", 0034932081/10/14.1 + 4"10405C077000",4"145056167000",4"186058103008",4"1C705A0FC000", 0034933081/10/14.1 + 4"28A01405F001",4"30C01200E001",4"30C01001A001",4"0C30A81AF002", 0034934081/10/14.1 + 4"186016139001",4"1C70640EE000",4"1C70620F5004",4"0C30AC1A9012", 0034935081/10/14.1 + 4"0C30AA1AC022",4"186066115000",4"186018071001",4"24901C085001", 0034936081/10/14.1 + 4"28A01A071001",4"082068069000",4"0820B00F3012",4"0820AE04F002", 0034937081/10/14.1 + 4"0C306A1A3000",4"10401E192001",4"28A020069001",4"0C302419A001", 0034938081/10/14.1 + 4"104022196001",4"1C706C0E0000",4"1C706E0D9000",4"2490700A0000", 0034939081/10/14.1 + 4"28A02607B001",4"14507215D00C",4"10407418A000",4"14502814E001", 0034940081/10/14.1 + 4"249076097000",4"0C302A052001",4"1040B417E002",4"18607811B000", 0034941081/10/14.1 + 4"18607A121000",4"1040B202C102",4"1040B617A042",4"20807E0BB000", 0034942081/10/14.1 + 4"38E07C000000",4"1450B8171082",4"145080158000",4"10408218E008", 0034943081/10/14.1 + 4"1450BA16C042"); 0034944081/10/14.1 +DEFINE 0034945081/10/14.1 + ALPHAC = 22 #, 0034946081/10/14.1 + ANDC = 66 #, 0034947081/10/14.1 + ARRAYC = 23 #, 0034948081/10/14.1 + ASCIIC = 24 #, 0034949081/10/14.1 + BCLC = 25 #, 0034950081/10/14.1 + BEGINC = 67 #, 0034951081/10/14.1 + BEGINOFFSETC = 1 #, 0034952081/10/14.1 + BOOLEANC = 26 #, 0034953081/10/14.1 + BYC = 68 #, 0034954081/10/14.1 + CASEC = 69 #, 0034955081/10/14.1 + COMMENTC = 27 #, 0034956081/10/14.1 + COMPLEXC = 28 #, 0034957081/10/14.1 + DATABASEC = 29 #, 0034958081/10/14.1 + DECINDENTC = 2 #, 0034959081/10/14.1 + DEFINEC = 30 #, 0034960081/10/14.1 + DEFINEINDENTC = 3 #, 0034961081/10/14.1 + DIRECTC = 31 #, 0034962081/10/14.1 + DIVC = 70 #, 0034963081/10/14.1 + DOC = 71 #, 0034964081/10/14.1 + DOUBLEC = 32 #, 0034965081/10/14.1 + EBCDICC = 33 #, 0034966081/10/14.1 + ELSEC = 72 #, 0034967081/10/14.1 + ELSEOFFSETC = 4 #, 0034968081/10/14.1 + ENDC = 73 #, 0034969081/10/14.1 + EQLC = 74 #, 0034970081/10/14.1 + EQVC = 75 #, 0034971081/10/14.1 + EVENTC = 34 #, 0034972081/10/14.1 + EXPORTC = 35 #, 0034973081/10/14.1 + FIELDC = 36 #, 0034974081/10/14.1 + FILEC = 37 #, 0034975081/10/14.1 + FORC = 76 #, 0034976081/10/14.1 + FORMATC = 38 #, 0034977081/10/14.1 + GEQC = 77 #, 0034978081/10/14.1 + GTRC = 78 #, 0034979081/10/14.1 + HEXC = 39 #, 0034980081/10/14.1 + IFC = 79 #, 0034981081/10/14.1 + IMPC = 81 #, 0034982081/10/14.1 + INC = 80 #, 0034983081/10/14.1 + INDENTC = 5 #, 0034984081/10/14.1 + INDENTELSEIFC = 6 #, 0034985081/10/14.1 + INDENTTHENIFC = 7 #, 0034986081/10/14.1 + INTEGERC = 40 #, 0034987081/10/14.1 + INTERLOCKC = 41 #, 0034988081/10/14.1 + INTERRUPTC = 42 #, 0034989081/10/14.1 + LABELC = 43 #, 0034990081/10/14.1 + LAYOUTC = 44 #, 0034991081/10/14.1 + LEFTCOMMENTSC = 8 #, 0034992081/10/14.1 + LEQC = 82 #, 0034993081/10/14.1 + LIBRARYC = 45 #, 0034994081/10/14.1 + LINELENGTHC = 10 #, 0034995081/10/14.1 + LISTC = 46 #, 0034996081/10/14.1 + LOCKC = 47 #, 0034997081/10/14.1 + LOCKCOMMENTSC = 9 #, 0034998081/10/14.1 + LONGC = 48 #, 0034999081/10/14.1 + LSSC = 83 #, 0035000081/10/14.1 + MARGINC = 11 #, 0035001081/10/14.1 + MESSAGEC = 49 #, 0035002081/10/14.1 + MODC = 84 #, 0035003081/10/14.1 + MONITORC = 50 #, 0035004081/10/14.1 + NEATUPC = 12 #, 0035005081/10/14.1 + NEATUPLISTC = 13 #, 0035006081/10/14.1 + NEATUPSEQC = 14 #, 0035007081/10/14.1 + NEQC = 85 #, 0035008081/10/14.1 + NOTC = 86 #, 0035009081/10/14.1 + NUMBERC = 51 #, 0035010081/10/14.1 + OFC = 87 #, 0035011081/10/14.1 + OMITC = 15 #, 0035012081/10/14.1 + ONC = 52 #, 0035013081/10/14.1 + ONEPERLINEC = 16 #, 0035014081/10/14.1 + ORC = 88 #, 0035015081/10/14.1 + OWNC = 53 #, 0035016081/10/14.1 + PAGEC = 17 #, 0035017081/10/14.1 + PICTUREC = 54 #, 0035018081/10/14.1 + POINTERC = 55 #, 0035019081/10/14.1 + POPC = 18 #, 0035020081/10/14.1 + PROCEDUREC = 56 #, 0035021081/10/14.1 + PROCINDENTC = 19 #, 0035022081/10/14.1 + QUEUEC = 57 #, 0035023081/10/14.1 + REALC = 58 #, 0035024081/10/14.1 + REFERENCEC = 59 #, 0035025081/10/14.1 + RESETC = 20 #, 0035026081/10/14.1 + SETC = 21 #, 0035027081/10/14.1 + STEPC = 90 #, 0035028081/10/14.1 + STRINGC = 60 #, 0035029081/10/14.1 + SWITCHC = 61 #, 0035030081/10/14.1 + THENC = 89 #, 0035031081/10/14.1 + THRUC = 91 #, 0035032081/10/14.1 + TRANSLATETABLEC = 62 #, 0035033081/10/14.1 + TRUTHSETC = 63 #, 0035034081/10/14.1 + UNTILC = 92 #, 0035035081/10/14.1 + VALUEC = 64 #, 0035036081/10/14.1 + WHILEC = 93 #, 0035037081/10/14.1 + WORDC = 65 #; 0035038081/10/14.1 +DEFINE 0035039081/10/14.1 + ALGOL = 0 #, 0035040081/10/14.1 + BOOLEANOP = 0 #, 0035041081/10/14.1 + DCALGOL = 1 #, 0035042081/10/14.1 + DECLARATOR = 0 #, 0035043081/10/14.1 + ESPOL = 2 #, 0035044081/10/14.1 + ESPOLORDCALGOL = 3 #, 0035045081/10/14.1 + ITERATIONOP = 2 #, 0035046081/10/14.1 + LINEENDER = 4 #, 0035047081/10/14.1 + MYOPTION = 1 #, 0035048081/10/14.1 + RELATIONOP = 1 #, 0035049081/10/14.1 + RESWORD = 2 #, 0035050081/10/14.1 + TERMINATOR = 3 #; 0035051081/10/14.1 +DEFINE 0035052081/10/14.1 + COARSEFINISHF = [23:24] # 0035053081/10/14.1 + ,COARSESTARTF = [47:24] # 0035054081/10/14.1 + ,INFODEFINEVALUE(INX) = INFOARRAY[INX].[35:11] # 0035055081/10/14.1 + ,DEFINEVALUE(INX) = INFOARRAY[INX].[35:11] # 0035056081/10/14.1 + ,INFOMINSIZE(INX) = INFOARRAY[INX].[47:6] # 0035057081/10/14.1 + ,MINSIZE(INX) = INFOARRAY[INX].[47:6] # 0035058081/10/14.1 + ,INFOLEXPTR(INX) = INFOARRAY[INX].[24:13] # 0035059081/10/14.1 + ,INFOTEXTSIZE(INX) = INFOARRAY[INX].[41:6] # 0035060081/10/14.1 + ,ITEMTYPE(INX) = INFOARRAY[INX].[1:2] # 0035061081/10/14.1 + ,DECLANGUAGE(INX) = INFOARRAY[INX].[3:2] # 0035062081/10/14.1 + ,RESWORDTYPE(INX,BIT) = BOOLEAN(INFOARRAY[INX].[4+BIT:1]) # 0035063081/10/14.1 + ,ITEMKEY(INX) = INFOARRAY[INX].[35:11] # 0035064081/10/14.1 + ,INFOENTRYSIZE = 1 #; 0035065081/10/14.1 + 0035099081/10/14.1 +BOOLEAN PROCEDURE ADOSUNTIL; 00351000 + FORWARD; 00352000 +PROCEDURE BLOCK(MARGIN,BACKOFF); 00353000 +VALUE 00354000 + MARGIN, 00355000 + BACKOFF; 00356000 +INTEGER 00357000 + MARGIN, 00358000 + BACKOFF; 00359000 + FORWARD; 00360000 +PROCEDURE BREAKITUP; 00361000 + FORWARD; 00362000 +PROCEDURE BUILDSUPERTOKEN; 00363000 + FORWARD; 00364000 +PROCEDURE CASESTMT(M); 0036500077/06/30 +VALUE 00366000 + M; 00367000 +INTEGER 00368000 + M; 00369000 + FORWARD; 00370000 +PROCEDURE DEFINEDECLARATION; 00371000 + FORWARD; 00372000 +PROCEDURE DOLLARCARD(TP,TS); 00373000 +VALUE 00374000 + TP, 00375000 + TS; 00376000 +INTEGER 00377000 + TS; 00378000 +POINTER 00379000 + TP; 00380000 + FORWARD; 00381000 +PROCEDURE DOSTMT(M); 00382000 +VALUE 00383000 + M; 00384000 +INTEGER 00385000 + M; 00386000 + FORWARD; 00387000 +PROCEDURE EMITTER(NOCOMMENTCHK); 00388000 +VALUE 00389000 + NOCOMMENTCHK; 00390000 +BOOLEAN 00391000 + NOCOMMENTCHK; 00392000 + FORWARD; 00393000 +BOOLEAN PROCEDURE FIND(P,N,DESC); 0039400077/07/05 +VALUE 00395000 + P, 00396000 + N; 0039700077/07/05 +POINTER 00398000 + P; 00399000 +INTEGER 0040000077/07/05 + N, 0040100077/07/05 + DESC; 0040200077/07/05 + FORWARD; 00403000 +BOOLEAN PROCEDURE FOUNDVERB(VERB,SZ,DESC); 0040350081/10/14.1 +VALUE 0040351081/10/14.1 + VERB, 0040352081/10/14.1 + SZ; 0040353081/10/14.1 +INTEGER 0040354081/10/14.1 + SZ, 0040355081/10/14.1 + DESC; 0040356081/10/14.1 +POINTER 0040357081/10/14.1 + VERB; 0040358081/10/14.1 + FORWARD; 0040359081/10/14.1 +PROCEDURE IFCLAUSE(SS,M,F,E); % ENTER WITH PA POINTING TO "IF" 00404000 +VALUE 00405000 + SS, 00406000 + M; 00407000 +BOOLEAN 00408000 + SS, % SS = TRUE IF THIS "IF" IS A STMT STARTER 00409000 + F, % TRUE IF TRANSFERSTMT IS TO EXIT (OUTPUT PARAMETER) 00410000 + E; % TRUE IF THIS "IF" HAS AN "ELSE" 00411000 +INTEGER 00412000 + M; % M IS THE MARGIN OF THE IF CLAUSE 00413000 + FORWARD; 00414000 +BOOLEAN PROCEDURE INITIALIZATION; 0041500078/07/27 + FORWARD; 00416000 +PROCEDURE ITERATIONCLAUSE(M); 00417000 +VALUE 00418000 + M; 00419000 +INTEGER 00420000 + M; 00421000 + FORWARD; 00422000 +BOOLEAN PROCEDURE ITSALABEL; 00423000 + FORWARD; 00424000 +PROCEDURE NEXTCARD; 00425000 + FORWARD; 00426000 +PROCEDURE PRINTITNEAT; 00427000 + FORWARD; 00428000 +PROCEDURE PUTCOMMENT; % SCANNER HAS ENCOUNTERED A "%" COMMENT WHICH 00429000 + FORWARD; 00430000 +PROCEDURE PUTLABEL(LP,LL,MARGIN,BACKOFF); 00431000 +VALUE 00432000 + LP, 00433000 + LL, 00434000 + MARGIN, 00435000 + BACKOFF; 00436000 +INTEGER 00437000 + LL, 00438000 + MARGIN, 00439000 + BACKOFF; 00440000 +POINTER 00441000 + LP; 00442000 + FORWARD; 00443000 +PROCEDURE PUTTOKEN; % MOVES THE CURRENT TOKEN FROM PA TO DEST 00444000 + FORWARD; 00445000 +PROCEDURE SKAN; % RETURNS (1) TYPE AND (2) CA--ITS SIZE 00446000 + FORWARD; 00447000 +PROCEDURE TRANSFERSTMT(STMTSTARTER,MARGIN,BACKOFF); 00448000 +VALUE 00449000 + STMTSTARTER, 00450000 + MARGIN, 00451000 + BACKOFF; 00452000 +BOOLEAN 00453000 + STMTSTARTER; 00454000 +INTEGER 00455000 + MARGIN, 00456000 + BACKOFF; 00457000 + FORWARD; 00458000 +PROCEDURE TRANSFERSUPERTOKEN; 00459000 + FORWARD; 00460000 +PROCEDURE XFERSTRING; % MOVES A STRING FROM ACCUM TO DEST 00461000 + FORWARD; 0046200081/10/14.1 +BOOLEAN PROCEDURE ADOSUNTIL; 00463000 +BEGIN 00464000 + INTEGER 00465000 + C; 00466000 + IF DOINGADO THEN 00467000 + IF DOBLOCKCOUNT = 0 THEN 00468000 + IF ITSANUNTIL THEN 00469000 + BEGIN 00470000 + SCANTILNOTBLANK; 00471000 + IF PIN IN IDFRSTARTERS THEN 00472000 + BEGIN 00473000 + ADOSUNTIL := TRUE; % UNTIL PROVEN OTHERWISE 00474000 + SCAN PIN FOR C:CIN WHILE IN IDFRVALIDS; 0047500077/07/05 + IF FIND(PIN,CIN - C,C) THEN 0047600077/07/05 + ADOSUNTIL := ^ RESWORDTYPE(IDFRDESC,RELATIONOP); 0047700077/07/05 + END 0047800076/07/19 + ELSE 0047900076/07/19 + ADOSUNTIL := PIN = "(" OR 0048000076/07/19 + (PIN = "^" AND PIN + 1 ^= "="); 0048100076/07/19 + END; 00482000 +END ADOSUNTIL; 0048300081/10/14.1 +PROCEDURE BLOCK(MARGIN,BACKOFF); 0048400076/07/28 +VALUE 0048500076/07/28 + MARGIN, 0048600076/07/28 + BACKOFF; 0048700076/07/28 +INTEGER 0048800076/07/28 + MARGIN, 0048900076/07/28 + BACKOFF; 0049000076/07/28 +BEGIN 0049100078/07/26 + BOOLEAN 0049200078/07/26 + ENDCTERMINATOR; 0049300078/07/26 + INTEGER 0049400078/07/26 + BEGINMARGIN = ENDCTERMINATOR; 0049500078/07/26 + BEGINMARGIN := MAX(0,MARGIN - BACKOFF + BEGINOFFSET); 0049600076/07/28 + INITIALIZEDEST(BEGINMARGIN); 0049700076/07/28 + PUTTOKEN; % THE "BEGIN" 0049800076/09/01 + DO BEGIN 00499000 + EMIT; 00500000 + TRANSFERSTMT(TRUE,MARGIN,INCREMENT); 0050100076/07/28 + END 00502000 + UNTIL ITSANEND; 00503000 + IF ACTIVESUPERTOKEN THEN 0050400081/09/17 + TRANSFERSUPERTOKEN; 0050500081/09/17 + IF ^ LINEEMPTY THEN 0050600081/09/17 + EMITWITHNOCOMMENTCHK; % HAVE STEPPED BEYOND THE "END" HERE 0050700081/09/17 + INITIALIZEDEST(BEGINMARGIN); 0050800076/07/28 + DO BEGIN % PROCESS "END " COMMENTS 0050900078/07/26 + PUTTOKEN; % FIRST TIME "END" - THEN COMMENTS 0051000078/07/26 + SKAN; 0051100078/07/26 + IF ^ ENDCTERMINATOR := ATERMINATOR THEN 0051200078/07/26 + PUTBLANK; 0051300078/07/26 + END 0051400078/07/26 + UNTIL ENDCTERMINATOR; 0051500078/07/26 + LASTTYPE := TYPE; 0051600078/07/26 +END OF BLOCK; 0051700081/10/14.1 +PROCEDURE BREAKITUP; 00518000 +BEGIN 00519000 + BOOLEAN 00520000 + COMMAFG; 00521000 + INTEGER 00522000 + THISSTARTPOS, 00523000 + M, 00524000 + J, 00525000 + K, 00526000 + SAVECA; 00527000 + LABEL 00528000 + AGN; 00529000 + POINTER 00530000 + SAVEPA FOR PA; 00531000 + SAVEPA := PA; 00532000 + SAVECA := CA; 00533000 + LASTTYPE := UNDEFINED; 0053400077/03/22 + FOR K := 0 STEP 1 UNTIL STM - 1 DO 00535000 + BEGIN 00536000 + PA := SUPERTOK[THISSTARTPOS := STDISP[K]]; 00537000 + CA := STLENGTH[K]; 00538000 + IF STTYPE[K] = IDFR THEN 0053900081/09/18 + IF SUPERTOK[THISSTARTPOS + CA] IN OPENERS THEN % ID( OR ID[ 0054000081/09/18 + BEGIN % FIND MATCHING ")" OR "]" 0054100081/09/18 + M := LENGTHOFGROUP(K + 1); 00542000 + IF M > COT AND M <= NEXTLINESIZE THEN 0054300081/09/18 + BEGIN % IDEA IS TO KEEP A SUPER 0054400081/09/18 + CA := M; % TOKEN TOGETHER. THIS CODE0054500081/09/18 + PUTTOKEN; % AND THAT BELOW FOR STUFF 0054600081/09/18 + K := STMARKS[K + 1].FLNKINDX;% BETWEEN ","'S, "("'S OR 0054700081/09/18 + GO AGN; % "["'S WILL MOVE THE WHOLE0054800081/09/18 + END; % SUPER TOKEN TO NEXT LINE 0054900081/09/18 + END; % IF IT FITS THERE BUT WONT0055000081/09/18 + IF COMMAFG THEN % FIT ON THE CURRENT LINE. 0055100081/09/18 + IF J := STMARKS[K - 1].NXTCOMMA ^= 0 THEN 00552000 + BEGIN % J IS INDEX OF NEXT COMMA 00553000 + M := STDISP[J] - STDISP[K - 1]; 00554000 + IF M > COT AND M <= NEXTLINESIZE THEN 00555000 + BEGIN 00556000 + CA := M; 00557000 + PUTTOKEN; 00558000 + K := STMARKS[K - 1].NXTCOMMA; 00559000 + GO AGN; 00560000 + END; 00561000 + END; 00562000 + IF PA IN OPENERS THEN % ( OR [ 0056300081/09/18 + IF M := LENGTHOFGROUP(K) > COT AND M <= NEXTLINESIZE THEN 00564000 + BEGIN 00565000 + CA := M; 00566000 + PUTTOKEN; 00567000 + K := STMARKS[K].FLNKINDX; 00568000 + GO AGN; 00569000 + END; 00570000 + IF STTYPE[K] = ASTRING THEN 00571000 + XFERSTRING 00572000 + ELSE 00573000 + PUTTOKEN; 00574000 + AGN: COMMAFG := PA = ","; 00575000 + END OF FOR K; 00576000 + PA := SAVEPA; 00577000 + CA := SAVECA; 00578000 +END OF BREAKITUP; 0057900081/10/14.1 +PROCEDURE BUILDSUPERTOKEN; 00580000 +BEGIN 0058100076/07/22 + DEFINE 0058200076/07/22 + POP(STAKN,INX) = 0058300076/07/22 + BEGIN 0058400076/07/22 + STMARKS[STAKN[INX]] := * & STM FLNKINDX; 0058500076/07/22 + INX := INX - 1; 0058600076/07/22 + END #; 0058700076/07/22 + STMARKS[STM] := TYPE & CA STLENF & STL STDISPF; 0058800076/11/16 + IF PA = "(" THEN 0058900076/07/22 + PARENSTACK[ACTIVEPARENS := * + 1] := STM 0059000076/07/22 + ELSE 0059100076/07/22 + IF PA = "[" THEN 0059200076/07/22 + BRACKETSTACK[ACTIVEBRACKETS := * + 1] := STM 0059300076/07/22 + ELSE 0059400076/07/22 + IF PA = ")" THEN 0059500076/07/22 + POP(PARENSTACK,ACTIVEPARENS) 0059600076/07/22 + ELSE 0059700076/07/22 + IF PA = "]" THEN 0059800076/07/22 + POP(BRACKETSTACK,ACTIVEBRACKETS) 0059900076/07/22 + ELSE 0060000076/07/22 + IF PA = "," AND ACTIVEPARENS = 1 AND ACTIVEBRACKETS = 0 THEN 0060100076/07/22 + BEGIN 0060200076/07/22 + STMARKS[LASTCOMMA] := * & STM NXTCOMMA; 0060300076/07/22 + LASTCOMMA := STM; 0060400076/07/22 + END; 0060500076/07/22 + STM := STM + 1; 0060600076/07/22 + REPLACE STOKP:STOKP BY PA FOR CA; 0060700076/07/20 + STL := STL + CA; 00608000 + IF THISENDSTHESUPERTOKEN THEN 00609000 + TRANSFERSUPERTOKEN; 00610000 +END OF BUILDSUPERTOKEN; 0061100081/10/14.1 +PROCEDURE CASESTMT(M); 0061200077/06/30 +VALUE 00613000 + M; 00614000 +INTEGER 00615000 + M; 00616000 +BEGIN 0061700076/07/20 + LOOKINGFOROF := TRUE & LOOKINGFOROF[46:46]; % "SET" 0061800076/07/20 + PUTTOKEN; % TRANSFER "CASE" 00619000 + SPACEFLAG := PIN IN OPENERS; 0062000077/07/06 + LASTTYPE := IDFR; 0062100077/07/06 + TRANSFERSTMT(FALSE,M,INCREMENT); % TRANSFER TIL "OF" 0062200076/07/20 + LOOKINGFOROF := LOOKINGFOROF.[46:46]; % "POP" 00623000 + PUTTOKEN; % THE "OF" 0062400078/07/26 + IF ^ ACTIVESUPERTOKEN THEN % CASE - OF ON OWN LINE0062500077/06/30 + EMIT; 00626000 +END OF CASESTMT; 0062700081/10/14.1 +PROCEDURE DEFINEDECLARATION; 00628000 +BEGIN 0062900076/11/15 + DEFINE 0063000076/11/15 + EQUALINDENT = (DEFINEINDENT - 3) #; 0063100076/11/15 + INTEGER 0063200076/07/28 + DEFINEBASE; 0063300076/07/28 + DEFINEINPROGRESS := TRUE; 00634000 + DEFINEBASE := BLOCKBASE; 0063500077/06/28 + INITIALIZEDEST(DEFINEBASE); 0063600077/06/28 + PUTTOKEN; % "DEFINE" 00637000 + DO BEGIN 0063800077/03/21 + EMIT; 0063900077/03/21 + SKAN; 0064000077/03/21 + INITIALIZEDEST(DEFINEBASE + DECINDENT); 0064100076/07/28 + WHILE TYPE IS PCOMMENT DO % COMMENT AFTER "DEFINE" OR "," 0064200077/03/21 + BEGIN 00643000 + PUTCOMMENT; 00644000 + SKAN; 0064500077/03/21 + INITIALIZEDEST(DEFINEBASE + DECINDENT); 0064600077/03/21 + END; 00647000 + DO BEGIN 00648000 + PUTTOKEN; % FIRST TIME FOR IDENTIFIER 00649000 + SKAN; % ALL OTHERS (IF ANY) FOR PARAMETRIC DEFINE.00650000 + END 0065100076/07/19 + UNTIL PA = " ="; 0065200076/07/19 + IF COT < LINELENGTH - EQUALINDENT - DEFINEBASE THEN 0065300077/03/21 + BEGIN % A LONG DEFINE IDENTIFIER 0065400077/03/21 + PUTTOKEN; 00655000 + EMIT; % "=" 0065600076/11/15 + END 0065700076/11/15 + ELSE 0065800076/11/15 + BEGIN 0065900076/11/15 + INITIALIZEDEST(EQUALINDENT + DEFINEBASE); 0066000076/11/15 + PUTTOKEN; % "=" 00661000 + END; 00662000 + DO BEGIN 0066300077/07/05 + BLOCKBASE := DEFINEBASE + DEFINEINDENT; 0066400077/07/05 + TRANSFERSTMT(TRUE,BLOCKBASE,INCREMENT); 0066500077/07/05 + IF PA ^= "#" THEN 0066600077/07/05 + EMIT; 0066700077/07/05 + END 0066800077/07/05 + UNTIL PA = "#"; 0066900077/07/05 + LOOKINGFORDO := FALSE; 00670000 + IF ACTIVESUPERTOKEN THEN 00671000 + TRANSFERSUPERTOKEN; 00672000 + SKAN; 00673000 + WHILE TYPE IS PCOMMENT DO % COMMENT BEFORE "," OR ";" 0067400077/03/21 + BEGIN 00675000 + PUTCOMMENT; 00676000 + SKAN; % FOR THE "," OR ";" 00677000 + INITIALIZEDEST(DEFINEBASE + DECINDENT); 0067800076/07/28 + END; 00679000 + PUTTOKEN; 00680000 + END 0068100077/03/21 + UNTIL PA ^= ","; 0068200077/03/21 + EMIT;% THE ";" LINE 0068300077/03/21 + DEFINEINPROGRESS := FALSE; 00684000 + BLOCKBASE := DEFINEBASE; 0068500076/07/28 +END OF DEFINEDECLARATION; 0068600081/10/14.1 +PROCEDURE DOLLARCARD(TP,TS); 0068700076/07/19 +VALUE 0068800076/07/19 + TP, 0068900076/07/19 + TS; 0069000076/07/19 +INTEGER 00691000 + TS; 00692000 +POINTER 00693000 + TP; 00694000 +BEGIN 00695000 + INTEGER 00696000 + CT, 00697000 + K, 00698000 + DKEY; 00699000 + POINTER 0070000076/07/15 + PT; 0070100076/07/15 + PROCEDURE SWITCHIT(XTOG); 00702000 + BOOLEAN 00703000 + XTOG; 00704000 + BEGIN 0070500076/07/19 + CASE DKEY OF 0070600076/07/19 + BEGIN 0070700076/07/19 + XTOG := TRUE & XTOG[46:46]; % "SET" 0070800076/07/19 + XTOG := FALSE & XTOG[46:46]; % "RESET" 00709000 + XTOG := XTOG.[46:46]; % "POP" 0071000076/07/19 + END CASES; 00711000 + END OF SWITCHIT; 0071200081/10/14.1 + INTEGER PROCEDURE FINDVALUE; 00713000 + BEGIN 00714000 + REAL 00715000 + MINUS; 00716000 + INTEGER 00717000 + CT; 00718000 + SCAN TP:TP FOR TS:TS WHILE = " "; 00719000 + IF TP = "-" THEN 00720000 + BEGIN 00721000 + MINUS := 1; 00722000 + TP := TP + 1; 00723000 + TS := TS - 1; 00724000 + END; 00725000 + SCAN TP FOR CT:TS WHILE IN NUMERICS; 0072600076/07/22 + FINDVALUE := INTEGER(TP,TS - CT) & MINUS[46:1]; 00727000 + TP := TP + (TS - (TS := CT)); 00728000 + END OF FINDVALUE; 0072900081/10/14.1 + WHILE TS > 0 DO 0073000076/07/15 + BEGIN 0073100076/07/15 + SCAN PT:TP FOR CT:TS UNTIL IN ALPHA; 0073200076/07/15 + SCAN TP:PT FOR TS:CT WHILE IN ALPHA; 0073300076/07/15 + IF CT := CT - TS > 0 THEN 0073400077/07/05 + IF FIND(PT,CT,K) THEN 0073500077/07/05 + IF ITEMTYPE[K] = MYOPTION THEN 0073600077/07/05 + CASE ITEMKEY[K] OF 0073700077/07/05 + BEGIN 0073800077/07/05 + BEGINOFFSETC: 0073900077/07/05 + BEGINOFFSET := FINDVALUE; 0074000077/07/05 + DECINDENTC: 0074100077/07/05 + DECINDENT := FINDVALUE; 0074200077/07/05 + DEFINEINDENTC: 0074300077/07/05 + DEFINEINDENT := FINDVALUE; 0074400077/07/05 + ELSEOFFSETC: 0074500077/07/05 + ELSEOFFSET := FINDVALUE; 0074600077/07/05 + INDENTC: 0074700077/07/05 + INCREMENT := FINDVALUE; 0074800077/07/05 + INDENTELSEIFC: 0074900077/07/05 + SWITCHIT(INDENTELSEIF); 0075000077/07/05 + INDENTTHENIFC: 0075100077/07/05 + SWITCHIT(INDENTTHENIF); 0075200077/07/05 + LEFTCOMMENTSC: 0075300077/07/05 + SWITCHIT(LEFTCOMMENTS); 0075400077/07/05 + LOCKCOMMENTSC: 0075500077/07/05 + SWITCHIT(LOCKCOMMENTS); 0075600077/07/05 + LINELENGTHC: 0075700077/07/05 + LINELENGTH := FINDVALUE; 0075800077/07/05 + MARGINC: 0075900078/07/24 + OBMARGIN := FINDVALUE; 0076000078/07/24 + NEATUPC: 0076100077/07/05 + SWITCHIT(NEATUPTOG); 0076200077/07/05 + NEATUPLISTC: 0076300077/07/05 + SWITCHIT(LISTTOG); 0076400077/07/05 + NEATUPSEQC: 0076500077/07/05 + BEGIN 0076600077/07/05 + SEQ := FINDVALUE; 0076700077/07/05 + SCAN TP:TP FOR TS:TS UNTIL ^= " "; 0076800077/07/05 + IF TS >= 0 THEN 0076900077/07/05 + IF TP = "+" THEN 0077000077/07/05 + BEGIN 0077100077/07/05 + TP := TP + 1; 0077200077/07/05 + TS := TS - 1; 0077300077/07/05 + SEQINC := FINDVALUE; 0077400077/07/05 + END; 0077500077/07/05 + SEQ := SEQ - SEQINC; 0077600077/07/05 + END OF NEATUPSEQC; 0077700077/07/05 + OMITC: 0077800081/09/22 + BEGIN 0077900081/09/22 + SCAN TP:TP FOR TS:TS WHILE = " "; 0078000081/09/22 + IF IF DKEY = 1 THEN % RESET 0078100081/09/22 + TRUE 0078200081/09/22 + ELSE 0078300081/09/22 + IF DKEY = 2 THEN % POP 0078400081/09/22 + OMITTOG % ONLY IF OMITTING 0078500081/10/14.1 + ELSE % SET 0078600081/09/22 + IF TS >= 0 THEN 0078700081/09/22 + TP ^= "=" % ONLY IF NOT SET OMIT = 0078800081/09/22 + ELSE 0078900081/09/22 + TRUE 0079000081/09/22 + THEN 0079100081/09/22 + SWITCHIT(OMITTOG); 0079200081/10/14.1 + END OMIT; 0079300081/09/22 + ONEPERLINEC: 0079400077/07/05 + SWITCHIT(ONEPERLINE); 0079500077/07/05 + PAGEC: 0079600077/07/05 + IF LISTTOG THEN 0079700077/07/05 + WRITE(LINE[SKIP 1]); 0079800077/07/05 + POPC: DKEY := 2; 0079900077/07/05 + PROCINDENTC: 0080000077/07/05 + PROCINDENT := FINDVALUE; 0080100077/07/05 + RESETC: 0080200077/07/05 + DKEY := 1; 0080300077/07/05 + SETC: DKEY := 0; 0080400077/07/05 + END CASES; 0080500077/07/05 + END WHILE; 00806000 +END OF DOLLARCARD; 0080700081/10/14.1 +PROCEDURE DOSTMT(M); 00808000 +VALUE 00809000 + M; 00810000 +INTEGER 00811000 + M; 00812000 +BEGIN 00813000 + INTEGER 00814000 + DODELTA; 00815000 + DOSDOING := * + 1; 00816000 + DOBLOCKCOUNT := 0; 00817000 + PUTTOKEN; % THE "DO" 00818000 + IF BEGINOFFSET >= 0 THEN 0081900077/03/22 + BEGIN 0082000077/03/22 + SKAN; 0082100077/03/22 + INHIBITSCAN := TRUE; 0082200077/03/22 + IF ITSABEGIN THEN 00823000 + DODELTA := 3; 00824000 + END; 00825000 + IF DODELTA = 0 THEN 0082600076/07/20 + BEGIN 0082700076/07/20 + EMIT; 0082800076/07/20 + DODELTA := INCREMENT; 00829000 + END; 00830000 + LASTTYPE := UNDEFINED; 0083100077/03/22 + ALREADYINDENTED := FALSE; 00832000 + TRANSFERSTMT(TRUE,M + DODELTA,INCREMENT);% XFER UNTIL "UNTIL" 00833000 + IF ^ LINEEMPTY THEN 0083400076/07/29 + EMIT; % SO THAT THE "END" WILL BE ON A LINE OF ITS ON 0083500076/07/29 + INITIALIZEDEST(M); 0083600076/07/20 + LASTTYPE := UNDEFINED; 0083700077/03/22 + DOSDOING := * - 1; 00838000 + TYPE := KIDFR; % LOOKING AT THE "UNTIL" 0083900078/07/24 +END DOSTMT; 0084000081/10/14.1 +PROCEDURE EMITTER(NOCOMMENTCHK); 0084100076/07/20 +VALUE 0084200076/07/20 + NOCOMMENTCHK; 0084300076/07/20 +BOOLEAN 0084400076/07/20 + NOCOMMENTCHK; 0084500076/07/20 +BEGIN 0084600076/07/20 + IF ^ NOCOMMENTCHK THEN 0084700076/07/20 + BEGIN 0084800076/07/20 + SCAN PIN:PIN FOR CIN:CIN UNTIL ^= " "; 0084900076/07/20 + IF PIN = "%" OR PIN = "$" THEN 0085000076/07/20 + BEGIN % DO % COMMENT THAT STAYS ON A CARD. 0085100076/07/20 + SKAN; 0085200076/07/20 + PUTCOMMENT; 0085300076/07/20 + END 0085400076/07/20 + ELSE 0085500076/07/20 + NOCOMMENTCHK := ^ LINEEMPTY; 0085600076/07/20 + END; 0085700076/07/20 + IF NOCOMMENTCHK AND (ACTIVESUPERTOKEN IMP DECLFLAG) THEN 0085800076/07/20 + BEGIN 0085900076/07/20 + REPLACE DEST[72] BY SEQ := SEQ + SEQINC FOR 8 DIGITS; 0086000076/07/20 + IF LISTTOG THEN 0086100076/07/20 + PRINTITNEAT; 0086200076/07/20 + IF MAKENEWFILE THEN 0086300076/07/20 + WRITE(OUTPUT,15,DEST); 0086400076/07/20 + BLANKOUT; 0086500076/07/20 + LASTTYPE := UNDEFINED; 0086600077/03/22 + END; 0086700076/07/20 +END EMITTER; 0086800081/10/14.1 +BOOLEAN PROCEDURE FIND(P,N,DESC); 0086900077/07/05 +VALUE 00870000 + P, 00871000 + N; 0087200077/07/05 +POINTER 00873000 + P; 00874000 +INTEGER 0087500077/07/05 + N, 0087600077/07/05 + DESC; 0087700077/07/05 +BEGIN 0087800077/07/05 + DESC := 0; 0087900077/07/05 + IF P = "'" THEN % CT STUFF 0088000077/07/05 + BEGIN 0088100077/07/05 + P := * + 1; 0088200077/07/05 + N := * - 1; 0088300077/07/05 + END; 0088400077/07/05 + IF FOUNDVERB(P,N,DESC) THEN 0088500077/07/05 + CASE DECLANGUAGE(DESC) OF 0088600077/07/05 + BEGIN 0088700077/07/05 + ALGOL: 0088800077/07/05 + FIND := TRUE; 0088900077/07/05 + DCALGOL: 0089000077/07/05 + IF ^ FIND := INPUTFKIND = VALUE(DCALGOLSYMBOL) THEN 0089100077/07/05 + DESC := 0; 0089200077/07/05 + ESPOL: 0089300077/07/05 + IF ^ FIND := INPUTFKIND = VALUE(ESPOLSYMBOL) THEN 0089400077/07/05 + DESC := 0; 0089500077/07/05 + ESPOLORDCALGOL: 0089600077/07/05 + IF ^ FIND := INPUTFKIND = VALUE(DCALGOLSYMBOL) OR INPUTFKIND 0089700077/07/05 + = VALUE(ESPOLSYMBOL) 0089800077/07/05 + THEN 0089900077/07/05 + DESC := 0; 0090000077/07/05 + END DECLANGUAGE CASE; 0090100077/07/05 +END OF FIND; 0090200081/10/14.1 + 0090210081/10/14.1 + % INCLUDE FOUNDVERB="COPYLIB/PUBLISH/FOUNDVERB" 0090211081/10/14.1 +BOOLEAN PROCEDURE FOUNDVERB(VERB,SZ,DESC); 0090212081/10/14.1 +VALUE VERB,SZ; 0090213081/10/14.1 +INTEGER SZ,DESC; 0090214081/10/14.1 +POINTER VERB; 0090215081/10/14.1 +BEGIN 0090216081/10/14.1 +DEFINE HASH(R,PTR) = 0090217081/10/14.1 + (R:=(R:=REAL(PTR,1)).[3:4]-1-R.[5:1]+9*R.[5:2])#; 0090218081/10/14.1 +INTEGER FIRST 0090219081/10/14.1 + ,LAST 0090220081/10/14.1 + ,H = LAST; 0090221081/10/14.1 +IF SZ > 0 THEN 0090222081/10/14.1 + IF HASH(H,VERB) < 35 AND H >= 0 THEN 0090223081/10/14.1 + BEGIN 0090224081/10/14.1 + FIRST:=COARSEINDEX[H].COARSESTARTF-INFOENTRYSIZE; 0090225081/10/14.1 + LAST := COARSEINDEX[H].COARSEFINISHF; 0090226081/10/14.1 + DO FIRST := *+INFOENTRYSIZE 0090227081/10/14.1 + UNTIL IF FIRST > LAST THEN TRUE 0090228081/10/14.1 + ELSE 0090229081/10/14.1 + IF SZ < MINSIZE(FIRST) THEN TRUE 0090230081/10/14.1 + ELSE 0090231081/10/14.1 + IF SZ <= INFOTEXTSIZE(FIRST) THEN 0090232081/10/14.1 + FOUNDVERB:=VERB=LEXICONTEXT[INFOLEXPTR(FIRST)] FOR SZ 0090233081/10/14.1 + ELSE 0090234081/10/14.1 + FALSE; 0090235081/10/14.1 + IF FOUNDVERB := * THEN 0090236081/10/14.1 + DESC := FIRST; 0090237081/10/14.1 + END HASH LSS 35; 0090238081/10/14.1 +END PROCEDURE FOUNDVERB; 0090239081/10/14.1 +PROCEDURE IFCLAUSE(SS,M,F,E); % ENTER WITH PA POINTING TO "IF" 0090300076/07/19 +VALUE 00904000 + SS, 00905000 + M; 00906000 +BOOLEAN 00907000 + SS, % SS = TRUE IF THIS "IF" IS A STMT STARTER 00908000 + F, % TRUE IF TRANSFERSTMT IS TO EXIT (OUTPUT PARAMETER) 00909000 + E; % TRUE IF THIS "IF" HAS AN "ELSE" 00910000 +INTEGER 00911000 + M; % M IS THE MARGIN OF THE IF CLAUSE 00912000 +BEGIN 0091300077/03/21 + BOOLEAN 0091400077/03/21 + DOINGSUPERTOKEN; 0091500077/03/21 + INTEGER 0091600076/07/19 + IE = E, 0091700076/07/19 + INDENT, 0091800077/03/18 + THISSEQ; 0091900077/03/18 + IFSDOING := * + 1; 0092000077/03/18 + F := TRUE; 0092100077/03/21 + IF ^ (SS OR DOINGSUPERTOKEN := ACTIVESUPERTOKEN) THEN 0092200077/03/21 + IF LASTTYPE = IDFR THEN 0092300077/03/21 + M := * + INCREMENT 0092400077/03/21 + ELSE 0092500077/03/21 + IF ^ LINEEMPTY THEN 0092600077/03/21 + BEGIN 0092700077/03/21 + EMITANDINDENT2; 0092800077/03/21 + M := * + 2; 0092900077/03/18 + END; 0093000077/03/21 + PUTTOKEN; % XFER THE "IF" TO OUTPUT LINE 0093100076/07/19 + THISSEQ := SEQ; 0093200077/03/18 + LASTTYPE := IDFR; 0093300077/03/18 + TRANSFERSTMT(FALSE,M,INCREMENT); % XFER UNTIL THE "THEN" 0093400076/07/19 + IF PA ^= "#" THEN 0093500077/03/21 + IF DOINGSUPERTOKEN THEN 0093600077/03/21 + BUILDSUPERTOKEN 0093700077/03/21 + ELSE 0093800077/03/21 + BEGIN 0093900077/03/21 + IF THISSEQ ^= SEQ OR CA > COT THEN 0094000077/03/21 + BEGIN % IF CLAUSE NEEDS MORE THAN ONE LINE 0094100077/03/21 + IF ^ LINEEMPTY THEN 0094200077/03/18 + EMITWITHNOCOMMENTCHK; 0094300077/03/18 + INITIALIZEDEST(M); 0094400077/03/18 + END; 0094500077/03/18 + PUTTOKEN; % THE "THEN" 0094600077/03/18 + EMIT; % SPOUT THE IF CLAUSE 00947000 + SKAN; % PEEK 00948000 + INHIBITSCAN := ALREADYINDENTED := TRUE; 00949000 + IF ITSANIF IMP INDENTTHENIF THEN 0095000077/03/18 + INDENT := INCREMENT; % FOR STMT FOLLOWING "THEN" 0095100077/03/18 + END; 0095200077/02/24 + IF PA ^= "#" THEN % XFER TILL "ELSE" OR ";" 0095300077/03/21 + TRANSFERSTMT(^DOINGSUPERTOKEN,M + INDENT,INCREMENT); 0095400077/03/21 + IF E := ITSANELSE THEN % "ELSE" IS NOT YET IN DEST 0095500077/03/21 + IF DOINGSUPERTOKEN THEN 0095600077/03/21 + BEGIN 0095700077/03/21 + BUILDSUPERTOKEN; 0095800077/03/21 + IF ^ ACTIVESUPERTOKEN THEN % THIS "ELSE" STOPPED IT 0095900077/03/24 + IF SUPERTOKENSTARTER = REPLCLASS THEN 0096000077/03/24 + BEGIN % RESTART IT 0096100077/03/24 + EMITANDINDENT2; 0096200077/03/24 + ACTIVESUPERTOKEN := TRUE; 0096300077/03/24 + END; 0096400077/03/24 + E := F := FALSE; 0096500077/03/21 + END 0096600077/03/21 + ELSE 0096700077/03/21 + BEGIN 0096800077/03/21 + IF ACTIVESUPERTOKEN THEN % THIS ELSE ENDS A REPLACE 0096900077/03/21 + TRANSFERSUPERTOKEN; 0097000077/03/21 + IF ^ LINEEMPTY THEN 00971000 + EMITWITHNOCOMMENTCHK; 00972000 + INITIALIZEDEST(M + ELSEOFFSET); 0097300076/07/19 + PUTTOKEN; % TRANSFER THE "ELSE" TO DESTINATION 00974000 + EMIT; % SETS "LASTTYPE" TO UNDEFINED 0097500077/03/21 + SKAN; 00976000 + INHIBITSCAN := TRUE; 0097700077/03/18 + IE.ELSEMARGINF := 0097800077/03/21 + IF ITSANIF IMP INDENTELSEIF THEN 0097900077/03/21 + M + INCREMENT 0098000077/03/21 + ELSE 0098100077/03/21 + M; 0098200077/03/21 + END 0098300076/07/19 + ELSE % NOT AN "ELSE"; MUST BE ";" OR "END" 0098400076/07/19 + F := ^ ITSANEND; % SET F IF ITS A ";" 0098500077/03/18 + IFSDOING := * - 1; 0098600077/03/18 +END OF IFCLAUSE; 0098700081/10/14.1 +BOOLEAN PROCEDURE INITIALIZATION; 0098800078/07/27 +BEGIN 0098900078/07/27 + EBCDIC VALUE ARRAY 0099000078/07/27 + FKMSGS("INPUT MUST BE ALGOL, DCALGOL OR ESPOL SYMBOLIC" 0099100078/07/27 + 48"00""SEQDATA FILE ASSUMED TO BE ALGOL SYMBOLIC"48"00"); 0099200078/07/27 + BOOLEAN 0099300078/07/27 + FKOK; 0099400078/07/27 + INTEGER 0099500078/07/27 + COL = FKOK; 0099600078/07/27 + POINTER 0099700076/07/14 + SP, 0099800076/07/14 + PFNA; 0099900076/07/14 + PROCEDURE PUTPERIODAFTERFILENAME(SP,COL); 0100000076/07/14 + INTEGER 0100100076/07/14 + COL; 0100200076/07/14 + POINTER 0100300076/07/14 + SP; 0100400076/07/14 + BEGIN 0100500076/07/14 + POINTER 0100600076/07/14 + TP; 0100700076/07/14 + DO BEGIN 0100800076/07/14 + IF SP = "/" THEN 0100900076/07/14 + BEGIN 0101000076/07/14 + SP := * + 1; 0101100076/07/14 + COL := * - 1; 0101200076/07/14 + END; 0101300076/07/14 + IF SP = QUOTE THEN 0101400077/07/07 + BEGIN 0101500077/07/07 + SCAN SP:SP + 1 FOR COL:COL - 1 UNTIL = QUOTE; 0101600077/07/07 + SP := * + 1; 0101700076/07/14 + COL := * - 1; 0101800076/07/14 + END 0101900076/07/14 + ELSE 0102000076/07/14 + SCAN SP:SP FOR COL:COL WHILE IN ALPHA; 0102100076/07/14 + END 0102200076/07/19 + UNTIL SP ^= "/"; 0102300076/07/19 + TP := SP; 0102400076/07/14 + SCAN SP:SP FOR COL:COL WHILE = " "; 0102500076/07/14 + IF COL > 0 THEN 0102600076/07/14 + IF SP = "ON " THEN 0102700076/07/14 + BEGIN 0102800076/07/14 + SCAN SP:SP + 3 FOR COL:COL - 3 UNTIL IN ALPHA; 0102900076/07/14 + SCAN SP:SP FOR COL:COL WHILE IN ALPHA; 0103000076/07/14 + TP := SP; 0103100076/07/14 + END; 0103200076/07/14 + REPLACE TP BY "."; 0103300076/07/14 + END PUT PERIOD AFTER FILE NAME; 0103400081/10/14.1 + INDENTTHENIF := LEFTCOMMENTS := LOCKCOMMENTS := NEATUPTOG := 0103500080/08/04 + ONEPERLINE := TRUE; 0103600080/08/04 + INCREMENT := 3; 01037000 + DECINDENT := 7; 01038000 + DEFINEINDENT := 22; 0103900076/11/15 + PROCINDENT := OBMARGIN := 5; 0104000078/07/24 + LINELENGTH := 72; 01041000 + SEQINC := 1000; 01042000 + STOKP := SUPERTOK; 0104300076/07/20 + SCAN SP := PARA FOR COL:256 UNTIL = 48"00"; 0104400076/07/14 + COL := 256 - COL; 0104500076/07/14 + SCAN SP:SP FOR COL:COL WHILE = " "; 0104600076/07/14 + PFNA := SP; 0104700076/07/14 + PUTPERIODAFTERFILENAME(SP,COL); 0104800076/07/14 + REPLACE INPUT.TITLE BY PFNA; 0104900076/07/19 + INPUT.OPEN := TRUE; 0105000076/07/19 + SCAN SP:SP FOR COL:COL UNTIL IN ALPHA; 0105100076/07/14 + IF COL > 0 THEN 0105200076/07/15 + BEGIN 0105300076/07/15 + IF IF COL >= 4 THEN 0105400076/07/15 + SP = "MAKE" 0105500076/07/15 + ELSE 0105600076/07/15 + FALSE 0105700076/07/15 + THEN 0105800076/07/15 + BEGIN 0105900076/07/15 + SCAN SP:SP + 4 FOR COL:COL - 4 WHILE = " "; 0106000076/07/15 + IF IF COL >= 4 THEN 0106100076/07/19 + SP = "SELF" AND SP + 4 ^= "/" 0106200076/07/19 + ELSE 0106300076/07/19 + FALSE 0106400076/07/19 + THEN 0106500076/07/19 + ELSE 0106600076/07/19 + BEGIN 0106700076/07/19 + PFNA := SP; 0106800076/07/19 + PUTPERIODAFTERFILENAME(SP,COL); 0106900076/07/19 + END; 0107000076/07/19 + REPLACE OUTPUT.TITLE BY PFNA; 0107100076/07/19 + MAKENEWFILE := TRUE; 0107200076/07/14 + SCAN SP:SP FOR COL:COL UNTIL IN ALPHA; 0107300076/07/14 + END; 0107400076/07/14 + IF COL > 0 THEN % NEATUP OPTIONS INCLUDED 0107500076/07/14 + DOLLARCARD(SP,COL); 0107600076/07/19 + END; 0107700076/07/14 + INPUTFKIND := INPUT.FILEKIND; 0107800078/07/27 + OUTPUT.FILEKIND := INPUTFKIND; 0107900078/07/27 + FKOK := TRUE; 0108000078/07/27 + IF INPUTFKIND ^= VALUE(ALGOLSYMBOL) THEN 0108100078/07/27 + IF INPUTFKIND ^= VALUE(DCALGOLSYMBOL) THEN 0108200078/07/27 + IF INPUTFKIND ^= VALUE(DMALGOLSYMBOL) THEN 0108300078/07/27 + IF INPUTFKIND ^= VALUE(ESPOLSYMBOL) THEN 0108400078/07/27 + IF INPUTFKIND = VALUE(SEQDATA) THEN 0108500078/07/27 + BEGIN 0108600078/07/27 + INPUTFKIND := VALUE(ALGOLSYMBOL); 0108700078/07/27 + DISPLAY(FKMSGS[47]); 0108800078/07/27 + END 0108900078/07/27 + ELSE 0109000078/07/27 + BEGIN 0109100078/07/27 + FKOK := FALSE; 0109200078/07/27 + DISPLAY(FKMSGS[0]); 0109300078/07/27 + END; 0109400078/07/27 + IF INITIALIZATION := FKOK THEN 01095000 + BEGIN 01096000 + BLANKOUT; 01097000 + REPLACE SOURCE BY " " FOR 15 WORDS; 01098000 + INITIALIZEDEST(0); 0109900078/07/25 + DO BEGIN % PROCESS INITIAL "$" AND "%" CARDS 0110000078/07/24 + SKAN; 0110100078/07/24 + IF TYPE = PCOMMENT THEN 0110200078/07/24 + PUTCOMMENT; 0110300078/07/24 + END 0110400078/07/24 + UNTIL TYPE ^= PCOMMENT; 0110500078/07/24 + IF PA = "[" THEN % PROCESS GLOBAL DECLARATIONS 0110600078/07/24 + BEGIN 0110700078/07/24 + INITIALIZEDEST(0); 0110800078/07/24 + ACTIVESUPERTOKEN := FALSE; 0110900078/07/24 + PUTTOKEN; 0111000078/07/24 + PROCESSINGGLOBALDECS := TRUE; 0111100078/07/25 + DO BEGIN 0111200078/07/25 + EMIT; 0111300078/07/25 + TRANSFERSTMT(TRUE,0,INCREMENT); 0111400078/07/24 + END 0111500078/07/25 + UNTIL PA = "]"; 0111600078/07/25 + PROCESSINGGLOBALDECS := FALSE; 0111700078/07/25 + EMIT; 0111800078/07/25 + SKAN; 0111900078/07/24 + END; 0112000078/07/24 + INHIBITSCAN := ALREADYINDENTED := FIRSTBLOCK := TRUE; 0112100078/07/25 + END; 0112200078/07/27 +END INITIALIZATION; 0112300081/10/14.1 +PROCEDURE ITERATIONCLAUSE(M); 01124000 +VALUE 01125000 + M; 01126000 +INTEGER 01127000 + M; 01128000 +BEGIN 0112900077/07/08 + INTEGER 0113000077/07/08 + THISSEQ; 0113100077/07/08 + PUTTOKEN; % TRANSFER START OF ITERATION CLAUSE 01132000 + SPACEFLAG := PIN IN OPENERS; 0113300078/07/24 + LOOKINGFORDO := TRUE; 01134000 + LASTTYPE := IDFR; 01135000 + THISSEQ := SEQ; 0113600077/07/08 + TRANSFERSTMT(FALSE,M,INCREMENT); % XFER UNTIL "DO" 01137000 + LOOKINGFORDO := FALSE; 01138000 + IF PA ^= "#" THEN 0113900077/07/08 + BEGIN 0114000077/07/08 + IF THISSEQ ^= SEQ OR CA > COT THEN % DO ON ANOTHER LINE 0114100077/07/08 + BEGIN 0114200077/07/08 + IF ^ LINEEMPTY THEN 0114300077/07/08 + EMITWITHNOCOMMENTCHK; 0114400077/07/08 + INITIALIZEDEST(M); 0114500077/07/08 + END; 0114600077/07/08 + PUTTOKEN; 0114700077/07/08 + EMIT; % SPOUT THE ITERATION CLAUSE 0114800077/07/08 + END; 0114900077/07/08 +END OF ITERATIONCLAUSE; 0115000081/10/14.1 +BOOLEAN PROCEDURE ITSALABEL; 01151000 +BEGIN 01152000 + SCANTILNOTBLANK; 01153000 + IF ^ DECLFLAG THEN 01154000 + IF PIN = ":" THEN 01155000 + ITSALABEL := PIN + 1 ^= "="; 01156000 +END OF ITSALABEL; 0115700081/10/14.1 +PROCEDURE NEXTCARD; 01158000 +BEGIN 01159000 + INTEGER 01160000 + TS; 01161000 + POINTER 01162000 + TP; 01163000 + DO BEGIN 0116400078/07/27 + READ(INPUT,90,SOURCE)[EOF]; 0116500078/07/27 + REPLACE DEST[80] BY SOURCE[80] FOR 10; % PRESERVE PATCH IDS 0116600076/07/19 + SCAN TP:PIN := SOURCE FOR TS:CIN := 72 WHILE = " "; 0116700076/07/20 + IF ^ NEATUPTOG OR OMITTOG THEN 0116800081/10/14.1 + IF TP = "$" THEN 0116900076/07/19 + DOLLARCARD(TP,TS); 0117000076/07/19 + IF ^ NEATUPTOG OR OMITTOG THEN 0117100081/10/14.1 + COPY; 0117200076/07/19 + END 0117300081/09/22 + UNTIL NEATUPTOG AND ^ OMITTOG; 0117400081/10/14.1 +END NEXTCARD; 0117500081/10/14.1 +PROCEDURE PRINTITNEAT; 01176000 +BEGIN 01177000 + REAL 01178000 + T; 01179000 + OWN BOOLEAN 01180000 + HADAHEADING; 01181000 + IF HADAHEADING THEN % NOTHING 01182000 + ELSE 01183000 + BEGIN 01184000 + REPLACE PBUF BY " " FOR 22 WORDS; 01185000 + IF MAKENEWFILE THEN 01186000 + REPLACE PBUF BY OUTPUT.TITLE 01187000 + ELSE 01188000 + REPLACE PBUF BY INPUT.TITLE; 01189000 + REPLACE PBUF[80] BY 0119000081/10/14.1 + (T:= TIME (15)).[15:48] FOR 2, "/", 0119010081/10/14.1 + T FOR 2, "/", 0119020081/10/14.1 + T.[31:48] FOR 2, " " FOR 3, 0119030081/10/14.1 + (T:= TIME (1) DIV 3600) DIV 60 FOR 2 DIGITS, ":", 0119040081/10/14.1 + T MOD 60 FOR 2 DIGITS; 0119050081/10/14.1 + WRITE(LINE[SPACE 3],22,PBUF); 01191000 + HADAHEADING := TRUE; 01192000 + END; 01193000 + REPLACE PBUF BY " " FOR 22 WORDS; 01194000 + REPLACE PBUF BY " " FOR 8 - T := DIGITSIN(SEQ), SEQ FOR T DIGITS, 01195000 + " " FOR 5,DEST FOR 72, " " FOR 8, SEQ FOR 8 DIGITS, " " FOR 5, 01196000 + DEST[80] FOR 10 WHILE >= " "; 01197000 + WRITE(LINE,22,PBUF); 01198000 +END PRINTITNEAT; 0119900081/10/14.1 +PROCEDURE PUTCOMMENT; % SCANNER HAS ENCOUNTERED A "%" COMMENT WHICH 0120000077/07/06 +BEGIN % IS CURRENTLY IN ACCUM. -- IF COMMENT WAS 01201000 + BOOLEAN 0120200077/07/06 + DOLLAR, 0120300077/07/06 + DOLLARDONE, 0120400077/07/06 + REACTIVATESUPERTOKEN; 0120500077/03/01 + INTEGER 0120600077/03/01 + OLDACTIVEPARENS, 0120700077/03/01 + OLDACTIVEBRACKETS; 0120800077/03/01 + POINTER 01209000 + PC; 01210000 + IF ACTIVESUPERTOKEN THEN 0121100077/03/01 + BEGIN 0121200077/03/01 + REACTIVATESUPERTOKEN := TRUE; 0121300077/03/01 + OLDACTIVEPARENS := ACTIVEPARENS; 0121400077/03/01 + OLDACTIVEBRACKETS := ACTIVEBRACKETS; 0121500077/03/01 + TRANSFERSUPERTOKEN; 01216000 + END; 0121700077/03/01 + IF DOLLAR := PA = "$" THEN 01218000 + BEGIN 01219000 + SCAN PC:SOURCE FOR 72 WHILE = " "; 01220000 + IF PC = "$" THEN % ON A LINE OF ITS ON - DO IT FIRST 01221000 + BEGIN 01222000 + DOLLARDONE := TRUE; 01223000 + DOLLARCARD(PA,CA); 01224000 + END; 01225000 + END; 01226000 + IF CA = 72 THEN % ON A CARD BY ITSELF IT IS SIMPLY TRANSFERRED01227000 + BEGIN 01228000 + IF ^ LINEEMPTY THEN 01229000 + EMITWITHNOCOMMENTCHK; % SPOUT CURRENT CONTENTS 01230000 + REPLACE DEST BY PA FOR 72; 01231000 + END 01232000 + ELSE 01233000 + BEGIN 01234000 + STRIPTRAILINGBLANKS; 01235000 + PC := 0123600080/09/11 + IF DOLLAR OR (LOCKCOMMENTS 0123700077/07/06 + AND (LEFTCOMMENTS IMP MARKER + OFFSET(POUT) <= 72)) 0123800077/07/06 + THEN 0123900077/07/06 + DEST[72 - MARKER] 0124000077/07/06 + ELSE 0124100077/07/06 + IF LEFTCOMMENTS AND CA + OFFSET(POUT) < 72 THEN 0124200077/07/06 + POUT + REAL(DEST[OFFSET(POUT) - 1] ^= " ") 0124300077/07/06 + ELSE 0124400077/07/06 + IF LOCKCOMMENTS THEN 0124500077/07/06 + DEST[72 - MARKER] 0124600077/07/06 + ELSE 0124700077/07/06 + DEST[LINELENGTH - CA]; 0124800077/07/06 + IF OFFSET(PC) < OFFSET(POUT) THEN 01249000 + IF ^ LINEEMPTY THEN 01250000 + EMITWITHNOCOMMENTCHK; % WON'T FIT 01251000 + REPLACE PC BY PA FOR CA; 01252000 + COT := 0125300077/03/21 + IF DECLFLAG THEN 0125400077/03/21 + BLOCKBASE + DECINDENT + 2 0125500077/03/21 + ELSE 0125600077/03/21 + GMARGIN + 2; 0125700077/03/21 + POUT := DEST[COT]; 01258000 + COT := LINELENGTH - COT; 01259000 + END; 01260000 + IF (CA = 72 AND DOLLAR) THEN % NEVER COPY $ CARDS IN COL 1 0126100077/07/06 + BLANKOUT 01262000 + ELSE 01263000 + EMITWITHNOCOMMENTCHK; 01264000 + IF DOLLAR AND ^ DOLLARDONE THEN 0126500077/03/01 + DOLLARCARD(PA,CA); 0126600077/03/01 + IF REACTIVATESUPERTOKEN THEN 0126700077/03/01 + BEGIN 0126800077/03/01 + ACTIVESUPERTOKEN := TRUE; 0126900077/03/01 + ACTIVEPARENS := OLDACTIVEPARENS; 0127000077/03/01 + ACTIVEBRACKETS := OLDACTIVEBRACKETS; 0127100077/03/01 + END; 0127200077/03/01 +END OF PUTCOMMENT; 0127300081/10/14.1 +PROCEDURE PUTLABEL(LP,LL,MARGIN,BACKOFF); 01274000 +VALUE 01275000 + LP, 01276000 + LL, 01277000 + MARGIN, 01278000 + BACKOFF; 01279000 +INTEGER 01280000 + LL, 01281000 + MARGIN, 01282000 + BACKOFF; 01283000 +POINTER 01284000 + LP; 01285000 +BEGIN 01286000 + REAL 01287000 + LLLIMIT = MARGIN; 01288000 + IF ^ LINEEMPTY THEN 01289000 + EMIT; 01290000 + REPLACE DEST[MAX(0,MARGIN - 2 * BACKOFF)] BY LP FOR LL, ":"; 01291000 + PIN := PIN + 1; % MOVE SOURCE PTR PAST THE ":" 01292000 + CIN := CIN - 1; 01293000 + SKAN; 0129400077/03/22 + INHIBITSCAN := TRUE; 0129500077/03/22 + LLLIMIT := 0129600077/03/21 + IF 2 * BACKOFF >= MARGIN THEN 0129700077/03/21 + MARGIN 0129800077/03/21 + ELSE 0129900077/03/21 + IF ITSABEGIN AND ALREADYINDENTED THEN 0130000077/03/21 + BACKOFF 0130100077/03/21 + ELSE 0130200077/03/21 + 2 * BACKOFF; 0130300077/03/21 + IF LL + 1 >= LLLIMIT THEN 01304000 + EMITWITHNOCOMMENTCHK; % LABEL IS TOO LONG FOR WHAT FOLLOWS 01305000 +END OF PUTLABEL; 0130600081/10/14.1 +PROCEDURE PUTTOKEN; % MOVES THE CURRENT TOKEN FROM PA TO DEST 01307000 +BEGIN 01308000 + IF ACTIVESUPERTOKEN THEN 01309000 + BUILDSUPERTOKEN 01310000 + ELSE 01311000 + BEGIN 01312000 + IF CA > COT THEN % NOT ENOUGH ROOM IN OUTPUT LINE 01313000 + EMITANDINDENT2; 01314000 + REPLACE POUT:POUT BY PA FOR CA; 01315000 + COT := COT - CA; 01316000 + END; 01317000 +END OF PUTTOKEN; 0131800081/10/14.1 +PROCEDURE SKAN; % RETURNS (1) TYPE AND (2) CA--ITS SIZE 01319000 +BEGIN 01320000 + LABEL 01321000 + AGAIN, 01322000 + NBR, 01323000 + EXPO; 01324000 + BOOLEAN 0132500077/03/01 + AFTERBLANK, 0132600077/03/01 + BABLANKS; 0132700077/03/01 + INTEGER 01328000 + T; 01329000 + POINTER 0133000077/03/01 + OLDPA; 0133100077/03/01 + OLDPA := ACCUM[MAX(0,CA - 1)]; % LAST THING OUT 0133200077/03/01 + PA := ACCUM[CA := IDFRDESC := 0]; 0133300077/07/05 + SCANTILNOTBLANK; 01334000 + IF PIN IN IDFRSTARTERS THEN 0133500077/07/05 + BEGIN 0133600077/07/05 + TYPE := IDFR; 0133700077/07/05 + TRANSFER(WHILE IN IDFRVALIDS); 0133800077/07/05 + CHECKFOREDITINGPHRASEA; 0133900077/07/05 + IF FIND(ACCUM,CA,IDFRDESC) THEN 0134000077/07/06 + TYPE := 0134100077/07/06 + IF ITEMKEY[IDFRDESC] = COMMENTC THEN 0134200077/07/06 + CCOMMENT 0134300077/07/06 + ELSE 0134400077/07/06 + KIDFR; 0134500077/07/06 + SCANTILNOTBLANK; 0134600077/07/05 + END IDENTIFIER 0134700077/07/05 + ELSE 0134800077/07/05 + IF PIN IN NUMERICS THEN 0134900077/07/05 + BEGIN 0135000077/07/05 + NBR: TYPE := ANUMBER; 0135100077/07/05 + TRANSFER(WHILE IN NUMERICS); 0135200077/07/05 + CHECKFOREDITINGPHRASEN; 0135300077/07/05 + IF PIN = "." THEN % PICK UP FRACTIONAL PART 0135400077/07/05 + BEGIN 0135500077/07/05 + TRANSFERCT(1); 0135600077/07/05 + TRANSFER(WHILE IN NUMERICS); 0135700077/07/05 + END 0135800077/07/07 + ELSE 0135900077/07/07 + IF PIN = "@" THEN 0136000077/07/07 + GO TO EXPO 0136100077/07/07 + ELSE 0136200077/07/07 + IF PIN = QUOTE THEN % CALL STRING WITH CHAR SIZE A NUMBER 0136300077/07/07 + BEGIN 0136400077/07/07 + TRANSFERCT(2); 0136500077/07/07 + TRANSFER(UNTIL = QUOTE); 0136600077/07/07 + TRANSFERCT(1); 0136700077/07/07 + END; 0136800077/07/07 + END NUMBER 01369000 + ELSE 01370000 + IF PIN = QUOTE THEN 01371000 + BEGIN 01372000 + TRANSFERCT(2); 01373000 + AGAIN: 0137400077/07/07 + TRANSFER(UNTIL = QUOTE); 0137500077/07/07 + TRANSFERCT(1); 01376000 + SCANTILNOTBLANK; % CHECK FOR A CONTINUED STRING ON0137700081/05/07 + IF LASTTYPE ^= ANUMBER THEN % === NEEDS WORK FOR 48" STUFF ==0137800081/05/07 + IF PIN = QUOTE THEN % THE SOURCE 0137900081/05/07 + IF PIN + 1 ^= QUOTE THEN % IF NEXT STRING DOESN'T START 0138000081/05/07 + BEGIN % WITH A QUOTE THEN CONNECT THEM.0138100081/05/07 + PIN := PIN + 1; 01382000 + CIN := CIN - 1; 01383000 + PA := PA - 1; % WIPE OUT THE OLD QUOTE 01384000 + CA := CA - 1; % ADJUST THE COUNT 01385000 + GO AGAIN; 01386000 + END; 01387000 + TYPE := ASTRING; 0138800081/05/07 + END STRING 01389000 + ELSE 01390000 + IF PIN = "%" OR PIN = "$" THEN 01391000 + BEGIN 01392000 + MARKER := CIN; % FOR "LOCKCOMMENTS" OPTION 01393000 + TYPE := PCOMMENT; 01394000 + REPLACE PA BY PIN:PIN FOR CA := CIN; 01395000 + CIN := 0; 01396000 + END 0139700077/07/05 + ELSE 0139800077/07/05 + BEGIN %% OTHER SPECIAL CHARACTERS 0139900077/07/05 + IF PIN = 48"C0" THEN 01400000 + REPLACE PIN BY "+"; 01401000 + IF PIN = "." THEN 01402000 + IF PIN + 1 IN NUMERICS THEN % IT'S A DECIMAL POINT 01403000 + GO TO NBR; 01404000 + IF PIN = "@" THEN 01405000 + BEGIN 01406000 + EXPO: TRANSFERCT(1); 01407000 + IF PIN = "-" OR PIN = "+" THEN 01408000 + TRANSFERCT(1); 01409000 + GO TO NBR; 01410000 + END; 01411000 + TYPE := SPECIALCHAR; 01412000 + CA := 1; 01413000 + IF PIN IN BLANKAROUNDS THEN % ADD "AND PUTEXTRASPACES" FOR OPT 01414000 + BEGIN 01415000 + IF PIN + 1 = "=" OR PIN = "**" OR PIN = "!!" THEN 01416000 + BEGIN 01417000 + BABLANKS := TRUE; 01418000 + CA := 2; 01419000 + END 0142000077/07/07 + ELSE 0142100077/07/07 + IF PIN ^= ":" THEN 0142200077/07/07 + IF LASTTYPE = SPECIALCHAR THEN 0142300077/07/07 + BEGIN 0142400077/07/07 + BABLANKS := OLDPA IN BLANKAROUNDS OR OLDPA IN CLOSERS; 0142500077/07/07 + IF ^ BABLANKS THEN 0142600077/03/01 + AFTERBLANK := OLDPA = " "; 0142700077/03/01 + % JUST ADD BLANK AFTER CHAR 0142800077/03/01 + END 0142900081/05/07 + ELSE 0143000081/05/07 + BABLANKS := LASTTYPE ^= ASTRING; 0143100081/05/07 + END 01432000 + ELSE 01433000 + IF PIN IN OPENERS THEN 01434000 + IF ^ ACTIVESUPERTOKEN THEN 01435000 + BEGIN 01436000 + ACTIVESUPERTOKEN := TRUE; 01437000 + SUPERTOKENSTARTER := REAL(PIN = "("); 01438000 + END; 01439000 + CIN := CIN - CA; 01440000 + REPLACE PA BY " " FOR REAL(BABLANKS), PIN:PIN FOR CA, " "; 01441000 + IF BABLANKS THEN 0144200077/03/01 + CA := CA + 2 0144300077/03/01 + ELSE 0144400077/03/01 + IF AFTERBLANK THEN 0144500077/03/01 + CA := CA + 1; 0144600077/03/01 + END SPECIAL CHARACTERS; 0144700077/07/05 + PA := ACCUM[0]; 0144800077/07/05 +END OF THE SCANNER; 0144900081/10/14.1 +PROCEDURE TRANSFERSTMT(STMTSTARTER,MARGIN,BACKOFF); 01450000 +VALUE 01451000 + STMTSTARTER, 01452000 + MARGIN, 01453000 + BACKOFF; 01454000 +BOOLEAN 01455000 + STMTSTARTER; 01456000 +INTEGER 01457000 + MARGIN, 01458000 + BACKOFF; 01459000 +BEGIN 01460000 + LABEL 01461000 + LOOP, 01462000 + XIT, 01463000 + DOIT; 01464000 + BOOLEAN 01465000 + ELSEF, 01466000 + FINIS, 01467000 + SPACEKEY, 01468000 + FLAG, 0146900078/07/26 + DONTPUTIT = FLAG, 0147000078/07/26 + ENDOFLINE; 01471000 + INTEGER 01472000 + OLDBLOCKBASE; 01473000 +LOOP: 01474000 + ENDOFLINE := FALSE; 01475000 + DO BEGIN 0147600077/03/22 + IF SPACEFLAG THEN 0147700077/03/22 + PUTBLANK; 0147800077/03/22 + SPACEFLAG := FALSE; 0147900077/03/22 + IF ^ INHIBITSCAN THEN 01480000 + SKAN; 01481000 + INHIBITSCAN := FALSE; 01482000 + IF STMTSTARTER THEN 0148300077/07/05 + BEGIN 0148400077/07/05 + IF DECLFLAG := ITSADECLARATION THEN 0148500077/07/05 + BEGIN 0148600077/07/05 + INITIALIZEDEST(BLOCKBASE); 0148700077/07/05 + IF ITSADEFINE THEN 01488000 + BEGIN 01489000 + DEFINEDECLARATION; 01490000 + GO LOOP; 01491000 + END; 01492000 + FLAG := FALSE; 01493000 + DO BEGIN 01494000 + IF ITSAPROCEDURE THEN 01495000 + PROCINPROGRESS := FLAG := TRUE; 01496000 + PUTTOKEN; 01497000 + PUTBLANK; 01498000 + SKAN; 01499000 + END 01500000 + UNTIL ^ ITSADECLARATION; 01501000 + IF ONEPERLINE THEN 01502000 + IF ^ (FLAG OR DEFINEINPROGRESS) THEN 01503000 + BEGIN 01504000 + EMITWITHNOCOMMENTCHK; 01505000 + INITIALIZEDEST(BLOCKBASE + DECINDENT); 01506000 + END; 01507000 + END 01508000 + ELSE % *** NOT A DECLARATION *** 01509000 + BEGIN 01510000 + IF PROCINPROGRESS AND TYPE ^= PCOMMENT THEN 01511000 + BEGIN 01512000 + PROCINPROGRESS := FALSE; 01513000 + ALREADYINDENTED := INHIBITSCAN := TRUE; 01514000 + TRANSFERSTMT(TRUE,BLOCKBASE + PROCINDENT,PROCINDENT)01515000 + ; 01516000 + GO XIT; 01517000 + END; 01518000 + INITIALIZEDEST(MARGIN); 01519000 + IF ITSANITER THEN 01520000 + BEGIN 01521000 + ITERATIONCLAUSE(MARGIN); 01522000 + IF PA = "#" THEN 01523000 + GO XIT; 01524000 + MARGIN := MARGIN + INCREMENT; 01525000 + ALREADYINDENTED := TRUE; 01526000 + GO LOOP; 01527000 + END; 01528000 + IF ITSACASE THEN 0152900077/06/30 + BEGIN 0153000077/06/30 + CASESTMT(MARGIN); 0153100077/06/30 + GO LOOP; 0153200077/06/30 + END; 0153300077/06/30 + END OF STMTS; 01534000 + END OF STATEMENT STARTERS; 01535000 + DOIT: CASE TYPE OF 0153600078/07/24 + BEGIN 0153700078/07/24 + KIDFR: 0153800078/07/24 + IDFR: BEGIN % -- IDFR 0153900078/07/24 + IF SPACENEEDED THEN 01540000 + PUTBLANK; 01541000 + IF PIN IN OPENERS THEN % "([" 0154200077/03/22 + IF ^ SPACEFLAG := ITSARESWORD THEN % PUT IN A BLANK 0154300077/03/22 + IF ^ ACTIVESUPERTOKEN THEN 0154400081/05/07 + BEGIN 0154500081/05/07 + % DO NOW SO NONRESWORD IS PART OF SUPERTOKEN 0154600081/05/07 + ACTIVESUPERTOKEN := TRUE; 0154700077/03/22 + SUPERTOKENSTARTER := REAL(PIN = "("); 0154800077/03/22 + END; 0154900077/07/06 + TYPE := IDFR; 0155000077/07/06 + IF ITSABEGIN THEN 0155100078/07/25 + BEGIN 0155200078/07/25 + IF ALREADYINDENTED THEN 0155300078/07/25 + ALREADYINDENTED := FALSE 0155400078/07/25 + ELSE 0155500078/07/25 + MARGIN := MARGIN + INCREMENT; 0155600078/07/25 + IF DOINGADO THEN 01557000 + DOBLOCKCOUNT := * + 1; 01558000 + OLDBLOCKBASE := BLOCKBASE; 01559000 + IF FIRSTBLOCK THEN 0156000078/07/25 + FIRSTBLOCK := FALSE 0156100078/07/25 + ELSE 0156200078/07/25 + BLOCKBASE := MARGIN; 0156300078/07/25 + BLOCK(MARGIN,BACKOFF); 0156400078/07/25 + BLOCKBASE := OLDBLOCKBASE; 01565000 + IF DOINGADO THEN 01566000 + DOBLOCKCOUNT := * - 1; 01567000 + GO DOIT; 01568000 + END 01569000 + ELSE 01570000 + IF ITSANIF THEN 01571000 + BEGIN 01572000 + IFCLAUSE(STMTSTARTER,MARGIN,FINIS,ELSEF); 01573000 + IF ELSEF THEN 0157400077/03/18 + BEGIN 0157500077/03/18 + MARGIN := REAL(ELSEF.ELSEMARGINF); 0157600077/03/18 + INITIALIZEDEST(MARGIN); 0157700077/03/18 + ALREADYINDENTED := TRUE; 01578000 + GO LOOP; 01579000 + END; 01580000 + IF FINIS THEN 01581000 + GO XIT; 01582000 + IF ACTIVESUPERTOKEN THEN 0158300077/03/21 + GO LOOP; 0158400077/03/21 + END 01585000 + ELSE 01586000 + IF ITSADO AND ^ (LOOKINGFORDO OR ACTIVESUPERTOKEN) THEN01587000 + BEGIN 01588000 + DOSTMT(MARGIN); 01589000 + GO DOIT; 01590000 + END 0159100077/07/05 + ELSE 0159200077/07/05 + IF DECLFLAG AND PA = "'" THEN % CT OK IN DEC 0159300077/07/05 + IF ITSANITER THEN 0159400077/07/05 + BEGIN 0159500077/07/05 + ITERATIONCLAUSE(BLOCKBASE + DECINDENT); 0159600077/07/05 + IF PA = "#" THEN 0159700077/07/05 + GO XIT; 0159800077/07/05 + GO LOOP; 0159900077/07/05 + END; 0160000077/07/05 + IF STMTSTARTER THEN 01601000 + IF ITSALABEL THEN 01602000 + BEGIN 01603000 + PUTLABEL(PA,CA,MARGIN,BACKOFF); 01604000 + GO LOOP; 01605000 + END; 01606000 + DONTPUTIT := FALSE; 0160700078/07/26 + CASE ITEMKEY[IDFRDESC] OF 0160800078/07/26 + BEGIN 0160900078/07/26 + DOC: ENDOFLINE := DONTPUTIT := LOOKINGFORDO; 0161000078/07/26 + ELSE: ; 0161100078/07/26 + ENDC: ENDOFLINE := DONTPUTIT := TRUE; 0161200078/07/26 + OFC: ENDOFLINE := DONTPUTIT := LOOKINGFOROF; 0161300078/07/26 + THENC: 0161400078/07/26 + ELSEC: 0161500078/07/26 + ENDOFLINE := TRUE; 0161600078/07/26 + DONTPUTIT := IFSDOING > 0; 0161700078/07/26 + UNTILC: 0161800078/07/26 + ENDOFLINE := DONTPUTIT := ADOSUNTIL; 0161900078/07/26 + END CASE ON ITEMKEY; 0162000078/07/26 + IF ^ DONTPUTIT THEN 01621000 + BEGIN 01622000 + PUTTOKEN; 01623000 + IF ITSABY THEN 01624000 + BEGIN 01625000 + ACTIVESUPERTOKEN := TRUE; 01626000 + SUPERTOKENSTARTER := REPLCLASS; 01627000 + END; 01628000 + END; 01629000 + END OF IDFR; 01630000 + ANUMBER: 0163100078/07/24 + BEGIN % -- NUMBER 0163200078/07/24 + IF STMTSTARTER AND ^ DEFINEINPROGRESS THEN 01633000 + IF ITSALABEL THEN 01634000 + BEGIN % EMIT CASE NUMBER OF FORM 1: 01635000 + PUTLABEL(PA,CA,MARGIN,BACKOFF); 01636000 + GO LOOP; 01637000 + END; 01638000 + IF LASTTYPE = IDFR THEN 01639000 + PUTBLANK; 01640000 + PUTTOKEN; 01641000 + END OF NUMBER; 01642000 + SPECIALCHAR: 0164300078/07/24 + BEGIN % -- SPECIAL CHARACTER 0164400078/07/24 + IF PA = "#" THEN 01645000 + PUTBLANK 01646000 + ELSE 01647000 + IF ACTIVESUPERTOKEN AND SUPERTOKENSTARTER = PARENCLASS 01648000 + AND ACTIVEBRACKETS = 0 AND ACTIVEPARENS = 1 01649000 + THEN 01650000 + IF PA = ")" THEN 01651000 + IF ITSALABEL THEN 01652000 + BEGIN % EMIT CASE NUMBER OF FORM (--): 01653000 + ACTIVEPARENS := 2; % SO WON'T XFER SUPERTOKEN 0165400077/03/22 + BUILDSUPERTOKEN; 0165500077/03/22 + ACTIVESUPERTOKEN := FALSE; 0165600077/03/22 + PUTLABEL(STOKP := SUPERTOK,STL,MARGIN,BACKOFF)0165700077/03/22 + ; 0165800077/03/22 + ACTIVEPARENS := ACTIVEBRACKETS := STM := STL 01659000 + := LASTCOMMA := LASTTYPE := 0; 01660000 + STMTSTARTER := TRUE; 01661000 + GO LOOP; 01662000 + END; 01663000 + SPACEKEY := PA IN CLOSERS; % ) OR ] 0166400077/07/07 + IF ^ ENDOFLINE := PA = ";" OR PA = "#" THEN 0166500078/07/25 + IF PROCESSINGGLOBALDECS THEN 0166600078/07/25 + IF ^ DEFINEINPROGRESS THEN 0166700078/07/25 + ENDOFLINE := PA = "]" AND ^ ACTIVESUPERTOKEN; 0166800078/07/25 + PUTTOKEN; 01669000 + IF PA = "," AND ^ DEFINEINPROGRESS THEN 01670000 + PROCESSCOMMA; 01671000 + END OF SPECIAL CHARACTER; 01672000 + ASTRING: 01673000 + BEGIN 01674000 + IF STMTSTARTER THEN 01675000 + IF ITSALABEL THEN 01676000 + BEGIN 01677000 + PUTLABEL(PA,CA,MARGIN,BACKOFF); 01678000 + GO LOOP; 01679000 + END; 01680000 + XFERSTRING; 01681000 + END; 01682000 + PCOMMENT: 0168300078/07/24 + BEGIN 0168400078/07/24 + PUTCOMMENT; % -- "%" COMMENT AND "$" CARDS 0168500078/07/24 + IF DECLFLAG THEN 01686000 + STMTSTARTER := FALSE; 01687000 + GO LOOP; 01688000 + END OF PERCENT COMMENT; 01689000 + CCOMMENT: 0169000077/07/06 + BEGIN 0169100077/07/06 + HANDLECOMMENT; 0169200077/07/06 + GO LOOP; 0169300077/07/06 + END OF NORMAL COMMENT; 0169400077/07/06 + ELSE: ; 01695000 + END OF CASES; 01696000 + LASTTYPE := TYPE; 01697000 + STMTSTARTER := FALSE; 01698000 + END 01699000 + UNTIL ENDOFLINE; 01700000 +XIT: ALREADYINDENTED := FALSE; 01701000 +END OF TRANSFERSTMT; 0170200081/10/14.1 +PROCEDURE TRANSFERSUPERTOKEN; 01703000 +BEGIN 01704000 + ACTIVESUPERTOKEN := FALSE; 01705000 + IF STL > 0 THEN % HAVE SOMETHING TO TRANSFER 0170600077/03/01 + IF COT >= STL THEN % IT FITS ON CURRENT LINE 01707000 + BEGIN 01708000 + REPLACE POUT:POUT BY SUPERTOK FOR STL; 01709000 + COT := COT - STL; 01710000 + IF SUPERTOKENSTARTER = REPLCLASS THEN 01711000 + PUTBLANK; 01712000 + END 01713000 + ELSE 01714000 + IF STL <= NEXTLINESIZE THEN % PUT IT ON THE NEXT LINE 01715000 + BEGIN 0171600077/03/24 + EMITANDINDENT2; 0171700077/03/24 + SCAN STOKP:SUPERTOK FOR STL:STL WHILE = " "; % NOT NEEDED 0171800077/03/21 + REPLACE POUT:POUT BY STOKP FOR STL; 0171900077/03/21 + COT := COT - STL; 01720000 + END 01721000 + ELSE 01722000 + BREAKITUP; 01723000 + ACTIVESUPERTOKEN := SUPERTOKENSTARTER = REPLCLASS AND PA = ","; 01724000 + ACTIVEPARENS := ACTIVEBRACKETS := STM := STL := LASTCOMMA := 0; 01725000 + STOKP := SUPERTOK; 01726000 +END OF TRANSFERSUPERTOKEN; 0172700081/10/14.1 +PROCEDURE XFERSTRING; % MOVES A STRING FROM ACCUM TO DEST 01728000 +BEGIN 01729000 + LABEL 01730000 + LOOP; 01731000 + BOOLEAN 01732000 + F; 01733000 + INTEGER 01734000 + NT, 01735000 + C1, 01736000 + C2; 01737000 + POINTER 01738000 + TP1, 01739000 + TP2; 01740000 + IF LASTTYPE IS IDFR THEN 01741000 + PUTBLANK; 01742000 + IF ACTIVESUPERTOKEN THEN 0174300077/06/14 + BUILDSUPERTOKEN 0174400077/06/14 + ELSE 0174500077/06/14 + BEGIN 0174600077/06/14 + IF F := PA + (CA - 1) = " " THEN % A BLANK HAS BENN TACKED ON 0174700077/06/14 + CA := CA - 1; 01748000 + IF CA > COT THEN % IT WON'T FIT ON THIS LINE 01749000 + IF CA < NEXTLINESIZE THEN% PUT IT ALL ON THE NEXT LINE 0175000081/09/21 + EMITANDINDENT2; 01751000 + LOOP: TP2 := PA; 01752000 + C2 := NT := MIN(CA,COT); 01753000 + DO 01754000 + SCAN TP2:TP1 := TP2 + 1 FOR C2:C1 := C2 - 1 UNTIL = " " 01755000 + UNTIL C2 < 2; 01756000 + IF C2 = 1 THEN % BLANK WON'T FIT 01757000 + BEGIN 01758000 + TP1 := TP2; 01759000 + C1 := C2; 01760000 + END; 01761000 + NT := 01762000 + IF CA <= COT THEN 01763000 + CA 01764000 + ELSE 01765000 + NT - C1; 01766000 + IF NT = 1 THEN 01767000 + NT := COT - 1; 01768000 + REPLACE POUT:POUT BY PA:PA FOR NT; 01769000 + CA := CA - NT; 01770000 + COT := COT - NT; 01771000 + IF CA ^= 0 THEN 01772000 + BEGIN 01773000 + REPLACE POUT:POUT BY QUOTE; 01774000 + EMITANDINDENT2; 01775000 + REPLACE POUT:POUT BY QUOTE; 01776000 + COT := COT - 1; 01777000 + GO LOOP; 01778000 + END; 01779000 + END; 01780000 + IF F THEN 01781000 + PUTBLANK; 01782000 +END OF XFERSTRING; 0178300081/10/14.1 +% *************************** 01784000 +% ***** MAIN PROGRAM ****** 01785000 +% *************************** 01786000 + IF INITIALIZATION THEN 0178700078/07/25 + BEGIN 0178800078/07/25 + WHILE TRUE DO 0178900078/07/25 + BEGIN 0179000078/07/25 + TRANSFERSTMT(TRUE,OBMARGIN,OBMARGIN + BEGINOFFSET); 0179100078/07/25 + EMIT; 0179200078/07/24 + END; 0179300078/07/24 + EOF: IF ^ LINEEMPTY THEN 0179400078/07/25 + EMITWITHNOCOMMENTCHK; 0179500078/07/25 + CLOSE(INPUT,CRUNCH); 0179600078/07/27 + LOCK(OUTPUT,CRUNCH); 0179700078/07/27 + END; 0179800078/07/27 +END. 0179900078/07/24