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