?REMOVE LONGALG/DISK, LONGALG/NEW, NEWSYM/LONGALG 00000100 ?COMPILE LONGALG/NEW ALGOL LIBRARY 00000200 ?ALGOL STACK=1000 00000300 ?ALGOL FILE TAPE=SYMBOL/ALGOL SERIAL 00000400 ?ALGOL FILE NEWTAPE=NEWSYM/LONGALG SERIAL 00000450 ?FILE LINE = LINE BACK UP DISK 00000500 ?FILE NEWTAPE = "0CRDIMG" TAPE 00000600 ?FILE PNCH = PNCH PUNCH 00000700 ?DATA CARD 00000800 $ TAPE CHECK NEW 00000900 % THE SECOND COMING OF THE B-5500 LONGALG COMPILER 00001020 % 3 JUNE 2017 00001040 506 BLOCK: LONG APPEARS IMMEDIATELY BEFORE IDENTIFIER(NO TYPE). 00305070 [22:1] =IF 1, THIS IS THE FINAL ROW OF A LONG ARRAY, WHICH 01106700 WILL REQUIRE DOUBLING OF THE RAW INDEX VALUE AND 01106800 AN EXTRA LEVEL OF INDEXING FOR LONGROWSZ-WORD ROWS. 01106900 DEFINEV =19#, COMMENT 23; 01298000 LONGV =20#; COMMENT 24; 01298100 DEFINE LONGROWSZ=256#; % SIZE OF LONG-ARRAY SEGMENTED ROWS 01299300 LASTSEQUENCE =156#, 01575000 SORTA =666# ; 01580000 P5, COMMENT TELLS WHETHER LONG WAS SEEN; 01589600 1023 THEN FLAG(59); 13530000 EMITL(T); 13530100 END 13530200 ELSE 13530300 BEGIN 13530400 % FOR A LONG ARRAY, DOUBLE THE SIZE OF 13530500 % THE LAST DIMENSION AND SPLIT IT INTO 13530600 % LONGROWSZ-WORD ROWS. 13530700 T~(2|T+LONGROWSZ-1) DIV LONGROWSZ; 13530800 EMITL(T); % # ROWS 13530900 EMITL(LONGROWSZ); % FINAL ROW SIZE 13531000 IF T>1023 THEN FLAG(59); 13531100 IF T