1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-03-05 18:29:15 +00:00
Files
Paul Kimpel 2c72f7fd1d Commit CUBE Library version 13 of February 1972.
1. Commit library tape images, directories, and extracted text files.
2. Commit additional utilities under Unisys-Emode-Tools.
2018-05-27 11:24:23 -07:00

2281 lines
180 KiB
Plaintext

$ TAPE LIST
00000001
00000002
COMMENT: SHIPPING "CONTROL" EDITS OUT NON-STANDARD USAGES TO YIELD %Y9600000003
A VERSION WHICH COMPILES ON A STANDARD SYSTEM. SPECIAL SYSTEM %Y9600000004
DEPENDENT AND EXPERIMENTAL FEATURES ARE ELIDED. REMNANTS OF %Y9600000005
EXCISED PATCHES MAY STILL REMAIN. -- JANUARY 11, 1969 -- ; %Y9600000006
COMMENT SUMMARY OF WESTINGHOUSE PATCHES %W-000000099
W-0 MISCELLANEOUS F69 %W-000000100
W-2 TIMEIT,TIMEITTOG, ETC. F76 %W-200000102
W-3 OCTAL CONSTANTS AND FILL IMPROVEMENTS %W-300000103
W-4 FLUSH NEEDS 7, 9, 10 %W-400000104
W-5 LISTING FORMAT CHANGES F69,70,85,86 %85 %W-500000105
W-6 MISCELLANEOUS FILE DECLARATIONS F69 %W-600000106
W-7 $+ AND $- F65 %W-700000107
W-8 STACKING OF LIST, PRT AND DEBUG (ASSUMES 7) %W-800000108
W-9 ERROR DISPLAY CHANGES F69 %W-900000109
W10 WARNING MESSAGE F69 %W1000000110
W11 LONG JUMPS IN STREAM PROCEDURES %W1100000111
W12 ERROR RECOVERY %W1200000112
W13 $ PURGE OPTION. ASSUMES 9 %W1300000113
W14 EFFICIENT STREAM PROCEDURE CODE F69 %W1400000114
W15 CHANGES IN FILE SIZES. %W1500000115
W16 ERROR DOCUMENTATION (NEEDS 2 AND 4) %W1600000116
W17 $ DISK AND NEW DISK (NEEDS 4) F77 %W1700000117
W20 SOURCE IDENTIFICATION FLAGS %W2000000120
W21 IMPEMENT CI ~ CI + <INTEGER> %W2100000121
W22 CORE SIZE ESTIMATE %W2200000122
W23 PATCH TO PROTECT PROCEDURE STACK %W2300000123
W24 "END *" CONSTRUCT %W2400000124
W25 UNDECLARED LABELS IN STREAM PROCEDURES %W2500000125
W27 STEPI AND STEPIT F60 %W2700000127
W28 $ STOP OPTION %W2800000128
W30 SEGMENT TOO LONG %W3000000130
W31 SUPPRESS SEGMENT ZERO MESSAGE %W3100000131
W32 SUPPRESS STREAM PROCEDURES ON $ -STREAM,87 %W3200000132
W33 IMPLEMENTATION OF NEW LIST SYNTAX F67,72,73 %W3300000133
W35 PERMITS COLUMN 72 OF $$ CARD TO BE NON-BLANK %W3500000135
W37 ASSUME SINGLE SPACING UNLESS $ DOUBLE. F79 %W3700000137
W40 EXPLICIT FORMAT. F65 %W4000000140
W43 COMPILER PRODUCED INDEX AND XREF F61,63,64,66,67,69 %W4300000143
W46 ADDITIONAL ERRORS IN COMPILOR NOT LISTED BY BURROUGHS. F69 %W4600000146
W47 BLANK OUT CALL ON DATIME CF 02231050. %W4700000147
W48 EFFICIENCY INCREASED BY SEGMENTATION F60,69,74 %W4800000148
W49 RECORD COUNT INSERTED. EXTEND EOF LABEL. F70 %W4900000149
W50 ELIMINATE ERROR IN BUR. OCTAL CONSTANT CONSTRUCT(DOL QUOTE) %W5000000150
W51 INTRODUCTION OF PATCHTOG OPTION F71,76 %W5100000151
W52 IMPLEMENT ~* OPERATOR FOR IMPLIED P(DUP,LOD) F69 %W5200000152
W53 IMPLEMENT MULTI-RELATIONAL OPERATORS (A<B<C<...) %W5300000153
W55 CORRECT VARIABLES FOR COMPUTING CORE ESTIMATE FOR BUFFERS. F69 %W5500000155
W56 PROCEDURE CCSCAN (USED BY W57 ET AL) %W5600000156
W57 HANDLING OF QM LINK AND QM END CARDS F59,61,65,84 %84 %W5700000157
W58 LIST FIRST FIVE ERRORS ON TWX AND TOTAL ERRORS F58,74 %W5800000158
TO BE REPLACED BY BURROUGHS --W99 %W5800000159
W60 UV PARA DEFINES AND MOVE DEC ADTOG V-22 %W6000000160
W61 USE COMMON(NEWDISK)-XREF,NO CODE WRITEN SYTAX CHK OR ERR,87 %W6100000161
W62 COLLECT USAGES OF $$ CARDS--LIBRARY AND XREF FILE DEC F62,76 %W6200000162
W65 ALLOW "%" AS EOC SENT.--MODIFY SCANNER--TABLE F65 %W6500000165
W66 ELIMINATE $" OCTAL CONSTANT F66,69 %W6600000166
W74 EFF NOTES 519-523,NOTE P.O.,530-540, F69,74,79 %W7400000174
W75 INLINE STREAM STATEMENTS, STACK PRIMARY, AND DESC USING "[...]".%W7500000175
W76 $SET, $OMIT, AND $INCLUDE (ALWAYS LIST),87 %W7600000176
W77 $+MERGE, DISK FILE MERGE PATCHES DISK OR TAPE MAKES PSUEDO-DISK %W7700000177
W78 $+DOL TO LIST ALL DOLLAR CARDS %W7800000178
W79 $+PAIRS--LIST BEGIN-END PAIRS AS "BNNN DD", N=NUMBER, D=DEPTH %W7900000179
W82 FOR TIMING TESTS (NOT NORMALLY COMPILED IN) %W8200000182
W89 RETURN LIBRARY BUFFERS,REDUCE CORE LOADING,W62,W17,W76,SAVE LIN %W8900000189
W90 FOR BASIC-RESIZE(UVA UNCORE),TIMED,F92 %W9000000190
W93 FLAG ALL W CONSTRUCTS IN ALL ALGOL COMPILERS %W9300000193
W99 TEMP CHANGES TO COME UP ON W9--WTIMEIT&TWX STILL IN %W9900000198
END OF WESTINGHOUSE PATCHES; %W-000000199
COMMENT SUMMARY OF BURROUGHS PATCHES %B-000000200
END OF BURROUGHS PATCHES; %B-000000299
COMMENT DESCRIPTION OF CONTENTS OF FILES %W-100000300
F58 LIST FIRST FIVE ERRORS ON TWX AND TOTAL ERRORS %W-100000358
F59 MISSING 1ST BEGIN M2 GAVE EOF-M7 FLUSHES W57 %W-100000359
F60 UV PARA DEFINES AND MOVE DEC ADTOG V-22 %W-100000360
F61 USE COMMON(NEWDISK)-XREF,CUT PRT,SAVE XREF INPUT,NO CODE SYN %W-100000361
F62 COLLECT USAGES OF $$ CARDS--LIBRARY AND XREF FILE DEC %W-100000362
F63 REMOVE XREF-SORT,LOCK XREF FILE,SETUP CONTROLDECK XREF/ALGOL %W-100000363
F64 ALLOW XREF ON TAPE EASILY, REDO NAME CHANGE AND ZIP FOR OPRS %W-100000364
F65 ALLOW "%" AS EOC SENT.--MODIFY SCANNER--TABLE %W-100000365
F66 CLEAN XREF FILE HANDLING, WARNING 99 ON $" OCTAL CONSTANTS %W-100000366
F67 JUSTIFY BURROUGHS MARK 8 PATCHES 6 AND 7 %W-100000367
F69 SYN ER $",0 SEG 0,RESEG TABLE,FLG L MARG SEQ ER,REMOTE=14,NOTES %W-100000369
F70 PRINT NEWDISK -TAPE REC # IN RIGHT MARGIN OF LISTING %W-100000370
F71 SEQ # ON $$ CARD PUT IN NEWDISK,LISTED IF ACTUALLY IN NEW FILE %W-100000371
F72 DROP W68,PUT W67 BACK IN AND PATCH %W-100000372
F73 RESTRICT FOR <LIST> CONSTRUCT TO PROCEDURE BODIES %W-100000373
F74 EFF NOTES 519-523,NOTE P.O., MOD PROCSTMT,TWX WAIT TIME %W-100000374
F75 INLINE STREAM STMTS,STACK PRIMARY, DESC USING [...],ERR91-97%83 %W7500000375
F76 $SET,OMIT,INCLUDE,VOID--ALWAYS LIST,MOVE SEARCHLIB,DOLLARCHK%83 %W7600000376
F77 $+MERGE COVERS DISK,ERR 499,**FOR LIB,W57,20,17,10,49,9,25,0%83 %W7700000377
F78 $+DOL TO LIST ALL $ CARDS--IF LIST IS ON %83 %W7800000378
F79 $+PAIRS TO LIST BEGIN-ENDS IN LEFT MARGIN--IF LIST IS ON %83 %W7900000379
F82 TIMING TESTS--$SET--TIMES AMT SPENT IN SCANNER & 01ALGOL %83 %W8200000382
F83 PULL UVA DEFINE--W60,REPLACE WITH B10,CORRECT ERR MESSAGES %W8300000383
F84 REVISION OF EOF ACTION IN NEXTREC W57 %84 %W5700000384
F85 LIST OF FILES USED W-5 %85 %W-500000385
F86 CREATION TIME AND DATE INTRINSICS--8 CHR STRINGS W-5 %86 %W-500000386
F87 NOSYN,ADDVALUE,SEQSUM,$OMIT,UPLEVEL IF PRT,STREAMTAG,ARRAYS %W-100000387
F91 EFFICIENCY NOTES 530-540 %W7400000391
F92 MISC-TIMED %W-000000392
F61A ALL OUTPUT FILE ARE PURGED AFTER 1ST SYNTAX ERR SUPP61A %83 %W6100000398
END OF FILE DESCRIPTIONS; %W-100000399
091 INLINE: DESIGNATIONAL EXPRESSION NOT ALLOWED %W7500069991
092 INLINE: NOT EXPRESSION TYPE (ONE BELOW MKS) %W7500069992
093 INLINE: MISSING ")" IN INLINE STREAM CALL. %W7500069993
094 INLINE: MISSING "(" IN INLINE STREAM CALL. %W7500069994
095 INLINE: MISSING ".," AFTER INLINE STREAM CALL%W7500069995
096 INLINE: EXTRA ":" IN INLINE STREAM CALL. %W7500069996
097 INLINE: MISSING "~" IN INLINE STREAM CALL. %W7500069997
099 FLAG $" OCTAL CONSTANTS. %W6600069999
170 MISSING PROGRAM--NO BEGIN. %59 %W5700164200
190 "?" CARD NOT ALLOWED IN NON-DISK-TYPE CARD %61 %W5700164300
191 "? LINK" TARGET OUTSIDE FILE BOUNDARIES %61 %W5700164400
193 "?" IN COLUMN 1 SHOULD BE AVOIDED %61 %W5700164500
194 INVALID RECORD SPECIFIER IN "? LINK" CARD %61 %W5700164600
275 STRMSTMT: JUMP LONGER THAN 63 SYLLABLES (WARNING) %W1100206500
276 STREAM PROCEDURE NOT PERMITTED %W3200206600
305 TABLE : INVALID OCTAL CONSTANT . %W4600218101
306 TABLE : INVALID OCTAL CONSTANT . %W4600218102
310 UNKNOWNSTMT:IMPROPER ERROR NAME IN A SET STATEMENT. %W1200218110
311 UNKNOWNSTMT: IMPROPER TARGET ITEM IN A SET STATEMENT. %W1200218120
312 UNKNOWNSTMT: TARGET ITEM IN SET STATEMENT MUST HAVE PRT ADDRESS.%W1200218130
313 UNKNOWNSTMT: TARGET PROCEDURE IN A SET STATEMENT MAY NOT HAVE %W1200218140
PARAMETERS. %W1200218150
314 TABLE: ERROR OPTION MAY NOT APPEAR AFTER FIRST BEGIN. %W1200218160
315 IMPROPERLY PLACED LOAD CARD %3ALGOL %W6100218161
316 ALGOL COMMON MUST BE SAME AT DUMP&LOAD TIMES %3ALGOL %W6100218162
431 IMPROPER END-OF-FILE LABEL IN READ OR SPACE STATEMENT %W6100259000
432 IMPROPER PARITY IN SPACE OR READ STATEMENT %W6100260000
475 FOR LISTNAME NOT FOLLOWED BY DO %W3300305006
476 LISTGEN: LISTGEN MAY NOT BE CALLED RECURSIVELY. %W3300305007
499 IODEC: IMPROPER FILE TYPE %77 %W-000305009
510 FORSTLIST: FOR <LIST> DO <STATEMENT> IN PROC BODY ONLY %73 %W3300305100
519 GENGO: DESIGNATIONAL EXPRESSION %91 %W7400305190
520 PROGDESCBLDR: ACCIDENTAL ENTRY DESCRIPTOR %W7400305200
521 PROGDESCBLDR: PROCEDURE DESCRIPTOR %W7400305210
522 PROGDESCBLDR: LABEL DESCRIPTOR %W7400305220
523 PROGDESCBLDR: STREAM PROCEDURE DESCRIPTOR %W7400305230
524 PARADEFINE: PARAMETER LIST NOT PROPERLY TERMINATED %85 %B1000305240
525 PARADEFINE: MISSING ")" OR "]" %85 %B1000305250
526 PARADEFINE: IMPROPERLY FORMED PARAMETER %85 %B1000305260
527 PARADEFINE: TOO MANY PARAMETERS %85 %B1000305270
528 END-OF-FILE REACHED BEFORE "END. ". MISSING CLOSING BRACKET%84 %W5700305280
529 FLAG BIT IN QUOTED STRING NOT ALLOWED %86 %W-500305290
530 ACTUALPARAPART: NAME-CALL EXPRESSION REQUIRES %91 %W7400305300
CONSTRUCTION OF SUBROUTINE (EFFICIENCY) %91 %W7400305301
531 ACTUALPARAPART: SIMPLE SWITCH PARAMETER REQUIRES %91 %W7400305310
CONSTRUCTION OF SUBROUTINE (EFFICIENCY) %91 %W7400305311
532 GOSTMT: NON-LOCAL SWITCH. %91 %W7400305320
533 GOSTMT: NON-LOCAL LABEL. %91 %W7400305330
534 ACTUALPARAPART: LABEL PARAMETER %91 %W7400305340
535 BLOCK: EN--THIS SWITCH CONTAINS NON-LOCAL LABELS %91 %W7400305350
536 BLOCK: EN--THIS SWITCH WAS DECLARED FORWARD %91 %W7400305360
537 GOSTMT: SWITCH USED MORE THAN ONCE (EFFICIENCY) %91 %W7400305370
538 EMITUP: THIS POWER IS OBTAINED USING LOG AND EXP (EFF) %91 %W7400305380
539 ARRAE: NONZERO LOWER BOUND IS LESS EFFICIENT %91 %W7400305390
540 ARRAE: VARIABLE BOUND SPEC IS LESS EFFICIENT %91 %W7400305400
776 TABLE: "$ STANDARD" USED %W9300305774
777 TABLE: "$ ERROR" USED %W9300305777
778 TABLE: "$ STOP" USED %W9300305778
779 TABLE: "$ NEW TAPE" USED %W9300305779
780 TABLE: "$ PURGE" USED %W9300305780
781 TABLE: "$ XREF" USED %W9300305781
782 TABLE: "$ SAVE" USED %W9300305782
783 TABLE: "$ INDEX" USED %W9300305783
784 TABLE: "$ +DOUBLE" USED %W9300305784
785 TABLE: "$ STREAM" USED %W9300305785
786 TABLE: "$ PATCH" USED %W9300305786
787 TABLE: "$ NOTES" USED %W9300305787
788 TABLE: "$ MERGE" USED %W9300305788
789 TABLE: "$ DOL" USED %W9300305789
790 TABLE: "$ PAIRS" USED %W9300305790
791 TABLE: "$ FILES" USED %W9300305791
792 TABLE: "$ INFO" USED %W9300305792
793 TABLE: "$+" OR "$-" USED %W9300305793
794 TABLE: "$ NEW DISK" USED %W9300305794
795 TABLE: "$ DISK" USED %W9300305795
796 USEMODULES: "$ OMIT" OR "$ INCLUDE" USED %W9300305796
797 SETMODULES: "$ SET" USED %W9300305797
798 NEXTREC: "? END" CARD USED TO STOP READING IN A DISK FILE %W9300305798
799 FORSTLIST: SET OF LIST NAMES ALLOWED AS FOR INDICES %W9300305799
800 DOTSYNTAX: PARTIAL WORD OPERATION %W9300305800
801 CHECKER: UPLEVEL ADDRSING ALLOWED IF PRT CELL %W9300305801
802 CHECKBOUNDLVL: DYNAMIC ARRAY DEC ALLOWED AT OUTER LEVEL %W9300305802
803 FILLSTMT: BLANK ALLOWED FOR ZERO %W9300305803
804 PARSE: CONCATENATE OPERATION %W9300305804
805 FILLSTMT&TABLE: WRL OCTAL CONSTANT %W9300305805
806 OCTCON: WARNING IN LIEU OF ERROR %W9300305806
807 TABLE: 8 CHR STR ALLOWED IF NO FLAG BIT %W9300305807
808 TABLE: DATE&TIMECOMPILED INTRINSICS FOR OBJ PROG IDENT %W9300305808
809 UNKNOWNSTMT: SET SYNTAX IS UNIQUE TO WRL ERROR OPTION %W9300305809
810 BLOCK: BRACKET CONVENTION IS NOT STANDARD %W9300305810
811 IMPFUN: CHECK VALUE OF THIS EXPRESSION SINCE (SEE 812) %W9300305811
812 IMPFUN: ONLY ARGUEMENT VALUES OF 0,1,2,3,4 ARE STANDARD %W9300305812
813 INDEXS: USE OF INTEGER TO INDEX "CI" IS UNIQUE TO WRL %W9300305813
814 DECLARELABEL: UNDECLARED LABEL ALLOWED--UNIQUE TO WRL %W9300305814
815 ACTUALPARAPART: ACTUAL LIST ALLOWED IN LIEU OF LIST NAME %W9300305815
816 FORSTMT: LIST NAME ALLOWED AS "FOR" INDEX %W9300305816
817 LISTELEMENT: LIST IDENTIFIER ALLOWED AS LIST ELEMENT %W9300305817
818 EXPLICITFORMAT: EXPLICITFORMAT IS NOT STANDARD %W9300305818
819 PRIMARY OR VARIABLE: "~*" OPERATOR UNIQUE TO WRL %W9300305819
820 RELATION: MULTIPLE RELATIONAL OPERATORS ARE UNIQUE TO WRL %W9300305820
821 NEXTREC: "? LINK" CARDS USED TO CONTROL READING DISK FILES %W9300305821
822 INLINE: INLINE STREAM CODE IS UNIQUE TO WRL %W9300305822
823 UNKNOWNSTMT: RESIZE SYNTAX IS UNIQUE TO WRL %W9300305823
824 UNKNOWNSTMT: TIMED SYNTAX IS UNIQUE TO WRL %W9300305824
825 LISTPARA: BRACKETS USED TO DELIMIT ACTUAL LIST %W9300305825
826 PRIMARY OR BOOPRIM: STACK SYNTAX IS UNIQUE TO WRL %W9300305826
827 LISTELEMENT: SWITCH LIST DESIGNATOR ALLOWED AS LIST ELEMENT%W9300305827
830 BLOCK: STREAM PROCEDURE %Y9500305830
870 TABLE: INCORRECT "$ ZERO" CARD. %Y9500305870
900 MISMATCHED PARENTHESES %W7600305900
901 MISSING BOOLEAN OPERAND %W7600305901
902 TOO MANY BOOLEANS SET %W7600305902
903 MISSING COMMA %W7600305903
904 MISSING "IF" %W7600305904
905 UNRECOGNIZED WORD OR CHARACTER %W7600305905
906 MISSING SEQUENCE NUMBER %W7600305906
907 MISSING SEMICOLON %W7600305907
908 MISSING BOOLEAN ID, "=", OR TRUTH VALUE ON SET CARD %W7600305908
909 OVER 100 SYNTAX ERRORS %W-400305909
BOOLEAN SHIPTOG; % TRUE TO WRITE PATCHES FOR CUBE %Y9600504900
REAL HOWFAR; % MAKE SEQ # AVAIL TO OT27 QUERY %W-000506500
SAVE ARRAY IMAGES[0:4, 0:9]; % FOR INPUT RECORDS %84 %W5700507500
BOOLEAN ARRAY DISKTYPE[0:4]; %W7700507600
ARRAY LINKCT, FNAME [0:4]; %W7700507700
BOOLEAN CARDEOF; %W5700507800
DEFINE NOSYN = IF ERRORCOUNT=0 THEN #; %W6100507900
BOOLEAN PGSKTOG; COMMENT TRUE IF PAGE SKIP PERMITTED; %W4300527500
DEFINE LOGMAX =11 #, %W8200527501
LOGCONST = 0.146#; %W8200527521
00527523
DEFINE LOGIN=#, LOGOUT=#; %W8200527524
00527526
00527531
00527541
00527551
00527561
00527571
00527581
00527591
00527596
BOOLEAN SAVETOG,NOTETOG; % TRUE IF NOTES %64 %69 %W4300527600
BOOLEAN NO519; % STOPS NOTE 519 FOR ACTION LABELS,SWITCHES %91 %W7400527602
SAVE INTEGER ARRAY LOG,LOGCNT,LOGRTN[0:LOGMAX]; %W8200527611
INTEGER TIMEV,LOGINX; %W8200527621
00527998
00527999
IF SAVETIME > 0 THEN SAVETIME ~ 55; % TO FLAG 55ALGOL CODE FILES %W9300528500
BEGIN RR1~2; RR2~30; DISKTYPE[1]~TRUE END; %Y9500530000
IF PGSKTOG~EXAMIN(RR11+5)!12 THEN RR3~4 ELSE %W4300531000
BEGIN RR3~2; RR4~30 END; %Y9500532000
BEGIN RR5~2; RR6~10; RR7~30 END ELSE %Y9500534000
BEGIN RR5~2; RR6~56; RR7~10 END; %Y9500535000
BEGIN RR8~10; RR9~30; DISKTYPE[2]~TRUE END ELSE %Y9500537000
IF EXAMIN(RR11+20)=12 THEN RR10~30; %Y9500539000
IF EXAMIN(RR11+40) = 12 THEN SAVETOG ~ TRUE; %64 %W4300540000
% SEE 00530000 AND 00537000 %W5700600000
DISKTYPE[3] ~ TRUE; %W5700600100
DISKTYPE[4] ~ TRUE; %W7700600150
LINKCT[0] ~ 190; COMMENT ERROR TYPE FOR QM CARDS; %W5700600200
DEFINE PHONEYDEC= LABEL FORCESEGMENT; FORCESEGMENT: #; %W4801000060
INTEGER LASTELCLASS; %SAVES ELCLASS %W4001000713
BOOLEAN PATCHTOG; %W5101001050
BOOLEAN STREAMTAG; %W3201001500
BOOLEAN DOUBLETOG; COMMENT USED TO INDICATE DOUBLE OR SINGLE SPACE;%W3701001600
$ OMIT 01002121, IF SHIPPING; % CHANGCS %Y9601002099
01002100
01002110
01002120
DEFINE WRL(WRL1)=BEGIN IF LASTUSED!7 THEN FEATURE(WRL1) END#; %W9301002200
PROCEDURE FEATURE(N); VALUE N; INTEGER N; FORWARD; % RECORD USE %W9301002300
SAVE ARRAY FEATURES[0:9]; % 64 6-BIT COUNTERS AND 96 FLAGS %W9301002400
BOOLEAN WARNTOG; %W9301002500
DEFINE REC(REC1)=BEGIN IF LASTUSED!7 THEN BEGIN % RECORD %W9301002600
WARNTOG ~ FALSE & WARNTOG [18:33:15]; % USES %W9301002700
FEATURE(REC1); % WITHOUT %W9301002800
WARNTOG ~ WARNTOG.[18:15] END END #; % WARNINGS %W9301002900
BOOLEAN TIMEITTOG; COMMENT TRUE IF TIMEIT HAS BEEN CALLED; %W-201300010
BOOLEAN MERGETOG, MERGELAST; % MERGE CONTROL %W7701330200
INTEGER MLCR, SLCR; % FOR MERGE AND DISK(SAVED) COMPARISONS %W7701330400
BOOLEAN DOLTOG; %LIST ALL DOLLAR CARDS %W7801330600
BOOLEAN PAIRSTOG,IMAGE;%ON FOR BEGIN-END P.O.%CARD IMAGE IN LIN %W7901330800
INTEGER PAIRCNT, PAIRLVL; %PAIR COUNT AND NESTING DEPTH %W7901330850
INTEGER ARRAY PAIRARR[0:31]; %STORE COUNT VALUE AT EACH DEPTH %W7901330900
BOOLEAN DISKTOG,NEWDSK, STOPTOG; %W1701339000
BOOLEAN ERROROPTION; %W1201339001
INTEGER ARRAY RECORDCNT[0:6]; % NEXTREC. 5 IS NEWDISK#, SEQSUM IN 6%W7701339002
COMMENT SEE 01561054 OF FILE 77; %77 %W1701339003
REAL XPRE,XSUF; %63 %W4301384200
BOOLEAN SEGTOG; %W3101398500
BOOLEAN PURGETOG; COMMENT TRUE IF "TAPE" IS TO BE PURGED; %W1301411500
BOOLEAN SLABTOG; COMMENT USED TO SUPPRESS STREAM NOPS; %W1401411600
SAVE ARRAY LASTCARD[0:9]; %W5701510000
REAL TWXCOUNT, % NUMBER OF ERRORS LISTED ON REMOTE %W5801521000
TWXTIME; % ELAPSED TIME AVAIL TO LIST ERRORS. SIX BUFFERS-- %W5801521100
% ONE FOR FINAL MESSAGE, FIVE FOR ERRORS. IF POS ONE %W5801521110
% IS AVAIL THUS INITIAL VALUE 2400=4|60|10 IN 60THS. %W5801521120
% 10 SECONDS TO WRITE MESSAGE IS CONSERVATIVE %W5801521130
BOOLEAN TWXOFF; % TRUE IF TOO FREQUENT MESSAGES %W5801521200
INTEGER CHUNK; %%W1501556100
FILE OUT CODE DISK [20:CHUNK~IF ERRORCOUNT MOD 10000=0 THEN 40 ELSE %W1501556200
(ERRORCOUNT MOD 10000+9) DIV 10|10] %W1501556250
(5,30, SAVE SAVETIME); %W1501556300
FILE OUT LINE DISK SERIAL[20:IF ERRORCOUNT DIV 10000=0 THEN 300 %W1501559000
ELSE (ERRORCOUNT DIV 10000+19)DIV 20|20](RR3,15,RR4,SAVE 10); %92 %W1501559005
SAVE % KEEP LIN FROM OLAY %W8901559009
DEFINE WRITELINE=IF DOUBLETOG THEN WRITE(LINE[DBL],15,LIN[*]) ELSE %W3701559030
WRITE(LINE,15,LIN[*])#; %W3701559035
LABEL ERRORPRINT; %W1601559050
SAVE FILE OUT NEWTAPE DISK SERIAL [20:IF ERRORCOUNT DIV 10000=0 %W1501560000
THEN 300 ELSE(ERRORCOUNT DIV 10000+29)DIV 30|30] %92 %W1501560100
(RR5,RR6,RR7,SAVE 1); %W1501560200
FILE IN CASTA DISK SERIAL "CASTA" "LIBRARY"(2,BUFFSIZE); %W8901561020
FILE IN CASTB DISK SERIAL "CASTB " "LIBRARY" (2,BUFFSIZE); %W-601561030
FILE IN CASTC DISK SERIAL "CASTC " "LIBRARY" (2,BUFFSIZE); %W-601561040
FILE OUT INDEXANDXREF DISK SERIAL[20:IF ERRORCOUNT DIV 10000=0 THEN %W6101561041
60 ELSE (ERRORCOUNT DIV 10000 + 9) DIV 10|10](2,30,SAVE 100); %W6201561042
FILE OUT NEWDISK DISK SERIAL[20:IF ERRORCOUNT DIV 10000=0 THEN %W1701561045
300 ELSE(ERRORCOUNT DIV 10000+29)DIV 30|30](2,10,30,SAVE 10); %W1701561046
FILE IN ERRORS DISK RANDOM"ALGOL""ERRORS"(1,10,30); %W1601561053
FILE IN DISK 12 (2,10,30); FILE IN MERGE 12 (2,10,30); %W1701561054
ALPHA FILE OUT TWX 14(6,8);FILE STAT DISK RANDOM (1,15,30); %W6201561057
ARRAY STATARRAY[0:14]; INTEGER STATEOF; %89 %W6201561058
ARRAY PRTABLE, TPRT[0:29]; DEFINE DATA=INDEXANDXREF#; %61 %W4301561059
INTEGER LIBINDEX, LTLCR, MAXLTLCR, FILEINX; %87 %W-101561120
DEFINE SEQSUM = RECORDCNT[6]#; % AVOID APPARENT DESCRIPTORS IN PRT %W-101561125
INTEGER XENDI, XREFC, LASTHM, XREFCT; REAL OLDTT; %W4301562500
BOOLEAN INDEX,XREF; INTEGER ISEQ; %64 %W4301562600
LASTSEQUENCE = 50#, % ADDED 10 FOR CREATION INTRINSICS %86 %W-501575000
DEFINE IFCODE= IF SAVETIME } 0 AND ERRORCOUNT = 0 THEN #; %W6101688005
BOOLEAN FILESTOG; % TO PRINT OUT SOURCE FILES %85 %W-501694500
%W75 TO CONTROL INLINE STREAM. (TAG OFF) IMP (TOG OFF). %W7501695490
BOOLEAN INLINETOG; %W7501695500
% [47:1] PROCESSING CALL %W7501695520
% [46:1] ONE PARAMETER BELOW MARK STACK--EXPRESSION TYPE %W7501695530
BOOLEAN INLINETAG; %INLINE ALLOWED--STACKED FOR LIBRARY CALL OUTS %W7501695600
BOOLEAN STACKTAG; % CAN INLINE WITHOUT STACK %W7501695700
DEFINE STEPI = (ELCLASS ~ TABLE(I~I+1))#; %W27 %60 %W2701709400
PROCEDURE LISTPARA; FORWARD; %W3301715500
PROCEDURE PAIR (B); VALUE B; BOOLEAN B; FORWARD; %W7901716500
PROCEDURE SETMODULES; FORWARD;% %W7601727000
PROCEDURE USEMODULES; FORWARD;% %W7601728000
01729999
01730499
01730500
01731000
DEFINE STEPIT= ELCLASS ~ TABLE(I~I+1)#; %W2701741000
$ VOID 01743301 %W4801741100
$ VOID 01769001 % OLD W16 PATCH %W1601765100
STREAM PROCEDURE BLANK(A); %85 %W-501780000
BEGIN DI~A; DS~8 LIT" "; SI~A; DS~14 WDS END; %85 %W-501781000
ARRAY SOURCE[0:23]; INTEGER LASTCOMPARE; %USED FOR SOURCE ID%77 %W2001799999
FORMAT PRINTSEGNO(X78,"START OF SEGMENT ********** ",I4), %W-501800000
PRINTSIZE(X78,I4," IS ",I4," LONG, NEXT SEG ",I4), %W-501801000
01807000
COMMENT: NEXT CARD SUPPLIED IN LIEU OF WRL INTRINSICS; %Y9601808000
DEFINE TIMECOMPILED="9:00:00"#, DATECOMPILED="1/11/69"#; %Y9601809000
PROCEDURE TIMEIT(A); %W-201810040
ARRAY A[0]; %W-201810050
BEGIN %W-201810060
DEFINE B=TIMEITTOG#; %W-201810070
INTEGER E,F,G,H,I; %W-201810080
STREAM PROCEDURE C(A,B,D); VALUE A; BEGIN %W-201810090
SI~LOC A; SI~SI+3; DI~B; DS~2 OCT; %W-201810100
DI~D; DS~3 OCT; END; %W-201810110
STREAM PROCEDURE D(A,B,C,E,F,G,H,I,J,K); %W-201810120
VALUE A,B,C,E,F,G,H,I,J; %W-201810130
BEGIN %W-201810140
LABEL L, M, N, O, P, Q; %W-201810150
DI~K; DS~8 LIT " "; SI~K; DS~14 WDS; %W-201810160
DI~K; SI~LOC A; DS~2 DEC; %W-201810170
2(DS~ LIT":"; DS~ 2 DEC); %W-201810180
DI~DI+1; CI~CI+E; %W-201810190
DS~ 3 LIT"SUN"; GO L; SKIP SB; %W-201810200
DS~ 3 LIT"MON"; GO L; SKIP SB; %W-201810210
DS~ 4 LIT"TUES"; GO L; SKIP SB; %W-201810220
DS~ 6 LIT"WEDNES"; GO L; %W-201810230
DS~ 5 LIT"THURS"; GO L; %W-201810240
DS~ 3 LIT"FRI"; GO L; SKIP SB; %W-201810250
DS~ 5 LIT"SATUR"; %W-201810260
L: %W-201810270
DS~ 4 LIT"DAY,"; %W-201810280
DI~ DI+1; %W-201810290
CI~ CI+F; %W-201810300
DS~ 3 LIT"JAN"; GO M; SKIP SB; %W-201810310
DS~ 4 LIT"FEBR"; GO M; SKIP SB; %W-201810320
DS~ 5 LIT"MARCH"; GO O; %W-201810330
DS~ 5 LIT"APRIL"; GO O; %W-201810340
DS~ 3 LIT"MAY"; GO O; SKIP SB; %W-201810350
DS~ 4 LIT"JUNE"; GO O; SKIP SB; %W-201810360
DS~ 4 LIT"JULY"; GO O; SKIP SB; %W-201810370
DS~ 6 LIT"AUGUST"; GO O; %W-201810380
DS~ 6 LIT"SEPTEM"; GO N; %W-201810390
DS~ 4 LIT"OCTO"; GO N; SKIP SB; %W-201810400
DS~ 5 LIT"NOVEM"; GO N; %W-201810410
DS~ 5 LIT"DECEM"; GO N; %W-201810420
M: %W-201810430
DS~ 4 LIT"UARY"; GO O; %W-201810440
N: %W-201810450
DS~ 3 LIT"BER"; %W-201810460
O: %W-201810470
DI~DI+1; A~DI; DI~LOC B; SI~LOC G; DS~2 DEC; %W-201810480
DI~A; SI~LOC B; IF SC="0" THEN SI~SI+1 ELSE DS~CHR; %W-201810490
DS~CHR; DS~4 LIT ", 19"; SI~LOC H;DS~2 DEC; %W-201810500
IF SC!"+" THEN BEGIN %W-201810510
DI~DI+4; DS~16 LIT "PROCESSOR TIME ="; DI~DI+1; %W-201810520
A~CI; GO P; DI~DI+4; DS~10 LIT "I/O TIME ="; %W-201810530
SI~LOC J; A~CI; GO P; GO Q; %W-201810540
P: B~DI; DI~LOC C; DS~8 DEC; SI~LOC C; DI~B; %W-201810550
5(IF TOGGLE THEN IF SC="0" THEN SI~ SI+1 ELSE DS~ CHR %W-201810560
ELSE DS~ CHR); %W-201810570
DS~CHR; DS~LIT "."; DS~2 CHR; DS~8 LIT " SECONDS"; %W-201810580
CI~A; %W-201810590
Q: END ELSE BEGIN DI~DI+10; %W-201810600
DS~21 LIT "B-5500 ALGOL COMPILER"; %86 %W-501810605
DI~K; DI~DI+63; DI~DI+26; DS~6 LIT "< WRL "; %86 %W-501810610
DS~5 LIT TIMECOMPILED;DS~LIT" ";DS~8 LIT DATECOMPILED;DS~LIT">";%86 %W-501810615
END %W-201810620
END; %W-201810630
C(TIME(0),E,F); %W-201810640
G~ ((((E-1)DIV 4)+E+F)MOD 7)|5; %W-201810650
IF F<60 THEN F~F-1 ELSE IF E MOD 4=0 THEN F~F-1; %W-201810660
IF F> 212 THEN %W-201810670
F~(F+31)DIV 61+F %W-201810680
ELSE %W-201810690
IF F>59 THEN %W-201810700
F~ (F+62)DIV 61+F; %W-201810710
H~ TIME(1)|.016667; %W-201810720
D(H DIV 3600, I~H DIV 60 MOD 60, I~ H MOD 60, %W-201810730
G,(F DIV 31)|5, H~ F MOD 31+1, E, %W-201810740
IF B THEN H~ TIME(2)|1.6667 ELSE-1, IF B THEN H~ TIME(3)|1.6667 %W-201810750
ELSE-1,A[0]); %W-201810760
IF NOT B THEN BEGIN WRITE(LINE,15,A[*]);BLANK(A);B~TRUE END;%85 %W-501810770
END TIMEIT; %W-201810780
DEFINE CHECKIT=IF NOT TIMEITTOG THEN BEGIN %W-201810790
TIMEIT(LIN) END#; % DELAY PRINTING %W7901810800
PROCEDURE OCTCON(F,R); VALUE F; BOOLEAN F; REAL R; BEGIN %W-301810810
COMMENT OCTCON SETS FLAG BIT ONLY IF CALLED FROM FILLSTMT(I.E. IF %W-301810820
F IS FALSE); %W-301810830
BOOLEAN STREAM PROCEDURE OC(AC,C1,C2,B,F,R); VALUE C1,C2,B,F; %W-301810840
BEGIN %W-301810850
SI ~ AC; SI ~ SI+C1; DI ~ R; SKIP B DB; %W-301810860
C2(IF SC>"7"THEN TALLY~1; IF SC<"0"THEN TALLY~1;SKIP 3SB; %W-301810870
3(IF SB THEN DS ~ SET ELSE DS ~ RESET; SKIP SB)); %W-301810880
DI ~ R; DS ~ F RESET; OC ~ TALLY %W-301810890
END OC; %W-301810900
INTEGER C1,C2; %W-301810910
IF COUNT>16 THEN BEGIN C1 ~ COUNT-13; C2 ~ 16 END %W-301810920
ELSE BEGIN C1 ~ 3; C2 ~ COUNT END; %W-301810930
R ~ 0; %W-301810940
IF OC(ACCUM[1],C1,C2,48-3|C2,F,R) THEN %W9301810950
BEGIN FLAG(-303); WRL(6) END; %W9301810955
END OCTCON; %W-301810960
$ VOID 01840001 %76 %W-201810970
REAL OMITCR; BOOLEAN STOPDOLLAR; %W7601840500
PROCEDURE INLINE; FORWARD; %W7501840600
PROCEDURE WRITEPRT(WHAT, HOWMUCH,T); %W4301900000
VALUE WHAT, HOWMUCH, T; %W4301900100
REAL WHAT, HOWMUCH, T; %W4301900200
BEGIN %W4301900300
LABEL EXIT; %63 %66 %W4301900310
IF ERRORCOUNT ! 0 THEN GO EXIT; %63 %66 %W4301900320
WHAT~ WHAT.LINK; %W4301900350
XREFC~ XREFC+1; %W4301900360
PRTABLE[XENDI]~ T&(HOWMUCH+2)[18:33:15]&LASTHM[3:33:15]; %W4301900400
LASTHM~ HOWMUCH+2; %W4301900450
OLDTT~0&LASTHM[3:33:15]; %W4301900460
IF XENDI~ XENDI+1=30 THEN %W4301900600
BEGIN %W4301900700
%87 %W6101900799
WRITE(DATA , 30, PRTABLE[*]); %W4301900800
XENDI~ 0 %W4301900900
END; %W4301901000
MOVE(1, INFO[LASTSEQROW, LASTSEQUENCE], PRTABLE[XENDI]); %W4301901100
IF XENDI~ XENDI+1=30 THEN %W4301901200
BEGIN %W4301901300
%87 %W6101901399
WRITE(DATA, 30, PRTABLE[*]); %W4301901400
XENDI~ 0 %W4301901500
END; %W4301901600
IF HOWMUCH>0 AND T.[33:15]!7 AND T.[33:15]!9 THEN %W4301901605
BEGIN %W4301901610
PRTABLE[XENDI]~ TAKE(WHAT)&WHAT[35:35:13]; %W4301901615
WHAT~ WHAT+1; %W4301901625
HOWMUCH~ HOWMUCH-1; %W4301901630
IF XENDI~ XENDI+1=30 THEN %W4301901635
BEGIN %W4301901640
%87 %W6101901644
WRITE(DATA, 30, PRTABLE[*]); %W4301901645
XENDI~ 0 %W4301901650
END %W4301901655
END; %W4301901660
WHILE HOWMUCH>0 DO %W4301901700
BEGIN %W4301901800
IF T~ 30-XENDI>HOWMUCH THEN %W4301901900
T~ HOWMUCH; %W4301902000
MOVE(T, INFO[WHAT.LINKR, WHAT.LINKC], PRTABLE[XENDI]); %W4301902100
IF XENDI~ XENDI+T=30 THEN %W4301902200
BEGIN %W4301902300
%87 %W6101902399
WRITE(DATA, 30, PRTABLE[*]); %W4301902400
XENDI~ 0 %W4301902500
END; %W4301902600
WHAT~ WHAT+T; %W4301902700
HOWMUCH~ HOWMUCH-T %W4301902800
END; EXIT: %63 %66 %W4301902900
END; %W4301903000
PROCEDURE BACKUPTO(W, I); %W4301903100
VALUE W, I; %W4301903200
INTEGER W, I; %W4301903300
BEGIN %W4301903400
LABEL EXIT; %63 %66 %W4301903410
IF ERRORCOUNT ! 0 THEN GO EXIT; %63 %66 %W4301903420
WHILE W{XREFC DO %W4301903500
BEGIN %W4301903600
IF XENDI~ XENDI-OLDTT.[3:15]<0 THEN %W4301903700
BEGIN %W4301903800
MOVE(30, PRTABLE[0], TPRT[0]); %W4301903850
%87 %W6101903899
READ REVERSE(DATA, 30, PRTABLE[*]); %W4301903900
XENDI~ XENDI+30 %W4301904000
END; %W4301904100
XREFC~ XREFC-1; %W4301904200
OLDTT~ PRTABLE[XENDI]; %W4301904300
END; %W4301904400
IF I!0 THEN %W4301904500
PRTABLE[XENDI].[33:15]~ I; %W4301904700
XREFC~ XREFC+1; %W4301905000
IF XENDI~ XENDI+OLDTT.[18:15]>29 THEN %W4301905100
BEGIN %W4301905200
%87 %W6101905299
WRITE(DATA, 30, PRTABLE[*]); %W4301905300
MOVE(30, TPRT[0], PRTABLE[0]); %W4301905350
XENDI~ XENDI-30 %W4301905400
END; %W4301905500
LASTHM~ OLDTT.[18:15]; %W4301905540
OLDTT~ 0&OLDTT[3:18:15] %W4301905550
;EXIT: END; %63 %66 %W4301905600
PROCEDURE SEARCHLIB(DOLLAR); VALUE DOLLAR; BOOLEAN DOLLAR; %A %W6202013161
BEGIN LABEL EXIT, EXITOUT, NOPARTIAL; BOOLEAN TEMPLISTOG; %W6202013162
STREAM PROCEDURE MAVE(D,S); VALUE S; BEGIN LABEL W,X,Y,Z; %A %W6202013163
DI~D;DS~8 LIT" ";SI~D;DS~8 WDS;DI~D;SI~S; %A %W6202013164
W: IF SC=" " THEN BEGIN SI~SI+1;GO W END; SI~SI+2; %$$ %A %W6202013165
X: IF SC=" " THEN BEGIN SI~SI+1;GO X END; DS~CHR; %A,B,OR C %A %W6202013166
Y: IF SC=" " THEN BEGIN SI~SI+1;GO Y END; %A %W6202013167
Z: IF SC=ALPHA THEN BEGIN DS~CHR;GO Z END;END; DEFINE EOT=600#;%A %W6202013168
IF DOLLAR THEN %W7602013169
BEGIN COMMENT WE ARE ON A DOUBLE DOLLAR CARD; %W7602013170
02013171
02013172
02013173
02013174
02013175
02013176
02013177
02013178
02013179
02013180
02013181
02013182
02013183
02013184
02013185
02013186
02013187
02013188
02013189
02013190
02013191
CARDCALL ~ LASTUSED < 3 OR LASTUSED = 5; %W7602013192
IF PATCHTOG THEN BEGIN TEMPLISTOG~LISTOG; LISTOG~FALSE END; %W6202013220
Q~ACCUM[1]; FLAG(500); IF PATCHTOG THEN LISTOG~TEMPLISTOG; GO EXIT; %W6202013221
COMMENT WE ALWAYS LIST $$ CARDS; %A %W6202013222
IF PATCHTOG THEN BEGIN TEMPLISTOG~LISTOG; LISTOG~FALSE END; %W6202013303
Q~ACCUM[1]; FLAG(501); IF PATCHTOG THEN LISTOG~TEMPLISTOG; GO EXIT; %W6202013304
COMMENT WE ALWAYS LIST $$ CARDS; %A %W6202013305
IF PATCHTOG THEN BEGIN TEMPLISTOG~LISTOG; LISTOG~FALSE END; %W6202013348
Q~ACCUM[1]; FLAG(502); IF PATCHTOG THEN LISTOG~TEMPLISTOG; GO EXIT; %W6202013349
COMMENT WE ALWAYS LIST $$ CARDS; %A %W6202013350
IF PATCHTOG THEN BEGIN TEMPLISTOG~LISTOG; LISTOG~FALSE END; %W6202013378
Q~ACCUM[1]; FLAG(503); IF PATCHTOG THEN LISTOG~TEMPLISTOG; GO EXIT; %W6202013379
COMMENT WE ALWAYS LIST $$ CARDS; %A %W6202013380
IF PATCHTOG THEN BEGIN TEMPLISTOG~LISTOG; LISTOG~FALSE END; %W6202013403
Q~ACCUM[1]; FLAG(504); IF PATCHTOG THEN LISTOG~TEMPLISTOG; GO EXIT; %W6202013404
COMMENT WE ALWAYS LIST $$ CARDS; %A %W6202013405
IF PATCHTOG THEN BEGIN TEMPLISTOG~LISTOG; LISTOG~FALSE END; %W6202013433
Q~ACCUM[1]; FLAG(505); IF PATCHTOG THEN LISTOG~TEMPLISTOG; GO EXIT; %W6202013434
COMMENT WE ALWAYS LIST $$ CARDS; %A %W6202013435
NOPARTIAL: COMMENT NOW SET UP THE LINKS; %W7502013455
STACKTAG.[1:46] ~ STACKTAG; %W7502013474
INLINETAG.[1:46] ~ INLINETAG; %W7502013475
LISTOG.[1:46] ~ LISTOG; %W-802013476
PRTOG.[1:46] ~ PRTOG; %W-802013477
DEBUGTOG.[1:46] ~ DEBUGTOG; %W-802013478
STREAMTAG.[1:46] ~ STREAMTAG; %W3202013479
LIBARRAY[LIBINDEX+2].LSTUSD~ LASTCOMPARE; %W2002013485
IF LIBINDEX>0 THEN IF CARDCALL AND PATCHTOG THEN BEGIN %W5102013536
LASTUSED~7; FIRSTIMEX~TRUE END %W5102013540
ELSE IF CARDCALL AND PATCHTOG THEN LASTUSED~5 ELSE %W5102013541
BEGIN LASTUSED~7;FIRSTIMEX~TRUE END; %W5102013542
LIBINDEX ~ LIBINDEX + 3; %W5102013543
BEGIN COMMENT WE DID NOT COME FROM DOUBLE DOLLAR SO UNLINK; %W7502013551
STACKTAG ~ STACKTAG & STACKTAG[2:1:46]; %W7502013554
INLINETAG ~ INLINETAG & INLINETAG [2:1:46]; %W7502013555
LISTOG ~ LISTOG &LISTOG [2:1:46]; %W-802013556
PRTOG ~ PRTOG &PRTOG [2:1:46]; %W-802013557
DEBUGTOG ~ DEBUGTOG&DEBUGTOG[2:1:46]; %W-802013558
STREAMTAG ~ STREAMTAG&STREAMTAG[2:1:46]; %W3202013559
LASTCOMPARE~ LIBARRAY[LIBINDEX+2].LSTUSD; %W2002013590
IF LASTUSED{2 OR LASTUSED=5 THEN NCR~ %W5702013617
(CLCR - 9) %84 %W5702013618
ELSE %84 %W5702013619
IF LASTUSED{ 2 OR LASTUSED=5 THEN LCR ~ NCR+9 ELSE %W5702013621
NORELEASE ~ PATCHTOG AND (LASTUSED<3); %W5102013627
IF LASTUSED=6 OR LASTUSED=7 THEN FIRSTIMEX~TRUE; %W5102013628
FOR FILEINX~0,1,2 DO BEGIN CLOSE(LIBRARY[FILEINX]);% RETURN BUFFERS %W8902013650
DIRECTORY[FILEINX|3,0]~0;COMMENT CAN USE RESIZE %W8902013651
(DIRECTORY[FILEINX|3,*],56); END END % RESET FOR MULTIPLE CALLS %W8902013652
$ VOID 02020401 % KILL PRINTNOTE % %79 %W7402020000
STREAM PROCEDURE PRINT(LINE,NCR,R, SYMBOL, C, N); %W4902024000
VALUE NCR,R,SYMBOL,N; %W4902024100
BEGIN LOCAL CH2,CH; DI~LOC CH; DS~10 LIT "00 CT D M "; %W7702025000
DI ~ LINE; DS ~ 8 LIT " "; %W-502026000
SI~NCR; DS~ 10 WDS; %W4902027000
$ VOID 02029001 %W4902028000
SI~LOC SYMBOL;SI~SI+6;DS~LIT" ";DS~2 CHR;DS~LIT" "; %W-502030000
SI~ LOC R; NCR~DI; DI~LOC SYMBOL; DS~8 DEC; DI~DI-8; %W-502030100
DS~2 FILL; DI~ LOC SYMBOL; DI~ DI+3; %W-502030150
;DS~3 FILL;DI~NCR;SI~LOC SYMBOL;DS~3 CHR;DS~LIT":";DS~4 CHR; %W-502030200
DS~LIT":";DS~CHR; %W-502030300
DS~2 LIT" "; %W-502030400
NCR~DI;SI~LINE;DS~WDS;SI~SI-8;DS~WDS; %W4902030500
N(DI~NCR;DI~DI-1;SI~C;DS~5 DEC;SI~LOC CH;SI~SI+N;SI~SI+N; %W4902030600
DS~2CHR;DI~DI-7;DS~4 FILL;JUMP OUT); %W4902030700
END PRINT; %W4902031000
INTEGER CNCR; %W5602041000
INTEGER PROCEDURE CCSCAN(RESULT); ALPHA RESULT; %W5602041010
BEGIN INTEGER J,K; %W5602041020
LABEL NOTINT,RESC,DONE; %W5602041025
INTEGER STREAM PROCEDURE CCS(NCRV,RS); VALUE NCRV; %W5602041030
BEGIN LABEL L1,L2,L3,SP; %W5602041040
LABEL L4; %W5602041045
SI ~ NCRV; DI ~ RS; %W5602041050
L1: IF SC=" " THEN BEGIN SI~SI+1; GO L1 END; %W5602041060
IF SC > "9" THEN GO SP; %W5602041070
IF SC } "0" THEN %W5602041080
BEGIN %W5602041090
L4: IF SC = "0" THEN BEGIN SI ~ SI+1; GO L4 END; %W5602041100
IF SC < "0" THEN SI~SI-1; %W5602041110
IF SC > "9" THEN SI~SI-1; %W5602041120
CCS ~ SI; %W5602041125
63(TALLY~TALLY+1; SI~SI+1; IF SC<"0" THEN JUMP OUT; %W5602041130
IF SC>"9"THEN JUMP OUT); %W5602041140
NCRV ~ TALLY; SI ~ LOC RS; SI~SI-1; %W5602041180
DS ~ 7 LIT"3000000"; DS ~ CHR; %W5602041190
END ELSE %W5602041200
IF SC=ALPHA THEN %W5602041210
BEGIN DS ~ LIT "1"; %W5602041220
7(IF SC=ALPHA THEN DS~CHR ELSE DS~LIT" "); %W5602041230
L2: IF SC=ALPHA THEN BEGIN SI~SI+1; GO TO L2 END; %W5602041240
CCS ~ SI; %W5602041245
END ELSE %W5602041250
IF SC = """ THEN %W5602041260
BEGIN SI ~ SI+1; DS~LIT"1"; DS ~ CHR; %W5602041270
6(IF SC!""" THEN DS ~ CHR ELSE DS ~ LIT" "); %W5602041280
L3: IF SC!""" THEN BEGIN SI ~ SI+1; GO L3 END; %W5602041290
SI ~ SI+1; CCS ~ SI; %W5602041300
END ELSE %W5602041310
SP: BEGIN %W5602041320
DS ~ 7 LIT"2000000"; %W5602041330
DS ~ CHR; CCS ~ SI; %W5602041340
END; %W5602041350
END CCS; %W5602041370
INTEGER STREAM PROCEDURE INTS(NC,N,R); VALUE NC,N; %W5602041380
BEGIN SI~NC; DI~R; DS~N OCT; INTS~SI; %W5602041390
END INTS; %W5602041400
DEFINE NCR=CNCR#; %W5602041405
NCR ~ CCS(NCR,RESULT); %W5602041410
IF (CCSCAN~RESULT.[1:5])!3 THEN GO NOTINT; %W5602041420
K ~ (K~((J~RESULT.[42:6])-1)MOD 8)+1; %W5602041430
NCR ~ INTS(NCR,K,RESULT); %W5602041440
IF (J~J-K) { 0 THEN GO TO DONE; %W5602041450
RESC: NCR ~ INTS(NCR,8,K); %W5602041460
RESULT ~ RESULT|100000000 + K; %W5602041470
IF (J~J-8) > 0 THEN GO TO RESC; %W5602041480
IF RESULT.[2:7] ! 0 THEN CCSCAN ~ 4; %W5602041490
GO TO DONE; %W5602041500
NOTINT: RESULT.[1:5] ~ 0; %W5602041510
DONE: %W5602041520
END CCSCAN; %W5602041530
SWITCH FILE SWF ~ CARD,CARD,TAPE,DISK,MERGE; %W7702044000
PROCEDURE NEXTREC(LCR,MAXLCR,FN); VALUE FN; INTEGER LCR,MAXLCR,FN; %W5702045000
BEGIN COMMENT READS NEXT RECORD,HANDLES EOF CONDITIONS AND %W5702045010
LINK RECORDS. %W5702045020
FN = 0 (CAST), 1 (CARD), 2 (TAPE), 3 (DISK); %W5702045030
% FN = 4 (MERGE), 5 (NEWDISK) %W7702045035
REAL RS,T; %W5702045040
LABEL EOF,AGAIN,EOF1,ERR,OK,NXT,FIX,NOTQM; %W5702045050
DEFINE LOGLVL=10#;LOGIN; %W8202045051
IF FN=0 THEN %W5702045070
BEGIN RECOUNT ~ RECOUNT+1; %W5702045080
IF LCR ~ LCR+11 > MAXLCR THEN %W5702045090
BEGIN READ(LIBRARY[FILEINX]); %W5702045100
MAXLCR ~ (LCR ~ MKABS(LIBRARY[FILEINX](10))) + 46; %W5702045110
END; %W5702045120
ADDER(SEQSUM,LCR,TRUE,TRUE); %W5702045130
END ELSE %W5702045140
IF FN=1 AND CARDEOF THEN %W5702045150
BEGIN %W5702045160
EOF: IF FN = 1 THEN %W5702045170
$ VOID 02045240 %84 %W5702045180
CARDEOF ~ TRUE; %W5702045240
IF NOT PURGETOG THEN % GIVE BACK BUFFERS NOW %84 %W5702045250
IF FN=2 THEN LOCK(TAPE) ELSE CLOSE(SWF[FN]); %84 %W5702045260
$ VOID 02045270 %84 %W5702045261
% MAKE DISTINCT HI-VALUE IMAGES %84 %W5702045270
IMAGES[FN,9]~("?????0"+FN)&"??"[1:37:11]; %W5702045280
%84 %W5702045290
END ELSE %W5702045300
BEGIN IF FN<0 THEN %W5702045303
% SET UP POINTERS %84 %W5702045306
MAXLCR ~ LCR ~ MKABS( IMAGES[ FN~ABS(FN), 9 ] ) %84 %W5702045307
ELSE %W5702045310
NXT: BEGIN RECORDCNT[FN] ~ RECORDCNT[FN] + 1; %W5702045315
%77 %W5702045320
END; %W5702045325
AGAIN: READ(SWF[FN], 10, IMAGES[FN, *])[EOF]; %77 %W5702045330
%84 %W5702045335
IF EXAMIN(CNCR~LCR-9)!12 THEN GO TO OK; %W5702045340
FNAME[FN] ~ -190; %W5702045345
IF NOT DISKTYPE[FN] THEN GO OK; %W5702045350
ZOT(RECORDCNT[0],"%",LCR); %W5702045355
RS ~ CCSCAN(RS); %W5702045360
IF CCSCAN(RS)!1 THEN GO NOTQM; %W5702045370
IF RS = "END " THEN BEGIN WRL(-2); GO TO EOF END; %93 %W5702045380
IF RS ! "LINK " THEN BEGIN %W5702045390
NOTQM: FNAME[FN]~-193; GO FIX END; %W5702045395
WRL(21); %W9302045397
IF (T~CCSCAN(RS))=1 THEN GO ERR; %W5702045400
IF T = 2 THEN %W5702045410
BEGIN %W5702045420
IF RS = "+" THEN T ~ 1 %W5702045430
ELSE IF RS = "-" THEN T ~ -1 %W5702045440
ELSE GO ERR; %W5702045450
IF CCSCAN(RS) ! 3 THEN GO ERR; %W5702045460
RS ~ RECORDCNT[FN] + T|RS; %W5702045470
END; %W5702045480
IF RS<0 THEN GO EOF1; %W5702045490
IF RECORDCNT[FN]+1 = RS THEN GO NXT; %W5702045495
IF RECORDCNT[FN]=RS THEN GO TO EOF; %W5702045500
READ SEEK(SWF[FN][RS])[EOF1]; %W5702045510
RECORDCNT[FN] ~ RS; %W5702045520
LINKCT[FN] ~ LINKCT[FN]+1; %W5702045530
GO AGAIN; %W5702045540
EOF1: FNAME[FN] ~ 191; GO TO FIX; %W5702045550
ERR: FNAME[FN] ~ 194; %W5702045560
FIX: MOVE(1,RECORDCNT[0],IMAGES[FN,9]); %RESTORE SEQUENCE NO %77 %W5702045570
OK: END; %W5702045600
LOGOUT %W8202045609
END NEXTREC; %W5702045610
PROCEDURE MERGECOMP; % SELECT NEXT RECORD TO RETURN AS "TAPE" %W7702046000
IF GT1 ~ COMPARE( SLCR, MLCR) = 0 THEN %W7702047000
BEGIN %W7702048000
TLCR ~ SLCR; %W7702049000
MERGELAST ~ FALSE %W7702050000
END %W7702051000
ELSE %W7702052000
BEGIN %W7702053000
TLCR ~ MLCR; %W7702054000
MERGELAST ~ TRUE; %W7702055000
IF GT1 ! 1 THEN %W7702056000
NEXTREC(SLCR,MAXTLCR,REAL(DISKTOG)+2) %W7702057000
END MERGECOMP; %W7702058000
02067997
02067998
02067999
LABEL DEBLANK,NUMBERS,IDBLDR,GNC,K,EXIT,FINIS,L, ERROR; %W6502116000
%W6502117000
GO TO FINIS; %W6502128000
COMMENT 6 OR 7 IS AN ERROR; %W6502129000
$ VOID 02133001 %W6502130000
$ VOID 02151001 %W6502144000
COMMENT BLANKOUT DOES SAME AS CALL ON SCANNER WITH RESULT=7; %W6502178005
INTEGER STREAM PROCEDURE BLANKOUT(NCRV); VALUE NCRV; %W6502178010
BEGIN LABEL L; SI ~ NCRV; %W6502178015
L: IF SC = " " THEN BEGIN SI~SI+1; GO TO L END; %W6502178020
BLANKOUT ~ SI %W6502178025
END BLANKOUT; %W6502178030
PROCEDURE ANOTHERCARD; %W6502178035
BEGIN READACARD; %W6502178040
IF LIBINDEX ! 0 THEN IF RECOUNT = FINISHPT THEN %W6502178045
BEGIN SEARCHLIB(FALSE); READACARD; NORELEASE~FALSE END %W6502178050
END ANOTHERCARD; %W6502178055
DEFINE LOGLVL=8#;LOGIN; %W8202178105
IF RESULT = 7 THEN %W6502178110
WHILE EXAMIN(NCR ~ BLANKOUT(NCR)) = "%" DO ANOTHERCARD %W6502178150
ELSE %W6502178190
IF NCR=LCR THEN BEGIN ANOTHERCARD; GO TO L END; %W6502178400
$ VOID 02180301 %W6502178410
LOGOUT END SCANNER; %W8202180400
COMMENT SEQCHANGE WILL CONV A MACHINE NO. TO PROPER OUTPUT FORM; %W4802187010
STREAM PROCEDURE CHANGESEQ(VAL,OLDSEQ); VALUE OLDSEQ; %W4802187020
BEGIN DI~OLDSEQ; SI~VAL; DS~ 8 DEC END CHANGESEQ; %W4802187030
COMMENT K ADDED TO FLAG SEQ ERROR IN LEFT MARGIN OF LISTING; %69 %W-502187040
STREAM PROCEDURE SEQERR(K,L); %69 %W-502187041
BEGIN DI~K;DS~ 3 LIT "SEQ"; DI~L; DI~DI+5; DS~ 3 LIT "SEQ" END;%69 %W-502187042
COMMENT NEWNUM PUTS REC# AND NT OR ND IN RIGHT MARGIN; %70 %W-502187045
STREAM PROCEDURE NEWNUM(L,R,V); VALUE V; %70 %W-502187046
BEGIN DI~L; DI ~ DI - 1; L ~ DI; %70 %W-502187047
SI~R; DS ~ 5 DEC; SI ~ LOC V; SI~ SI+5; DS ~ 3 CHR; %70 %W-502187048
DI ~L; DS ~ 4 FILL END; %70 %W-502187049
BOOLEAN STREAM PROCEDURE NONBLANK(FCR); VALUE FCR; %W4802187050
COMMENT SCANS CARD FOR ALL BLANKS-- TRUE IF ANY OTHER CHAR; %W4802187060
BEGIN LABEL NED; SI~FCR; TALLY~0; %W4802187070
2(36(IF SC!" " THEN JUMP OUT 2 TO NED; SI~SI+1)); %W4802187080
TALLY ~ 63; NED: TALLY ~ TALLY+1; NONBLANK ~ TALLY %W4802187090
END NONBLANK; %W4802187100
COMMENT SEQ 02237500/02238400 MOVED SO THAT $$ CARD WOULD %76 %W5102187500
BE INCD AND LISTED FOR NEWDISK; %76 %W5102187505
INTEGER STREAM PROCEDURE DOLLARCHECK(A); VALUE A; %76 %W5102187510
COMMENT 0 IF NOT DOLLAR COL 1 OR DOLLAR QUOTE %76 %W5102187515
1 IF DOLLAR DOLLAR %76 %W5102187520
2 IF DOLLAR NOT DOLLAR; %76 %W5102187525
BEGIN SI~A; %76 %W5102187530
IF SC="$" THEN %76 %W5102187535
BEGIN SI~SI+1; %76 %W5102187540
IF SC="$" THEN TALLY~1 ELSE TALLY~2 %76 %W5102187545
END; DOLLARCHECK~TALLY %76 %W5102187550
END DOLLARCHECK; %76 %W5102187555
INTEGER ICNT; %W4902187900
$ VOID 02196061 %W5702188000
STREAM PROCEDURE SAY(S,D); VALUE S; %W-102196070
BEGIN SI~S; DI~D; DS~ 8 OCT END; %W-102196080
IF GT1~LASTCOMPARE~COMPARE(TLCR,CLCR)=0 OR STOPTOG %W2002196200
IF (IF STOPDOLLAR THEN TRUE %W7602196270
ELSE DOLLARCHECK(CLCR-9) ! 2 ) %W7602196275
NEXTREC(LTLCR,MAXLTLCR,0) END %W5702196305
ELSE BEGIN %W7702196310
IF MERGELAST THEN %W7702196313
NEXTREC(MLCR,0,4) %W7702196316
ELSE %W7702196320
NEXTREC(SLCR,MAXTLCR,REAL(DISKTOG)+2); %77 %W5702196323
IF MERGETOG THEN MERGECOMP ELSE TLCR~SLCR; %W7702196326
END;END END; %W7702196329
IF LASTUSED!1 THEN LASTUSED~ IF LIB THEN 5 ELSE 2; %W4902196340
LABEL PASSED; % FOR $$ CARD-NEWDISK %71 %W5102196600
LABEL LISTIT; %LIST ALL DOLLAR CARDS %W7802196650
BOOLEAN STREAM PROCEDURE BLANKSEQ(L); VALUE L; BEGIN LABEL QQ; SI~L;%W4302198100
8(IF SC!" " THEN JUMP OUT 1 TO QQ; SI~SI+1); TALLY~1; %W4302198150
QQ: BLANKSEQ ~ TALLY END; %W4302198200
STREAM PROCEDURE PUTSEQ(L,S);VALUE L,S;BEGIN DI~L;DS~LIT"#";SI~LOC S%W4302198300
;DS~7DEC END; %W4302198400
STREAM PROCEDURE OMITFLAG(LIN); %W7602198500
BEGIN DI ~ LIN; DS ~ 4 LIT "OMIT" END; %W7602198501
BOOLEAN PASSON; %W7602198550
LABEL LIBONLY; %W5102198900
LIBCLAST, LIBTLAST, LIBONLY; %W5102199010
DEFINE LOGLVL=9#;LOGIN; %W8202199015
CARDONLY: IF NORELEASE THEN GO TO EXIT; %W5702206000
NEXTREC(LCR,CLCR,1); GO TO EXIT; %W5702206100
FIRSTIME: NEXTREC(LCR,CLCR,-1); %W5702207000
CARDLAST: IF NORELEASE THEN GO TO COMPAR; %W5702210000
NEXTREC(CLCR,0,1); %W5702211000
TAPELAST: %W7702214100
IF MERGELAST THEN %W7702214200
NEXTREC(MLCR,0,4) %W7702214300
ELSE %W7702214400
NEXTREC(SLCR,MAXTLCR,REAL(DISKTOG)+2); %W7702214500
IF MERGETOG THEN MERGECOMP ELSE TLCR~SLCR; %W7702215000
IF LASTUSED=1 THEN GO EXIT; %W5702215200
GO COMPAR; %W5702215500
NEXTREC(CLCR,0,1); %W5702217200
% %W5702218000
NEXTREC(LTLCR,MAXLTLCR,0); %W5702221000
GO TO COMPAR; %W5102221150
LIBONLY:IF FIRSTIMEX THEN FIRSTIMEX ~ FALSE %W5702221200
ELSE NEXTREC(LTLCR,MAXLTLCR,0); %W5702221250
LCR ~ LTLCR; IF RECOUNT=FINISHPT THEN GO XIT; %W5702221300
GO EXIT; %W5102221400
IF CARDEOF THEN IF LCR=CLCR THEN FLAG(528); %84 %W5702229200
PASSON ~ FALSE; % BE SURE ITS RESET %PRINT BUT NOT NEWDSK %W7602229500
IF OMITCR ! 0 THEN %W7602230055
IF COMPARE(LCR,OMITCR) ! 0 THEN %W7602230060
OMITCR ~ VOIDPLACE ~ 0; %W7602230070
IF (IF SEQTOG THEN NONBLANK(FCR) ELSE TRUE) THEN BEGIN%W5102230100
COMMENT SEQ # ON $$ CARD FOR SEQ ON NEWDISK %71 %W5102231000
LIST $$ CARD ONLY IF WOULD APPEAR IN NEW DISK IF NEWDISK %71 %W5102231002
(IF PATCHTOG THEN NOT LISTED---B STANDARD); %71 %W5102231004
IF OMITCR ! 0 OR STOPDOLLAR THEN GO PASSED; %W7602231010
IF GTI1 ~ DOLLARCHECK(FCR)! 0 THEN BEGIN %71 %W5102231012
IF GTI1=1 THEN IF LASTUSED ! 7 THEN %71 %W5102231014
IF NOT PATCHTOG OR LASTUSED =3 %71 %W5102231016
OR LASTUSED = 6 THEN GO PASSED; %71 %W5102231018
IF NOT STOPDOLLAR THEN BEGIN CNCR~FCR&1[32:47:1];IF CCSCAN(GT1)=1 %W7602231019
THEN BEGIN PASSON~TRUE;IF GT1!"VOID " THEN IF GT1!"OMIT " THEN %W7602231020
IF GT1!"INCLUDE" THEN IF GT1!"SET " THEN PASSON~FALSE END; %W7602231021
IF PASSON THEN GO PASSED END ; %W7602231022
IF DOLTOG THEN IF LASTUSED!7 THEN GO LISTIT;%LIST $ CARDS %W7802231024
END ELSE %W7602231030
PASSED: BEGIN %W7602231036
IF GT1="VOID " THEN BEGIN PASSON~FALSE; GO LISTIT END; %85 %W7602231042
% DELETES CALL ON DATIME %W9902231050
COMMENT INCREMENT SEQ# ONLY IF REC WOULD BE WRITTEN ON FILE; %71 %W5102231075
IF SEQTOG AND LASTUSED!7 THEN BEGIN IF TOTALNO=-10 OR NEWBASE THEN %W5102231100
IF INDEX THEN IF BLANKSEQ(LCR) THEN PUTSEQ(LCR,ISEQ~ISEQ+1); %W4302231450
LISTIT: %FOR LISTING DOLLAR CARDS %W7802231475
BEGIN CHECKIT;ICNT~IF LASTUSED=1 OR LASTUSED=4 OR LASTUSED=2 %77 %W4902233000
OR LASTUSED=5 THEN 1 ELSE %77 %W4902233010
IF LASTUSED=3 THEN IF MERGELAST THEN 4 ELSE (REAL(DISKTOG)+2)ELSE 0;%W7702233030
WRITELINE; % PRINT BEFORE FILLING %W7902233035
PRINT(LIN[0],FCR,SGNO|100000+(L DIV 4)|10+L.[46:2], %W4902233040
SOURCE[LASTUSED|3+LASTCOMPARE],RECORDCNT[ICNT],ICNT); %W4902233100
%W-502234000
% IF IMAGE IS TRUE WE CAN USE THE LEFT MARGIN %W7902234550
IF OMITCR!0 THEN OMITFLAG(LIN) ELSE IMAGE ~ TRUE; %W7602234560
IF CHECKTOG AND GT1=1 THEN %W7902235000
%02235100 COVERS IF NOHEADING THEN DATIME %W9902235099
BEGIN %W7902235100
IMAGE ~ FALSE; %WE ARE GOING TO USE LEFT MARGIN %W7902235200
SEQERR( LIN[0], LIN[14] ) %FLAG LEFT MARGIN %W7902235300
END; %W7902235400
%DELAY PRINTING %W7902236000
END END; %W5102237000
IF LASTUSED < 5 THEN %W5702237005
IF EXAMIN(FCR) = 12 THEN %W5702237010
BEGIN Q ~ ACCUM[1]; %W5702237015
FLAG(ICNT~FNAME[IF LCR=CLCR THEN 1 ELSE IF LCR=SLCR %77 %W5702237020
THEN REAL(DISKTOG)+2 ELSE %W5702237025
IF LCR=MLCR THEN 4 ELSE 0 ] ) ; %W7702237026
IF ICNT > 0 THEN GO USETHESWITCH; %W57 CUT PRT %61 %W5702237030
END; %W5702237040
%84 %W5702237050
IF NEWDSK OR NEWTOG THEN IF LASTUSED!7 THEN %W5102237100
BEGIN INTEGER COLS12; LABEL COPYIT; %W5102237200
STREAM PROCEDURE BLANKET(D,SEQ);VALUE SEQ; %Y9602237210
BEGIN DI~D; DS~8 LIT " "; SI~D; DS~8 WDS;SI~SEQ;DS~WDS END; %Y9602237220
LABEL NONO; %Y9602237250
STREAM PROCEDURE MOVEREC(A,B);VALUE B; %W5102237300
BEGIN SI~B; DI~A; DS~10 WDS END; %W5102237400
$VOID 02238401 %71 %W5102237499
IF SHIPTOG THEN IF (IF MERGELAST THEN TRUE ELSE LASTUSED!3) THEN %Y9602238410
GO TO COPYIT ELSE GO TO NONO; %Y9602238420
COMMENT: ALL EXCEPT ORIGINAL SYMBOLIC FILE; %Y9602238430
IF OMITCR!0 OR STOPDOLLAR OR PASSON THEN GO COPYIT; %W7602238450
IF (COLS12~DOLLARCHECK(FCR))!2 THEN %W5102238500
IF PATCHTOG AND (LASTUSED<3 OR LASTUSED=5) THEN %W5102238600
BEGIN IF COLS12=0 THEN GO TO COPYIT END ELSE %W5102238700
BEGIN COPYIT: %W5102238800
COMMENT IF NEWDSK THEN PUT #ND IN RT MARGIN OF LISTING-TEAR %70 %77 %W-502238810
ELSE IF NEWTAPE THEN PUT #NT IN LISTING; %70 %77 %W-502238820
IF LISTOG THEN NOSYN BEGIN %77 %W-502238825
IF NEWDSK THEN NEWNUM(LIN[14],RECORDCNT[5]," ND"); %77 %W-502238830
IF NEWTOG THEN NEWNUM(LIN[14],RECORDCNT[5]," NT") END; %77 %W-502238840
RECORDCNT[5]~RECORDCNT[5]+1; %INC REC CNT FOR NEWDISK(NEXT REC) %77 %W-502238850
NOSYN %W6102238899
IF NEWDSK THEN BEGIN %W5102238900
IF (IF NOT SHIPTOG THEN FALSE ELSE %Y9602238910
IF OMITCR ! 0 THEN TRUE ELSE PASSON ) %Y9602238920
THEN BLANKET(NEWDISK(0),LCR) %Y9602238930
ELSE %Y9602238940
MOVEREC(NEWDISK(0),FCR); %W5102238950
WRITE(NEWDISK) END; %W5102239000
NOSYN %W6102239099
IF NEWTOG THEN BEGIN %W5102239100
IF (IF NOT SHIPTOG THEN FALSE ELSE %Y9602239110
IF OMITCR ! 0 THEN TRUE ELSE PASSON ) %Y9602239120
THEN BLANKET(NEWTAPE(0),LCR) %Y9602239130
ELSE %Y9602239140
MOVEREC(NEWTAPE(0),FCR); %W5102239150
WRITE(NEWTAPE) END %W5102239200
END; NONO: END OF NEW TAPE OR DISK BLOCK; %W5102240000
IF OMITCR ! 0 THEN GO USETHESWITCH; %W7602244500
SAY(LCR,HOWFAR); %STORE SEQ# FOR OT27 %W-102244700
XIT:LOGOUT END READACARD; %W8202247000
COMMENT I.S.P. COMOUT REPLACES SCANNER-COMMENTS ----- RESULT=6; %W6502307050
INTEGER STREAM PROCEDURE COMOUT(RESULT,NCRV); VALUE NCRV; %W6502307100
BEGIN LABEL L; SI~ NCRV; %W6502307150
IF SC ! ";" THEN %W6502307200
BEGIN %W6502307250
L: SI~SI + 1; IF SC ! ";" THEN %W6502307300
IF SC ! "%" THEN GO L ELSE %W6502307350
BEGIN DI ~ RESULT; DI~DI+7; DS~LIT "0" ;SI~SI-1 END%W6502307400
END; %W6502307450
SI~SI + 1; COMOUT ~ SI; %W6502307500
END COMOUT; %W6502307550
02307599
02307600
CROSSHATCH,DBLDOLLAR,LESSTHAN; %W-302310000
CROSSHATCH,DBLDOLLAR,LESSTHAN; %W-302312000
BEGIN DI~A; DI~DI+3; %W5002313400
C(3(IF SB THEN TALLY~1; SKIP SB); %SET ERROR IF NOT 0-7.%W5002313600
3(IF SB THEN DS~SET ELSE DS~RESET;SKIP SB)); %W5002313700
DEFINE LOGLVL = 5#; LOGIN; %W8202313950
LESSTHAN: IF STOPDEFINE THEN GO TO COMPLETE; %W-302334100
RESULT~7; SCANNER; %W-302334105
COUNT ~ 0; RESULT ~ 3; SCANNER; %W-302334110
RESULT~7; SCANNER; %W-302334115
IF EXAMIN(NCR)!">" THEN BEGIN %W-302334120
IF COUNT=0 THEN BEGIN ACCUM[1]~"1<0000"; %W-302334130
GO TO COMPLETE END; %W-302334140
ELBAT[NXTELBT] ~ T; NXTELBT ~ NXTELBT+1; %W-302334150
GO TO IPART END; %W-302334160
IF REAL(STREAMTOG)=2 THEN OCTCON(FALSE,ACCUM[0]) ELSE %W-302334170
OCTCON(TRUE,C); T ~ 0&TRUTHV[2:41:7]&2[25:46:2]; %W-302334180
WRL(5); % MAKE WARNING IN XALGOL %W9302334185
RESULT ~ 0; SCANNER; GO TO COMPLETE; %W-302334190
QUOTE: COUNT ~ 0; %86 %W-502341000
T ~ IF STREAMTOG THEN 63 ELSE 8; % ALLOW 8 CHR STRGS%86 %W-502342000
STOPDOLLAR ~ TRUE; %W7602342500
IF COUNT > T THEN BEGIN STOPDOLLAR~FALSE;GO ARGH END %W7602345000
STOPDOLLAR ~ FALSE; %W7602346500
IF COUNT < 8 THEN GO MOVEIT; %86 %W-502350000
IF COUNT = 8 THEN %ARE FLAG BITS ALLOWED 46,47 %86 %W-502350010
IF REAL(STREAMTOG)= 0 THEN % NO %86 %W-502350020
IF BOOLEAN(Q.[18:1]) THEN FLAG(529) ELSE %86 %W-502350030
BEGIN WRL(7); %W9302350050
END; %W9302351500
BEGIN PHONEYDEC; %REBLOCK TABLE FOR EFF %69 %W4802360500
END DEFINE BLOCK; %REBLOCK TABLE FOR EFF %83 %W4802365799
COMMENT EFF HANDLING OF OCTAL CONSTANTS MOVE ADTOG W48; %60 %W4802367050
IF GT1=""" THEN BEGIN FLAG( 99); %OCTAL CONST SYN ER 63068 %69 %W6602367100
IF STOPDEFINE THEN GO TO COMPLETE ELSE %W5002367150
BEGIN STREAMTOG.[2:1]~TRUE; P~P-NXTELBT; %W5002367200
GT1 ~ TABLE(NXTELBT); %W5002367210
NXTELBT ~ NXTELBT-1; P ~ P+NXTELBT; %W5002367500
IF OCTIZE(ACCUM[1],COUNT.[47:1],COUNT) %W5002367600
THEN FLAG(306);ACCUM[1].[12:6]~COUNT~(COUNT+1)DIV 2;%W5002367700
IF NOT STREAMTOG THEN %W5002367750
END END; %W6602367900
BEGIN BOOLEAN ADTOG;LABEL PERCENT; % W76 W60 %W4802367990
REAL U; %63 %64 %W4302367992
DEFINE NAMEXREF = %63 %64 %W4302367994
BEGIN %63 %64 %W4302367996
02367998
02368000
02368050
02368100
02368150
02368200
02368250
02368300
02368350
02368400
02368450
02368500
02368550
END#; %64 %W4302368600
COUNT~RESULT~ACCUM[1]~0; SCANNER; %USED TO BE REC 02368000 %64 %W4302368900
ADTOG ~ TRUE; %W-702369050
%W7602369300
GO TO PERCENT %W7602369400
IF Q = "3SET00" THEN BEGIN SETMODULES; GO PERCENT END; %W7602369550
IF Q="7INCLU"OR Q="4OMIT0"THEN BEGIN USEMODULES;GO PERCENT END; %W7602369600
IF Q="4ZERO0" THEN BEGIN COUNT~RESULT~ACCUM[1]~0;SCANNER; %Y9502369610
IF Q~ACCUM[1] ! "4LEFT0" THEN BEGIN IF NOT DOLTOG THEN BEGIN %Y9502369630
U ~ REAL(LISTOG); LISTOG ~ FALSE END; %Y9502369635
FLAG(870);IF NOT DOLTOG THEN LISTOG~BOOLEAN(U) END; GO PERCENT END; %Y9502369640
IF Q="8STAND" THEN BEGIN REC(-24); %IF TRUE THEN %W9302369700
WARNTOG~TRUE; GO PERCENT END; %FLAG NONSTANDARD %W9302369800
IF LASTUSED=1 THEN %W-702371500
LISTOG ~ LISTOG &FALSE[47:47:1]; %W-802372100
PRTOG~ PRTOG&FALSE[47:47:1]; %W-802372200
DEBUGTOG ~ DEBUGTOG&FALSE[47:47:1]; %W-802372300
PUNCHTOG ~ DISKTOG ~ FALSE; %W1702372400
NEXTREC(SLCR,MAXTLCR, -2); %77 %W5702379400
IF MERGETOG THEN MERGECOMP ELSE TLCR ~ SLCR END END %W7702380000
ELSE IF Q="4DISK0" THEN BEGIN IF LASTUSED=1 THEN LASTUSED~2; %W1702380200
LISTOG.[47:1]~ FALSE; PRTOG.[47:1]~ FALSE; DEBUGTOG.[47:1]~FALSE; %W1702380400
REC(-5); %W9302380500
PUNCHTOG ~ FALSE; DISKTOG ~ TRUE; %W5702380600
IF MAXTLCR = 0 THEN %W7702380650
BEGIN NEXTREC(SLCR,MAXTLCR, -3); %W7702380700
IF MERGETOG THEN MERGECOMP ELSE TLCR ~ SLCR END END %W7702380800
ELSE IF Q = "4CARD0" THEN BEGIN %W-702381000
LASTUSED ~ 1; COMMENT NEXT CARDS ARE CARD ONLY; %W-702381300
LISTOG ~ LISTOG &FALSE[47:47:1]; %W-802381500
PRTOG ~ PRTOG &FALSE[47:47:1]; %W-802382000
DEBUGTOG ~ DEBUGTOG&FALSE[47:47:1]; %W-802382300
PUNCHTOG~FALSE; END %W-702382500
ELSE IF Q = "1-0000" THEN BEGIN REC(-7); ADTOG~FALSE END %93 %W-702383000
ELSE IF Q ! "1+0000" THEN GO TO PERCENT; %W-702383500
REC(-7); %W9302384500
IF Q = "1-0000" THEN BEGIN REC(-7); ADTOG~FALSE END ELSE %93 %W-702386000
IF Q="8STAND" THEN BEGIN REC(-24); WARNTOG~ADTOG END ELSE %T=NONSTD %W9302386090
IF Q="4ZERO0" THEN BEGIN COUNT~RESULT~ACCUM[1]~0; SCANNER; %Y9502386100
IF Q~ACCUM[1] ! "4LEFT0" THEN BEGIN IF NOT DOLTOG THEN BEGIN %Y9502386120
U~REAL(LISTOG); LISTOG~FALSE END; %Y9502386122
FLAG(870); IF NOT DOLTOG THEN LISTOG ~ BOOLEAN(U); END END ELSE %Y9502386125
IF Q= "4INFO0" THEN BEGIN LISTOG.[47:1]~NOTETOG~ DOLTOG~ %85 %W-502386130
PAIRSTOG~FILESTOG~ADTOG; REC(-8); %W9302386131
IF XREF~ADTOG AND INDEX~SGAVL=2 OR INDEX THEN NAMEXREF END ELSE %85 %W-502386132
IF Q="5FILES" THEN BEGIN REC(-9); FILESTOG~TRUE END ELSE %93 %W-502386140
IF Q="5ST?CK" THEN STACKTAG.[47:1] ~ ADTOG ELSE % CAN INLINE WITHOUT%W7502386150
IF Q="5PAIRS" THEN BEGIN REC(-10); PAIRSTOG~ADTOG END ELSE %93 %W7902386160
IF Q="3DOL00" THEN BEGIN REC(-11); DOLTOG~ADTOG END ELSE%LIST $ %93 %W7802386170
IF Q="5MERGE" THEN BEGIN REC(-12); IF MERGETOG~ADTOG THEN BEGIN %93 %W7702386180
IF MLCR = 0 THEN BEGIN NEXTREC(MLCR,0,-4); %W7702386185
IF SLCR!0 AND SLCR!LCR THEN MERGECOMP END END END ELSE %W7702386190
IF Q="5NOTES" THEN BEGIN REC(-13); NOTETOG~ADTOG END ELSE %93 %W7402386200
IF Q="5NOTES" THEN NOTETOG~ADTOG ELSE %PUT IN NOTES OPTN %69 %W7402386210
IF Q="5PATCH" THEN BEGIN REC(-14); PATCHTOG~ADTOG END ELSE %93 %W5102386300
IF Q = "4LIST0" THEN LISTOG.[47:1]~ADTOG ELSE %W-802386500
IF Q = "3PRT00" THEN PRTOG.[47:1]~ ADTOG ELSE %W-802387000
IF Q="6STREA" THEN BEGIN REC(-15); STREAMTAG.[47:1]~ADTOG END ELSE %W3202387050
IF Q="6DOUBL" THEN BEGIN IF DOUBLETOG~ADTOG THEN REC(-16) END ELSE %W3702387060
IF Q="5INDEX" THEN BEGIN IF INDEX~SGAVL=2 THEN BEGIN REC(-17); %93 %W4302387200
NAMEXREF END END ELSE %93 %W6302387205
IF Q="4SAVE0" THEN BEGIN REC(-18); %93 %W4302387250
SAVETOG ~ SAVETOG & TRUE [41:47:1] END ELSE %93 %W4302387260
IF Q="4XREF0" THEN BEGIN IF XREF~ADTOG AND INDEX~SGAVL=2 OR %63 %W4302387300
INDEX THEN BEGIN REC(-19); NAMEXREF END END ELSE %93 %W4302387400
IF Q="4SHIP0" THEN SHIPTOG~TRUE ELSE % TURNON ONLY %Y9602387450
IF Q="5PURGE" THEN BEGIN REC(-20); %93 %W1302387500
PURGETOG ~ PURGETOG OR ADTOG END ELSE %93 %W1302387600
IF Q="3NEW00"THEN BEGIN COUNT~RESULT~ACCUM[1]~0;SCANNER; %W1702388000
IF Q~ACCUM[1] = "4TAPE0" THEN BEGIN REC(-21); %93 %W1702388010
NEWTOG ~ NEWTOG OR ADTOG END ELSE %93 %W1702388015
IF Q="4DISK0" THEN BEGIN REC(-6); NEWDSK~NEWDSK OR ADTOG END %93 %W1702388020
ELSE GO PERCENT END ELSE %W9302388025
IF Q="4STOP0" THEN BEGIN REC(-22); %93 %W2802388030
STOPTOG ~ ADTOG; LASTUSED ~ 3 END ELSE %93 %W2802388040
IF Q="5ERROR" THEN IF SGAVL=2 THEN BEGIN REC(-23); %93 %W1202388220
ERROROPTION ~ TRUE END %93 %W1202388230
ELSE FLAG(-314) ELSE %W1202388240
COMMENT TO CORRECT HANDLING OF $+ AND $-; %65 %W-702388700
IF Q="1+0000" THEN BEGIN WHILE EXAMIN(NCR) = " " AND (LCR.[33:15]- %W6502388720
NCR.[33:15]!1 OR NCR.[30:3]!7) DO BEGIN RESULT~5;SCANNER END; %65 %W-702388740
IF EXAMIN(NCR) < 10 THEN %W-702388800
SCANNER; %W-702388910
END ELSE BEGIN REC(-7); ADTOG~TRUE END END ELSE %93 %W-702388930
BEGIN IF DEBUGTOG~DEBUGTOG&ADTOG[47:47:1] THEN BEGIN %W-802390000
END END ELSE %W-802413000
IF Q = "5PUNCH" THEN PUNCHTOG ~ ADTOG ELSE %W-702414000
GO TO PERCENT END UNTIL FALSE; PERCENT: %W7602415000
END EFFICIENCY BLOCK; %W4802415500
IF LIBINDEX>0 THEN %W2002416200
IDENT: %W8202507300
02507325
02507350
02507400
IF T ~ SUPERSTACK[SCRAM ~ (Q ~ ACCUM[1]) MOD 125]!0 %W8202508000
02508449
02508450
BEGIN T ~ 0; %W8202511000
02511099
02511100
GO TO COMPLETE END; %W8202511200
02517099
02517100
02517500
02517600
COMMENT SCAN COMMENTS; %W6502521000
STOPDOLLAR ~ TRUE; %W7602521005
DO BEGIN %W6502521010
RESULT ~ 7; %W6502521020
IF NCR~ COMOUT(RESULT,NCR) = LCR THEN %W6502521030
BEGIN READACARD; %W6502521040
IF LIBINDEX !0 THEN IF RECOUNT=FINISHPT THEN %W6502522000
BEGIN %W6502522010
SEARCHLIB(FALSE); READACARD; NORELEASE~FALSE %W6502522020
END %W6502522030
END %W6502522040
END UNTIL BOOLEAN(RESULT); %W6502522050
STOPDOLLAR ~ FALSE; %W7602522060
GO TO SCANAGAIN END END; %W6502523000
IF XREF THEN IF NOT ENDTOG AND T.LINKR!1 THEN WRITEPRT(T,1,8); %W4302524500
BEGIN PHONEYDEC; %REBLOCK TABLE FOR EFF %69 %W4802525500
IF T.ADDRESS ! 0 THEN T~FIXDEFINEINFO(T) ELSE IF COUNT=12 THEN %W9302526500
IF (IF Q="?TIMEC" THEN TRUE ELSE Q="?DATEC") THEN %W9302526550
BEGIN %W9302526600
BOOLEAN STREAM PROCEDURE TOFLAG(A,V); VALUE V; %W9302526650
BEGIN SI~A; DI~ LOC V; DI~DI+1; %W9302526700
IF 7 SC=DC THEN TALLY ~ 1; TOFLAG~TALLY END; %W9302526750
IF TOFLAG(ACCUM[2],"OMPILED") THEN WRL(8); %W9302526800
END; %W9302526850
END MACRO BLOCK; %REBLOCK TABLE FOR EFF %69 %W4802532500
DBLDOLLAR: %W69 %76 %W5102533010
$ VOID 02533499 %76 %W5102533011
SEARCHLIB(TRUE); GO TO PERCENT; %W3502533500
MOVE(11,ELBAT[65],ELBAT); %W-302539000
NXTELBT ~ NXTELBT-65 END END; %W-302542000
LOGOUT %W8202547600
BEGIN PHONEYDEC; COUNT ~ ACCUM[1] ~ 0; %W4802554000
LASTELCLASS ~ ELCLASS; %SAVE NEXT TO LAST CHARACTER %W4002554500
%ELIMINATE BLANKS %W6502555000
%W7602579000
INTEGER MYCLASS;% %W7602581200
REAL WORD;% %W7602581300
INTEGER MAXBOOLS;% %W7602581400
INTEGER ARRAY OPTION[0:99];% %W7602581500
INTEGER PROCEDURE NEXT; FORWARD;% %W7602581600
DEFINE SKIPIT=MYCLASS~NEXT#;% %W7602581700
INTEGER PROCEDURE BOOLSEARCH(B); VALUE B; BOOLEAN B; FORWARD;%W7602581800
BOOLEAN PROCEDURE BOOLEXP; FORWARD;% %W7602581900
BOOLEAN PROCEDURE BOOLPRIM; FORWARD;% %W7602582000
PROCEDURE BOOLCOMP(B); BOOLEAN B; FORWARD;% %W7602582100
%W7602582200
INTEGER PROCEDURE BOOLSEARCH(B);% %W7602582300
VALUE B; BOOLEAN B;% %W7602582400
BEGIN LABEL EXIT, FOUND;% %W7602582500
INTEGER I, Q;% %W7602582600
Q ~ ABS(ACCUM[1]);% %W7602582700
DO IF ABS(OPTION[I])=Q THEN GO TO FOUND UNTIL I~I+1>MAXBOOLS;%W7602582800
IF B THEN ELSE GO TO EXIT;% %W7602582900
OPTION[MAXBOOLS ~ I] ~ Q;% %W7602583000
IF MAXBOOLS}99 THEN% %W7602583100
BEGIN FLAG(902); MAXBOOLS ~ MAXBOOLS-1; END;% %W7602583200
FOUND:% %W7602583300
IF B THEN OPTION[I] ~ REAL(BOOLEAN(ABS(OPTION[I]))% %W7602583400
OR (BOOLEAN(-0) AND BOOLEAN(ACCUM[1])))% %W7602583500
ELSE BOOLSEARCH ~ SIGN(OPTION[I]);% %W7602583600
EXIT:% %W7602583700
END BOOLSEARCH;% %W7602583800
%W7602583900
INTEGER PROCEDURE NEXT;% %W7602584000
BEGIN LABEL EXIT;% %W7602584100
INTEGER T;% %W7602584200
DEFINE GOOF = FLAG(905)#,% %W7602584300
ERROR= BEGIN GOOF; GO TO EXIT END#;% %W7602584400
COUNT ~ RESULT ~ ACCUM[1] ~ 0;% %W7602584500
SCANNER; Q ~ ACCUM[1];% %W7602584600
IF RESULT=3 THEN ERROR;% %W7602584700
IF RESULT=2 THEN% %W7602584800
BEGIN T ~ (T ~ Q.[18:6]-2)&T[42:41:3];% %W7602584900
IF T=11 OR T=19 OR T~IF T=25 THEN 20 ELSE T =20 THEN %87 %W7602585000
WORD ~ SPECIAL[T] ELSE GOOF; %DONT NEED SEMICOLON %87 %W7602585050
GO TO EXIT% %W7602585100
END SPECIAL CHARACTERS;% %W7602585200
COMMENT LOOK FOR BOOLEAN OPERATORS, THEN "BOOLEANS."; %W7602585300
IF Q="3NOT00" THEN T~NOTOP ELSE% %W7602585400
IF Q="3AND00" THEN T~ANDOP ELSE% %W7602585500
IF Q="2OR000" THEN T~OROP ELSE% %W7602585600
IF Q="3EQV00" THEN T~EQVOP ELSE %W7602585700
IF Q="3IMP00" THEN T ~ IMPOP; %W7602585750
IF T!0 THEN WORD.CLASS ~ T ELSE% %W7602585800
BEGIN COMMENT MUST BE BOOLEAN ID; %W7602585900
IF (T ~ BOOLSEARCH(FALSE))!0 THEN% %W7602586000
WORD ~ 1&BOOID[2:41:7]&T[1:1:1] ELSE GOOF;% %W7602586100
END;% %W7602586200
EXIT:% %W7602586300
NEXT ~ MYCLASS ~ WORD.CLASS;% %W7602586400
END NEXT;% %W7602586500
%W7602586600
BOOLEAN PROCEDURE BOOLEXP;% %W7602586700
BEGIN BOOLEAN B;% %W7602586800
B ~ BOOLPRIM;% %W7602586900
WHILE MYCLASS}EQVOP AND MYCLASS{ANDOP DO BOOLCOMP(B);% %W7602587000
BOOLEXP ~ B END BOOLEXP;% %W7602587100
%W7602587200
BOOLEAN PROCEDURE BOOLPRIM;% %W7602587300
BEGIN BOOLEAN B, KNOT;% %W7602587400
IF KNOT ~ (NEXT=NOTOP) THEN SKIPIT;% %W7602587500
IF MYCLASS=LEFTPAREN THEN% %W7602587600
BEGIN B ~ BOOLEXP;% %W7602587700
IF MYCLASS!RTPAREN THEN FLAG(900);% %W7602587800
END ELSE IF MYCLASS!BOOID THEN FLAG(901)% %W7602587900
ELSE B ~ WORD<0;% %W7602588000
IF KNOT THEN B ~ NOT B; SKIPIT;% %W7602588100
BOOLPRIM ~ B END BOOLPRIM;% %W7602588200
%W7602588300
PROCEDURE BOOLCOMP(B); BOOLEAN B;% %W7602588400
BEGIN REAL OPCLASS;% %W7602588500
BOOLEAN T;% %W7602588600
OPCLASS ~ MYCLASS;% %W7602588700
T ~ BOOLPRIM;% %W7602588800
WHILE OPCLASS<MYCLASS DO BOOLCOMP(T);% %W7602588900
IF OPCLASS=ANDOP THEN B ~ B AND T ELSE% %W7602589000
IF OPCLASS=OROP THEN B ~ B OR T ELSE% %W7602589100
IF OPCLASS=IMPOP THEN B~ B IMP T ELSE %W7602589200
B ~ B EQV T; %W7602589250
END BOOLCOMP;% %W7602589300
%W7602589400
PROCEDURE USEMODULES;% %W7602589500
BEGIN BOOLEAN OMITOG;% %W7602589600
REAL TEMP;% %W7602589700
STREAM PROCEDURE BOMBSEQNO(ACCUM,VPL,OCR,COUNT);% %W7602589800
VALUE COUNT;% %W7602589900
BEGIN DI~VPL; DS~8 LIT " "; DI~VPL; SI~ACCUM;% %W7602590000
SI~SI+3; DS~COUNT CHR; DI~VPL; VPL~DI;% %W7602590100
DI~OCR; SI~LOC VPL; DS~WDS;% %W7602590200
END BOMBING SEQUENCE NUMBERS TO RIGHT PLACES;% %W7602590300
OMITOG ~ ACCUM[1]="4OMIT0";% %W7602592200
REC(-4); %W9302592250
COUNT ~ RESULT ~ ACCUM[1] ~ 0; SCANNER; Q ~ ACCUM[1]; %W7602592300
IF RESULT=3 THEN BOMBSEQNO(ACCUM[1],VOIDPLACE,TEMP,% %W7602592400
IF COUNT<8 THEN COUNT ELSE 8) ELSE FLAG(906);% %W7602592500
COUNT ~ RESULT ~ ACCUM[1] ~ 0; SCANNER; Q ~ ACCUM[1]; %W7602592600
IF ACCUM[1]!"1,0000" THEN FLAG(903);% %W7602592700
COUNT ~ RESULT ~ ACCUM[1] ~ 0; SCANNER; Q ~ ACCUM[1]; %W7602592800
IF ACCUM[1]!"2IF000" THEN FLAG(904);% %W7602592900
IF BOOLEXP EQV OMITOG THEN OMITCR ~ TEMP ELSE VOIDPLACE ~ 0;%W7602593000
IF MYCLASS!SEMICOLON THEN FLAG(907); %87 %W7602593100
END USEMODULES;% %W7602593200
PROCEDURE SETMODULES;% %W7602593300
BEGIN LABEL EXIT;% %W7602593400
DEFINE ERROR= BEGIN Q~ACCUM[1];FLAG(908); GO TO EXIT END#;%W7602593500
DO BEGIN% %W7602593600
REC(-3); %W9302593650
COUNT ~ RESULT ~ ACCUM[1] ~ 0; SCANNER;% %W7602593700
IF RESULT!1 THEN ERROR; Q ~ ACCUM[1];% %W7602593800
COUNT ~ RESULT ~ ACCUM[1] ~ 0; SCANNER;% %W7602593900
IF ACCUM[1]!"1=0000" THEN ERROR;% %W7602594000
COUNT ~ RESULT ~ ACCUM[1] ~ 0; SCANNER;% %W7602594100
IF ACCUM[1]!"5FALSE" THEN% %W7602594200
IF (Q ~ Q&REAL(ACCUM[1]="4TRUE0")[1:47:1])>0 THEN ERROR;%%W7602594300
ACCUM[1] ~ Q; Q ~ BOOLSEARCH(TRUE);% %W7602594400
COUNT ~ RESULT ~ ACCUM[1] ~ 0; SCANNER;% %W7602594500
END UNTIL ACCUM[1]!"1,0000";% %W7602594600
EXIT:% %W7602594700
END SETMODULES;% %W7602594800
BOOLEAN PROCEDURE EXPLICITFORMAT; FORWARD; %W4003056500
BOOLEAN PROCEDURE FORMATPHRASE; FORWARD; %W4003056600
IF NOTETOG THEN FLAG(538&"H"[1:43:2]); % SLOW POWER CALC %91 %W7404078800
BEGIN WRITELINE; % PRINT BEFORE FILLING %W7904149000
IMAGE ~ FALSE; DEBUGWORD( B2D(L), WORD, LIN ) END; %W7904150000
IF REAL(BOOLEAN(INFO[0,255-N])EQV BOOLEAN(C)) %W-304209000
= REAL(NOT FALSE) THEN GO TO FOUND; %W-304209500
ALPHA PROCEDURE ZEARCH (Q,KEY);VALUE KEY;ARRAY Q[0]; REAL KEY;%64 %W4304231000
L: ZEARCH~Q[ I +1] ; %64 %W4304243000
BEGIN PHONEYDEC; %W4804247090
END B2D; %W4804248010
BEGIN LABEL LL; %W3704278500
WRITELINE; % PRINT BEFORE FILLING %W7904278750
WRITE(LIN[*],BUG,B2D(L),COP[S.[42:6]],B2D(S.[36:6]), %W3704280000
WRITE(LIN[*],BUG,B2D(L),IF T1~S.[46:2]=1 THEN %W3704285000
IMAGE ~ FALSE END DEBUG; %W7904287100
IF L < 4092 THEN %W3004293000
IF BUGGER~ZEARCH(WOP,OP)=" " THEN %64 %W4304603000
COMMENT TO HANDLE PARA DEFINES MOVE STEPI W27; %60 %W2705002000
%W2705003000
REAL T; BOOLEAN BT; % TEMP %W5805013100
STREAM PROCEDURE ANYMORE(LIN,T); % HANDLES LINKS IN ALGOL/ERRORS %W-905013200
BEGIN SI~LIN; DI~T; DS~4 OCT; % PUT OUT LINK VALUE %W-905013300
SI~SI+4; DI~LIN; DS ~ 9 WDS; DS ~ 8 LIT " " END; %W-905013400
STREAM PROCEDURE WRITERROR(ERN,LIN,SKW,SKC,ACC,CNT,LST); %W-905016000
VALUE ERN,SKC,CNT; %W-905017000
BEGIN %69 %W-905018000
DI ~ LIN; DS ~ 8 LIT " "; %69 %W-905018100
SI ~ LIN; DS ~ 9 WDS; DS ~ 4 CHR; %69 %W-905018200
SI ~ LST; SI ~ SI-8; DS ~ 8 CHR; %69 %W-905018300
SI ~ LIN; DS ~ 10 CHR; %78 %W-905018400
SI ~ LOC ERN; %69 %W-905018500
IF SC ! "H" THEN %69 %W-905018600
DS ~ 18 LIT "|" %69 %W-905018700
ELSE %69 %W-905018800
DS ~ 18 LIT " "; %69 %W-905019000
DI ~ LST; DI ~ DI - 8; SI ~ LST; DS ~ WDS; DI ~ LIN; %W-905019500
SI~LOC ERN;IF SC="+"THEN DS~8LIT"WARNING "ELSE %W1005020000
IF SC="8"THEN DS~8LIT"FLUSHED "ELSE %W-405020500
IF SC="H" THEN DS ~ 5 LIT "NOTE " ELSE %69 %W-905020600
DS ~ 6 LIT"ERROR "; %W-905021000
SI ~ LOC CNT; IF SC ! "+" THEN %W-905021500
BEGIN SI ~ ACC; SI ~ SI + 3; DS ~ CNT CHR; %W-905022000
END; %W-905023000
DI~SKW; DI~DI+SKC; %W-905024000
% 05024200 KILLS M9 CHANGES--NEAR LINE PO %W-905024100
$ VOID 05024601 %W9905024200
DS~3 LIT "<--"; %W-905024900
END WRITERROR; %W-905025000
OWN BOOLEAN LOOPTOG; %W-405026000
IF ERRNUM } 0 THEN %W6105026550
NOSYN BEGIN CLOSE(DATA,PURGE); CLOSE(NEWTAPE, PURGE); %W6105026600
CLOSE(NEWDISK, PURGE); CLOSE (CODE, PURGE) END; %W6105026700
IF NOT LOOPTOG THEN BEGIN %W-405027000
IF ERRNUM = 1 %W-405028000
OR ERRNUM = 6 %W-405029000
OR ERRNUM = 12 %W-405029100
OR ERRNUM = 870 % WRONG "$ ZERO" %Y9505029200
OR ERRNUM = 200 %W-405030000
OR ERRNUM = 135 %W-405030100
OR ERRNUM = 259 %W-405030200
OR ERRNUM = 528 % EOF BEFORE "END. " %84 %W5705030250
OR ERRNUM = 170 %MISSING PROG-NO 1ST BEGIN--EOF %59 %W5705030300
OR ERRORCOUNT } 100 %W-405031000
THEN BEGIN LOOPTOG~ERRORTOG~TRUE; %W-405031300
IF ERRORCOUNT } 100 THEN ERRNUM ~ 909; %W-405031400
ERRNUM ~ ERRNUM & 8[1:43:5] END; %W-405031500
IF ERRNUM } 0 THEN %91 74 %W1005034000
BEGIN SPECTOG ~ FALSE; ERRORCOUNT ~ ERRORCOUNT +1; %91 %W7405034500
END; COMMENT COUNT ERRORS; %91 %W7405035000
IF ERRNUM } 0 OR LISTOG THEN BEGIN %WARN AND NOTES IF LIST %69 %77 %W1005035500
IF NOT LISTOG % DROPS AND NOT REMOTOG --M9 %W9905036000
INTEGER ICNT;CHECKIT;ICNT~IF LASTUSED=1 OR LASTUSED=2 OR %77 %W4905038000
LASTUSED=5 THEN 1 ELSE IF LASTUSED=3 THEN %77 %W4905038050
IF MERGELAST THEN 4 ELSE (REAL(DISKTOG)+2) ELSE 0; %W7705038100
WRITELINE; % PRINT BEFORE FILLING %W7905038300
PRINT(LIN [0],FCR,-(ABS(ERRNUM)|10000+ERRORCOUNT)|10,SOURCE[%W-905038500
IF LASTUSED>7 THEN 0 ELSE %77 %W-905038550
LASTUSED|3+LASTCOMPARE],RECORDCNT[ICNT],ICNT); %W4905038600
MOVE(1,INFO[LASTSEQROW,LASTSEQUENCE],LIN [10]); %W-505039000
%W-505039500
% KILL TEMP IF NOHEADING THEN DATIME %W9905039600
IMAGE ~ FALSE; % ERROR IMAGE NOT REGULAR IMAGE %W7905040000
$ VOID 05043201 % OLD W16 PATCH %W1605043100
IF DEFINEINDEX!0 THEN %W-905044000
BEGIN ZOT(ACCUM[0],0,MKABS(DEFINEARRAY[2])); %W-905044200
RR1~ 10+(RR2~ DEFINEARRAY[2].[15:33]).[33:15]-RR2.[15:15]; %W-905044400
RR2~ RR2.[30:3]; %W-905044600
ZOT(ACCUM[0],"%",MKABS(DEFINEARRAY[2])) %W-905044800
END %W-905045000
ELSE %W-905045100
BEGIN RR1~ 1+NCR.[33:15]-FCR; %W-905045200
RR2~ NCR.[30:3] %W-905045300
END; %W-905045400
IF RR1<1 OR RR1>10 THEN RR1~ RR2~10; %W-905045500
IF ABS(ERRNUM-161)>1 AND DEFINEINDEX=0 THEN RR3 ~ -1 %W-905045600
ELSE RR3 ~ Q.[12:6]; %W-905045650
WRITELINE; % PRINT BEFORE FILLING %W7905045675
WRITERROR(ERRNUM, LIN, LIN[RR1], RR2, ACCUM[1], RR3, %W-905045700
INFO[LASTSEQROW,LASTSEQUENCE]); %W-905045710
BT~TRUE; % BLANK FIRST TIME %W-905045720
T ~ ABS(ERRNUM); %W-905045730
DO BEGIN % LOOP FOR MULTILINE ERROR MESSAGES %W-905045740
WRITELINE; IF BT THEN BEGIN BLANK(LIN); BT~FALSE END; %W-905045750
READ ( ERRORS[T], 10, LIN[*]); %W-905045760
ANYMORE (LIN, T); %W-905045770
END UNTIL T=0; %W-905045780
WRITELINE; BLANK(LIN); %W-905045800
IMAGE~FALSE; % SEE 05046050 FOR FOLLOWING: %W7905045900
IF NOT TWXOFF THEN IF ERRNUM}0 THEN %W5805045910
IF TWXTIME~MIN(2400,TWXTIME+(T~TIME(1)))<0 THEN TWXOFF~TRUE ELSE%W5805045920
IF STATUS(STATARRAY[*]) { 0 THEN TWXOFF~TRUE ELSE %W5805045930
BEGIN %W5805045940
TWXTIME~TWXTIME-T-600; % ALLOW 10 SECONDS %W5805045950
TWXCOUNT~TWXCOUNT+1; % SEE IF WE GET THEM ALL %W5805045960
$ VOID 05046007 % OLD W58 PATCH %W5805046000
BEGIN %W5805046008
LABEL DONE; %W5805046010
STREAM PROCEDURE OUTTWX(D,E,I,F,R,N); VALUE E,F,R,N; %W5805046012
BEGIN DI ~ D; DS ~ 2 LIT "{!"; SI ~ LOC E; %W5805046014
IF SC = "8" THEN DS ~ 8 LIT "FLUSHED " ELSE %W5805046016
DS ~ 6 LIT "ERROR "; DS ~ 3 DEC; DS ~ 4 LIT " AT"; %W5805046018
SI ~ I; SI ~ SI +3; DS ~ N CHR; DS ~ 4 LIT " IN "; %W5805046020
SI ~ LOC F; SI ~ SI + 4; DS ~ 4 CHR; %W5805046022
DS ~ 9 LIT " RECORD #"; N ~ DI; DI ~ LOC F; %W5805046024
DS ~ 5 DEC; DI ~ LOC F; DS ~ 4 FILL;DI ~ N; %W5805046026
SI~LOC F; 4(IF SC! " " THEN DS~CHR ELSE SI~SI+1); %W5805046028
DS ~ CHR; DS ~ 3 LIT "{!~" END; %W5805046030
IF DEFINEINDEX=0 THEN RR1 ~LASTUSED ELSE RR1 ~DEFINEARRAY[0]; %W5805046031
OUTTWX(STATARRAY[1],ERRNUM,ACCUM[1], %W5805046032
RR3~ IF RR1=1 OR LASTCOMPARE ! 0 THEN "1CARD" %W5805046034
ELSE IF RR1=3 THEN IF DISKTOG THEN "3DISK" %W5805046036
ELSE "2TAPE" ELSE "0CAST", %W5805046038
RECORDCNT[RR3.[18:6]], %W5805046040
MIN( 14, Q.[12:6] ) ); %W5805046042
WRITE(TWX(STATARRAY[0],0),8,STATARRAY[*]) [DONE];%DONT WAIT %74 %W5805046044
DONE: END; %W5805046046
END IF NOT TWXOFF; %W5805046048
COMMENT W58 APPEARS IN TWO PLACES -- 05046000 AND 09407500 %W5805046050
PART 1 PRINTS THE 1ST 5 ERRORS ON THE TWX. 05046000 %W5805046051
PART 2 PRINTS THE # OF ERRORS NOT LISTED. 09407500 %W5805046052
A TEST IS MADE BEFOR EACH WRITE ON TWX TO INSURE %W5805046053
ATTACHED STATION. %W5805046054
PART 2 ASSUMES STATUS CONSTRUCT AND ERRORCOUNT ONLY. %W5805046055
PART 1:ASSUMES RECORDCNT WHICH IS DECLARED IN W49 AND %W5805046056
USED IN W57,W49. %W5805046057
ALWAYS PRINTS THE LAST IDENT SCANNED. %W5805046058
ASSUMES STATUS CONSTRUCT. %W5805046059
LASTUSED DETERMINES WHERE LAST RECORD COME FROM: %W5805046060
A.IF IN A DEFINE (DEFINEINDEX!0,LASTUSED>7 %W5805046061
OR = 0) USE DEFINEARRAY[0] ELSE %W5805046062
B.LASTUSED OF 1=CARD,2=TAPE,3=DISK, %W5805046063
ELSE CAST. %W5805046064
VALUE OF REC # FROM RECORDCNT[LASTUSED{3] %W5805046065
(REC # NOT KEPT FOR CAST); %W5805046066
END; %W5805046099
IF LOOPTOG THEN GO TO ERRORPRINT; %W-405046100
IF ERRNUM } 0 THEN %W1005046900
END END %W-905060000
$ VOID 05100001 %W5805061000
BEGIN PHONEYDEC; FLAG(ERRNUM); %W4805106000
THEN IF GT1~ ELBATWORD.[16:11]}512 THEN IF GT1 < 1024 %87 %W-105118500
%ALLOW UP LEVEL ADDRESSING IF THERE IS A PRT %87 %W-105118600
ELSE WRL(1) ELSE WRL(1) %M9 BUT NOT XALGOL %W9305119500
PHONEYDEC; %W4805152500
PHONEYDEC; %W4805185100
BEGIN PHONEYDEC; %W4805188100
END TAKEFRST; %W4805189100
PHONEYDEC; %W4805200100
BEGIN PHONEYDEC; GT1~0; %W4805231000
IF NOT STREAMTAG THEN BEGIN FLAG(276);ERRORTOG~TRUE; %87 %W3205231500
STREAMTAG~ TRUE END; %87 %W3205231600
BEGIN PHONEYDEC;IF SPAC=0 THEN SPAC~GETSPACE(TRUE); %W4805260000
THEN BEGIN WRITELINE; WRITE(LIN[*],DEBUGDESC,B2D(SPAC),TYPE,%79 %W3705264000
B2D(RELAD),SGNO); IMAGE ~ FALSE END; %PRINT-FILL %79 %W3705265000
REC(0); %W9305273200
PHONEYDEC; %W4805293100
BEGIN PHONEYDEC; RANGE~ELCLASS}LOWER AND ELCLASS{UPPER END; %W4805304000
IF PRTOG THEN BEGIN WRITELINE; WRITE(LIN[*],PUTPRT,B2D(GS), %79 %W3705377000
IF Q THEN "P" ELSE "S"); IMAGE~FALSE END END GETSPACE; %79 %W3705378000
IF ELCLASS=CROSSHATCH THEN BEGIN %W5206003200
STEPIT; SIMPARITH END ELSE %W5206003400
TIME: PANA; %W9306073000
IF (T1~GET(L-1)).[46:2] ! 0 THEN WRL(11) ELSE %W9306073025
IF T1 DIV 4 > 4 THEN WRL(12); %W9306073050
EMITL(1); EMITO(COM); %W9306073075
INTEGER SL; %W5206089500
IF STACKTAG THEN IF INLINETAG THEN %W7506091115
IF Q="5STACK" THEN BEGIN WRL(26); STEPIT; GO TO LDOT END; %93 %W7506091120
IF ELCLASS=FACTOP THEN %W5206091200
IF LINKTOG THEN % LAST SYLLABLE IS NOT A LINK %W5206091300
IF (SL~GET(L-1)).[46:2]=3 OR SL=673 THEN BEGIN %$" %69 %W5206091400
WRL(19); %93 %W5206091450
ELBAT[I].CLASS~ELCLASS~CROSSHATCH; STEPIT; %W5206091500
EMITO(DUP); EMITO(LOD); GO EXIT END; %W5206091600
STEPIT; %W7506124000
IF INLINETAG THEN %W7506124025
IF ELBAT[I].ADDRESS = STREAMV THEN %W7506124050
BEGIN %W7506124075
INLINE; %W7506124100
IF NOT INLINETOG.[46:1] THEN %W7506124125
FLAG(092); %NOT EXPRESS TYPE%W7506124150
INLINETOG ~ FALSE %W7506124175
END %W7506124200
ELSE %W7506124225
AEXP %W7506124250
ELSE %W7506124275
AEXP; %W7506124300
IF ELCLASS=CROSSHATCH THEN GT4~BOOSEC~BTYPE ELSE %W5206152500
IF STACKTAG THEN IF INLINETAG THEN %W7506226400
IF Q="5STACK" THEN BEGIN WRL(26); STEPIT; GO TO TD END; %93 %W7506226500
COMMENT BOOLEAN CONSTANT; %W-306255000
IF TYPE ~ 0&ELBAT[I][44:25:2]>7 THEN EMITNUM(C) %W-306255500
ELSE EMIT(TYPE); STEPIT; GO TO T; %W-306256000
STEPIT; %W7506259000
IF INLINETAG THEN %W7506259050
IF ELBAT[I].ADDRESS = STREAMV THEN %W7506259100
BEGIN %W7506259150
INLINE; %W7506259200
IF NOT INLINETOG.[46:1] THEN %W7506259250
FLAG(092); %NOT EXPRESS TYPE%W7506259300
INLINETOG ~ FALSE; %W7506259350
TYPE ~ BOOPRIM ~ BTYPE %W7506259400
END %W7506259450
ELSE %W7506259500
TYPE ~ BOOPRIM ~ EXPRSS %W7506259550
ELSE %W7506259600
TYPE ~ BOOPRIM ~ EXPRSS; %W7506259650
BOOLEAN MULTIPLE; LABEL DOITAGAIN; %W5306282100
DOITAGAIN: %W5306282900
STEPIT; AEXP; %W5306287000
IF ELCLASS=RELOP THEN BEGIN %W5306287100
EMITPAIR(JUNK,SND); EMIT (OPERATOR); %W5306287200
IF MULTIPLE THEN EMITO(LND) ELSE WRL(20); EMITV(JUNK); %93 %W5306287300
MULTIPLE ~ TRUE; GO DOITAGAIN; %W5306287400
END; %W5306287500
EMIT (OPERATOR); %W5306287600
IF MULTIPLE THEN EMITO(LND); %W5306287700
STACKCT ~ 1; %W5306287900
EMIT(REAL(MULTIPLE)); L~L-1; %W5306288000
REC(4); %W9306315200
IF NOTETOG THEN IF NOT NO519 THEN %FLAG USE OF GOTOSOLVER %91 %W7406379500
FLAG(519&"H"[1:43:2]); %W7406379600
PHONEYDEC; %W4806414100
PHONEYDEC; %W4806420100
BEGIN LABEL EXIT; REAL X; %W2706501000
FOR X~1 STEP 1 UNTIL 6 DO %W2706506000
EXIT: FOR X:=X STEP 1 UNTIL 5 DO %W2706512000
PAIR(FALSE); %END %W7907015500
CARDEOF ~ TRUE; %W5707028000
% %W5707029000
LASTUSED ~ 1; %W5707030000
ANOTHER: %W4007079000
IF FBIT THEN BEGIN VBIT~FALSE;SCLASS~LOCLID; %W7507081000
IF SBIT THEN FBIT~FALSE END %W7507081500
IF SCLASS=FRMTID THEN IF EXPLICITFORMAT THEN %W4007094100
BEGIN STEPIT; GO TO COMMON END; %W4007094200
ACLASS~STEPI; WHOLE~ELBAT[I];SCATTERELBAT; %W4007094500
IF SCLASS=LISTID THEN IF ACLASS!LISTID THEN %93 %W3307094700
BEGIN WRL(15); LISTPARA; GO TO COMMON END; %93 %W3307094800
IF NOT (INLINETAG AND SBIT AND T1=RTBRKET) THEN %W7507096500
IF NOTETOG THEN FLAG(530&"H"[1:43:2]);%NAME-CALL EXPR %91 %W7407132500
IF NOTETOG THEN FLAG(530&"H"[1:43:2]);%NAME-CALL EXPR %91 %W7407203500
THEN BEGIN IF NOT (INLINETAG AND SBIT AND ELCLASS=RTBRKET) THEN %W7507239000
ERROR(129); GO EXIT END; %W7507239100
IF NOTETOG THEN FLAG(531&"H"[1:43:2]); %SIMPLE SWITCH PARAM %91 %W7407270500
NO519~TRUE; % JUST FLAGGED IT %91 %W7407270900
NO519~FALSE; %ALLOW AGAIN %91 %W7407271100
IF NOTETOG THEN BEGIN FLAG(534&"H"[1:43:2]); NO519~TRUE END; %91 %W7407373500
NO519~FALSE; %91 %W7407374500
COMMENT BOOLEAN CONSTANT; %W-307376000
IF T2 ~ 0 & WHOLE[44:25:2] > 7 THEN EMITNUM(C) %W-307377000
ELSE EMIT(T2); ACLASS ~ BOOID; GO TO BSX; %W-307377500
BEGIN %ELIMINATE %74 %W4807402000
HOLE ~ 2 - REAL(FROM); %NAME CALL %74 %W4807402100
VARIABLE(HOLE); %EXPRESSION %74 %W4807402200
GO TO EXIT %PRT CELL %74 %W4807402300
END; %ACC ENTRY %74 %W4807402400
IF NOT LOCAL(ELBW~ELBAT[I]) THEN BEGIN IF NOTETOG THEN %91 %W7407508000
IF NOT BOOLEAN(ELBW.FORMAL) THEN %91 %W7407508200
%THESE CASES ARE CLEAR %91 %W7407508250
BEGIN FLAG((532+REAL(TB1))&"H"[1:43:2]); NO519~TRUE END;%91 %W7407508500
GO GOMCP END; %91 %W7407508750
IF TB1 THEN BEGIN GOGEN(ELBW,BFW); STEPIT; %91 %W7407509000
%91 %W7407511000
ELSE BEGIN CALLSWITCH(ELBW); EMITO(BFW); %91 %W7407526000
IF NOTETOG THEN FLAG(537&"H"[1:43:2]) END; %MORE THAN ONCE (SW) %91 %W7407526500
NO519~FALSE; % ALLOW NOTE 519 %91 %W7407528500
PHONEYDEC; %W4807538100
DEFINE ELBATWORD=RR9#, LINK=GT2#,ADDITIONAL %W4307595000
DO BEGIN ADJUST; %W4307596700
IF XREF THEN BACKUPTO(XREFC-1, 0); %W4307596800
IF INDEX THEN WRITEPRT(ELBAT[I].[35:13], 1, 6); %W4307596900
IF STEPI!COLON THEN %W4307597000
LINK~(ADDITIONAL~TAKE(GT3~GIT(ELBATWORD))) %W4307601000
PUT(-ADDITIONAL&L[36:36:12],GT3); %W4307610000
PAIR(TRUE);%BEGIN %W7907646445
PAIR(FALSE);%END %W7907646587
$ VOID 07674001 %W-307661000
LABEL L2,L3,L4; %W-307675000
BEGIN IF STEPI=LITNO OR ELCLASS=NONLITNO THEN GO L2; %W-307689000
IF ELCLASS = STRNGCON THEN %W-307690000
IF COUNT=8 THEN BEGIN MOVECHARACTERS(8,ACCUM[1],3,%W-307690500
EDOC[T2],0); GO TO L3 END ELSE GO TO L2; %W-307691000
IF ELCLASS = ADOP THEN BEGIN %W-307691500
IF STEPI=LITNO OR ELCLASS=NONLITNO THEN BEGIN %W-307692000
C ~ C&ELBAT[I-1][1:21:1]; GO TO L2 END %W-307692500
END ELSE %W-307693000
IF ELCLASS{IDMAX THEN BEGIN %W-307693500
IF ACCUM[1].[18:18] ="OCT" THEN BEGIN %W-307694000
ACCUM[1].[18:18]~0; %W-307694500
OCTCON(FALSE,ACCUM[0]); GO TO L4 END %W-307695000
END ELSE %W-307695500
IF ELCLASS=TRUTHV THEN BEGIN %W-307696000
IF ELBAT[I].ADDRESS>1 THEN BEGIN %W-307697000
L4: MOVE(1,ACCUM[0],EDOC[T2]); GO TO L3 END END;%W-307698000
I ~ I-1; C ~ 0; COMMENT BLANK FIELD IS ZERO; %W-307699000
WRL(3); %W9307699500
L2: MOVE(1,C,EDOC[T2]); %W-307700000
L3: C ~ 0; %W-307701000
DEFINE LOGLVL = 3#; LOGIN; %W8207727005
07727006
07727007
LDEC: %W7507731000
IF INLINETAG THEN %W7507731100
IF ELBAT[I].ADDRESS = STREAMV THEN %W7507731200
BEGIN INLINE; GO TO EXIT END; %W7507731400
FLAG(146); %W7507731600
LBEG: PAIR(TRUE); IF STEPI = DECLARATORS % BEGIN %W7907754000
THEN BEGIN %W7507755000
IF INLINETAG THEN %W7507755025
IF ELBAT[I].ADDRESS = STREAMV THEN %W7507755050
IF STEPI = LEFTPAREN THEN %W7507755100
BEGIN %W7507755150
I ~ I - 1; %W7507755200
COMPOUNDTAIL; %W7507755250
GO TO EXIT %W7507755300
END %W7507755350
ELSE %W7507755400
I ~ I - 1; %W7507755450
I ~ I - 1; %W7507755500
BLOCK ( FALSE ) %W7507755550
END %W7507755600
% CATCH FOR INLINE STREAM STATEMENTS ( FIRST AFTER BEGIN) %W7507755650
EXIT: LOGOUT END STMT; %W8207757000
IF Q="3SET00" AND ERROROPTION THEN %W1207810202
BEGIN %W1207810204
WRL(9); %93 %W1207810205
STEPIT; %W1207810206
IF Q="7EXPOV" THEN J~21 ELSE IF Q="7INTOV" THEN J~ 22 %W1207810208
ELSE IF Q="8EXPUN" THEN J~ 23 ELSE IF Q="7DIVZE" THEN %W1207810210
J~ 24 ELSE BEGIN ERR(310); GO XXX END; %W1207810212
IF STEPI!RELOP THEN BEGIN EMITL(0);EMITL(J);EMITO(STD);GO XXX END; %W1207810214
IF STEPI!FILEID AND(ELCLASS<BOOPROCID OR ELCLASS>INTID)THEN %W1207810218
BEGIN ERROR(311); GO TO XXX END; %W1207810220
IF N~ ELBAT[I].ADDRESS>511 AND N<1024 THEN %W1207810222
BEGIN ERROR(312); GO TO XXX END; %W1207810224
N~ N.[38:10]; %W1207810226
IF ELCLASS<BOOID AND ELCLASS!FILEID THEN %W1207810228
IF INFO[ELBAT[I].LINKR, ELBAT[I].LINKC+ELBAT[I].INCR] %W1207810230
.[40:8]!0 THEN BEGIN ERROR(313); GO TO XXX END; %W1207810232
EMITL(N); EMITL(J); EMITO(STD); STEPIT; GO TO XXX %W1207810234
END; %W1207810236
IF Q="6RESIZ" THEN %W9007821300
BEGIN INTEGER T1; %W9007821310
WRL(23); %93 %W9007821315
IF STEPI!LEFTPAREN THEN FLAG(105); %W9007821320
IF STEPI<BOOARRAYID OR ELCLASS>INTARRAYID %W9007821330
THEN ERR(123); %W9007821340
T1~FL; VARIABLE(T1); %W9007821350
IF TABLE(I-2)!FACTOP OR T1=0 THEN ERR(123); %W9007821360
IF ELCLASS!COMMA THEN ERR(128); %W9007821370
STEPIT; AEXP; EMITPAIR(JUNK,ISN); %W9007821380
EMITL(41); EMITO(COM); %W9007821390
EMITO(DEL);EMITO(DEL); %W9007821400
IF ELCLASS!RTPAREN THEN ERR(103) ELSE STEPIT; %W9007821410
GO TO XXX; %W9007821420
END ELSE %W9007821430
IF Q="5TIMED" THEN BEGIN WRL(24);N~1;C~42 END ELSE %PSUEDO-LOG %93 %W9007860000
COMMENT FORSTLIST COMPILES THE CONSTRUCT FOR <LIST> DO <STATEMENT>; %W3307915000
PROCEDURE FORSTLIST(J); VALUE J; INTEGER J; %W3307915010
BEGIN %W3307915020
INTEGER LISTADDRESS,JUMPPLACE,LL,NAME; %W3307915030
REAL LINFO,TEMP,VOBIT; %W3307915040
CHECKER(ELBAT[I]); %W3307915050
COMMENT J=0 IF FORSTLIST CALLED BY FORSTMT %W3307915060
J!0 IF FORSTLIST CALLED BY FORSTLIST; %W3307915070
IF J=0 THEN %W3307915080
BEGIN %W3307915090
EMITL(0); ADJUST; JUMPPLACE ~ L; %W3307915100
END ELSE JUMPPLACE ~ J; %W3307915110
EMITPAIR(LSTRTN,SND); %W3307915120
LISTADDRESS ~ ELBAT[I].ADDRESS; %W3307915130
COMMENT SET UP THE LIST AS IF IT WERE A REAL VARIABLE; %W3307915140
TEMP ~ TAKE(LINFO ~ ELBAT[I].LINK); %W3307915150
IF MODE = 0 THEN FLAG(510) ELSE %73 %W3307915155
NAME ~ GETSPACE(FALSE); %W3307915160
VOBIT ~ IF BOOLEAN(TEMP.FORMAL) THEN TEMP ELSE TEMP & 2[9:46:2];%W3307915170
PUT(VOBIT & LEVEL[11:43:5] & REALID[2:41:7] & NAME[16:37:11], %W3307915180
LINFO); %W3307915190
EMITN(LISTADDRESS); EMITPAIR(NAME,STD); %W3307915200
EMITV(LSTRTN); EMITPAIR(0,GEQ); LL ~ BUMPL; %W3307915210
IF STEPI = COMMA THEN %W3307915220
IF STEPI=LISTID THEN BEGIN WRL(-1); %93 %W3307915230
FORSTLIST(JUMPPLACE) END ELSE ERR(475) %93 %W3307915235
ELSE BEGIN %W3307915240
IF ELCLASS!DOV THEN ERR(475) ELSE STEPIT; EMITO(DEL); %W3307915250
COMMENT ERROR 475 INDICATES MISSING DO OR NON LIST ELEMENT; %W3307915260
DIALA ~ DIALB ~ 0; %W3307915270
STMT; %W3307915280
EMITL(5); EMITB(BBW,BUMPL,JUMPPLACE); %W3307915290
CONSTANTCLEAN; ADJUST; %W3307915300
EMITO(DEL); EMITL(5); %W3307915310
EMITPAIR(LSTRTN,STD); %W3307915320
END; %W3307915330
EMITB(BFC,LL,L-4); %W3307915340
COMMENT SET THE LIST BACK TO BE A LIST (NOW REAL); %W3307915350
PUT(TAKE(LINFO)& TEMP[1:1:34],LINFO); %W3307915360
DIALA ~ DIALB ~ 0; %W3307915370
END FORSTLIST; %W3307915380
LABEL EXIT,XIT; %W3308017000
IF ELCLASS = LISTID AND NOT LISTMODE THEN %W3308175500
BEGIN WRL(16); FORSTLIST(0); GO TO XIT END; %93 %W3308175700
EXIT: K~ 0; XIT: END FORSTMT; %W3308232000
NO519~TRUE; % NOT FOR ACTION LABELS %91 %W7408242500
NO519~FALSE; % ALLOW AGAIN %91 %W7408245500
PROCEDURE LISTPARA; %W3308289100
BEGIN %W3308289200
INTEGER LISTADDRESS; %W3308289300
IF ELCLASS=LFTBRKET THEN %W3308289400
BEGIN %W3308289500
WRL(25); %W9308289550
STEPIT; RR1 ~ LISTGEN; %W3308289600
IF ELCLASS ! RTBRKET THEN ERR(158) ELSE STEPIT %W3308289700
END %W3308289800
ELSE IF ELCLASS ! LISTID AND ELCLASS ! SUPERLISTID %W3308289810
THEN RR1 ~ LISTGEN %W3308289820
ELSE BEGIN %W3308289830
CHECKER(ELBAT[I]); %W3308289840
LISTADDRESS ~ ELBAT[I].ADDRESS; %W3308289850
IF ELCLASS = SUPERLISTID THEN %W3308289860
BEGIN COMMENT SUBSCRIPTED SWITCH LIST ID; %W3308289870
BANA;EMITN(LISTADDRESS); %B8-6 %67 %W3308289880
EMITO(LOD); %B8-6 %67 %W3308289884
EMITO(LOD); %W3308289886
END ELSE %W3308289890
BEGIN COMMENT A COMMON LIST ID; %W3308289900
EMITPAIR(LISTADDRESS,LOD); STEPIT; %W3308289910
END %W3308289920
END %W3308289930
END LISTPARA; %W3308289940
LABEL EXPFORMR; %W4008385550
IF EXPLICITFORMAT THEN GO TO EXPFORMR; %W4008430500
EXPFORMR: %W4008441500
STEPIT; LISTPARA; %W3308479000
$ VOID 08489571 %W3308480000
LABEL EXPFORMW; %W4008591150
CHKSECOND: IF EXPLICITFORMAT THEN GO TO EXPFORMW ELSE STEPIT; %W4008643000
EXPFORMW: %W4008646500
%W3308687000
STEPIT; LISTPARA; %W3308688000
$ VOID 08696541 %W3308689000
NO519~TRUE; % NOT FOR ACTION LABELS %91 %W7408698150
NO519~FALSE; % ALLOW AGAIN %91 %W7408698450
STREAM PROCEDURE INFOSET(OIV,NIV,I); VALUE OIV, NIV; %86 %W-509006100
BEGIN DI~I; DI~DI+1; SI~LOC OIV; %86 %W-509006200
IF 8 SC=DC THEN %CHECK NOTHING MOVED,THEN WRITE IN INFO %86 %W-509006300
BEGIN DI~DI-8; DS~ 8 CHR END %86 %W-509006400
END INFOSET; %86 %W-509006500
STREAM PROCEDURE WRTINTRSC(SGNO,ALFA,PRT,FIL,TOG); %W-509010000
VALUE SGNO,PRT,TOG; %W-509011000
LABEL X, Y; %W-509012500
DS~ T1 CHR; DI~ FIL; DI~ DI+19; %W-509018000
TOG(DS~ 19 LIT" IS SEGMENT NUMBER "; JUMP OUT 1 TO X); DI~ DI+19; %W-509019000
X: %W-509019500
TOG(DS~ 17 LIT", PRT ADDRESS IS "; JUMP OUT 1 TO Y); DI~ DI+17; %W-509021000
Y: %W-509021500
DEFINE LOGLVL = 1#; LOGIN; %W8209025500
PATCHTOG~ FALSE; %W5109027400
STREAMTAG ~ FALSE; %W3209027500
DOUBLETOG ~ FALSE; %W3709027600
LISTOG~BOOLEAN(3);COMMENT KILL B USE OF COMMON %93 %W9909027999
COMMENT KILL BURROUGHS USE OF COMMON %W9909028099
FILL SOURCE[*] WITH "**","**","**","SC","SC","SC","**","IT","RT"%W2009034100
,"ST","**","**","SC","**","**","**","IL","RL","SL","**","**", %W2009034200
"**","**","**"; %77 %W2009034300
OCT1340010450243571, COMMENT <; OCT1260000000000000, COMMENT~;%W-309205000
% MAKE CREATION TIME AND DATE INTRINSIC DEFINES AT LEVEL ZERO %86 %W-509214250
% EXPECT THESE IN LASTSEQUENCE -11 THRU -2 %86 %W-509214275
"0H000600","00?TIMEC","OMPILED ", %551 %86 %W-509214300
OCT7700141460633144, OCT2577120000000000,%?? TIME%86 %W-509214325
"0H000600","00?DATEC","OMPILED ", %556 %86 %W-509214350
OCT7700141460242163, OCT2577120000000000,%?? DATE%86 %W-509214375
" "; % FOR SEQ # OF LAST ERROR %561 %86 %W-509214400
% COMMENT LASTSEQROW, LASTSEQUENCE IS HERE; %562 %86 %W-509214450
FOR NEXTINFO ~ 512 STEP 3 UNTIL 536, 551, 556 DO %86 %W-509214505
PUT( (TAKE(NEXTINFO))& %86 %W-509214510
OCT0147, COMMENT JFW A 02 ; %W2109218000
09251100
COMMENT: THIS CALL TAKES THE CURRENT TIME FROM "TIME(9)" IN THE %Y9609251110
FORM "09:30:45" AND PLACES IT INTO INFO TO BE THE VALUE OF %Y9609251120
"TIMECOMPILED" WHENEVER THE PROGRAM BEING COMPILED IS USED --- %Y9609251130
INFOSET("?? TIME",TIME(9),INFO[LASTSEQROW,LASTSEQUENCE-8]);%FIX %86 %W-509251200
09251300
COMMENT: THIS CALL TAKES THE CURRENT DATE FROM "TIME(8)" IN THE %Y9609251310
FORM "01/11/69" TO BE THE VALUE OF "DATECOMPILED" --- %Y9609251320
INFOSET("?? DATE",TIME(8),INFO[LASTSEQROW,LASTSEQUENCE-3]);%THEM%86 %W-509251400
DO UNTIL STEPI = BEGINV OR ELCLASS = ENDV; %NO BEGIN-EOF%59 %W5709252000
IF ELCLASS = ENDV THEN FLAG(170); %MISSING 1ST BEGIN-EOF%59 %W5709252010
ADDVALUE ~ 1000; % DEFAULT VALUE FOR "SEQ" OPTION %87 %W-109271400
PAIR(TRUE); %BEGIN %W7909271500
SEGTOG~ TRUE; %W3109274500
SEGTOG~ FALSE; %W3109275050
NOSYN %W6109275499
NOSYN %W6109275954
IF XENDI>0 THEN WRITE(DATA, 30, PRTABLE[*]); %W4309275955
IF PURGETOG AND STOPTOG THEN CLOSE(CARD, RELEASE); %W1309276200
IF PURGETOG AND(ERRORCOUNT=0 OR STOPTOG)THEN CLOSE(DISK,PURGE) %W1309276400
ELSE CLOSE(DISK); %W1309276401
IF ERRORCOUNT=0 OR STOPTOG THEN LOCK(NEWDISK, SAVE); %W1709276405
IF PURGETOG THEN CLOSE(TAPE,PURGE)ELSE LOCK(TAPE,RELEASE); %W1309276500
LISTOG ~ TIMEITTOG; %W-209276600
GT4~ 1; %W-509291500
WRITELINE; % PRINT-FILL %W7909300150
B2D(GT2.[38:10]), LIN [0], GT4); %W-509301000
% DELAY PRINT--VALUE OF IMAGE IRRELAVANT IN WRAP UP %W7909302000
; GT4~0; %W-509302500
BEGIN IFCODE MOVE(2,FROM[I DIV 128,I MOD 128],CODE(J)); %W6109328000
IFCODE %W6109329500
GTI1~ IF NOOFARRAYS>10 THEN 5000 ELSE NOOFARRAYS|500; %%W2209361040
$ VOID 09361061 %%W2209361050
GTI1~ GTI1+(IF NEWINX>2000 THEN 1000 ELSE NEWINX/2); %%W2209361080
%%W2209361100
IF GTI1>24000 THEN GTI1~ 24000; %%W2209361200
IDARRAY[1]:=SGAVL; 09400000
IF ERROROPTION THEN IDARRAY[8]~1&4[18:33:15]ELSE IDARRAY[8]~0; %W1209405500
IFCODE BEGIN %W6109406500
FOR GT1~9 STEP 1 UNTIL 29 DO IDARRAY[GT1]~0;%ZERO SEG 0 %69 %W-009406600
%W6109407050
LOCK(CODE,SAVE) END; LOCK(NEWTAPE,SAVE); %W6109407100
%ELIMINATE PASSING CORE ESTIMATE TO MCP--OBSOLETE %87 %W2209407200
IF PURGETOG AND NOT STOPTOG AND ERRORCOUNT=0 THEN CLOSE(CARD,PURGE);%W1309407205
COMMENT SEE 05046050--THIS IS PART2; %W5809407501
IF ERRORCOUNT > TWXCOUNT THEN %W5809407502
IF STATUS(STATARRAY[*]) > 0 THEN %W5809407504
BEGIN LABEL DONE; %W5809407506
STREAM PROCEDURE TWXOUT(D,N); VALUE N; %W5809407508
BEGIN SI ~ LOC N; DI ~ LOC N; DS ~ 2 DEC; DI ~ D; %W5809407510
DS ~ 2 LIT "{!";SI ~ LOC N; %W5809407512
IF SC ! "0" THEN DS ~ CHR ELSE SI~ SI + 1; DS ~ CHR; %W5809407514
DS ~ 36 LIT " MORE ERRORS NOT LISTED ON REMOTE{!~" END; %W5809407516
TWXOUT(STATARRAY[1], ERRORCOUNT-TWXCOUNT); %W5809407518
WRITE(TWX(STATARRAY[0],0),8,STATARRAY[*])[DONE]; % DONT WAIT %W5809407520
DONE: END;% END PART2 W58 %W5809407522
IF FILESTOG THEN %85 %W-509407600
BEGIN %85 %W-509407610
FORMAT FILEHD1 (X6,"FILE NAME INFORMATION:"), %85 %W-509407620
FILEHD2 (X6,"INTERNAL EXTERNAL"); %85 %W-509407630
PROCEDURE PRINT(F,V); VALUE V; %85 %W-509407670
FILE F; %85 %W-509407680
REAL V; %85 %W-509407690
BEGIN %85 %W-509407700
FORMAT FILELN (X6,A1,A6," = ",A1,A6,"/",A1,A6); %85 %W-509407701
DEFINE FILENM = STATARRAY[1].[6:6], STATARRAY[1], %85 %W-509407702
STATARRAY[2].[6:6], STATARRAY[2] #; %85 %W-509407703
SEARCH(F, STATARRAY[*]); %85 %W-509407710
WRITELINE; %85 %W-509407720
WRITE(LIN[*], FILELN, V.[6:6], V, FILENM); %85 %W-509407730
END; %85 %W-509407740
IF LISTOG THEN BEGIN WRITE(LINE,15,LIN[*]); BLANK(LIN) END %85 %W-509407750
ELSE BEGIN TIMEIT(LIN); LISTOG~TRUE END; %85 %W-509407760
WRITELINE; WRITE(LIN[*],FILEHD1); %85 %W-509407770
WRITELINE; WRITE(LIN[*],FILEHD2); %85 %W-509407780
IF SAVETIME}0 THEN PRINT(CODE,"CODE "); %85 %W-509407790
PRINT(CARD,"CARD "); %85 %W-509407800
IF MERGETOG THEN PRINT(MERGE,"MERGE "); %85 %W-509407810
IF MAXTLCR!0 THEN %85 %W-509407820
IF DISKTOG THEN PRINT(DISK,"DISK ") %85 %W-509407830
ELSE PRINT(TAPE,"TAPE "); %85 %W-509407840
IF NEWDSK THEN PRINT(NEWDISK, "NEWDISK"); %85 %W-509407850
IF NEWTOG THEN PRINT(NEWTAPE, "NEWTAPE"); %85 %W-509407860
END FILESTOG; %85 %W-509407870
IF LISTOG THEN % DROPS OR NOT NOHEADING %W9909408000
COMMENT 09409000,09410000,09411000 ARE PATCHES BUT;%W-5 IN FORMAT %W-509408900
BEGIN FORMAT PAN("NUMBER OF ERRORS DETECTED =",I4,X26 , 09409000
"LAST CARD REFERENCED HAS SEQ # ", 2A4 ), PON ( 09410000
"PRT SIZE =",I4,"; TOTAL PGM SEGM SIZE =",I6 , 09411000
I4), PUN("ESTIMATED CORE STORAGE REQUIREMENT =",I6," WORDS."); %W7909413000
FORMAT FL ("FILE "A4" CONTAINS"I5" LINK RECORDS."); %W5709414000
FILL FNAME[*] WITH "LIBR","CARD","TAPE","DISK","MRGE"; %W5709414500
BEGIN LIST LL( ERRORCOUNT, GT1, GT2 ), LK( PRTIMAX, AKKUM, %W7909417000
IF DA{CHUNK THEN DA ELSE ((DA+CHUNK-1)DIV CHUNK)|CHUNK, %W7909418000
SGAVL-1), LM( GTI1); % BREAK UP LL %W7909419000
WRITE(LINE,15,LIN[*]); BLANK(LIN); %85 %W-509419050
WRITELINE; WRITE(LIN[*], PAN, LL); % PRINT-FILL %W7909419100
WRITELINE; WRITE(LIN[*], PON, LK); %W7909419200
WRITELINE; WRITE(LIN[*], PUN, LM) END; %W7909419250
FOR I ~ 1 STEP 1 UNTIL 4 DO %77 %W5709419300
IF LINKCT[I]!0 THEN %W5709419400
BEGIN %W5709419500
WRITELINE; % PRINT-FILL %W7909419550
WRITE(LIN[*] ,FL,FNAME[I],LINKCT[I]); %W5709419600
WRITE(LINE,15,LIN[*]); BLANK(LIN); %85 %W-509419650
% DELAY PRINT %W7909419700
END; %W5709419800
END END;LOGOUT END PROGRAM; %W8209420000
BOOLEAN PROCEDURE EXPLICITFORMAT; %W4009500000
BEGIN INTEGER PRT; %65 %W4009500010
ARRAY TEDOC[0:7,0:127]; %W4009500015
RESULT~7; SCANNER; %65 %W4009500020
%65 %W4009500030
IF EXAMIN(NCR) = "<" THEN %65 %W4009500040
BEGIN %W4009500050
STOPDEFINE ~ TRUE; STEPIT; EXPLICITFORMAT ~ TRUE; %W4009500100
WRL(18); %93 %W4009500200
MOVECODE(TEDOC,EDOC); %W4009500300
GT5~SGNO;GT1~(2|SGAVL-1)&2[4:46:2];SGNO~SGAVL; %NEW SEGMENT %W4009500400
F~0; PRT~GETSPACE(TRUE);Z~PROGDESCBLDR(LDES,0,PRT); %W4009500500
ELCLASS ~ "<"; TB1 ~ FORMATPHRASE; SEGMENT(-F,SGNO,GT5); %W4009500600
SGAVL ~ SGAVL+1; SGNO ~ GT5; MOVECODE(TEDOC,EDOC); %W4009500700
IF LASTELCLASS ! ">" THEN ERR(136); %W4009500800
ELBAT[I].CLASS ~ IF ELCLASS = "," THEN COMMA %W4009500900
ELSE IF ELCLASS = ")" THEN RTPAREN ELSE 0; %W4009501000
I ~ I-1; %W4009501100
EMITL(0); EMITPAIR(PRT,LOD); %W4009501200
END %W4009501250
END EXPLICITFORMAT; %W4009501300
PHONEYDEC; %W4810070000
WRITELINE; %PRINT FILL %W7910073500
IMAGE ~ FALSE END; %W7910075000
ELSE BEGIN REPEAT ~ REAL(ELCLASS ! "(" AND ELCLASS ! "<" ); %W4010113000
IF ELCLASS = "(" OR ELCLASS = "<" %W4010114000
IF ELCLASS ! ")" AND ELCLASS ! ">" THEN GO TO EL; %W4010124000
ELSE IF ELCLASS = ")" OR ELCLASS = ">" THEN GO TO EXIT %W4010134000
STOPDOLLAR ~ TRUE; %W7610136500
STOPDOLLAR ~ FALSE; %W7610143500
%ELIMINATE BLANKS %W6510167400
BEGIN FLAG(524); GO TO FINAL END ELSE GO PACKIN %83 %B1010264420
INTEGER TEMPCELL, LISTPTR; %W3310286500
BOOLEAN LISTLVFLAG; %W3310286600
INTEGER LISTADDRESS; %W3310290500
LISTLVFLAG ~ LISTLVFLAG AND (ELCLASS = LISTID %W3310293200
OR ELCLASS = SUPERLISTID); %W3310293400
IF ELCLASS = FORV THEN BEGIN COMMENT FORCLAUSE; %W3310294000
FORSTMT; LISTLVFLAG ~ FALSE END %W3310294200
ELSE IF ELCLASS=LISTID OR ELCLASS=SUPERLISTID THEN %W3310298100
BEGIN %W3310298120
WRL( IF ELCLASS=LISTID THEN 17 ELSE 27 ); %W9310298140
IF LISTLVFLAG THEN L ~ L-3; %W3310298160
CHECKER(ELBAT[I]); LISTADDRESS~ELBAT[I].ADDRESS;%W3310298200
EMITL(0);EMITPAIR(LSTRTN,STD); %W3310298240
EMITNUM(L+3-LSTR+REAL(LISTPTR>1023)); %W3310298260
EMITPAIR(LISTPTR,STD); %W3310298280
IF ELCLASS=SUPERLISTID THEN %W3310298300
BEGIN BANA; EMITN(LISTADDRESS); %72 %W3310298400
EMITO(LOD); %72 %W3310298430
EMITO(LOD); EMITO(XCH); EMITO(CDC) END %W3310298480
ELSE BEGIN EMITN(LISTADDRESS);STEPIT END; %W3310298500
EMITV(LSTRTN); EMITL(0); EMITO(GEQ); %W3310298600
EMITL(1); EMITO(BFC); EMITO(RTS); %W3310298700
EMITO(DEL); EMITL(5); EMITPAIR(LSTRTN,STD); %W3310298850
LISTLVFLAG ~ TRUE; %W3310298870
END %W3310298900
ELSE IF GT1 ~ TABLE(I+1) = RTPAREN AND L=LSTR %W3310298910
AND ELBAT[I].ADDRESS { 1023 %W3310298915
AND ELCLASS}BOOID AND ELCLASS{INTID THEN %W3310298920
COMMENT LIST CONSISTS OF A SINGLE SIMPLE VAR.; %W3310298930
BEGIN L ~ L-4-REAL(LISTPTR>1023); %W3310298940
CHECKER(ELBAT[I]); %W3310298945
EMITN(ELBAT[I].ADDRESS); EMITO(RTS); %W3310298950
STEPIT; %W3310298960
END %W3310298970
EMITPAIR(LISTPTR,STD); COMMENT PREPARE LISTPTR FOR %W3310302000
IF (GT1 = COMMA %W3310304000
STORE: EMITPAIR(TEMPCELL,STD); EMITN(TEMPCELL) END; %W3310328000
COMMENT TEST TO INSURE LISTGEN NOT CALLED RECURSIVELY; %W3310346200
IF LISTMODE THEN ERR(476) ELSE %W3310346400
BEGIN %W3310346600
TEMPCELL ~ GETSPACE(FALSE); LISTPTR~GETSPACE(FALSE); %W3310348500
EMITV(LSTRTN); EMITO(BFW); %W3310349400
EMITL(5); EMITPAIR(LSTRTN,STD); %W3310349600
EMITPAIR(REAL(LISTPTR>1023)+2,BFW); %W3310349800
EMITV(LISTPTR); EMITO(BFW); LSTR ~ L; %W3310350000
IF LISTLVFLAG THEN BEGIN L~L-3; LISTLVFLAG~FALSE END; %W3310358500
END %W3310368000
NO519~TRUE; %WE ARE FLAGING SWITCHES IN BLOCK %91 %W7410957500
EXIT: NO519~FALSE END SWITCHGEN; %ALLOW NOTE 519 %91 %W7412001000
IF EL!RTPAREN AND EL!RTBRKET OR J!P THEN FLAG(128); %83 %B1012126000
END ELSE FLAG(499); %77 %W-013088110
IF (IOTEMP~GET(L-2)).[46:2] =0 THEN CURRENT~IOTEMP %W5513113000
IF (IOTEMP~GET(L-1)).[46:2]=0 THEN IOTEMP~IOTEMP DIV 4 %69 %W5513148200
IF (IOTEMP~GET(L-1)).[46:2]=0 THEN IOTEMP~IOTEMP DIV 4 %W5513164010
ELSE IOTEMP ~ 256; %W5513164020
IF NOT INLINETOG THEN %W7513307500
BEGIN %W7513307510
END; %W7513308500
PHONEYDEC; %W4813323100
IF INDEX THEN %W4313349400
WRITEPRT(LASTINFO, NEXTINFO-LASTINFO, 3&REAL(P2)[1:47:1]&REAL(P3%W4313349500
)[2:47:1]); %W4313349501
IF NOTETOG THEN FLAG(539&"H"[1:43:2]); %NON-ZERO LOWER BOUND %91 %W7413485500
IF NOTETOG THEN FLAG(539&"H"[1:43:2]); % NON-ZERO LOWER BOUND %91 %W7413498500
IF INDEX THEN WRITEPRT(SAVEINFO2-1, 1, 7); %W4313556500
IF T3~ELBAT[I-1].ADDRESS ! 0 THEN %91 %W7413575000
IF NOTETOG THEN FLAG(540&"H"[1:43:2]);%NON-ZERO BOUND SPEC %91 %W7413575500
IF NOTETOG THEN FLAG(540&"H"[1:43:2]); % VARIABLE BOUND SPEC %91 %W7413583500
PHONEYDEC; %W4813592100
BEGIN LIST LL(SGAVL); IF LISTOG THEN BEGIN WRITELINE; %W7913633000
IMAGE ~ FALSE; %W7913633050
WRITE( LIN[*], PRINTSEGNO, LL) END %W7913633100
END; %W7913633200
IF SEGTOG THEN %W3113683500
BEGIN LIST LL (NO,SIZE,NOO); IF LISTOG THEN BEGIN %79 %W3713684000
IMAGE ~ FALSE; %W7913684050
WRITELINE; WRITE(LIN[*],PRINTSIZE,LL) END END; %PRINT-FILL %79 %W3713684100
BEGIN IFCODE MOVE2(EDOC[CNTR.[38:3],CNTR.[41:7]],CODE(J)); %W6113692000
IFCODE %W6113692250
BEGIN IFCODE MOVE2(ENIL[CNTR.[38:3],CNTR.[41:7]],CODE(J)); %W6113695400
IFCODE %W6113695525
PHONEYDEC; %W4813717100
BT ~ (K~K+NCII)>REAL(FUNCTOG); %W2313764000
IF BT THEN EMIT(0); %W2313767900
EMITB(IF BT THEN BBC ELSE BBW,L,IF RELAD=4095 THEN 0 ELSE RELAD);%W2313769000
IF NOT SPECTOG AND ELBAT[I].LVL=LEVEL THEN %W-113819350
IF LEVEL = 1 THEN BEGIN WRL(2); IF NOT WARNTOG THEN FLAG(-46) END %W9313819375
ELSE FLAG(46); %ALLOW DYNAMIC ARRAY AT OUTERMOST LEVEL %W9313819400
PROCEDURE INLINE; %W7513948000
BEGIN %W7513949000
13949999
13950000
13950500
13950600
13951000
13951500
13952000
13953000
13954000
13955000
13955500
13956000
13957000
13958000
13958050
13958100
13958150
13958200
13958250
13958300
13958350
13958400
13958450
13958500
13960000
13961000
13961050
13961100
13961200
13962000
13963000
13964000
13965000
13966000
13966100
13966200
13966300
13966400
13966500
13967000
13968000
13969000
13970000
13970500
13970600
13970700
13971000
13972000
13972001
13973000
13973500
END INLINE; %W7513974000
GOTSCHK, ENDDEC, %W7514016000
DEFINE LOGLVL = 2#; LOGIN; %W8214034100
IF INDEX THEN WRITEPRT(0, 0, 1); %W4314034500
IF ERROROPTION AND SGAVL=2 THEN %W1214048200
FOR NCIIO~ 0 STEP 1 UNTIL 3 DO %W1214048300
FIRSTXO~ GETSPACE(TRUE); %W1214048400
IF INDEX AND STREAMTOG THEN WRITEPRT(BUP,(TAKE(BUP+1).[12:6]+18)%W4314090200
DIV 8, 3); %W4314090400
IF INLINETAG THEN %W7514128050
IF ELBAT[I].ADDRESS = STREAMV THEN %W7514128100
IF STEPI = LEFTPAREN THEN %W7514128200
BEGIN %W7514128300
I ~ I - 1; %W7514128400
GO TO ENDDEC %W7514128500
END %W7514128600
ELSE %W7514128700
I ~ I - 1; %W7514128800
%W75 CATCH FOR INLINE STREAM STATEMENTS (FIRST IN BLOCK) %W7514128801
ENDDEC: %W7514131500
THEN BEGIN HANDLESWLIST; %SAVE %74 %W4814165510
GOTSTORAGE ~ NOT SPECTOG OR GOTSTORAGE; %PRT %74 %W4814165520
GO TO START END; %CELL %74 %W4814165530
IF ELCLASS!RTPAREN THEN ERR(104) ELSE STEPIT; %W3314177500
IF INDEX THEN WRITEPRT(LINKF, 1, 3); %W4314211500
IF NOTETOG THEN FLAG((535+REAL(TB1))&"H"[1:43:2]); %COMPLEX SWIT%91 %W7414226500
IF INDEX THEN BACKUPTO(XREFC-1, 5); %W4314240500
IF (J~J+1)>9 THEN FLAG(527) ELSE %83 %B1014259080
IF PARM(ACCUM[1],GTA1,K,J) THEN FLAG(526) ELSE %83 %B1014259085
IF K>62 THEN FLAG(141); %83 %B1014259090
IF ELCLASS!RTPAREN AND ELCLASS!RTBRKET THEN FLAG(525); %83 %B1014259120
ERRORTOG ~ TRUE; % TURN LISTING OF ERRS BACK ON %83 %B1014266200
XREFCT~ XREFC; %W4314306500
IF INDEX THEN WRITEPRT(LINKF, 1, 3); %W4314311500
IF INDEX THEN WRITEPRT(0, 0, 1); %W4314322500
IF STREAMTOG THEN BEGIN REC(30); STREAMWORDS END; % USES STR PROC %Y9514324000
IF NOT (SLABTOG~ELCLASS!LFTBRKET) THEN WRL(10) ELSE %93 %W1414325500
IF INDEX THEN BACKUPTO(XREFCT+2, 0); %W4314333050
IF INDEX THEN IF NOT FWDTOG THEN WRITEPRT(MARK, 1, 9); %W4314334500
THEN IF ELCLASS!RTBRKET OR SLABTOG THEN FLAG(008); %W1414337000
IF XREF THEN BACKUPTO(XREFC-1, 0); %W4314348500
PAIR(TRUE); %BEGIN %W7914395500
IF INDEX THEN WRITEPRT(0, 0, 2); %W4314463500
IF INDEX THEN BEGIN BACKUPTO(XREFCT+1,4);WRITEPRT(MARK,1,9)END; %W4314471500
BEGIN PAIR(TRUE); %BEGIN %W7914479500
END; %W7914484500
IF ELCLASS = BEGINV THEN BEGIN %W7914487500
STEPIT; COMPOUNDTAIL; %STMT SEES BEGIN, RECHECKS DECL, CALLS CMP%W7914488000
END ELSE STMT; %W7914488500
IF INDEX THEN WRITEPRT(0, 0, 2); %W4314493500
IF LEVEL > 1 THEN IF NOTETOG THEN FLAG(98&"H"[1:43:2]);%NOTE EFF%69 %W7414549500
IF INDEX THEN WRITEPRT(0, 0, 2); %W4314604500
LOGOUT %W8214612500
PHONEYDEC; %W4815006100
L1: STEPIT; IF TALL.FORMALNAME THEN %W5215092000
IF T1!0 OR ELCLASS=FACTOP THEN BEGIN EMITO(DUP); %W5215095000
EMITO(COC); IF T1!0 AND ELCLASS=FACTOP THEN %W5215095500
EMITO(DUP) END; %W5215095600
ELSE IF T1!0 OR ELCLASS=FACTOP THEN BEGIN %W5215097000
EMITV(TALL.ADDRESS);IF T1!0 AND ELCLASS=FACTOP %W5215097500
THEN EMITO(DUP) END; %W5215097600
STACKCT ~ REAL(T1!0); %W5215098000
IF ELCLASS=FACTOP THEN BEGIN WRL(19); %93 %W5215098200
ELBAT[I].CLASS ~ ELCLASS ~CROSSHATCH END; %93 %W5215098400
IF ELCLASS=FACTOP THEN BEGIN %W5215306200
WRL(19); %93 %W5215306300
ELBAT[I].CLASS~ELCLASS~CROSSHATCH; %W5215306400
EMITO(DUP); IF T1=0 THEN EMITO(LOD) END; %W5215306600
PROCEDURE DECLARELABEL; %W2516023100
COMMENT DO LABEL DECLARATION UPON FIRST APPEARANCE OF LABEL; %W2516023200
BEGIN %W2516023300
WRL(14); %93 %W2516023350
KLASSF ~ STLABID; %W2516023400
VONF ~ FORMALF ~ FALSE; %W2516023500
ADDRSF ~ 0; %W2516023600
MAKEUPACCUM; E; PUTNBUMP(0); %W2516023700
ELBAT[I] ~ ACCUM[0]&LASTINFO[35:35:13]; %W2516023800
IF XREF THEN BACKUPTO(XREFC-1, 0); %W4316023810
IF INDEX THEN WRITEPRT(LASTINFO,(COUNT+18)DIV 8, 3); %W4316023820
END DECLARELABEL; %W2516023900
IF F=BNS THEN IF SLABTOG THEN %W1416036000
IF SLABTOG THEN BEGIN IF NOTETOG THEN FLAG(275&"H"[1:43:2]); %69 %W1416048000
ADJUST END %69 %W1416048001
ELSE BEGIN FLAG(275); ERRORTOG~TRUE END; %W1416048500
IF SLABTOG THEN BEGIN IF NOTETOG THEN FLAG(275&"H"[1:43:2]) END %69 %W1416077500
ELSE BEGIN FLAG(275); ERRORTOG~TRUE END; %W1416077700
EMIT(BNS); %W1416122000
IF SLABTOG THEN BEGIN EMIT(NOP); EMIT(NOP) END; %W1416122500
IF SLABTOG THEN ADJUST; %W1416137000
REAL GT1; %W1416157500
IF SLABTOG THEN ADJUST; %W1416158000
IF INDEX THEN WRITEPRT(GT1.[35:13], 1, 6); %W4316159500
LABEL JMPTBL; %W7916193500
IF ELCLASS = BEGINV THEN GO JMPTBL;%SKIP TABLE CALL %W7916221000
IF ELCLASS = IFV OR %W7916222000
JMPTBL: %W7916225250
IF SLABTOG THEN %W1416225500
IF STEPI ! STLABID THEN %77 %W2516253000
IF (IF ELCLASS{IDMAX THEN ELCLASS!LOCLID ELSE %77 %W2516253025
(ELCLASS=SUPERLISTID OR ELCLASS=FAULTID) ) THEN %77 %W2516253050
DECLARELABEL ELSE BEGIN ERR(260); GO TO EXIT END; %W2516253100
IF INDEX=2 THEN WRL(13); %93 %W2116345500
DEFINE LOGLVL = 4#; LOGIN; %W8216476500
IF ELCLASS=COLON THEN BEGIN ADJUST;STEPIT;GO START END; %W1416478200
IF ELCLASS=STLABID THEN GO TO L2; %W2516478400
IF (IF ELCLASS{IDMAX THEN ELCLASS!LOCLID ELSE %77 %W2516478600
(ELCLASS=SUPERLISTID OR ELCLASS=FAULTID) ) THEN %77 %W2516478700
BEGIN DECLARELABEL; GO TO L2 END; %W2516478800
%W2516481000
L6: PAIR(TRUE); I~I+1; COMPOUNDTAIL; GO FINI; %W7916489000
FINI:LOGOUT END STREAMSTMT; %W8216495000
PROCEDURE PAIR(B); %LIST BEGIN-END PAIRS %W7916500000
VALUE B; %W7916501000
BOOLEAN B; %W7916502000
BEGIN %W7916503000
STREAM PROCEDURE BLANK(L); %W7916504000
BEGIN DI~L; DS~8 LIT" "; SI~L; DS~14 WDS END BLANK; %W7916505000
STREAM PROCEDURE PUT( S, N, D, L ); %W7916506000
VALUE S, N, D; %W7916507000
BEGIN %W7916508000
DI~L; %W7916509000
SI~LOC S; SI~SI+7; DS~CHR; S~DI; %W7916510000
DS~3 DEC; DI~DI+1; N~DI; %W7916511000
DI~S; DS~3 FILL; DI~N; %W7916512000
DS~2 DEC; %W7916513000
DI~N; DS~FILL %W7916514000
END PUT; %W7916515000
IF B THEN %W7916515100
BEGIN %W7916515200
PAIRCNT ~ PAIRCNT + 1; %W7916515300
IF PAIRLVL < 32 THEN PAIRARR[PAIRLVL] ~ PAIRCNT; %W7916515400
PAIRLVL ~ PAIRLVL + 1; %W7916515500
END ELSE %W7916515600
IF PAIRLVL ~ PAIRLVL - 1 < 0 THEN PAIRLVL ~ 0; %W7916515700
IF PAIRSTOG THEN IF LISTOG THEN %W7916515800
BEGIN %W7916515900
IF IMAGE THEN %W7916516000
IMAGE ~ FALSE %W7916517000
ELSE %W7916518000
BEGIN %W7916519000
WRITELINE; %W7916520000
BLANK(LIN) %W7916521000
END; %W7916522000
IF B THEN %W7916523000
PUT("B",PAIRCNT,PAIRLVL,LIN[*]) %W7916524000
ELSE %W7916527000
PUT("E", IF PAIRLVL %W7916528000
} 32 THEN 0 ELSE %W7916528200
PAIRARR[ PAIRLVL ], %W7916529000
PAIRLVL + 1, LIN[*] ) %W7916530000
END END PAIR; %W7916531000
PROCEDURE FEATURE(N); VALUE N; INTEGER N; %W9316532000
BEGIN % N=0-63 FOR COUNTERS, -1 TO -96 FOR FLAGS %W9316533000
DEFINE BASE=800#; % MESSAGE IN BASE + N %W9316534000
INTEGER I; %W9316535000
STREAM PROCEDURE COUNT(V,C,W); VALUE V,C; %W9316536000
BEGIN LABEL X; %W9316537000
SI~W; SI~SI+C; IF SC=""" THEN GO X; C~SI; %W9316537500
DI~LOC C; DI~DI-1; W~DI; DS~CHR; %W9316538000
TALLY~V; TALLY~TALLY+1; V~TALLY; %W9316539000
DI~C; SI~W; DS~CHR; X: %W9316540000
END COUNT; %W9316541000
STREAM PROCEDURE FLAGIT(B,C,W); VALUE B,C; %W9316542000
BEGIN DI~W;DI~DI+C;SKIP B DB; DS~SET END; %W9316543000
IF WARNTOG THEN FLAG(-(BASE+N)); %W9316544000
IF N}0 THEN COUNT(0,I~N MOD 8, FEATURES[N DIV 8]) %CHAR-WORD %W9316545000
ELSE FLAGIT( I~(N ~ -N-1) MOD 6, %BIT % N ADJUSTED %W9316546000
I~(N~N DIV 6) MOD 8, %CHAR % TO RANGE %W9316547000
FEATURES[8+N DIV 8] ); %WORD % 0 THRU 95 %W9316548000
END FEATURE; %W9316549000
%17000000 COVERS TIME1~TIME(1); PROGRAM; %W9916999999
ERRORCOUNT~0; PROGRAM; %W-217000000
IF TIMEITTOG THEN %W-217000010
ERRORPRINT: %W1617000015
BEGIN PHONEYDEC; %85 %W-517000020
$ VOID 17000181 % OLD W16, W-5, W79 PATCHES %W1617000030
WRITELINE; % PRINT LAST LINE %W7917000190
% UNNECESSARY SINCE CHANGE NOTE PRINT OUT--OLD W-2 PATCH %W-217000195
BLANK(LIN); WRITE(LINE,15,LIN[*]); %85 %W-517000199
TIMEIT(LIN ); WRITELINE; %W-217000200
END; %W-217000210
17000300
IF INDEX THEN IF ERRORCOUNT ! 0 THEN CLOSE(DATA,PURGE) ELSE %Y9617000400
IF SAVETOG THEN LOCK(DATA) ELSE CLOSE(DATA); %Y9617000500
ENDOFITALL: END OF MAIN BLOCK END. %Y9617000600
99999999
99999999