mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-01-11 23:42:42 +00:00
Correct bad line endings in the repository files that caused problems between checking out in Windows vs Linux clients.
2025 lines
180 KiB
Plaintext
2025 lines
180 KiB
Plaintext
$ 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
|