11 START ;PRINT - "INSTANT DIBOL" 21 ;****************************************** 31 ; SOURCE PRINT1 41 ;****************************************** 51 61 ;COPYRIGHT 1973 71 ;DIGITAL EQUIPMENT CORPORATION 81 ;MAYNARD, MASS. 01754 91 101 ;THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE 111 ;ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION 121 ;OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT 131 ;AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC. 141 ; 151 ;THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT 161 ;NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL 171 ;EQUIPMENT CORPORATION. 181 ; 191 ;DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF 201 ;ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. 211 ; 221 ;COMPILATION INSTRUCTIONS: 231 ; .RUN COMP,PRINT1,PRINT2,PRINT3,PRINT4,PRINT5,PRINT6 241 ; .SAVE PRINTA 251 ; .RUN COMP,PRINT1,PRINT2,PRINT7,PRINT8,PRINT9,PRINT0 261 ; .SAVE PRINTB 271 ; .RUN PRINTA+PRINTB,INPUT 281 291 301 RECORD ;PARAMETERS OF THE PROGRAM 311 ALFMAX, D3,132 ;MAXIMUM SIZE OF ALPHA LITERAL 321 LINMAX, D3,132 ;MAXIMUM NUMBER OF COLUMNS IN PRINTER 331 DATMAX, D2,20 ;MAXIMUM NUMBER OF DATA ITEMS 341 LSTMAX, D2,12 ;MAXIMUM NUMBER OF LIST ITEMS 351 TITMAX, D3,030 ;MAXIMUM SIZE OF ANY TITLE 361 PICMAX, D2,22 ;MAXIMUM SIZE OF ANY PICTURE 371 ERRMAX, D2,10 ;MAXIMUM NUMBER OF ERRORS PER LINE 381 EXPMAX, D1,8 ;MAXIMUM NUMBER OF COMPUTE STATEMENTS 391 XIMAX, D1,6 ;MAXIMUM NUMBER OF SUB-EXPRESSIONS 401 411 RECORD ERRECD ;FOR ERROR LINES 421 ERRLNM, D4 ;LINE NUMBER 431 ,A1 441 ERRLIN, A126 ;TEXT OF LINE 451 RECORD,X 461 ERRFLG, A4 ;TO CONTAIN '****' ON DIAG LINE 471 481 RECORD ;TO GET AT THE 491 XLINE, A2 ; RECORD SIZE OF INPUTL 501 RECORD INPUTL ;INPUT LINE, FROM SOURCE FILES 511 INLNUM, A2 ;LINE NUMBER 521 INLINE, A126 531 541 RECORD 551 SWITCH, A2,S ;COMMAND SWITCHES 561 571 RECORD WORKA ;WORK AREA 581 LPTOPN, A1 ;NON-SPACE WHEN LPT OPEN 591 LPTSW, A1 ;NON-SPACE IF LISTING REQUIRED 601 LPTLIN, A1 ;NON-SPACE WHEN THERE IS A LINE TO PRINT 611 LINES, D2 ;COUNT OF LINES LEFT ON PAGE 621 PAGES, D2 ;CURRENT PAGE NUMBER 631 EOL, A1 ;NON-SPACE WHEN END-OF-INPUT-LINE SEEN 641 FINDSW, A1 ;NON-SPACE IF DATA NAME FOUND IN SEARCH 651 INLSIZ, D3 ;SIZE OF INPUT LINE 661 NUMHDR, D2 ;NUMBER OF OBJECT HEADER LINES 671 WORD, A6 ;CURRENT ATOM, IF IT IS A WORD 681 NUMLIT, D15 ;CURRENT ATOM, IF NUMERIC LITERAL 691 ATMTYP, D1 ;ATOM TYPE 701 LETSW, A1 ;NON-SPACE IF LETTER SEEN IN CURRENT ATOM 711 ATOMSZ, D3 ;SIZE OF CURRENT ATOM 721 ATOMDP, D2 ;NUMBER OF DECIMAL PLACES IN ATOM 731 DPCOL, D3 ;INPUT COLUMN CONTAINING DECIMAL POINT 741 ICOL, D3 ;INPUT COLUMN NUMBER 751 ACOL1, D3 ;FIRST INPUT COLUMN OF CURRENT ATOM 761 ACOL2, D3 ;LAST INPUT COLUMN, PLUS 1, OF CURRENT ATOM 771 SCOL, D3 ;INPUT COLUMN FOR '+' OR '-' IN EXPRESSION 781 ICHAR, A1 ;AN INPUT CHARACTER 791 ERRCOD, D2 ;ERROR CODE NUMBER 801 ERRCOL, D3 ;INPUT COLUMN WHERE ERROR DETECTED 811 ACNUM, D2 ;NEXT AVAILABLE ACCUMULATOR 821 I, D3 ;INDEX 831 J, D3 ;INDEX 841 K, D3 ;INDEX 851 XI, D3 861 COMPI, D3 ;INDEX TO COMPUTE STATEMENT TABLE 871 LISTI, D3 ;INDEX TO LIST TABLE 881 NAMEI, D3 ;INDEX TO NAME TABLE 891 FATALI, D2 ;INDEX TO ERROR TABLE 901 FATALC, D4 ;COUNT OF ERRORS 911 FATALM, D6 ;TO BUILD 'FATALE' ENTRY 921 FATALE, 10D6 ;TO HOLD ERROR CODES FOR CURRENT LINE 931 LEVELS, 10A1 ;USED LEVEL-BREAK INDICATORS 941 LEVELN, 10D2 ;RELATIVE LEVEL NUMBERS 951 XTABLE, 6A14 ; 961 HLDCOL, D3 ;TO HOLD COL NUMBER OF COMPUTED RESULT 971 HOLDIR, A126 ;TO HOLD INPUT LINE WHILE REFORMATTING 981 HOLDNM, A6 ;TO HOLD RESULT NAME WHILE PARSEING COMPUTE 991 HOLDDP, D2 ;HOLD ARGUEMENT TO '#' DURING COMPUTE 1001 EXPRMD, A1 ;MODE OF CURRENT EXPRESSION 1011 XASIZ, D3 ;TO HOLD SIZE DURING COMPUTE PARSE 1021 XADP, D2 ;LIKEWISE FOR DECIMAL PLACES 1031 PWIDTH, D3 ;WIDTH OF REPORT 1041 FIRSTA, D3 ;NUMBER OF COLUMNS TO LEFT OF FIRST TOTAL 1051 BIGHS, D3 ;LARGEST TOTAL MESSAGE 1061 TOPFLG, D2 ;LEVEL AT WHICH PAGE IS SKIPPED 1071 BLANKX, A1 ;NON-SPACE WHEN INPUT LINE IS NON-SPACE 1081 1091 RECORD ;CONSTANTS 1101 SQUOTE, A1 ;SINGLE QUOTE (SET UP BY INITIALIZE) 1111 SPACE, A1,' ' ;SINGLE SPACE 1121 TODAY, D6,D ;TODAY'S DATE 1131 MONTAB, 12A3,'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC' 1141 RECORD,X ;REDEFINITION OF 'SQUOTE' TO 1151 SQUOTX, D1 ; CREATE A SINGLE QUOTE 1161 1171 RECORD SHDR ;LISTING HEADER LINE 1181 , A21,'INSTANT DIBOL V3.0328' 1191 , A10 1201 SHDAY, A2 1211 , A1,'-' 1221 SHMON, A3 1231 , A1,'-' 1241 SHYEAR, D2 1251 , A10 1261 , A5,'PAGE ' 1271 SHPAGE, A2 1281 1291 RECORD ;KEEP LISTING DATA 1301 LISTE, A74 ;TO BUILD ONE ENTRY 1311 LISTER, 12A74 ;TABLE OF ENTRIES 1321 RECORD,X 1331 LISTID, D3 ;NUMBER OF THE ITEM 1341 LISTIT, A30 ;TITLE 1351 LISTAC, D2 ;ACCUMULATOR (IF NON-ZERO) 1361 LISTPC, A22 ;PICTURE 1371 LISTHW, D3 ;WIDTH OF HEADING 1381 LISTIS, D3 ;SIZE OF ITEM 1391 LISTNH, D2 ;NUMBER OF HEADING LINES 1401 LISTFS, D3 ;SIZE OF PRECEDING FILLER 1411 LISTHS, D3 ;TOTAL SIZE OF HEADING 1421 LISTWN, D3 ;POINTER TO NEXT HEADING PIECE 1431 1441 RECORD ;INFO FROM 'IDENT' DIRECTIVE 1451 PROGID, A6 ;PROGRAM NAME 1461 AUTHOR, A24 ;AUTHOR 1471 PROGU, D2 ;OUTPUT UNIT (0=NOT SPWCIFIED) 1481 1491 RECORD ;FIRST HEADER 1501 HEAD1T, A132 ;TEXT 1511 HEAD1S, D3 ;SIZE OF TEXT 1521 1531 RECORD ;SECOND HEADER 1541 HEAD2T, A132 ;TEXT 1551 HEAD2S, D3 ;SIZE OF TEXT 1561 1571 RECORD ;INFO FROM 'INPUT' DIRECTIVE 1581 FILNAM, A6 ;FILE NAME (SPACES = NOT SPECIFIED) 1591 FILUNT, D2 ;FILE UNIT (0=NOT SPECIFIED) 1601 SUMARY, A1 ;SUMMARY SWITCH (SPACE=NO SUMMARY) 1611 1621 RECORD ;INFO ABOUT DATA ITEMS 1631 DATANE, A14 ;TO BUILD ONE ENTRY 1641 DATANT, 20A14 ;TABLE OF ENTRIES 1651 RECORD,X 1661 DATANM, A6 ;DATA NAME 1671 DATAM, A1 ;MODE (A OR D) 1681 DATAS, D3 ;SIZE OF THE ITEM 1691 DATADP, D2 ;NUMBER OF DECIMAL PLACES 1701 DATALV, D1 ;LEVEL OF BREAK (0=NO BREAK) 1711 DATAWK, A1 ;SPACE IF INPUT ITEM 1721 1731 RECORD ;TO HOLD COMPUTED ENTRY 1741 XNAME, A6 1751 XMOD, A1 1761 XSIZ, D3 1771 XDP, D2 1781 , D1 1791 XWK, A1 1801 RECORD,X 1811 XENTRY, A14 1821 RECORD 1831 COMPT, 8A118 ;TO HOLD COMPUTE LINES 1841 1851 RECORD ;ERROR MESSAGES 1861 ,A30,'SYNTAX ERROR ' ;1 1871 ,A30,'IMPROPER NUMERIC LITERAL ' ;2 1881 ,A30,'PICTURE TOO LONG ' ;3 1891 ,A30,'LITERAL TOO LONG ' ;4 1901 ,A30,'IMPROPER LITERAL ' ;5 1911 ,A30,'NEED FILE NAME ' ;6 1921 ,A30,'INTEGER FROM 1-15 REQUIRED ' ;7 1931 ,A30,'ALPHA LITERAL REQUIRED ' ;8 1941 ,A30,'HEADER IS TOO LONG ' ;9 1951 ,A30,'NO ENDING QUOTE ' ;10 1961 ,A30,'INTEGER REQUIRED ' ;11 1971 ,A30 ;12 1981 ,A30,'MUST BE S ' ;13 1991 ,A30,'INTEGER FROM 1-132 REQUIRED ' ;14 2001 ,A30,'NOT DEFINED ' ;15 2011 ,A30,'TOO MANY LIST ITEMS ' ;16 2021 ,A30,'TOO MANY DATA ITEMS ' ;17 2031 ,A30,'IMPROPER DEFINITION ' ;18 2041 ,A30,'MUST BE IDENT ' ;19 2051 ,A30,'UNKNOWN DIRECTIVE ' ;20 2061 ,A30,'NO INPUT DIRECTIVE ' ;21 2071 ,A30,'NO PRINT DIRECTIVE ' ;22 2081 ,A30,'MUST BE NUMERIC ITEM ' ;23 2091 ,A30,'NO INPUT ITEMS ' ;24 2101 ,A30,'NO PRINT ITEMS ' ;25 2111 ,A30,'TOO MANY COLUMNS IN REPORT ' ;26 2121 ,A30,'TOO MANY RIGHT PARENTHESES ' ;27 2131 ,A30,'NOT ENOUGH RIGHT PARENTHESES ' ;28 2141 ,A30,'TOO MANY LEFT PARENTHESES ' ;29 2151 ,A30,'IMPROPER USE OF DECIMAL PLACES' ;30 2161 ,A30,'ALREADY DEFINED ' ;31 2171 ,A30,'TOO MANY COMPUTE STATEMENTS ' ;32 2181 RECORD,X 2191 ERRMES, 32A30 2201 ; 2211 RECORD 2221 PICMSP, 15D2,01,02,03,05,06,07,09,10,11,13,14,15,17,18,19 2231 PICMSK, A19,'XXX,XXX,XXX,XXX,XXX'