1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-03-02 17:44:40 +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

13816 lines
1.1 MiB

BEGIN 00000100
%%% DATE ~ "5 OC68" ; % % % % 00000101
COMMENT CUBE LIBRARY NUMBER IS Q500001. THE PROGRAM NAME IS 00000200
"XREF/JONES". THIS VERSION ON CUBE OCT 26,1968; 00000300
COMMENT FIRST CUBE UPDATE 10/7/68 ; 00000310
COMMENT XREF REMINDER LIST OCT 7 1968 00000312
DATE ON ALL XREF PAGES 00000314
DOCUMENT - VOID SHOULD BE ON LAST OF CONTIN. $ CARDS 00000316
INCLUDE SOME FORM OF FLOWDOC FINDER IN XREF 00000318
WRITE ON SPO LAST SEQ NUMBER OF NEW FILE IF DON,T LIST 00000320
ALTERNATE PAGE NUMBERS ODD AND EVEN 00000322
ALLOW RESEQ TO BE SET WITHIN RUN 00000324
ALLOW DOCUMENT XREF TO BE OF BNF (E.G.) AND GIVE 00000326
PAGE NUMBER REFERENCES 00000328
TAB FIELD ALLOWS TOO MANY CHAR. (23 BETWEEN TAB 17,39) 00000330
SCAN FOR VOID ON $ RATHER THAN CHECKING ONLY 00000332
FIRST WORD 00000334
DON,T WRITE OUT $ CARDS 00000336
GIVE LAST "*" USE OF PROCEDURES, NOT FIRST 00000338
CHANGE TO 2ND PROCEDURE IN LIST 00000340
ON RESEQ W/ INC > 1 AND " PUNCHDOLLAR " PUNCH OUT 00000342
NEW $ CARDS WHERE OLD ONES MAP ONTO NEW TAPE 00000344
LOSS OF IDENTIFIERS AFTER 2 $ CARDS IN A ROW 00000346
DOESN,T FLAG PROCEDURE DECLS AS "*" IF THEY OCCUR AFTER 00000348
$ CARD - MAYBE LOSES THE IDENTIFIER OR SOMETHING 00000350
LOSS OF I.D. IN COL. 72 WHEN FOLLOWED 00000352
BY $-CARD 00000354
DO UNTIL FALSE GENSYMS 00000356
CHANGE SHUFFLE TO ALLOW SEQ NUMBERS NOT ON TAPE 00000358
PUT LABEL-TABLES FROM FLOW INTO CHANGE INDEX AS WELL 00000360
AS UPPING REVISION 00000362
FLAG DELETIONS WITH - 00000364
PATCH TO PRINT OUT (OR PUNCH) A PROCEDURE OR DEFINE 00000366
DOCUMENTATION LANGUAGE: A WAY TO (VIA A CONTROL LIKE AN 00000368
INVALID PLUS DEFINE-TYPE MECHANISM) ALLOW A 00000370
CROSS-REFERENCE, AT LEAST FORWARD, TO PAGE 00000372
NUMBERS WHICH IS AUTOMATICALLY GENERATED: 00000374
E.G., SAY 00000376
XREF INDEX FOLLOWING WORD IS 13 00000378
WHEN WE WANT TO XREF IT, "XREF TO 13" 00000380
OR SOME SUCH IDEA. 00000382
PUT IN A MISS CONTROL ALSO A NULL CONTROL 00000384
ANOTHER INDEXING FEATURE DESIRED: INDEX ENTRY DELINEATED BY 00000386
INPUT CARD RATHER THAN OUTPUT LINE 00000388
(THOUGH OF COURSE INDEX REFERENCE SHOULD 00000390
BE TO OUTPUT PAGE NUMBER). SAME WITH UNDERLINING - 00000392
COULD "FLAG" SOMEHOW THE INPUT STUFF AS WE 00000394
DO FOR INVALID 00000396
END OF REMINDER LIST ; 00000398
COMMENT DOCUMENT 00000400
* PAGE CENTER SKIP 10 00000500
BURROUGHS 00000600
B5500 00000700
INFORMATION PROCESSING SYSTEM 00000800
* SKIP 5 CENTER 00000900
SYMBOLIC LISTING 00001000
* CENTER UNDERLINE 00001100
"A CROSS REFERENCE,FLOW CHART AND DOCUMENT EDITING PROGRAM" 00001200
* SKIP 2 CENTER 00001300
JANUARY 22 TH. 1967. 00001400
* SKIP 5 CENTER 00001500
BURROUGHS CORPORATION 00001600
PASADENA PLANT 00001700
460 SIERRA MADRE VILLA 00001800
PASADENA, CALIFORNIA 00001900
* SKIP 2 INDENT 47 00002000
COPYRIGHT (C) 1966,1967 00002100
BURROUGHS CORPORATION 00002200
* FINISH ; 00002300
COMMENT ALGOL AND ESPOL CROSS REFERENCE 00002400
AND DOCUMENT EDITING PROGRAM ; 00002500
COMMENT 00002600
WRITTEN BY GLYN H. JONES AND 00002700
JOAN G. DUNSHEE 00002800
TECHNICAL STAFF , 00002900
ENGINEERING DIVISION , 00003000
PASADENA . ;00003100
COMMENT DOCUMENT "PART 1" 00003200
* UNDERLINE TITLE CENTER 00003300
E.T.M. 279 (20 NOV 1965). 00003400
* DEFINE 1 = SKIP 2 PARAGRAPH 5,67,0 * 00003500
* DEFINE 2 = SKIP PAR * 00003600
* DEFINE 3 = SKIP GLOSSARY 5,25,67 * 00003700
* DEFINE 4 = SKIP GLOS * 00003800
* DEFINE 5 = SKIP GLOSSARY 8,30,67 * 00003900
* DEFINE 6 = SKIP PARAGRAPH 20,67,0 * 00004000
* DEFINE 7 = PAGE INDEX UNDERLINE * 00004100
* DEFINE 8 = SKIP GLOSSARY 10,25,67 * 00004200
* DEFINE 9 = SKIP GLOSSARY 10,35,67 * 00004300
* DEFINE 10 = SKIP 2 TAB 5, 25, 45 * 00004400
* DEFINE 11 = SKIP 2 TAB 5,35 * 00004500
* DEFINE 12 = SKIP 2 TAB 5 * 00004600
* DEFINE 13 = SKIP 2 INDENT 3 INDEX UNDERLINE * 00004700
* DEFINE 14 = PAGE INDENT 3 INDEX UNDERLINE * 00004800
* PAGEID 1," 1-" 00004900
* PAGE CENTER UNDERLINE 00005000
A CROSS REFERENCE,FLOW CHART AND DOCUMENT EDITING PROGRAM (PART ONE). 00005100
* SKIP CENTER TITLE CLEAR 00005200
BY GLYN HUGH JONES AND JOAN G. DUNSHEE 00005300
* SKIP CENTER 00005400
TECHNICAL STAFF 00005500
BURROUGHS CORPORATION 00005600
PASADENA 00005700
* SKIP 3 INDEX CENTER UNDERLINE 00005800
SUMMARY 00005900
* 1 00006000
THIS DOCUMENT (PREPARED IN THREE PARTS) PRESENTS A CROSS REFERENCE AND 00006100
DOCUMENT EDITING PROGRAM. PART 1 DESCRIBES A GENERAL PURPOSE IDENTIFIER00006200
REFERENCE PROGRAM, PART 2 DESCRIBES A DOCUMENT EDITING PROGRAM, 00006300
AND PART 3 DESCRIBES A FLOW CHART GENERATING PROGRAM. THE 00006400
PROGRAMS WERE DESIGNED AND WRITTEN FOR USE WITH ALGOL AND ESPOL PROGRAM00006500
S, AND WITH MINOR MODIFICATIONS, COULD BE USED WITH OTHER LANGUAGES. 00006600
ALTHOUGH THE DESCRIPTIONS ARE WRITTEN IN THREE PARTS, ALL OF THE 00006700
FUNCTIONS ARE HANDLED BY ONE PROGRAM. 00006800
* SKIP 6 TAB 2,40 00006900
AUTHORS:/APPROVED:/ 00007000
* SKIP 4 TAB 2,40 00007100
-------------------- / -------------------- / 00007200
GLYN H. JONES AND/ J. F. KALBACH/ 00007300
* SKIP TAB 2,40 00007400
JOAN G. DUNSHEE/ MANAGER,TECHNICAL STAFF/ 00007500
* SKIP 1 INDENT 30 00007600
ORIGINAL ISSUE JAN.25, 1965 00007700
FIRST REVISED ISSUE OCT. 27, 1965 00007800
SECOND REVISED ISSUE NOV. 21, 1966 00007900
THIRD REVISED ISSUE OCT.7, 1968 00007910
* 7 00008000
INTRODUCTION 00008100
* 2 00008200
IT IS ALWAYS USEFUL TO HAVE COMPLETE DOCUMENTATION DESCRIBING A COMPUTER00008300
PROGRAM WHEN ONE IS ATTEMPTING TO UNDERSTAND AND MODIFY SUCH A PROGRAM00008400
, ESPECIALLY WHEN THE PROGRAM IS WRITTEN BY ANOTHER PERSON. 00008500
THE PROGRAM DESCRIBED IN THIS THREE-PART DOCUMENT WAS WRITTEN 00008600
TO PERFORM THREE ALLIED DOCUMENTATION FEATURES: CROSS REFERENCING, TEXT 00008700
EDITING, AND FLOW CHARTING. 00008800
* 2 00008900
THE CROSS REFERENCE PORTION IS DESCRIBED IN THE FIRST SECTION OF THE 00009000
DOCUMENT. 00009100
* 7 00009200
PROGRAM SPECIFICATIONS 00009300
* 2 00009400
SYMBOLIC PROGRAMS TO BE SCANNED MAY BE ON CARDS, TAPE OR SYMBOLIC00009500
PROGRAM LIBRARY TAPE . 00009600
* 2 00009700
WHEN SOURCE PROGRAMS ARE ON TAPE, CORRECTION PATCH CARDS MAY BE MERGED 00009800
FROM THE CARD READER. 00009900
* 2 00010000
NEW SOURCE TAPES (EXCEPT SYMBOLIC PROGRAM LIBRARY TAPES) AND NEW CARD 00010100
DECKS MAY BE PRODUCED. 00010200
* 2 00010300
SOURCE INPUT MAY BE SEQUENCE CHECKED AND THE SOURCE OUTPUT RESEQUENCED. 00010400
* 2 00010500
SECTIONS OF SOURCE INPUT MAY BE SKIPPED BY USE OF VOID CONTROLS. 00010600
* 2 00010700
THE RELEVANT OUTPUT MAY BE PRINTED ON THE LINE PRINTER AND/OR SAVED ON A00010800
BACKUP FILE ( NOT THE MCP PRINTER BACKUP TAPE) WHICH IN TURN MAY BE UPD00010900
ATED AND / OR PRINTED. 00011000
* 2 00011100
ALL IDENTIFIERS (INCLUDING RESERVED WORDS) OR A SELECTED SET OF IDENTIFI00011200
ERS OR ALL IDENTIFIERS WHOSE INITIAL LETTER FALLS WITHIN A SPECIFIED 00011300
RANGE MAY BE CROSS REFERENCED. 00011400
* 2 00011500
A BLOCK STRUCTURE DIAGRAM MAY BE DRAWN. 00011600
* 2 00011700
PROCEDURE IDENTIFIERS ALONE MAY BE CROSS REFERENCED. 00011800
* 2 00011900
FACILITIES ARE PROVIDED TO OBTAIN DETAILED INFORMATION CONCERNING THE 00012000
INTERNAL WORKINGS OF THE CROSS REFERENCE PROGRAM. SUCH INFORMATION 00012100
IS USEFUL WHEN ONE HAS TO CHANGE THE PROGRAM ONESELF. 00012200
* 7 00012300
SYNTAX CONVENTIONS. 00012400
*1 00012500
THE SYNTAX OF THE CONTROL CARD 00012600
LANGUAGE IS DESCRIBED THROUGH THE USE OF METALINGUISTI00012700
C SYMBOLS. THESE SYMBOLS HAVE THE FOLLOWING MEANINGS: 00012800
* 1 00012900
LEFT AND RIGHT BROKEN BRACKETS "<" AND ">" ARE USED TO CONTAIN ONE 00013000
OR MORE CHARACTERS REPRESENTING A METALINGUISTIC VARIABLE WHOSE VALUE 00013100
IS GIVEN BY A METALINGUISTIC FORMULA. 00013200
*1 00013300
THE SYMBOL "::=" MEANS "IS DEFINED TO BE" AND SEPARATES THE METALINGUIST00013400
IC VARIABLE ON THE LEFT OF THE FORMULA FROM ITS DEFINITION ON THE 00013500
RIGHT. 00013600
*1 00013700
THE SYMBOL "/" MEANS "OR". THIS SYMBOL SEPARATES MULTIPLE DEFINITIONS 00013800
OF A METALINGUISTIC VARIABLE. 00013900
*1 00014000
LESS-THAN-OR-EQUAL AND GREATER-THAN-OR-EQUAL SIGNS, "{" AND"}", ARE 00014100
USED TO ENCLOSE METALINGIUSTIC VARIABLES 00014200
WHICH ARE DEFINED BY THE MEANING OF THE ENGLISH LANGUAGE EXPRESSION 00014300
CONTAINED WITHIN THE BRACES. THIS FORMULATION IS USED ONLY WHEN IT IS 00014400
IMPOSSIBLE OR IMPRACTICAL TO USE A METALINGUISTIC FORMULA. 00014500
* 1 00014600
THE BRACKETS "[" AND "]" ARE USED TO ENCLOSE GROUPS OF 00014700
METALINGUISTIC VARIABLES WHICH MAY BE PERMUTED IN ANY ORDER. EXAMPLE: 00014800
* SKIP 00014900
<D> ::= [<A> B <C>] IS EQUIVALENT TO :- 00015000
* SKIP 00015100
<D> ::= <A> B <C> / <A> <C> B / 00015200
B <A> <C> / B <C> <A> / 00015300
<C> <A> B / <C> B <A> 00015400
*1 00015500
THE ABOVE METALINGUISTIC SYMBOLS ARE USED IN FORMING A METALINGUISTIC FO00015600
RMULA. A METALINGUISTIC FORMULA IS A RULE WHICH WILL PRODUCE AN ALLOWAB00015700
LE SEQUENCE OF CHARACTERS AND/OR SYMBOLS. THE ENTIRE SET OF SUCH FORMUL00015800
AS DEFINES THE CONSTRUCTS OF THE CONTROL CARDS. 00015900
*1 00016000
ANY MARK OR SYMBOL IN A METALINGUISTIC FORMULA WHICH IS NOT ONE OF THE A00016100
BOVE METALINGUISTIC SYMBOLS DENOTES ITSELF. 00016200
*1 00016300
CONTROL CARD 00016400
CONVENTIONS USED IN WRITING SYNTAX ARE ILLUSTRATED BY THE FOLLOWING 00016500
EXAMPLE: 00016600
* SKIP 00016700
<IDENTIFIER> ::= <LETTER> / <IDENTIFIER><LETTER> / <IDENTIFIER><DIGIT> 00016800
*1 00016900
THIS METALINGUISTIC FORMULA IS READ AS FOLLOWS: AN IDENTIFIER IS D00017000
EFINED TO BE A LETTER, OR AN IDENTIFIER FOLLOWED BY A LETTER, OR AN IDEN00017100
TIFIER FOLLOWED BY A DIGIT. 00017200
*1 00017300
THE METALINGUISTIC FORMULA DEFINES A RECURSIVE RELATIONSHIP BY WHICH A C00017400
ONSTRUCT CALLED AN IDENTIFIER MAY BE FORMED. EVALUATION OF THE FORMULA 00017500
SHOWS THAT AN IDENTIFIER BEGINS WITH A LETTER. THE LETTER MAY STAND ALON00017600
E, OR MAY BE FOLLOWED BY ANY MIXTURE OF LETTERS AND DIGITS. 00017700
* 7 00017800
LABEL EQUATION INFORMATION. 00017900
* 1 00018000
THE FOLLOWING FILE IDENTIFIERS USED BY THE CROSS REFERENCE PROGRAM 00018100
ARE 00018200
IDENTICAL TO THOSE USED IN THE ALGOL COMPILER AND ARE LISTED BELOW. 00018300
* UNDERLINE TAB 5, 15 00018400
FILE/ FUNCTION / 00018500
* SKIP TAB 5,15 00018600
CARD/ CARD PATCH DECK/ 00018700
LINE / LINE PRINTER OR MCP BACKUP TAPE / 00018800
TAPE / "0CRDIMG" OR SOURCE TAPE / 00018900
NEWTAPE/ NEW "0CRDIMG" OR SOURCE TAPE / 00019000
PNCH / CARD PUNCH / 00019100
PUNTAPE / TAPE USED BY "NEW PUNCH TAPE" CONTROL/ 00019200
CASTA / SYMBOLIC LIBRARY FILE ON DISK "CASTA" "LIBRARY"/ 00019300
CASTB / SYMBOLIC LIBRARY TAPE / 00019400
CASTC / SYMBOLIC LIBRARY TAPE / 00019500
CA/ NEW SYMBOLIC LIBRARY TAPE , USED BY "COPY" / 00019600
CB/ NEW SYMBOLIC LIBRARY TAPE , USED BY "COPY" / 00019700
CC/ NEW SYMBOLIC LIBRARY TAPE , USED BY "COPY" / 00019800
* 1 00019900
THE USER WILL NEED TO KNOW CERTAIN OF THE FILE NAMES WHICH ARE UNIQUE TO00020000
CROSS REFERENCE. THE PERTINANT ONES ARE 00020100
* UNDERLINE TAB 5,17 00020200
FILE/FUNCTION/ 00020300
* SKIP TAB 5,17 00020400
DISK/"DISKSYM" "XREF" OR SOURCE DISKFILE/ 00020500
NEWDISK/"DISKSYM" "XREF" OR NEW DISKFILE/ 00020600
BACKUPDISK/FILE WRITTEN WHEN BACKUP GOES TO DISK/ 00020700
BACKUPTAPE/ FILE WRITTEN WHEN BACKUP GOES TO TAPE/ 00020800
OLDBACKUP/FILE TO BE PRINTED BY THE CONTROL "$ BACKUP DISK"./ 00020900
* PARAGRAPH 17,67,0 00021000
PROGRAM WILL LOOK FOR "BACKUPD" IF NO LABEL EQUATION FOR "OLDBACKUP" 00021100
IS MADE. 00021200
* TAB 5,17 00021300
OLDBAC/ "BACKUPT" OR TAPE TO BE PRINTED BY "$ BACKUP"// 00021400
NEWDOC/FILE WHICH "MERGE" EXPECTS TO FIND AS THE NEW DOCUMENT./ 00021500
OLDDOC/FILE WHICH "MERGE" EXPECTS TO FIND AS THE OLD DOCUMENT./ 00021600
NEWPATCH/"PATCHES" OR NEW TAPE TO BE PATCH DECK/ 00021700
PATCHTAPE/ "PATCHES" OR TAPE FOR USE AS PATCH DECK / 00021800
* PAGE INDENT 3 INDEX UNDERLINE 00021900
SAMPLE SCHEDULE DECK. 00022000
* INDENT 10 00022100
* INVALID 2 00022200
Q EXECUTE XREF/JONES 00022300
* INVALID 2 00022400
Q FILE CARD = PERTCARD 00022500
* INVALID 2 00022600
Q FILE TAPE = PERTSYM 00022700
* INVALID 2 00022800
Q FILE NEWTAPE = PERTSYM 00022900
* INVALID 2 00023000
Q DATA PERTCARD 00023100
$ TAPE LIST RESERVED STRING 10 00023200
PATCH CARDS, LAST PATCH CARD WITH SEQUENCE 99999999 00023300
* INVALID 2 00023400
Q END . 00023500
* 7 00023600
CROSS REFERENCE CONTROL CARD SYNTAX 00023700
* SKIP 00023800
<XREF CONTROL INFO> ::= $ <INPUT AND OUTPUT FILE CONTROLS> 00023900
<XREF OPTIONS> / $ <LOGIC BOOK CONTROLS> / 00024000
$ BACKUP <DISK PART> <BACKUP COPIES> / 00024100
$ <MULTIFILE PART> <MULTIFILE OPTIONS> / 00024200
$ MERGE [<MERGE CONTROLS> <DEBUGGING PART> 00024300
<LIST CONTROL> <LINE CONTROLS>] / $ <COPY PART> 00024400
/ $ <VOID PART> / $ <BUILD PART> / <EMPTY> 00024500
<INPUT AND OUTPUT FILE CONTROLS> ::= <INPUT SOURCE FILE PART> 00024600
<LIST OPTION> [<RESEQ PART> <VOID PART> <SEQ CHECK PART> 00024700
<PATCHES ON TAPE> <NEW SOURCE FILE PART> 00024800
<ONLY PART> <OUTPUT CONTROLS> ] 00024900
/ <CAST FILE INPUT PART> [<VOID PART> <SEQ CHECK PART> 00025000
<OUTPUT FILE CONTROLS> <ONLY PART>] 00025100
<INPUT SOURCE FILE PART> ::= CARD / TAPE / DISK / DISC 00025200
<DISK PART> ::= DISK / <EMPTY> 00025300
<ONLY PART> ::= ONLY / <EMPTY> 00025400
<PATCHES ON TAPE> ::= TAPEPATCHES / <EMPTY> 00025500
<LOGIC BOOK CONTROLS> ::= LOGIC / LOGIC BACKUP 00025600
<VOID PART> ::= VOID <VOID SEQ NUMBER> 00025700
<VOID SEQ NUMBER> ::= <UNSIGNED INTEGER> / <EMPTY> 00025800
<BUILD PART> ::= CARD <LIST OPTION> BUILD <BUILD PUNCH OPTION> 00025900
<BUILD PUNCH OPTION> ::= PUNCH / <EMPTY> 00026000
<BACKUP COPIES> ::= <UNSIGNED INTEGER> / <EMPTY> 00026100
<COPY PART> ::= COPY CAST <CAST SWITCH FILE LETTER> <LIST OPTION> / 00026200
COPY TAPE <LIST OPTION> 00026300
<LIST OPTION> ::= LIST / LIST ONLY / <EMPTY> 00026400
<SEQ CHECK PART> ::= SEQ / CHECK / <EMPTY> 00026500
<RESEQ PART> ::= RESEQUENCE <RESEQ PARAMETERS> / 00026600
RESEQ <RESEQ PARAMETERS> DOC / 00026700
RESEQ <RESEQ PARAMETERS> / <EMPTY> 00026800
<RESEQ PARAMETERS> ::= <SEQ INC> / <SEQ INC> , <START SEQ> / <EMPTY> 00026900
<START SEQ> ::= <UNSIGNED INTEGER> 00027000
<SEQ INC> ::= <UNSIGNED INTEGER> 00027100
<NEW SOURCE FILE PART> ::= NEW TAPE / NEW PUNCH / NEW / NEW PUNCH TAPE /00027200
NEW PATCHTAPE / NEW PATCHTAPE PUNCH / 00027300
NEW DISK / NEW DISC / <EMPTY> 00027400
<OUTPUT FILE CONTROLS> ::= [<PRINTER LISTING> <BACKUP TAPE> 00027500
<IRFILE PART> <REMOTE PART>] 00027600
<REMOTE PART> ::= REMOTE / <EMPTY> 00027700
<PRINTER LISTING> ::= PRINT / <EMPTY> 00027800
<IRFILE PART> ::= MAKE IRFILE / <EMPTY> 00027900
<BACKUP TAPE> ::= BACKUP <DISK PART> / BACKUP <DISK PART> UPDATE/ 00028000
LISTBACKUP / <EMPTY> 00028100
<CAST FILE INPUT PART> ::= CAST <CAST SWITCH FILE LETTER> 00028200
<CAST PROG RANGE PART> 00028300
<CAST SWITCH FILE LETTER> ::= A / B / C 00028400
<CAST PROG RANGE PART> ::= ALL TO END <LIST OPTION> / 00028500
ALL FROM <FIRST PROG ID> TO END <LIST OPTION> / 00028600
ALL FROM <FIRST PROG ID> TO < LAST PROG ID> <LIST OPTION> 00028700
/ <PROG ID> <LIST OPTION> <RESEQ PART> 00028800
<NEW SOURCE FILE PART> 00028900
<FIRST PROG ID> ::= <IDENTIFIER> 00029000
< LAST PROG ID> ::= <IDENTIFIER> 00029100
<PROG ID> ::= <IDENTIFIER> 00029200
<XREF OPTIONS> ::= [<LINE CONTROLS> <DEBUGGING PART> <HEADER PART> 00029300
<LARGE PART> <COMMENT PART> <STRING PART> <LANGUAGE PART> 00029400
<PAGE PUNCH PART> <RESERVED PART>] 00029500
<SELECTIVE XREF CONTROLS> 00029600
<LINE CONTROLS> ::= EIGHT <PAGE LINE COUNT> <XREF LINE CONTROLS> / 00029700
SIX <PAGE LINE COUNT> <XREF LINE CONTROLS> 00029800
/ <XREF LINE CONTROLS> / <EMPTY> 00029900
<XREF LINE CONTROLS> ::= SINGLE / DOUBLE / <EMPTY> 00030000
00030100
<PAGE LINE COUNT> ::= <UNSIGNED INTEGER> / <EMPTY> 00030200
<DEBUGGING PART> ::= [DUMP MONITOR DEBUG DOCDEBUG BUGS DEBEATLE] / 00030300
<EMPTY> 00030310
<HEADER PART> ::= {ANY STRING OF CHARACTERS EXCEPT QUOTES AND PERCENTS 00030400
ENCLOSED WITHIN QUOTES} / <EMPTY> 00030500
<RESERVED PART> ::= RESERVED / OP / OPS / <EMPTY> 00030600
<LARGE PART> ::= LARGE <CORE SIZE> / <EMPTY> 00030700
<COMMENT PART> ::= COMMENT / <EMPTY> 00030800
<STRING PART> ::= STRING / STRING <UNSIGNED INTEGER>/ <EMPTY> 00030900
<LANGUAGE PART> ::= BPL / ESPOL / COBOL / B3500 / SIMULA / FORTRAN / 00031000
FORTRAN HOL / <EMPTY> 00031010
<PAGE PUNCH PART> ::= PPAGES <PUNCH PART> / PPAGES INSERTPAGE 00031100
<PAGE INC> <PUNCH PART> 00031200
<PUNCH PART> ::= PUNCH / <EMPTY> 00031300
<PAGE INC> ::= <UNSIGNED INTEGER> / <EMPTY> 00031400
<SELECTIVE XREF CONTROLS> ::= <COUNT PART> / PROCEDURE / <BLOCK PART> / 00031500
NAMEPUNCH NAMES <NAME LIST> * / NAMEPUNCH BLANK NAMES 00031600
<NAME LIST> * / 00031610
NAMES <NAME LIST> * / <XREF LETTER RANGE> / <PATCH PART> /00031700
<DOCUMENT PART> / <FLOW CHART PART> / SORT / SHUFFLE 00031800
<NAME LIST> ::= <IDENTIFIER> / <NAME LIST> <IDENTIFIER> 00031900
<XREF LETTER RANGE> ::= XREF <LETTER> / XREF <LETTER> TO <LETTER> 00032000
<BLOCK PART> ::= BLOCK / BLOCK <INDENTATION> 00032100
<INDENTATION> ::= <UNSIGNED INTEGER> 00032200
<COUNT PART> ::= COUNT / IDENT / IDENTIFIERS 00032300
<PATCH PART> ::= PATCH 00032400
<DOCUMENT PART> ::= <SEMICOLON USE> <DOCUMENT EDIT TYPE> 00032500
<JUSTIFY OPTION> <UPDATE OPTION> <DOCINDEX OPTION> 00032510
<DOCUMENT XREF PART> <REVISION PART> 00032600
<SEMICOLON USE> ::= DOCONLY / <EMPTY> 00032700
<DOCUMENT EDIT TYPE> ::= <DOCUMENT NAME> / <DOCUMENT NAME> FINAL 00032800
/ <DOCUMENT NAME> CONTENTS ONLY / <DOCUMENT NAME> SYNTAX 00032900
/ <DOCUMENT NAME> SYNTAX FINAL / BNF 00033000
<DOCUMENT NAME> ::= DOCUMENT / DOCUMENT <STRING> / 00033100
DOCUMENT <STRING> TO <STRING> 00033110
<JUSTIFY OPTION> ::= NOJUSTIFY / <EMPTY> 00033120
<UPDATE OPTION> ::= UPDATE / <EMPTY> 00033130
<DOCINDEX OPTION> ::= DOCINDEX / <EMPTY> 00033140
<DOCUMENT XREF PART> ::= XREF / <EMPTY> 00033200
<FLOW CHART PART> ::= <FLOW TYPE> <REVISION PART> 00033300
/ <TRANS PART> <ASMFLOW PART> 00033400
<FLOW TYPE> ::= FLOW / FLOW NOBOX / FLOW SYNTAX / <ASMFLOW PART> 00033500
/ <QFLOW PART> 00033510
<ASMFLOW PART> ::= ASMFLOW / ASMFLOW NOBOX / ASMFLOW SYNTAX 00033600
<QFLOW PART> ::= QFLOW / QFLOW NOBOX / QFLOW SYNTAX 00033610
<REVISION PART> ::= REVISION <REVISION NUMBER> / 00033700
REVISION CLEAR <REVISION NUMBER> 00033800
<REVISION NUMBER> ::= <UNSIGNED INTEGER> / <EMPTY> 00033900
<TRANS PART> ::= TRANS [<SEGS PART> <ESCAPE PART> <DATA PART>] 00034000
<SEGS PART> ::= SEGS <SEGMENT NUMBERS>* / <EMPTY> 00034100
<DATA PART> ::= DATA / <EMPTY> 00034200
<ESCAPE PART> ::= ESCAPE <ESCAPE COUNT> <ESCAPE LIST> / 00034300
ESCAPE <ESCAPE CHR> / <EMPTY> 00034400
<ESCAPE COUNT> ::= <UNSIGNED INTEGER> 00034500
<ESCAPE LIST> ::= <ESCAPE ITEM> / <ESCAPE LIST> <ESCAPE ITEM> 00034600
<ESCAPE ITEM> ::= {ANY SCANNABLE ENTITY} 00034700
<ESCAPE CHR> ::= {ANY SCANNABLE ENTITY EXCEPT NUMBERS} 00034800
<SEGMENT NUMBERS> ::= <INTEGER SPAN> / <SEGMENT NUMBERS>, 00034900
<INTEGER SPAN> 00035000
<INTEGER SPAN> ::= <INTEGER> / <INTEGER> - <INTEGER> 00035100
<LIST CONTROL> ::= LIST / <EMPTY> 00035200
<MERGE CONTROLS> ::= [<PRINTER LISTING> <BACKUP LISTING> 00035300
<SELECT PART> <DIRECTORY PART> TITLE DA ] / 00035400
<DIRECTORY PART> PRINTALL <ONLY PART> 00035500
<BACKUP LISTING> ::= BACKUP <DISK PART> / <EMPTY> 00035600
<DIRECTORY PART> ::= DIRECTORY <ONLY PART> / <EMPTY> 00035700
<SELECT PART> ::= PRINTSELECT <PAGES>* <ONLY PART> / <EMPTY> 00035800
<PAGES> ::= <UNSIGNED INTEGER> / <PAGES>, <UNSIGNED INTEGER> 00035900
<MULTIFILE PART> ::= MAKEMULTI / MAKEMUL 00036000
<MULTIFILE OPTIONS> ::= <OUTPUT FILE> <INPUT FILE> [<LIST OPTION> 00036100
<PUNCH PART> <DIRECTORY OPTION>] 00036200
<OUTPUT FILE> ::= DISK / DISC / TAPE 00036300
<INPUT FILE> ::= DISK / DISC / TAPE / <EMPTY> 00036400
<DIRECTORY OPTION> ::= DIRECTORY / <EMPTY> 00036500
<LETTER> ::= A/B/C/D/E/F/G/H/I/J/K/L/M/O/P/Q/R/S/T/U/V/W/X/Y/Z 00036600
<IDENTIFIER> ::= <LETTER> / <IDENTIFIER><LETTER> / <IDENTIFIER><DIGIT> 00036700
<DIGIT> ::= 0/1/2/3/4/5/6/7/8/9 00036800
<UNSIGNED INTEGER> ::= <DIGIT> / <UNSIGNED INTEGER><DIGIT> 00036900
* 7 00037000
EXAMPLES OF CROSS REFERENCE CONTROL CARDS. 00037100
* 11 00037200
$ CARD LIST / $ TAPE LIST / 00037300
$ CARD LIST DOCUMENT / $ DISK LIST DOCUMENT / 00037400
$ TAPE DOCONLY DOCUMENT / $ TAPE DOCUMENT XREF / 00037500
$ COPY CAST A LIST / $ COPY CAST B / 00037600
$ COPY TAPE / $ MAKEMULTI DISK DIRECTORY PUNCH / 00037700
$ MAKEMUL TAPE DISK / $ MERGE DIRECTORY ONLY / 00037800
$ MERGE / $ MERGE PRINTSELECT 1,20,23* / 00037900
$ TAPE LIST REMOTE / $ TAPE LIST PATCH / 00038000
$ TAPE LIST BACKUP PRINT / $ DISK LIST FLOW/ 00038100
$ SORT / $ IDENTIFIERS / 00038200
$ BACKUP / $ BACKUP DISK 3 / 00038300
$ COUNT / $ PROCEDURE / 00038400
$ CARD LIST NEW PUNCH / $ CARD NEW PUNCH TAPE RESEQUENCE / 00038500
$ BLOCK / $ BLOCK 5 / 00038600
* 12 00038700
$ CARD BUILD LIST PUNCH // 00038800
$ CAST A ALL FROM PERT TO SOL LIST // 00038900
$ CAST B ALL FROM PERT TO END LIST RESERVED // 00039000
$ CAST C PERT LIST NEW TAPE RESEQ CHECK // 00039100
$ CARD LIST DUMP MONITOR BUGS DEBUG // 00039200
$ TAPE LIST RESERVED STRING 10 COMMENT // 00039300
$ TAPE LIST NAMES FILE PRINT ARRAY SWITCH I J * // 00039400
$ DISK BACKUP DISK DOCUMENT UPDATE// 00039500
$ CARD BACKUP DISK FLOW REVISION 2// 00039600
* SKIP INDENT 4 00039700
$ CARD LIST DUMP MONITOR BUGS DEBUG PRINT 00039800
$ TAPE "COBOL/DISK 10/6/65" XREF A TO H BACKUP 00039900
$ TAPE "COBOL/DISK 10/6/65" XREF I TO R BACKUP UPDATE 00040000
$ TAPE "COBOL/DISK 10/6/65" XREF S TO Z BACKUP UPDATE 00040100
* 7 00040200
CROSS REFERENCE CONTROL CARD SEMANTICS 00040300
* 1 00040400
CROSS REFERENCE AND DOCUMENT EDITING OPTIONS ARE OBTAINED FROM A DOLLAR 00040500
CONTROL CARD. SINCE THERE ARE A LARGE NUMBER OF POSSIBLE OPTIONS, AND 00040600
SINCE ALL OF THE REQUIRED OPTIONS FOR A GIVEN RUN COULD NOT BE INCLUDED 00040700
ON ONE CARD, A DOLLAR CONTINUATION CARD IS ALLOWED. A CONTROL CARD MUST00040800
HAVE A DOLLAR SIGN IN COL 1, AND IF THE CONTROL INFORMATION IS TO BE 00040900
CONTINUED ONTO ANOTHER CARD, A DOLLAR SIGN MUST BE PLACED ON THE CARD 00041000
TO BE CONTINUED AND A DOLLAR SIGN PLACED IN COL 2 OF THE CONTINUATION 00041100
CARD, CONTINUATION CARDS MAY BE USED UNTIL ALL OF THE REQUIRED 00041200
INFORMATION IS ENTERED. IF A SEQUENCE OF NON-CONTINUED DOLLAR CARDS 00041300
PRECEDES A PROGRAM, ONLY THE LAST WILL DETERMINE THE OPERATIVE CONTROLS.00041400
THE FOLLOWING IS AN EXAMPLE :- 00041500
* INDENT 10 00041600
$ TAPE LIST NEW TAPE BACKUP $ 00041700
* INDENT 11 00041800
$ "HEADING INFORMATION" NAMES FILE INPUT OUTPUT $ 00041900
$ PRINTER TAPE TIME * 00042000
* 2 00042100
ALL CONTROL CARDS MUST BE AT THE FRONT OF THE PATCH CARDS IN THE FILE 00042200
"CARD" AND THE ONLY CONTROL CARD WHICH IS ALLOWED TO BE IN THE BODY OF 00042300
THE SYMBOLIC FILES IS THE <VOID PART> CONTROL CARD. 00042400
FOLLOWING IS A LIST OF THE CHARACTERISTICS OF THE CONTROL CARD OPTIONS: 00042500
* 3 00042600
<EMPTY> = IF THE FIRST RECORD READ FROM THE FILE "CARD" DOES NOT CONTAIN00042700
"$" SIGN IN COLUMN ONE THEN A LIST OF THE "CARD" DECK WILL BE 00042800
SUPPLIED AND THE SEQUENCE FIELDS (COLUMNS 72 TO 80) WILL BE 00042900
"SEQUENCE CHECKED". IF THE SEQUENCE NUMBER OF A RECORD IS LESS THAN 00043000
OR EQUAL TO THE SEQUENCE NUMBER OF THE PREVIOUS RECORD THEN THE 00043100
LISTING OF THE RECORD WILL CONTAIN A SEQUENCE ERROR CHECK FLAG 00043200
"********". NO OTHER CROSS REFERENCE CONTROLS WILL BE EXECUTED. 00043300
* 3 00043400
CARD = SOURCE INPUT IS ON A FILE "CARD". 00043500
* 4 00043600
TAPE = SOURCE INPUT IS ON A FILE ON TAPE "0CRDIMG". 00043700
SOURCE INPUT PATCHES ARE ON A FILE "CARD". 00043800
* 3 00043900
DISK,DISC = SOURCE INPUT IS ON A DISK FILE "DISKSYM" "XREF". 00044000
SOURCE INPUT PATCHES ARE ON A FILE "CARD". 00044100
* 3 00044200
CAST B = SOURCE INPUT IS TO BE FOUND ON A SYMBOLIC PROGRAM LIBRARY TAPE,00044300
SUCH A TAPE IS GENERATED BY THE MAKCAST PROGRAM RELEASED AS PART OF THE00044400
STANDARD SOFTWARE SYSTEM. ( THE LETTER "B" 00044500
MAY BE REPLACED BY A "A" OR A 00044600
"C"), (IF "A" IS USED A FILE "CASTA/LIBRARY" ON THE DISK WILL BE USED). 00044700
IN ORDER TO SELECT A PROGRAM OR PROGRAMS ON A CAST TAPE, ONE OF 00044800
THE FOLLOWING CONSTRUCTS MUST BE USED :- 00044900
* SKIP GLOSSARY 10,25,67 00045000
< PROG ID > = THIS SPECIFIES THAT ONLY ONE PROGRAM ON A CAST TAPE IS TO 00045100
BE PROCESSED. THIS SINGLE PROGRAM CAN BE PROCESSED AS IF IT WERE ON A 00045200
TAPE FILE "0CRDIMG". 00045300
* 6 00045400
WITH ALL OTHER COMBINATIONS OF CAST PROGRAM RANGES THE RESEQ AND NEW 00045500
SOURCE FILE OPTIONS ARE NOT ALLOWED, ALSO, NO PATCH CARDS ARE ACCEPTED F00045600
ROM THE FILE "CARDS". 00045700
* 8 00045800
ALL TO END 00045900
= PROCESS ALL PROGRAMS ON THE CAST TAPE. 00046000
* 9 00046100
ALL FROM PROGA TO END = PROCESS ALL PROGRAMS STARTING WITH "PROGA" 00046200
AND CONTINUE TO END OF THE CAST TAPE . 00046300
* SKIP GLOS 00046400
ALL FROM PROGA TO PROGB = PROCESS ALL PROGRAMS STARTING WITH "PROGA" 00046500
AND CONTINUE UP TO AND INCLUDING "PROGB" . 00046600
* 3 00046700
LIST = LIST THE SOURCE INPUT ON THE FILE "PRINT" WHICH IS NORMALLY THE 00046800
LINE PRINTER OR A MCP PRINTER BACKUP TAPE. IF THE RESEQ OPTION IS USED 00046900
(SEE BELOW), THEN THE OLD AND THE NEW SEQUENCE NUMBERS ARE LISTED. 00047000
IF THE SEQUENCE FIELD IS BLANK AND THE RESEQ OPTION IS NOT USED, THEN A 00047100
NUMBER OF THE FORM 99000000 + N IS ASSIGNED. IF A TOTAL CROSS REFERENCE00047200
IS BEING MADE, THEN ON THE LINE FOLLOWING EACH "END" THE SEQUENCE 00047300
NUMBER OF THE CORRESPONDING "BEGIN" APPEARS. 00047400
A "*" IS PRINTED AT THE RIGHT OF THE SEQUENCE NUMBER IF THE RECORD WAS 00047500
READ FROM THE FILE "CARD". 00047600
* 3 00047700
LISTONLY = LIST THE SOURCE INPUT FILES ON THE FILE "PRINT" USING 00047800
PATCH CARDS (IF PRESENT). THE "BEGIN" AND "END" LINKS ARE NOT LISTED 00047900
AND NO CROSS REFERENCE OR DOCUMENT LISTINGS ARE PRODUCED. 00048000
THE PATCH RECORDS ARE FLAGGED WITH AN "*". 00048100
* 3 00048200
TAPEPATCHES = PATCHCARDS ARE TO BE FOUND ON A TAPE "PATCHES". TO CREATE00048300
SUCH A TAPE SEE THE CONTROL NEW PATCHTAPE. THE TAPE WILL HAVE ALL THE 00048400
PROPERTIES OF A CARD PATCH DECK. 00048500
*3 00048600
ONLY = CROSS REFERENCE WILL BE SUPPRESSED AND ONLY FILE 00048700
MAINTENANCE OPERATIONS WILL BE PERFORMED. 00048800
* 3 00048900
BUILD PUNCH = A NEW SET OF RESERVED IDENTIFIERS IS READ FROM THE FILE 00049000
"CARD" AND A SET OF APPROPRIATE DEFINE DECLARATIONS AND A FILL 00049100
STATEMENT (TO FILL THE RESERVED LIST TABLE) ARE PUNCHED ON THE FILE 00049200
"PUNCH". THESE ARE THEN TO BE USED TO RECOMPILE THE CROSS REFERENCE 00049300
PROGRAM. 00049400
* 6 00049500
THE LIST OF RESERVED IDENTIFIERS SHOULD BE DIVIDED INTO "CLASSES". 00049600
THE FORMAT FOR THE INPUT IS AS FOLLOWS :- <CLASS NUMBER> <CLASS LIST> , 00049700
WHERE THE <CLASS NUMBER> IS AN UNSIGNED INTEGER AND THE <CLASS LIST> 00049800
IS A LIST OF THE RESERVED IDENTIFIERS IN THAT CLASS, EXAMPLE :- 00049900
* 6 00050000
1 BEGIN 2 END 3 ELSE 00050100
* 6 00050200
THE CROSS REFERENCE PROGRAM CONTAINS SOME CODE DESIGNED TO RECOGNISE 00050300
CERTAIN "ALGOL" AND "ESPOL" CONSTRUCTS, SUCH AS PROCEDURE HEADINGS , 00050400
FILL STATEMENTS, BEGIN-END PAIRS AND COMMENTS ETC. , THUS IF THIS 00050500
"BUILD" CONTROL FUNCTION IS USED TO CONSTRUCT A NEW RESERVED IDENTIFIER 00050600
LIST FOR ANOTHER PROGRAMMING LANGUAGE THEN THE APPROPRIATE CODE WILL 00050700
HAVE TO BE CHANGED (SEE PART 4). 00050800
* 3 00050900
COPY CAST A LIST = A CAST A TAPE WILL BE COPIED AND LISTED, NO OTHER 00051000
CONTROLS ARE OPERATIVE. THE LIST OPTION MAY BE EMPTY. 00051100
THE CAST FILE "CASTA" "LIBRARY" WILL BE COPIED FROM THE DISK TO 00051200
TAPE AND LABELLED "CASTA". FOR "B" OR "C" A TAPE TO TAPE COPY WILL BE 00051300
MADE. 00051400
* 3 00051500
COPY TAPE LIST = A COPY OF THE "0CRDIMG" TAPE WILL BE MADE TOGETHER WITH00051600
A LISTING. THE LIST OPTION MAY BE EMPTY. 00051700
* 3 00051800
LOGIC = THIS IS A SPECIAL FUNCTION FOR PRODUCING A "WHERE-USED" FILE 00051900
FOR SOME FORMS OF "LOGIC BOOKS" WHICH ARE BEING MAINTAINED ON THE 00052000
B 5500 AS PART OF THE B 220 DESIGN ASSIST PROGRAMMING SYSTEM. 00052100
FURTHER DETAILS MAY BE OBTAINED BY EXAMINING THE PERTINENT ALGOL 00052200
CODE IN THE CROSS REFERENCE SYMBOLIC LISTINGS. 00052300
* 4 00052400
SEQ = THE SOURCE INPUT RECORDS WILL BE SEQUENCE CHECKED, IF THE SEQUENCE00052500
NUMBER OF A RECORD IS LESS THAN OR EQUAL TO THE SEQUENCE NUMBER OF THE 00052600
PREVIOUS RECORD FROM THE SAME FILE, A SEQUENCE ERROR MESSAGE WILL B00052700
E PRINTED ON THE FILE "PRINT". 00052800
* 3 00052900
CHECK = SAME FUNCTION AS "SEQ" DESCRIBED ABOVE. 00053000
* 4 00053100
RESEQ N = THE SOURCE RECORDS WILL BE RESEQUENCED WITH A SEQUENCE INCREME00053200
NT OF N, IF N IS <EMPTY>, AN INCREMENT OF 1000 IS USED. BLANK RECORDS 00053300
(BLANKS IN COLS 1 - 72) ARE IGNORED. 00053400
* 3 00053500
RESEQ N,M = RESEQUENCE WITH SEQUENCE INCREMENT N AND STARTING WITH 00053600
SEQUENCE NUMBER M. 00053700
* 3 00053800
RESEQ 0,0 = ASSIGN BLANK SEQUENCE NUMBERS. 00053900
* 3 00054000
RESEQUENCE = SAME AS THE RESEQ OPTION EXCEPT THAT NO FUNCTIONS OTHER 00054100
THAN <NEW SOURCE FILE PART> AND <LIST OPTION> ARE ALLOWED. 00054200
* 3 00054300
RESEQ DOC = WILL,ALONG WITH RESEQUENCING,REMOVE * OVER CARDS AND 00054400
CHANGE <INSERT PART> TO "PAGE". 00054500
* 4 00054600
VOID N = SOURCE RECORDS ARE READ UNTIL THE FIRST RECORD WITH A SEQUENCE 00054700
NUMBER GREATER THEN OR EQUAL TO N IS FOUND. THIS WILL BE THE FIRST 00054800
RECORD ACCEPTED AFTER THAT VOID . 00054900
* 4 00055000
NEW TAPE = A NEW SOURCE FILE WILL BE CREATED ON TAPE. 00055100
* 4 00055200
NEW = A NEW SOURCE FILE WILL BE CREATED ON TAPE. 00055300
* 4 00055400
NEW PUNCH = A NEW SOURCE FILE WILL BE CREATED ON TAPE AND A DUPLICATE 00055500
CREATED ON PUNCHED CARDS ON A FILE "PUNCH" . 00055600
* 4 00055700
NEW DISK, NEW DISC= A NEW SOURCE FILE WILL BE CREATED ON DISK. 00055800
* 3 00055900
NEW PATCHTAPE = A TAPE EQUIVALENT TO A PATCH DECK WILL BE CREATED, IE TH00056000
E DOLLAR CARDS AND BLANKS WILL NOT BE THROWN AWAY. NOTE,HOWEVER, 00056100
THAT THE VOID OPTION IS NOT AVAILABLE IN THE MIDDLE OF A NEW PATCHTAPE 00056200
CREATION RUN, SINCE THE $VOID CARD WILL JUST BE COPIED ONTO 00056300
THE NEW FILE. 00056400
MAINTENANCE OF A PATCHTAPE CREATED BY THIS CONTROL IS ACHIEVED 00056500
BY A $ TAPE NEW PATCHTAPE CONTROL, SINCE THE TAPE IS SIMILAR TO 00056600
THE TAPE CREATED BY $ NEW TAPE. THE ONLY DIFFERENCE IS THAT THE 00056700
$ CARD RECORDS ARE INCLUDED AS REGULAR RECORDS. 00056800
IF RESEQ OR RESEQUENCE IS USED, 00056900
CARDS WITH BLANK SEQUENCE NUMBERS WILL BE 00057000
SEQUENCED IN STEPS OF THE GIVEN INCREMENT (2 IS DEFAULT CONDITION) 00057100
STARTING WITH THE SEQUENCE NUMBER OF THE 00057110
LAST SEQUENCED CARD. NO OTHER RESEQUENCING WILL BE DONE. 00057200
* 3 00057300
NEW PATCHTAPE PUNCH = THIS WILL PUNCH A DECK FROM THE TAPE "PATCHES", 00057400
INCLUDING $ CARDS. 00057500
* 3 00057600
NEW PUNCH TAPE = AN UNLABELLED BINARY TAPE (80 CHARACTERS PER 00057700
PHYSICAL RECORD) WILL BE PRODUCED WHICH MAY BE USED WITH A SUITABLE 00057800
TAPE TO PUNCH PROGRAM ON THE B 5500 OR B 300 (OR ANY OTHER SYSTEM). 00057900
* 3 00058000
BACKUP N = IF "BACKUP" FOLLOWS (IMMEDIATELY) THE "$" SIGN ON THE 00058100
FIRST ACCEPTABLE CONTROL CARD THEN A FILE "BACKUP" CREATED DURING 00058200
A PREVIOUS "RUN" WILL BE PRINTED. N COPIES WILL BE PRINTED, IF N IS 00058300
EMPTY THEN ONE COPY WILL BE PRINTED. 00058400
* 3 00058500
= IF "BACKUP" APPEARS ELSEWHERE ON THE CONTROL CARD THEN ALL OF THE 00058600
PERTINENT CROSS REFERENCE PROGRAM OUTPUT (EXCEPT THE OUTPUT GENERATED 00058700
BY <LIST OPTION>) WILL BE WRITTEN ON A FILE "BACKUP". 00058800
* 2 00058900
ALTHOUGH THE BACKUP FACILITY MAY NOT BE REQUIRED BY THE USER, IT MAY HAP00059000
PEN (BECAUSE OF CERTAIN COMBINATIONS OF CONTROL FUNCTION) THAT A TEMPORA00059100
RY BACKUP FILE WILL BE REQUIRED. IF A <LIST OPTION> IS USED TOGETHER WI00059200
TH A <BLOCK PART>, THE LISTING OF THE SYMBOLIC CODE WILL BE OUTPUT TO 00059300
THE FILE "PRINT" AND THE LISTING OF THE BLOCK DIAGRAM WILL BE PLACED ON 00059400
A TEMPORARY BACKUP FILE . AT THE END OF THE USE OF THE PRINT FILE THE 00059500
BACKUP FILE IS REWOUND AND COPIED ONTO THE PRINT FILE. IF A BACKUP 00059600
CONTROL APPEARED ON THE CONTROL CARD, THIS LAST COPYING WILL NOT BE 00059700
DONE. A SIMILAR SITUATION OCCURS IF "LIST DOCUMENT" APPEARS ON THE 00059800
CONTROL CARD, IN THIS CASE, ONLY THE SYMBOLIC RECORDS WHICH ARE TO BE 00059900
USED FOR THE DOCUMENT ARE LISTED ON THE PRINT FILE AND THE DOCUMENT 00060000
ITSELF IS PLACED ON THE TEMPORARY BACKUP FILE WHICH IS THEN COPIED ONTO 00060100
THE PRINT FILE. 00060200
*3 00060300
BACKUP DISK = IF THE RUN IS TO CREATE A BACKUP, THE BACKUP FILE 00060400
WILL BE CREATED ON DISK. IF THE BACKUP CONTROL IS 00060500
BEING USED TO PRINT A PREVIOUSLY CREATED BACKUP, IT IS 00060600
EXPECTED THAT THAT FILE, "BACKUPDISK", WILL BE ON DISK. 00060700
*3 00060800
LISTBACKUP = BOTH SOURCE INPUT LISTING AND CROSS REFERENCE OUTPUT WIL00060900
L BE WRITTEN ON THE FILE "BACKUP". 00061000
* 4 00061100
BACKUP UPDATE = PRIOR TO WRITING THE OUTPUT FROM THE PRESENT RUN ON THE 00061200
FILE "BACKUP", THE CONTENTS OF A BACKUP FILE FROM A PREVIOUS RUN IS 00061300
COPIED ONTO THE NEW BACKUP FILE. 00061400
* 4 00061500
PRINT = THE PROGRAM OUTPUT WILL BE WRITTEN ON THE FILE "PRINT" WHICH 00061600
IS NORMALLY THE LINE PRINTER OR THE MCP PRINTER BACKUP TAPE. IF BACKUP 00061700
AND PRINT DO NOT APPEAR ON THE CONTROL CARD, A PRINT OPTION WILL BE 00061800
SUPPLIED. 00061900
*4 00062000
MAKE IRFILE = THIS CONSTRUCTION IS RESERVED FOR FUTURE IMPLEMENTATION. 00062100
* 4 00062200
BLOCK N = A BLOCK DIAGRAM WILL BE DRAWN GIVING ALL THE BEGIN AND END 00062300
SEQUENCE NUMBERS AND ALL PROCEDURE IDENTIFIERS AT THE PLACE WHERE THEY 00062400
HAVE BEEN DECLARED. EACH BEGIN WILL BE INDENTED N COLS FROM THE PRECEEDI00062500
NG BEGIN. IF N IS <EMPTY>, N IS SET TO 2. 00062600
* 3 00062700
SIX N = A PRINTER CONTROL TAPE ALLOWING SIX LINES PER INCH SHOULD BE 00062800
USED FOR ALL OUTPUT LISTINGS. SINGLE SPACE PRINTING IS ASSUMED. UNLESS 00062900
"SIX" IS USED PRINTER OUTPUT WITH EIGHT LINES PER INCH (DOUBLE SPACE) 00063000
IS ASSUMED. 00063100
IF N IS NOT EMPTY, IT IS USED AS THE MAXIMUM NUMBER OF LINES 00063110
PER PAGE. THIS WILL ONLY AFFECT DOCUMENTS. 00063112
IN COUNTING LINES THE USER SHOULD REALIZE THAT ONE LINE IS ALWAYS 00063114
WRITTEN ABOVE THE PAGE NUMBER, EITHER THE TITLE OR A BLANK LINE. 00063116
(THIS IS TO PROVIDE A CONSISTENT FORMAT FOR MERGE RUNS). 00063118
*3 00063200
EIGHT N = EIGHT LINES PER INCH WILL BE FORMATED. IF N IS NOT EMPTY, 00063300
IT IS USED AS THE MAXIMUM NUMBER OF LINES PER PAGE. 00063310
THIS WILL ONLY AFFECT DOCUMENTS. 00063320
*3 00063400
SINGLE = OUTPUT WILL BE SINGLE SPACED. 00063500
*3 00063600
DOUBLE = THE OUTPUT WILL BE DOUBLE SPACED. 00063700
*2 00063800
THE ABOVE FOUR LINE CONTROLS MAY BE FOLLOWED BY AN INTEGER, THE PAGE 00063900
LINE COUNT, WHICH PRESCRIBES THE MAXIMUM NUMBER OF LINES PER PAGE 00064000
TO BE PRINTED. 00064100
* 2 00064200
THE FOLLOWING FIVE CONTROLS SHOULD ONLY BE USED TO ASSIST IN 00064300
MAINTAINING THE CROSS REFERENCE AND EDITING PROGRAM AND SHOULD NOT 00064400
NORMALLY BE USED DURING A "PRODUCTION RUN". 00064500
* 3 00064600
DUMP = DUMP THE SYMBOL TABLES AND ALL OTHER GLOBAL ARRAYS USED IN THE 00064700
PROGRAM. THE DUMP WILL BE OF THE FILE "PRINT" AND OCCURS AT THE END OF 00064800
THE RUN ( THE DUMP IS IN OCTAL). 00064900
* 4 00065000
MONITOR = MONITOR ALL THE NON STREAM PROCEDURE PROCEDURES IN THE PROGRAM00065100
. THIS WILL SHOW THE FLOW OF CONTROL THROUGH THE PROGRAM. 00065200
* 4 00065300
BUGS = EACH TIME AN IDENTIFIER IS ADDED TO THE SYMBOL TABLE, IT IS ALSO 00065400
WRITTEN ON THE FILE "PRINT". 00065500
* 4 00065600
DEBUG = EACH TIME A CALL IS MADE ON THE PROCEDURE SCAN, THE OUTPUT 00065700
PARAMETER VALUES ARE FORMATTED AND WRITTEN ON THE FILE "PRINT". THESE 00065800
PARAMETERS INCLUDE THE FOLLOWING:- THE TYPE OF RESULT FOUND WHETHER AN 00065900
IDENTIFIER, 00066000
A NUMBER OR A SPECIAL CHARACTER AND THE SIZE OF THE ENTITY FOUND, TH00066100
E ADDRESS OF THE NEXT CHARACTER TO BE SCANNED AND THE ADDRESS OF THE LAS00066200
T CHARACTER POSITION OF THE ARRAY WHICH CAN BE SCANNED. 00066300
* 3 00066400
DOCDEBUG = EACH TIME A NEW PAGE IS PRINTED WHEN IN THE "DOCUMENT" 00066500
MODE (SEE BELOW) EACH COLUMN NUMBER WILL BE PRINTED AT THE HEAD OF 00066600
EACH PAGE. THIS ASSISTS IN THE FORMING AND CHECKING OF THE LAYOUT 00066700
OF THE DOCUMENT. 00066800
* 3 00066810
DEBEATLE = USED IN MERGE OR TRANS RUNS, THIS CONTROL WILL PRINT OUT 00066820
INFORMATION IN INTERMEDIATE STAGES OF PREPARATION FOR A DEBUGGING AID. 00066822
* 4 00066900
"HEADER PART" = INFORMATION ENCLOSED BETWEEN THE QUOTES WILL BE 00067000
INCLUDED IN THE HEADING OF EACH PAGE OF OUTPUT WRITTEN ON THE FILES 00067100
"PRINT" AND "BACKUP". 00067200
* 3 00067300
RESERVED = RESERVED IDENTIFIERS WILL BE INCLUDED IN THE CROSS REFERENCE 00067400
LISTINGS. IF THIS FUNCTION IS NOT USED THEN THE IDENTIFIERS 00067500
WHICH ARE RESERVED WITHIN "STREAM PROCEDURES" ARE NOT CONSIDERED AS 00067600
RESERVED OUTSIDE "STREAM PROCEDURES". 00067700
* 3 00067800
OP,OPS = USED ONLY WITH B3500. CAUSES OPCODES TO BE CROSS REFERENCED. 00067900
* 3 00068000
LARGE = TO BE USED IF THE USER ANTICIPATES THAT THE NUMBER OF 00068100
CROSS REFERENCE ENTRIES WILL EXCEED 32000 (THE MAXIMUM TABLE SPACE 00068200
PROVIDED). THE ITEMS WILL BE WRITTEN ON A FILE ON THE DISK AND SORTED 00068300
BY USE OF THE "SORT" INTRINSIC FUNCTION NOW PROVIDED BY THE MCP. 00068400
IT APPEARS THAT THIS CONTROL MAY ALSO SHORTEN THE 00068500
RUNNING TIME FOR MODERATELY LARGE FILES. 00068600
AN INTEGER FOLLOWING "LARGE " INDICATES THE CORE SIZE TO BE USED 00068700
IN THE SORT. DEFAULT CONDITION IS 6000. 00068800
* 3 00068900
COMMENT = ALL IDENTIFIERS APPEARING WITHIN "COMMENTS" WILL BE CROSS 00069000
REFERENCED. 00069100
* 3 00069200
STRING N = ALL STRINGS OF LENGTHS LESS THAN OR EQUAL TO N (INCLUDING 00069300
THE QUOTES) WILL BE CROSS REFERENCED. IF N IS EMPTY IT IS SET EQUAL TO 00069400
EIGHT. 00069500
* 3 00069600
BPL = BPL SYMBOLIC FILES ARE TO BE CROSS 00069700
REFERENCED, (THE RESERVED 00069800
IDENTIFIER LIST FOR BPL IS DIFFERENT FROM THE RESERVED IDENTIFIER 00069900
LIST FOR ALGOL). 00070000
*3 00070100
ESPOL = ESPOL SYMBOLIC FILES ARE TO BE CROSS REFERENCED. 00070200
* 3 00070300
COBOL = COBOL SYMBOLIC FILES ARE TO BE CROSS REFERENCED. 00070400
*3 00070500
B3500 = B3500 ASSEMBLY CODE FILES ARE TO BE CROSS REFERENCED. 00070600
* 3 00070700
SIMULA = CROSS REFERENCE SIMULA SOURCE FILES. THIS CONTROL 00070710
WILL ACTUALLY CAUSE AN ALGOL CROSS-REFERENCE BUT WILL TREAT CERTAIN 00070712
ADDITIONAL SIMULA RESERVED WORDS AS STATEMENT-ENDERS. 00070714
* 3 00070716
FORTRAN = A FORTRAN SOURCE FILE IS EXPECTED. 00070718
THE PROGRAM ASSUMES THAT KEY WORDS ARE SEPARATED AS IN ALGOL AND THAT 00070720
KEY WORDS ARE NOT USED AS IDENTIFIERS. 00070722
* 3 00070724
FORTRAN HOL = HOLLERITH CHARACTER SET IS EXPECTED AND 00070726
TRANSLATED INTO BCL FOR OUTPUT. 00070728
*3 00070730
REMOTE = THIS WAS INTRODUCED FOR USE WITH THE REMOTE PROGRAMMING SYSTEM.00070800
ALL LISTING WILL BE RESTRICED TO 80 COLUMNS, THAT IS ALL OUTPUT 00070900
LISTINGS CAN BE PRINTED ON 8.5 | 11.0 INCH PAPER. 00071000
* 4 00071100
COUNT = GATHER STATISTICS ON THE IDENTIFIERS OF THE GIVEN PROGRAM. THIS 00071200
OPTION SHOULD BE USED IF THE TOTAL NUMBER OF CROSS REFERENCE ENTRIES MAY00071300
BE GREATER THAN 32000, THIS BEING THE LARGEST NUMBER OF ENTRIES WHICH C00071400
AN BE ACCOMODATED BY THE ARRAYS WITHIN THE PROGRAM. THE COBOL COMPILER 00071500
AND THE MCP ARE SUCH PROGRAMS. IF THE STATISTICS SHOW THAT T00071600
HE LIMIT WOULD BE EXCEEDED, THE SELECTED XREF RANGE OF LETTER OPTION (S00071700
EE BELOW) OR THE LARGE OPTION (SEE ABOVE) SHOULD BE USED. 00071800
A SORTED LIST OF ALL THE IDENTIFIERS WILL BE PRODUCED. 00071900
* 3 00072000
IDENTIFIERS = SAME AS COUNT DESCRIBED ABOVE. 00072100
* 3 00072200
SORT = ALL IDENTIFIERS IN THE SOURCE FILES WILL BE CROSS REFERENCED 00072300
(INCLUDING 00072400
RESERVED IDENTIFIERS AND IDENTIFIERS WITHIN COMMENTS). 00072500
THIS CONTROL MAY BE USED IN "FREQUENCY" COUNT EXPERIMENTS. 00072600
*3 00072700
SHUFFLE = THIS MAY BE USED WITH AN <INPUT SOURCE FILE PART> WHICH 00072800
DENOTES "TAPE". NO PATCH CARDS FOR THE SYMBOLIC FILE ARE ALLOWED IN 00072900
THE FILE "CARD". 00073000
* SKIP PARAGRAPH 25,67,0 * 00073100
THE PURPOSE OF THIS FUNCTION IS TO ALLOW A NEW FILE TO BE CREATED 00073200
BY "SHUFFLING" AN EXISTING TAPE FILE. EACH DATA RECORD IN THE FILE 00073300
"CARD" SHOULD CONTAIN FOUR UNSIGNED INTEGERS SEPARATED BY COMMAS. 00073400
THE SYNTAX FOR THE INTEGERS IS :- 00073500
* SKIP INDENT 20 00073600
<OLD START>,<OLD FINISH>,<NEW START>,<INCREMENT>, 00073700
* SKIP PARAGRAPH 25,67,0 * 00073800
ALL RECORDS IN THE EXISTING FILE WITH SEQUENCE NUMBERS IN THE RANGE 00073900
<OLD START> TO < OLD FINISH> (INCLUSIVE) WILL BE REPRODUCED AND 00074000
RESEQUENCED STARTING WITH <NEW START> AND WITH SEQUENCE INCREMENT 00074100
<INCREMENT>. 00074200
* SKIP PARAGRAPH 25,67,0 * 00074300
A "NEW PUNCH" OR "NEW TAPE" CONTROL SHOULD BE USED WITH THE "SHUFFLE" 00074400
CONTROL. IF "RESEQ" OR "RESEQUENCE" IS USED THEN <NEW START> AND 00074500
<INCREMENT> ARE IGNORED (THEIR POSITIONS ON THE DATA CARD MUST BE 00074600
REPLACED BY COMMAS). 00074700
* 4 00074800
XREF C = CROSS REFERENCE ONLY THE IDENTIFIERS WHOSE INITIAL LETTER IS A 00074900
"C" OR WHATEVER SINGLE LETTER IS SPECIFIED. 00075000
* 4 00075100
XREF B TO R = CROSS REFERENCE ALL THE IDENTIFIERS WHOSE INITIAL LETTER 00075200
FALLS WITHIN THE RANGE "B" TO "R" INCLUSIVE (OR WHATEVER RANGE IS SPECIF00075300
IED) . 00075400
* 4 00075500
PROCEDURE = CROSS REFERENCE ONLY PROCEDURE IDENTIFIERS. 00075600
* 4 00075700
NAMES = CROSS REFERENCE ONLY A SELECTED SET OF IDENTIFIERS. THESE 00075800
IDENTIFIERS FOLLOW THE "NAMES" OPTION AND ARE TERMINATED BY AN ASTERISK 00075900
"*". IF REQUIRED, THESE NAMES MAY BE PLACED ON CONTINUATION CARDS AS 00076000
MENTIONED ABOVE. 00076100
* 3 00076200
PATCH = ALL RECORDS CONTAINED ON "TAPE" OR "CAST" FILES HAVING SEQUENCE 00076300
NUMBERS EQUAL TO THE SEQUENCE NUMBERS ON THE "PATCH" CARDS IN THE 00076400
"CARD" FILE WILL BE PUNCHED. 00076500
THIS MAY BE USED WHEN SIMILAR CONSTRUCTS ON MANY RECORDS HAVE TO BE 00076600
CHANGED, EXAMPLE A TWO DIMENSIONAL ARRAY A[I,J] IS TO BE CHANGED TO A 00076700
ONE DIMENSIONAL ARRAY A[I]. IN THIS CASE CROSS REFERENCE LISTING WILL 00076800
SHOW THE SEQUENCE NUMBERS WHERE "A" IS USED, A SET OF BLANK PATCH 00076900
CARDS ARE PREPARED CONTAINING THESE SEQUENCE NUMBERS AND BY USING 00077000
THE "PATCH" CONTROL THE PERTINENT RECORDS WILL BE PUNCHED. THESE MAY 00077100
THEN BE CORRECTED AND USED AS NEW PATCH CARDS TO RECOMPILE THE PROGRAM. 00077200
* 3 00077300
NAMEPUNCH = THE RECORD CORRESPONDING TO EVERY SEQUENCE NUMBER 00077400
ENTERED IN THE CROSS REFERENCE TABLE WILL BE PUNCHED. THIS OPTION SHOULD00077500
BE USED WITH THE "NAMES" OPTION IF CORRECTIONS HAVE TO BE MADE TO THE 00077600
RECORDS. IF AN IDENTIFIER APPEARS MORE THAN ONCE ON A RECORD ONLY 00077700
ONE COPY OF THE RECORD WILL BE PUNCHED. 00077800
* 3 00077900
NAMEPUNCH BLANK =THIS CONTROL PUNCHES OUT BLANK CARDS WITH THE 00077910
SEQUENCE NUMBERS OF ALL CARDS HAVING THE NAMED IDENTIFIERS. 00077912
* 3 00077914
DOCONLY = SEMICOLONS ARE USED (IN ALGOL AND ESPOL) TO TERMINATE 00078000
COMMENTS, THUS IF SEMICOLONS ARE TO BE INCLUDED WITHIN DOCUMENT COMMENTS00078100
THE "PERCENT" DOCUMENT CONTROL DESCRIBED IN PART 2 SHOULD BE USED. 00078200
HOWEVER, IF THE "DOCUMENT" IS NOT PART OF AN ALGOL OR ESPOL SYMBOLIC 00078300
PROGRAM BUT IS SELF-SUFFICIENT, EXAMPLE PRODUCT SPECIFICATIONS, 00078400
PROGRAMMING MANUALS ETC THEN SEMICOLONS MAY BE USED WITHIN THESE 00078500
DOCUMENTS IF THE "DOCONLY" CONTROL IS USED. THE CONTROL INHIBITS THE 00078600
CHECKING OF SEMICOLONS IN THE DOCUMENT. 00078700
* 4 00078800
DOCUMENT = PRODUCE A DOCUMENT BY SCANNING THE SOURCE INPUT TO 00078900
FIND COMMENTS SUCH AS ARE DESCRIBED IN PART 2 OF THIS DOCUMENT. 00079000
* 3 00079100
DOCUMENT "MANUAL" = THIS CONTROL ASSUMES THAT STRINGS 00079110
IDENTIFY THE VARIOUS DOCUMENTS ON THE SOURCE FILE. DOCUMENT 00079112
"MANUAL" WILL PRODUCE ONLY THAT DOCUMENT LABELLED WITH THE STRING 00079114
"MANUAL". THIS LABELLING IS DONE BY PLACING THE DESIRED STRING AFTER 00079116
THE "COMMENT DOCUMENT" FOR THAT DOCUMENT, ON THE SAME CARD. THE 00079118
DOCUMENT TERMINATES WITH THE NEXT "FINISH" OR "QUIT". 00079120
* 3 00079122
DOCUMENT "APP-2" TO "APP-5" = PRODUCE DOCUMENTS STARTING WITH THE 00079124
DOCUMENT LABELLED "APP-2" AND 00079126
ENDING WITH THAT LABELLED "APP-5". 00079128
* 3 00079130
DOCUMENT FINAL = SAME AS DOCUMENT EXCEPT THAT SEQUENCE NUMBERS ARE 00079200
NOT PRINTED IN THE DOCUMENT. ERROR MESSAGES ARE NOT 00079300
INHIBITED. 00079400
* 3 00079500
DOCUMENT CONTENTS ONLY = A DOCUMENT IS GENERATED BUT NOT PRINTED OR 00079600
SAVED BUT THE PERTINENT "TABLE OF CONTENTS" ARE PRINTED 00079700
ON THE FILE "PRINT". 00079800
* 3 00079900
DOCUMENT SYNTAX =EXTRACT ONLY THE PORTIONS OF THE DOCUMENT WHICH FOLLOW 00080000
THE USE OF A DOCUMENT <SPECIAL PART> (SEE DOCUMENT CONTROL SYNATX). 00080100
IF THE IDENTIFIER "FINAL" APPEARS AFTER "SYNTAX" THE FINAL DOCUMENT 00080200
WILL BE PRINTED. 00080300
*3 00080400
BNF = THE DOCUMENT TO BE CROSS REFERENCED CONSISTS OF BACKUS NORMAL FORM00080500
SYNTAX SUCH AS THAT ON PAGE SEVEN OF THIS DOCUMENT. METALINGUISTIC 00080600
VARIABLES WILL BE CROSS REFERENCED. 00080700
*3 00080800
NOJUSTIFY = SUPPRESS JUSTIFICATION OF THE RIGHT MARGIN. 00080810
* 3 00080812
DOCINDEX = REPLACE THE REGULAR DOCUMENT CONTROLS CROSS-REFERENCE 00080814
WITH A CROSS-REFERENCE OF SELECTED ITEMS REQUESTED 00080816
DURING THE COURSE OF THE DOCUMENT (SEE THE CONTROL "NAMES" IN SECTION 2 00080818
OF THIS MANUAL). 00080820
* 3 00080822
UPDATE = A NEW DOCUMENT IS CREATED FROM SOURCE FILE 00080900
AND PATCH CARDS USING SECTIONS OF DOCUMENT BETWEEN "PAGE" OR 00081000
"INSERTPAGE" CONTROLS AS LOGICAL UNITS. A CONTINUATION PAGE WILL BE 00081100
GENERATED IF NECESSARY. 00081200
NOTE THAT THE DOCUMENT WILL BE WRITTEN ON THE 00081300
FILE "PRINT" UNLESS THE "BACKUP" OUTPUT FILE CONTROL IS USED. 00081400
THE PROGRAM FORCES BACKUP TO DISK. 00081500
A DIRECTORY IS BUILT DESCRIBING THE DOCUMENT. THIS DIRECTORY IS USED BY00081600
THE "MERGE" PHASE OF DOCUMENT UPDATING. 00081700
* 3 00081800
DOCUMENT XREF = A CROSS REFERENCE LISTING WITH ALL IDENTIFIERS FOUND ON 00081900
"* CONTROL RECORDS" (SEE PART 2) AND ALSO FOR DOCUMENT "DEFINES". 00082000
NO DOCUMENT WILL BE PRODUCED. THIS CROSS REFERENCE LISTING IS 00082100
SUPPLIED AUTOMATICALLY WITH A "DOCUMENT" RUN BUT IS INHIBITED IN A 00082200
"DOCUMENT FINAL" RUN. 00082300
* 3 00082400
FLOW = THE SOURCE INPUT FILES ARE TO BE SEARCHED FOR COMMENTS WHICH 00082500
START WITH "COMMENT FLOW". THE CONTENTS OF SUCH COMMENTS SHOULD 00082600
CONTAIN DESCRIPTIONS OF FLOW CHARTS ACCORDING TO THE SYNTAX GIVEN 00082700
IN PART THREE OF THIS DOCUMENT. 00082800
* 3 00082900
FLOW SYNTAX = PERFORM A SYNTAX CHECK ONLY OF THE "COMMENT FLOW" 00083000
COMMENTS. NO FLOW CHARTS WILL BE DRAWN. 00083100
* 3 00083200
FLOW NOBOX = ONLY "TEST" BOXES AND "LABELS" WILL BE ENCLOSED 00083300
IN BOXES. THE OTHER "BOX" CONTENTS WILL BE CENTERED WITHIN THE 00083400
APPROPRIATE FLOW CHART COLUMN. 00083500
* 3 00083600
ASMFLOW = SAME AS FLOW EXCEPT THAT LABELS MAY HAVE SPECIAL CHARACTERS 00083700
IN THEM. 00083800
* 3 00083900
QFLOW = SAME AS FLOW, BUT DOCUMENT-LIKE EDITING IS DONE 00083910
ON THE TEXT. SPECIFICALLY, CERTAIN CHARACTERS ARE COMBINED WITH ITEMS 00083912
FOLLOWING OR PRECEDING THEM (EG "(" ",") AND STRINGS ARE BROKEN UP IF 00083914
NECESSARY TO FIT ON A LINE. 00083916
* 3 00083918
REVISION N = THIS CONTROL CAUSES THE REVISION TO BE WRITTEN 00084000
AT THE HEAD OF EVERY PAGE. THE REVISION NUMBER IS ASSUMED TO BE ONE 00084100
IF N IS EMPTY. 00084200
* 3 00084300
REVISION CLEAR N = THE DOCUMENT WILL BE ASSIGNED THE REVISION N FOR 00084400
PURPOSES OF UDPDATING, BUT THE REVISION WILL NOT BE WRITTEN ON ANY 00084500
PAGE. 00084600
* 3 00084700
TRANS = TRANSLATE B3500 ASSEMBLY LANGUAGE INTO FLOW CHART LANGUAGE. 00084800
* 3 00084900
SEGS N-M, ...= TRANSLATE AND FLOWCHART ONLY THE REQUESTED 00085000
SEGMENTS. 00085100
* 3 00085200
ESCAPE C = IGNORE REMARKS BEGINNING WITH C. 00085300
*3 00085400
ESCAPE N C D ... = IGNORE REMARKS BEGINNING WITH ANY OF THE N 00085500
ENTITIES C, D, .... NO MORE THAN FIVE SUCH 00085600
ENTITIES MAY BE DESIGNATED. 00085700
EXAMPLES MIGHT BE "#", "DEBUG" . 00085800
* 3 00085900
DATA= PRINT CONSTANTS, WHICH ARE NORMALLY SUPPRESSED, 00086000
AS A TABLE. 00086100
* 3 00086200
MERGE = THE CONTROL MERGE BASICALLY INITIATES A COMPARISON 00086300
BETWEEN TWO DOCUMENTS, THE DISK FILES "OLDDOC" AND "NEWDOC". DURING 00086400
THIS COMPARISON PAGES OF "NEWDOC" WHICH DIFFER FROM THOSE OF "OLDDOC" 00086500
ARE WRITTEN ON THE DESIGNATED FILE. THIS WILL BE PRINT UNLESS THE 00086600
CONTROL 00086700
"BACKUP" IS USED. 00086800
A CURRENT PAGE REVISION INDEX AND A CHANGE INDEX ARE ALSO WRITTEN. 00086900
IF THE 00087000
"REVISION" DOCUMENT CONTROL WAS IN EFFECT DURING THE CREATION 00087100
OF "NEWDOC", THE REVISION IS UPDATED ON THE CHANGED PAGES. 00087200
*2 00087300
THE LIST CONTROL HERE ONLY CAUSES THE $ CARD TO BE WRITTEN. 00087400
* 3 00087500
DIRECTORY= THE DIRECTORY OF THE FILE "OLDDOC" IS WRITTEN BEFORE THE 00087600
MERGE IS PERFORMED. 00087700
* 3 00087800
DIRECTORY ONLY = THE DIRECTORY 00087900
IS WRITTEN AND MERGE IS SUPPRESSED. THE FILE "NEWDOC" IS NOT NEEDED. 00088000
* 3 00088100
PRINTALL = THE MERGE IS PERFORMED, BUT ALL PAGES, NOT 00088200
JUST CHANGED ONES, WILL BE WRITTEN ON THE DESIGNATED FILE. 00088300
* 3 00088400
PRINTALL ONLY = THE MERGE IS SUPPRESSED AND THE FILE "NEWDOC" IS NOT 00088500
NEEDED. THIS CONTROL IS EQUIVALENT TO "$BACKUP DISK" EXCEPT 00088600
THAT THE FILE TO BE PRINTED IS CALLED "OLDDOC " INSTEAD OF 00088700
"BACKUPDISK". 00088800
* 3 00088900
PRINTSELECT = A MERGE IS PERFORMED BUT ONLY THE PAGES 00089000
LISTED WILL BE WRITTEN. 00089100
* 3 00089200
PRINTSELECT ONLY= MERGE IS SUPPRESSED AND ONLY THE FILE "OLDDOC" IS 00089300
NEEDED. 00089400
* 3 00089500
TITLE = WHEN THE USER KNOWS THAT THE FIRST PAGE OF 00089510
HIS DOCUMENT HAS A TITLE, HE MAY USE THIS CONTROL. THAT TITLE WILL BE 00089512
READ OFF THE FIRST PAGE OF THE DOCUMENT AND PRINTED AS A HEADING 00089514
IN THE CHANGE AND REVISION INDICES. 00089516
* 3 00089518
DA = PRODUCE THE TITLE, AS ABOVE. ALSO, START NUMBERING THE 00089520
CHANGE INDEX WITH .15 AND THE REVISION INDEX WITH .2. 00089522
* 3 00089524
MAKEMUL = SAME AS MAKEMULTI. 00089600
* 3 00089700
MAKEMULTI = A MULTIFILE TAPE OR DISK FILE IS CREATED FROM 00089800
INPUT SOURCE FILES SPECIFIED BY DATA CARDS. THE USER MAY 00089900
HAVE ALL OF HIS SOURCE FILES ON DISK OR ALL OF THEM ON TAPE. 00090000
IN THOSE CASES HE MAY SPECIFY THE <INPUT FILE> ON THE $ CARD. 00090100
IT IS ALSO POSSIBLE TO HAVE THE INPUT SOURCE FILES ON BOTH TAPE AND 00090200
DISK. IN THAT CASE THE USER MUST SPECIFY ON EACH DATA CARD WHERE THAT 00090300
FILE IS TO BE FOUND. 00090400
* SKIP PARAGRAPH 25,67,0 00090500
THE SYNTAX FOR THE DATA CARDS IS 00090600
* SKIP INDENT 20 00090700
<FILE NAME IN>, <FILE NAME OUT> <INPUT PART> 00090800
<INPUT PART> := ,<INPUT FILE> / <EMPTY> 00090900
<FILE NAME IN> ::= <MULTIFILE NAME>/<FILE NAME> 00091000
<FILE NAME OUT> ::= <MULTIFILE NAME>/<FILE NAME> 00091100
<MULTIFILE NAME> ::= {GROUP OF CHARACTERS NOT 00091200
* INDENT 30 00091300
BEGINNING WITH A SPECIAL CHARACTER 00091400
AND NOT CONTAINING THE CHARACTERS 00091500
"/" OR ","} 00091600
* INDENT 20 00091700
<FILE NAME> := {SAME AS MULTIFILE NAME} 00091800
* 2 00091900
THE CONTROL "LIST" WILL CAUSE A LISTING OF ALL THE FILES MOVED. 00092000
THE CONTROL "PUNCH" WILL CAUSE A DATA DECK FOR USE WITH THE NEW 00092100
MULTIFILE FILES. 00092200
*2 00092300
IF THE FILE IS BEING CREATED ON TAPE, ALL FILES MUST HAVE THE SAME 00092400
<MULTIFILE NAME> IN THE <FILE NAME OUT> 00092500
*2 00092600
THE WORD "DIRECTORY" WILL CAUSE A DIRECTORY OF THE NEW MULTIFILE 00092700
REEL OR DISK FILE TO BE WRITTEN AS THE FIRST MULTIFILE FILE. 00092800
ITS NAME WILL BE <MULTIFILE NAME>/DIRECTORY. 00092900
* 3 00093000
PPAGES = WHEN A PAGE OVERFLOW OCCURS IN A DOCUMENT, THE APPROPRIATE 00093100
RECORDS TO CAUSE EXPLICIT PAGING AT THAT POINT ARE WRITTEN ON THE 00093200
FILE "PRINT". 00093300
*3 00093400
PPAGES PUNCH = THE EXPLICIT PAGING CARDS ARE WRITTEN ON "PUNCH". 00093500
* 3 00093600
PPAGES INSERTPAGE = THE EXPLICIT PAGING RECORDS WRITTEN ON "PRINT" 00093700
ARE THOSE NECESSARY TO CAUSE THE TYPE OF PAGING DESCRIBED UNDER 00093800
THE CONTROL"INSERTPAGE" IN PART TWO OF THIS DOCUMENT. 00093900
* 3 00094000
PPAGES INSERTPAGE PUNCH = EXPLICIT INSERTPAGE CARDS ARE WRITTEN ON 00094100
"PUNCH". 00094200
* PAGEID 1,"APP-1-" 00094300
* 7 00094400
SAMPLE CROSS REFERENCE LISTINGS. 00094500
* 13 00094600
LISTING OF PROCEDURE IDENTIFIERS 00094700
* SKIP INDENT 10 00094800
01251000 2 ASTERCONTROLS 00094900
01785000 1 BEGINCOUNT 00095000
01190000 1 BITFIELDCONVERT 00095100
02266000 1 BLANKMARGINS 00095200
01418000 1 BLANKTEST 00095300
02119000 1 BUILDRESERVED 00095400
01893000 1 BUILDXREF 00095500
01392000 1 CHAREQUAL 00095600
01400000 1 CHARGREAT 00095700
01434000 1 CHECKCHAR 00095800
01450000 1 CHECKCOMMENT 00095900
01428000 1 CHECKDOLLAR 00096000
01135000 1 CLEAR 00096100
01141000 1 CLEARCHAR 00096200
03110000 1 COPY 00096300
02285000 1 COUNTABPOS 00096400
01178000 1 DECTOOCT 00096500
01252000 2 DOCERROR 00096600
01184000 1 DTOCT 00096700
01935000 1 DUMPARRAYROW 00096800
* 14 00096900
CROSS REFERENCE STATISTICS. 00097000
* SKIP 00097100
TOTAL NUMBER OF POSSIBLE XREF ENTRIES= 5915 00097200
NUMBER OF WORDS REQUIRED BY SYMBOL TABLE= 2029 00097300
NUMBER OF XREF ENTRIES PRINTED BELOW= 5915 00097400
NUMBER OF CARDS CONTAINING XREFS= 2457 00097500
NUMBER OF CARD IMAGES SCANNED = 4291 00097600
NUMBER OF IDENTIFIERS = 137 00097700
NUMBER OF XREF PER FIRST LETTER 00097800
LETTER COUNT LETTER COUNT LETTER COUNT LETTER COUNT 00097900
0 0 1 0 2 0 3 0 00098000
4 0 5 0 6 0 7 0 00098100
8 0 9 0 # 0 @ 0 00098200
* INVALID 6 00098300
Q 0 : 0 > 0 } 0 00098400
+ 0 A 198 B 423 C 597 00098500
D 393 E 162 F 246 G 97 00098600
H 37 I 233 . 0 [ 0 00098700
& 0 ( 0 < 0 ~ 0 00098800
| 0 J 31 K 3 L 422 00098900
M 255 N 463 O 29 P 701 00099000
Q 182 R 316 $ 0 * 0 00099100
- 0 ) 0 0 { 0 00099200
0 / 0 S 547 T 338 00099300
U 19 V 18 W 38 X 166 00099400
Y 0 Z 1 , 0 % 0 00099500
! 0 = 0 ] 0 0 00099600
* 14 00099700
LIST OF IDENTIFIERS CROSS REFERENCED 00099800
* SKIP 00099900
A ALLOW AND ARRAY A4 00100000
B BACKUP BACKUPTOG BADRUN BE BEGIN BLANKARRAY BOOLEAN BUILDXREF 00100100
CASTLINKS CCSEQ CERTAIN CLEAR CLOSE CONTCARD CONTIND 00100200
DATE DBL DEFINE DEFINES DEFUSETOG DI DISCMCP DO DOCBUFF DOCEDIT DOCER 00100300
DOCERROR DOCONLY DOCTOG DOCXREFTOG DOLLARFLAG DOUBLETOG DS DXREF 00100400
DXREFHEAD 00100500
ELSE END EOPROG ETC EXIT 00100600
FALSE FERROR FILE FINALDOCTOG FINITOG FIRSTCASTID FIXUNDERLINE FOR 00100700
FORMAT FORMTOG F7 00100800
GENERALISED GLOBE GLOSSTOG GO GOODRUN 00100900
I IF IJUNK IMPLEMENTED IN INVTOG I4 00101000
LABELUSE LASTDOCER LASTERROR LCSEQ LISTBUFFER LISTCARDTOG LISTOG 00101100
LISTONLYTOG LIT 00101200
MAKE MARKER MAXCOLS MORE MOVEWORDS 00101300
N NEWPAGE NEWTOG NLINES NOSPOTOG NOT NTAPE 00101400
OCTTODEC OR OUT 00101500
PAGE PAGETOG PARAGRAPHS PARINDENT PARLOW PATCHFLAG PATCHTOG PATTER PRINT00101600
PRINTOG PRINTXREF PROCEDURE 00101700
Q 00101800
RELEASE REMOTETOG RESEQTOG RESULT 00101900
SBTOG SC SEQ SEQBLANKTOG SEQSPLIT SEQTOG SEQUENCE SETCHAR SI SINGLE 00102000
SKIPTOG SORTSCRAMBLE SPACE SPOOUT START STEP STREAM SWITCH S1 S2 00102100
T TAPE TAPETOG TBUFF THEN TO TOTALERRORS TRUE 00102200
UNDERBUFF UNDERTOG UNTIL 00102300
VOIDTOG 00102400
WDS WRITE 00102500
XREFHEAD XREFSEQ X16 X2 X22 X40 X8 X80 00102600
" " " " " ERRORS" " LIST" " SECS" "****" "*" "-" "EOJ XREF" "XXXX" 00102700
"21 OCT" "3TAB " "4FORM " "5CHECK" "5PATCH" "6FORMA" "6REMOT" "6SINGL" 00102800
"8TABUL" "9UNDER" 00102900
* 14 00103000
BLOCK DIAGRAM. 00103100
* SKIP 2 SINGLE 00103200
00001000 BEGIN 00103300
. 00103400
01160000 . STREAM PROCEDURE SEQCOMP 00103500
. 00103600
01161000 . BEGIN 00103700
. . 00103800
01165000 . . BEGIN 00103900
. . . 00104000
01168000 . . END 00104100
. . 00104200
01170000 . END 00104300
. 00104400
01250000 . PROCEDURE READATAPE 00104500
. 00104600
01251000 . PROCEDURE ASTERCONTROLS 00104700
. 00104800
01252000 . PROCEDURE DOCERROR 00104900
. 00105000
01255000 . STREAM PROCEDURE SCANNER 00105100
. 00105200
01258000 . BEGIN 00105300
. . 00105400
01274000 . . BEGIN 00105500
. . . 00105600
01276000 . . END 00105700
. . 00105800
01279000 . . BEGIN 00105900
. . . 00106000
01279000 . . END 00106100
. . 00106200
01286000 . . BEGIN 00106300
. . . 00106400
01289000 . . . BEGIN 00106500
. . . . 00106600
01293000 . . . END 00106700
. . . 00106800
01297000 . . END 00106900
. . 00107000
01298000 . . BEGIN 00107100
. . . 00107200
01301000 . . END 00107300
. . 00107400
01302000 . . BEGIN 00107500
. . . 00107600
01308000 . . END 00107700
. . 00107800
01313000 . . BEGIN 00107900
. . . 00108000
01315000 . . END 00108100
. . 00108200
01336000 . END 00108300
. 00108400
01604000 . PROCEDURE PRINTCASTDIRECTORY 00108500
. 00108600
01605000 . BEGIN 00108700
. . 00108800
01612000 . . BEGIN 00108900
. . . 00109000
01621000 . . END 00109100
. . 00109200
01624000 . END 00109300
. 00109400
04106000 END 00109500
* 14 00109600
IDENTIFIER CROSS REFERENCE LIST. 00109700
* SKIP 2 00109800
BITFIELDCONVERT (000002) *01190000* 02668000 00109900
DUMPARRAYS (000003) *00750000**01979000* 04065000 00110000
EOF (000011) 00974000 01505000 02098000 02110000 *02116000* 00110100
03464000 03479000 03876000 03879000 *03887000* 00110200
*04028000* 00110300
FILE (000023) 00727000 00728000 00729000 00730000 00731000 00110400
00732000 00733000 00734000 00735000 00736000 00110500
00737000 00738000 00739000 00740000 00741000 00110600
00742000 00743000 00744000 01019000 01058000 00110700
01093000 01940000 03413000 00110800
L (000027) 01028000 01033000 *01034000* 01038000 *01043000* 00110900
01043000 01066000 01072000 *01073000* 01078000 00111000
*01082000* 01082000 01259000 *01279000* 01279000 00111100
01411000 01413000 *01415000* 01421000 01423000 00111200
*01425000* 02269000 02271000 *02273000* 03432000 00111300
*03443000* 03446000 00111400
NEXT (000059) 00973000 01464000 *01479000* 01493000 01497000 00111500
01629000 01642000 01643000 01645000 02148000 00111600
02151000 02154000 02154000 02156000 02160000 00111700
02162000 02165000 02210000 02227000 02228000 00111800
02230000 02231000 02232000 02233000 02233000 00111900
02237000 02251000 *02415000* 02430000 02453000 00112000
02819000 02826000 02854000 *02874000* 02891000 00112100
02913000 02930000 02979000 02981000 02982000 00112200
02985000 02992000 03002000 03019000 03029000 00112300
03049000 03052000 03053000 03060000 03061000 00112400
03078000 03082000 03083000 03086000 03087000 00112500
03099000 03105000 *03899000* 04019000 00112600
READATAPE (000017)*01250000* 01366000 01368000 01371000 02376000 00112700
02415000 02821000 03159000 03160000 03164000 00112800
03190000 03285000 03374000 03424000 03425000 00112900
*03430000* 03855000 00113000
SCANNER (000002) *01255000* 01346000 00113100
EOJ XREF NO ERRORS 242.00 SECS 00113200
* 7 00113300
SAMPLE ASSEMBLY FLOWCHARTING RUNS 00113400
* 1 00113500
THE CONTROL "TRANS" IS USED TO TRANSLATE B3500 ASSEMBLY LANGUAGE 00113600
PROGRAMS INTO THE XREF FLOWCHART LANGUAGE. 00113700
THE INPUT FILES, AS USUAL, MAY BE CARD ,TAPE (B5500 BLOCKED 56,10) 00113800
OR DISK. 00113900
*1 00114000
IF THE FIRST NON-BLANK CHARACTER AFTER THE OP CODE 00114100
FIELD ON ANY "REMK" CARD IS AN ASTERISK,"*", 00114200
THE INPUT RECORD FROM THAT POINT ON WILL BE WRITTEN 00114300
UNCHANGED ON THE TRANSLATED FILE. 00114400
IN THIS WAY ALL THE CONTROLS OF THE FLOWCHART LANGUAGE 00114500
ARE DIRECTLY AVAILABLE. 00114600
FOR INSTANCE, A TITLE MAY BE DESIGNATED BY 00114700
HAVING A CARD 00114800
* SKIP INDENT 10 00114900
REMK * TITLE MY PROGRAM * 00115000
*1 00115100
OR THE NUMBER OF COLUMNS TO BE PRINTED PERPAGE 00115200
MAY BE ASSIGNED BY THE FOLLOWING CARD: 00115300
* SKIP INDENT 10 00115400
REMK * MAXCOL 2 * 00115500
* 1 00115600
IF ONLY THE FINAL FLOWCHART 00115700
OUTPUT IS DESIRED, THE CONTROL "$ TAPE TRANS ASMFLOW" MAY 00115800
BE USED. IF, ON THE OTHER HAND, THE FLOWCHART LANGUAGE FILE IS DESIRED 00115900
FOR LATER HAND-PATCHING, "$ TAPE NEW DISK TRANS" SHOULD BE USED. 00116000
IN THE LATTER CASE A SEPARATE RUN TO DRAW THE FLOWCHART WILL 00116100
BE NECESSARY, USING THE CONTROL 00116200
"$ DISK ASMFLOW". 00116300
SEVERAL OPTIONS MAY IN EITHER CASE FOLLOW THE 00116400
WORD "TRANS": 00116500
*SKIP 00116600
$ TAPE TRANS ESCAPE # SEGS 1*ASMFLOW 00116700
*6 00116800
TRANSLATES AND DRAWS ONLY SEGMENT 1 AND IGNORES 00116900
REMARKS BEGINNING WITH "#". 00117000
* SKIP 00117100
$ CARD LIST NEW DISK TRANS SEGS 1, 3-6 * DATA 00117200
* 6 00117300
TRANSLATES SEGMENTS 1,3,4,5,6 AND PRINTS CONSTANTS AS TABLES. 00117400
* SKIP 00117500
$ DISK NEW DISK TRANS ESCAPE 3 # DEBUG * 00117600
* 6 00117700
TRANSLATES ALL SEGMENTS, IGNORING REMARKS BEGINNING WITH 00117800
"#" OR "DEBUG" AND REMARK FIELDS BEGINNING WITH "*". 00117900
* 7 00118000
USE OF THE UPDATE FEATURE 00118100
* 1 00118200
THE MAIN REQUIREMENTS FOR USING THE UPDATE-MERGE FEATURE 00118300
FOR UPDATING DOCUMENTS AND FLOWCHARTS ARE: 00118400
*6 00118500
1. ORIGINAL FILES MUST HAVE AN EXPLICIT 00118600
"* PAGE", "* OVER PAGE", 00118700
OR "* INSERTPAGE" CONTROL AT EACH PAGE BREAK(SEE BELOW). 00118800
*6 00118900
2. THE ORIGINAL 00119000
DOCUMENT MUST BE CREATED TO BACKUP DISK FROM AN UNPATCHED 00119100
TAPE OR DISK SOURCE, USING THE CONTROL "DOCUMENT UPDATE". 00119200
THE UPDATED OR "NEW" DOCUMENT SHOULD THEN BE CREATED 00119300
FROM THE SAME SOURCE FILE AND WITH THE SAME $ CARD BUT 00119400
USING A PATCH DECK AND A DIFFERENT LABEL-EQUATION CARD 00119500
FOR "BACKUPDISK". 00119600
* 6 00119700
* 1 00119800
AFTER THE MERGE RUN IS MADE, THE FILE WHICH WAS 00119900
THE NEW DOCUMENT SHOULD BE SAVED, SINCE FOR THE NEXT PATCH LEVEL IT 00120000
WILL BE THE OLD DOCUMENT (AND THEN ONLY THEN NEW 00120100
DOCUMENT NEED BE CREATED). 00120200
ALSO, A NEW TAPE SHOULD BE MADE, USING THE 00120300
PATCH DECK, SO THAT ONLY FURTHER CHANGES WILL SHOW UP 00120400
IN THE NEXT UPDATE. 00120500
*1 00120600
SINCE " * PAGE" CARDS ARE REQUIRED ON THE SYMBOLIC, 00120700
A SPECIAL CONTROL EXISTS TO PUNCH THEM OUT DURING 00120800
A DOCUMENT RUN. 00120900
THIS CONTROL, "PPAGES PUNCH", WILL PUNCH 00121000
" * OVER PAGE" CARDS WITH APPROPRIATE SEQUENCE NUMBERS 00121100
WHENEVER AUTOMATIC PAGING OCCURS. IF A CARD OF INPUT CONTRIBUTES 00121200
TWO SUCCESSIVE DOCUMENT PAGES, THE CARD IS SPLIT UP AND PUNCHED. 00121300
A SAMPLE DOLLAR CARD FOR SUCH A RUN IS "$ TAPE PPAGES PUNCH DOCUMENT". 00121400
THE CARDS PUNCHED SHOULD BE USED AS PATCH CARDS TO 00121500
MAKE THE ORIGINAL SOURCE FILE TAPE FOR UPDATE RUNS. 00121600
*13 00121700
SAMPLE UPDATE RUN 00121800
* SKIP 00121900
CREATION OF OLD DOCUMENT 00122000
* INDENT 5 00122100
*INVALID 1 00122200
Q EXECUTE XREF/JONES 00122300
* INVALID 1 00122400
Q FILE TAPE = MYTAPE 00122500
* INVALID 1 00122600
Q FILE BACKUPDISK = OLD 00122700
* INVALID 1 00122800
Q FILE CARD = MYCARD 00122900
* INVALID 1 00123000
Q DATA MYCARD 00123100
$ TAPE BACKUP DISK DOCUMENT UPDATE REVISION 00123200
("NINES" CARD) 00123300
* INVALID 1 00123400
Q END. 00123500
* SKIP 00123600
CREATION OF NEW DOCUMENT 00123700
* INDENT 5 00123800
* INVALID 1 00123900
Q EXECUTE XREF/JONES 00124000
* INVALID 1 00124100
Q FILE TAPE = MYTAPE 00124200
* INVALID 1 00124300
Q FILE BACKUPDISK = NEW 00124400
* INVALID 1 00124500
Q FILE CARD = MYCARD2 00124600
* INVALID 1 00124700
Q DATA MYCARD2 00124800
$ TAPE BACKUP DISK DOCUMENT UPDATE REVISION 00124900
( PATCH CARDS, ENDING WITH "NINES" CARD) 00125000
* INVALID 1 00125100
Q END. 00125200
* SKIP 00125300
NOW ANY VARIETY OF MERGE CAN BE MADE, EG: 00125400
* INDENT 5 00125500
* INVALID 1 00125600
Q EXECUTE XREF/JONES 00125700
* INVALID 1 00125800
Q FILE OLDDOC = OLD 00125900
* INVALID 1 00126000
Q FILE NEWDOC= NEW 00126100
* INVALID 1 00126200
Q DATA CARD 00126300
$ MERGE 00126400
("NINES" CARD ) 00126500
* INVALID 1 00126600
Q END. 00126700
* 13 00126800
OTHER MERGE EXAMPLES 00126900
* SKIP 00127000
$ MERGE PRINTSELECT 1,10,16* 00127100
* 6 00127200
DOES MERGE RUN BUT PRINTS ONLY PAGES 1,10,AND 16. 00127300
IF THERE ARE DUPLICATE PAGE NUMBERS, ALL WILL BE PRINTED. 00127400
* SKIP 00127500
$ MERGE PRINTSELECT 2* ONLY 00127600
*6 00127700
ONLY PAGE 2 IS PRINTED FROME OLDDOC , AND NO MERGE IS MADE. 00127800
* SKIP 00127900
$ MERGE DIRECTORY 00128000
* 6 00128100
THIS WILL WRITE OUT A DIRECTORY OF THE PAGES ON 00128200
"OLDDOC" AS WELL AS PERFORMING THE STANDARD MERGE. 00128300
* FINISH ; 00128400
COMMENT * CONTROL CARDS ; 00128500
COMMENT DOCUMENT "PART 2" 00128600
* UNDERLINE TITLE CENTER 00128700
E.T.M. 279 (20 NOV 1965). 00128800
* DEFINE 1 = SKIP 2 PARAGRAPH 5,67,0 * 00128900
* DEFINE 2 = SKIP PAR * 00129000
* DEFINE 3 = SKIP GLOSSARY 5,25,67 * 00129100
* DEFINE 4 = SKIP GLOS * 00129200
* DEFINE 5 = SKIP GLOSSARY 8,30,67 * 00129300
* DEFINE 6 = SKIP PARAGRAPH 20,67,0 * 00129400
* DEFINE 7 = PAGE INDEX UNDERLINE * 00129500
* DEFINE 8 = SKIP GLOSSARY 10,25,67 * 00129600
* DEFINE 9 = SKIP GLOSSARY 10,35,67 * 00129700
* DEFINE 10 = SKIP 2 TAB 5, 25, 45 * 00129800
* DEFINE 11 = SKIP 2 TAB 5,35 * 00129900
* DEFINE 12 = SKIP 2 TAB 5 * 00130000
* DEFINE 13 = SKIP 2 INDENT 3 INDEX UNDERLINE * 00130100
* DEFINE 14 = PAGE INDENT 3 INDEX UNDERLINE * 00130200
* PAGEID 1," 2-" 00130300
* PAGE CENTER UNDERLINE 00130400
A CROSS REFERENCE,FLOW CHART AND DOCUMENT EDITING PROGRAM (PART TWO). 00130500
* SKIP CENTER TITLE CLEAR 00130600
BY GLYN HUGH JONES AND JOAN G. DUNSHEE 00130700
* SKIP CENTER 00130800
TECHNICAL STAFF 00130900
BURROUGHS CORPORATION 00131000
PASADENA 00131100
* SKIP 3 INDEX CENTER UNDERLINE 00131200
SUMMARY 00131300
* 1 00131400
A SYNTACTICALLY DEFINED DOCUMENTATION LANGUAGE IS DESCRIBED 00131500
TOGETHER WITH A DESCRIPTION 00131600
OF THE FACILITIES PRESENTLY AVAILABLE FOR GENERATING AND MAINTAINING 00131700
DOCUMENTS ON A BURROUGHS B5500 COMPUTER. 00131800
* SKIP 6 TAB 2,40 00131900
AUTHORS:/APPROVED:/ 00132000
* SKIP 4 TAB 2,40 00132100
-------------------- / -------------------- / 00132200
GLYN H. JONES AND/ J. F. KALBACH/ 00132300
* SKIP TAB 2,40 00132400
JOAN G. DUNSHEE/ MANAGER,TECHNICAL STAFF/ 00132500
* SKIP 1 INDENT 30 00132600
ORIGINAL ISSUE JAN.25, 1965 00132700
FIRST REVISED ISSUE OCT. 27, 1965 00132800
SECOND REVISED ISSUE NOV. 21, 1966 00132900
THIRD REVISED ISSUE OCT.7, 1968 00132910
* 7 00133000
INTRODUCTION 00133100
* 2 00133200
THERE HAS ALWAYS BEEN A NEED TO AUTOMATE 00133300
(AS FAR AS POSSIBLE) THE 00133400
GENERATION AND UPDATING OF DOCUMENTATION RELATING TO THE DESCRIPTION 00133500
AND OPERATION OF COMPUTER PROGRAMS. 00133600
* 2 00133700
MANY PROBLEMS ARISE WHEN PROGRAM SOURCE DECKS ARE MODIFIED AND THE 00133800
CORRESPONDING DOCUMENTATION CHANGES ARE NOT MADE. THE PURPOSE 00133900
OF THE DOCUMENT EDITING AND INDEXING PROGRAM DESCRIBED IN THIS NOTE IS 00134000
TO ATTEMPT 00134100
TO MINIMIZE SUCH PROBLEMS BY COMBINING THE PROGRAM SOURCE 00134200
INPUT AND DOCUMENTATION INPUT ON ONE FILE. 00134300
* 2 00134400
A FREE FIELD DOCUMENT CONTROL LANGUAGE HAS BEEN DESIGNED TO ALLOW 00134500
MOST OF THE EDITING FUNCTIONS AVAILABLE TO A TECHNICAL EDITOR AND 00134600
WHICH ALSO ALLOWS THE DOCUMENT ITSELF TO BE IN FREE FIELD FORMAT. 00134700
* 2 00134800
MOST PROBLEM ORIENTED PROGRAMMING LANGUAGES ALLOW THE INCLUSION OF 00134900
COMMENTS WITHIN THE SOURCE LANGUAGE INPUT. THIS FEATURE IS UTILIZED BY 00135000
THE EDITING PROGRAM. THE EDITING PROGRAM SCANS A GIVEN SOURCE PROGRAM 00135100
INPUT AND IDENTIFIES SUCH COMMENTS WHICH HAVE BEEN FLAGGED AS 00135200
DOCUMENTATION COMMENTS. EMBEDDED WITHIN THESE COMMENTS ARE THE SPECIAL 00135300
EDITING CONTROLS (THESE ARE SYNTACTICALLY DEFINED BELOW). 00135400
* 2 00135500
THE EDITING PROGRAM IS PRESENTLY SET UP TO SCAN EXTENDED ALGOL PROGRAMS 00135600
WRITTEN FOR THE B5500. HOWEVER, THE PROGRAM CAN BE EASILY MODIFIED TO 00135700
SCAN ANY PROGRAMMING LANGUAGE SOURCE INPUT. 00135800
* SKIP CENTER 00135900
THIS NOTE IS PRODUCED BY THE EDITING PROGRAM. 00136000
* 7 00136100
MINIMUM SPECIFICATIONS FOR A DOCUMENT EDITING LANGUAGE 00136200
* 2 00136300
THE LANGUAGE SHOULD BE SIMPLE AND RIGOROUS (FREE FROM AMBIGUITIES). 00136400
* 2 00136500
NO FIXED FIELD FORMATS SHOULD BE REQUIRED APART FROM THE 00136600
RESTRICTIONS REQUIRED BY THE SIZE OF THE PHYSICAL INPUT MEDIA SUCH AS 00136700
72 COLUMNS OF A CARD. 00136800
* 2 00136900
THE CHARACTER SET SHOULD ONLY BE LIMITED BY THE SET AVAILABLE ON A GIVEN00137000
COMPUTER PRINTER. 00137100
* 2 00137200
DELETIONS,ADDITIONS AND CHANGES SHOULD BE ALLOWED AT ANY PLACE WITHIN 00137300
THE DOCUMENT. 00137400
* 2 00137500
A TABLE OF CONTENTS ( AND POSSIBLY A SELECTED NAME INDEX) SHOULD 00137600
BE GENERATED AUTOMATICALLY BY THE EDITING PROGRAM. 00137700
* 7 00137800
SYNTAX CONVENTIONS. 00137900
*1 00138000
THE SYNTAX OF THE CONTROL CARD 00138100
LANGUAGE IS DESCRIBED THROUGH THE USE OF METALINGUISTI00138200
C SYMBOLS. THESE SYMBOLS HAVE THE FOLLOWING MEANINGS: 00138300
* 1 00138400
LEFT AND RIGHT BROKEN BRACKETS "<" AND ">" ARE USED TO CONTAIN ONE 00138500
OR MORE CHARACTERS REPRESENTING A METALINGUISTIC VARIABLE WHOSE VALUE 00138600
IS GIVEN BY A METALINGUISTIC FORMULA. 00138700
*1 00138800
THE SYMBOL "::=" MEANS "IS DEFINED TO BE" AND SEPARATES THE METALINGUIST00138900
IC VARIABLE ON THE LEFT OF THE FORMULA FROM ITS DEFINITION ON THE 00139000
RIGHT. 00139100
*1 00139200
THE SYMBOL "/" MEANS "OR". THIS SYMBOL SEPARATES MULTIPLE DEFINITIONS 00139300
OF A METALINGUISTIC VARIABLE. 00139400
*1 00139500
LESS-THAN-OR-EQUAL AND GREATER-THAN-OR-EQUAL SIGNS, "{" AND"}", ARE 00139600
USED TO ENCLOSE METALINGIUSTIC VARIABLES 00139700
WHICH ARE DEFINED BY THE MEANING OF THE ENGLISH LANGUAGE EXPRESSION 00139800
CONTAINED WITHIN THE BRACES. THIS FORMULATION IS USED ONLY WHEN IT IS 00139900
IMPOSSIBLE OR IMPRACTICAL TO USE A METALINGUISTIC FORMULA. 00140000
* 1 00140100
THE BRACKETS "[" AND "]" ARE USED TO ENCLOSE GROUPS OF 00140200
METALINGUISTIC VARIABLES WHICH MAY BE PERMUTED IN ANY ORDER. EXAMPLE: 00140300
* SKIP 00140400
<D> ::= [<A> B <C>] IS EQUIVALENT TO :- 00140500
* SKIP 00140600
<D> ::= <A> B <C> / <A> <C> B / 00140700
B <A> <C> / B <C> <A> / 00140800
<C> <A> B / <C> B <A> 00140900
*1 00141000
THE ABOVE METALINGUISTIC SYMBOLS ARE USED IN FORMING A METALINGUISTIC FO00141100
RMULA. A METALINGUISTIC FORMULA IS A RULE WHICH WILL PRODUCE AN ALLOWAB00141200
LE SEQUENCE OF CHARACTERS AND/OR SYMBOLS. THE ENTIRE SET OF SUCH FORMUL00141300
AS DEFINES THE CONSTRUCTS OF THE CONTROL CARDS. 00141400
*1 00141500
ANY MARK OR SYMBOL IN A METALINGUISTIC FORMULA WHICH IS NOT ONE OF THE A00141600
BOVE METALINGUISTIC SYMBOLS DENOTES ITSELF. 00141700
*1 00141800
CONTROL CARD 00141900
CONVENTIONS USED IN WRITING SYNTAX ARE ILLUSTRATED BY THE FOLLOWING 00142000
EXAMPLE: 00142100
* SKIP 00142200
<IDENTIFIER> ::= <LETTER> / <IDENTIFIER><LETTER> / <IDENTIFIER><DIGIT> 00142300
*1 00142400
THIS METALINGUISTIC FORMULA IS READ AS FOLLOWS: AN IDENTIFIER IS D00142500
EFINED TO BE A LETTER, OR AN IDENTIFIER FOLLOWED BY A LETTER, OR AN IDEN00142600
TIFIER FOLLOWED BY A DIGIT. 00142700
*1 00142800
THE METALINGUISTIC FORMULA DEFINES A RECURSIVE RELATIONSHIP BY WHICH A C00142900
ONSTRUCT CALLED AN IDENTIFIER MAY BE FORMED. EVALUATION OF THE FORMULA 00143000
SHOWS THAT AN IDENTIFIER BEGINS WITH A LETTER. THE LETTER MAY STAND ALON00143100
E, OR MAY BE FOLLOWED BY ANY MIXTURE OF LETTERS AND DIGITS. 00143200
* 7 00143300
DOCUMENT CONTROL CARD SYNTAX 00143400
* SKIP 00143500
<DOCUMENT CONTROL CARD> ::= * <CONTROL INFO> / * <DEFINE INDEX> / 00143600
* DEFINE <DEFINE INDEX> = <CONTROL INFO> * 00143700
<DEFINE INDEX> ::= <UNSIGNED INTEGER> 00143800
<CONTROL INFO> ::= <CLOSE PART> / [<HEADING PART> <TAB HEAD> 00143900
<VERTICAL PAPER CONTROLS> <REVISION PART> 00144000
<CODESEQ PART> 00144010
<HORIZONTAL EDITING PART><SPECIAL PART> 00144100
<PAGE REVISION PART>] / INVALID CHAR PART> <ALL PART> / 00144200
NAMES / <OVER PART> 00144300
<CLOSE PART> ::= END / QUIT / FINISH 00144400
<INVALID CHAR PART> ::= INVALID <INVALID COL> / 00144500
<INVALID CHAR PART> <SEPARATOR> <INVALID COL> 00144600
<INVALID COL> ::= <UNSIGNED INTEGER> 00144700
<ALL PART> ::= ALL / <EMPTY> 00144710
<OVER PART> ::= OVER PAGE <PAGE SKIP COUNT> / OVER <INSERT PART> 00144800
<REVISION PART> ::= REV <REVISION LETTER> 00144900
/ REV <REVISION LETTER> LEAVE 00145000
<REVISION LETTER> ::= <LETTER> / * 00145100
<PAGE REVISION PART> ::= REVISION <REVISION NUMBER> / 00145200
REVISION CLEAR <REVISION NUMBER> 00145300
<REVISION NUMBER> ::= <UNSIGNED INTEGER> / <EMPTY> 00145400
<SPECIAL PART> ::= SYNTAX / SYNTAX ONLY /<EMPTY> 00145500
<HEADING PART> ::= TITLE <COL SKIP COUNT> / INDEX <INDEX LINE COUNT> / 00145600
INDEX ONLY / INDEX WORDS <UNSIGNED INTEGER> / 00145700
TITLE CLEAR / <EMPTY> 00145710
<COL SKIP COUNT> ::= <UNSIGNED INTEGER> / <EMPTY> 00145800
<INDEX LINE COUNT> ::= <UNSIGNED INTEGER> / <EMPTY> 00145900
<TAB HEAD> ::= TABHEAD <TAB HEAD COUNT> <TAB HEAD LINE POSITION> 00146000
/ TABHEAD CLEAR 00146100
/ TABHEAD CLEAR <TAB CLEAR COUNT> 00146102
<TAB HEAD COUNT> ::= <UNSIGNED INTEGER> / <EMPTY> 00146200
<TAB HEAD LINE POSITION> ::= , <UNSIGNED INTEGER> / < EMPTY> 00146300
<TAB CLEAR COUNT> ::= <UNSIGNED INTEGER> 00146302
<VERTICAL PAPER CONTROLS> ::= [<DATE PART> <SKIP PART> <UNDERLINE PART> 00146400
<DOC LINE CONTROLS> <PAGE CONTROL>] 00146500
<DATE PART> ::= DATE / DATE CLEAR / <EMPTY> 00146600
<PAGE PART> ::= PAGE <PAGE SKIP COUNT> / PAGE NO / <PAGEID PART> / 00146700
ENDPAGE <ROW SKIP COUNT> / <INSERT PART> / <EMPTY> 00146800
<PAGEID PART> ::= PAGEID <PAGE NUMBER>, <ID POSITION> <PAGE IDENT> 00146900
<PAGE INCREMENT> ::= <UNSIGNED INTEGER> / <EMPTY> 00147000
<PAGE SKIP COUNT> ::= <UNSIGNED INTEGER> / <EMPTY> 00147100
<PAGE NUMBER> ::= <UNSIGNED INTEGER> 00147200
<ID POSITION> ::= + / <EMPTY> 00147300
<PAGE IDENT> ::= { A STRING OF UP TO SIX CHRACTERS BOUNDED BY QUOTES} 00147400
<PAGE CONTROL> ::= PAGEINC <PAGE INCREMENT> <PAGE PART> 00147500
<PAGE NMBR FORMAT> 00147600
<INSERT PART> ::= INSERTPAGE <PAGE NUMBER> <INSERT SKIP COUNT> 00147700
/ INSERTPAGE 00147800
<INSERT SKIP COUNT> ::= , <PAGE SKIP COUNT> / <EMTY> 00147900
<PAGE NMBR FORMAT> ::= DECIMALS <PLACES> <SUPPRESS PART> / DECIMALS 00148000
<SUPPRESS PART> / <EMPTY> 00148100
<PLACES> ::= {UNSIGNED INTEGER EIGHT OR LESS} 00148200
<SUPPRESS PART> ::= SUPPRESS / <EMPTY> 00148300
<SKIP PART> ::= SKIP <ROW SKIP COUNT> / <EMPTY> 00148400
<ROW SKIP COUNT> ::= <UNSIGNED INTEGER> / <EMPTY> 00148500
<UNDERLINE PART> ::= UNDERLINE / <EMPTY> 00148600
<DOC LINE CONTROLS> ::= SINGLE / DOUBLE / <EMPTY> 00148700
00148800
<PAGE LINE COUNT> ::= <UNSIGNED INTEGER> / <EMPTY> 00148900
<HORIZONTAL EDITING PART> ::= [<PERCENT PART> <LINE EDITING PART>] / 00149000
<TEXT EDITING PART> 00149100
<PERCENT PART> ::= PERCENT / <EMPTY> 00149200
<LINE EDITING PART> ::= CENTER / CENTRE / INDENT <COL SKIP COUNT> / 00149300
WIDE / <TAB PART> / <FORMAT PART> 00149400
<FORMAT PART> ::= <FORMAT SPECIFIER> <FORMAT COL> / 00149500
<FORMAT PART> <SEPARATOR> <FORMAT COL> 00149600
<FORMAT SPECIFIER> ::= FORM / FORMAT 00149700
<FORMAT COL> ::= <UNSIGNED INTEGER> 00149800
<TAB PART> ::= <TAB SPECIFIER> <TAB COL> / 00149900
<TAB PART> <SEPARATOR> <TAB COL> 00150000
<TAB SPECIFIER> ::= TAB / TABULATE 00150100
<TAB COL> ::= <UNSIGNED INTEGER> 00150200
<SEPARATOR> ::= <EMPTY> / , / - 00150300
<TEXT EDITING PART> ::= <PARAGRAPH PART> / <GLOSSARY PART> / 00150400
<PATTERN PART> / <CODE PART> 00150500
<PATTERN PART> ::= PATTERN / PATTERN GLOS 00150600
<CODESEQ PART> ::= CODESEQ / NOCODESEQ 00150610
<CODE PART> ::= CODE / CODE <CODE LINE COUNT> 00150700
/ <CODEPERCENT> 00150710
<CODE LINE COUNT> ::= <UNSIGNED INTEGER> 00150800
<GLOSSARY PART> ::= GLOSSARY <GLOSSARY PARAMETERS> / GLOS 00150900
<GLOSSARY PARAMETERS> ::= <GLOS TERM MARGIN> / 00151000
<GLOS TERM MARGIN>, <LEFT MARGIN> / 00151100
<GLOS TERM MARGIN>, <LEFT MARGIN>, 00151200
<LAST PRINT COL> / <EMPTY> 00151300
<GLOS TERM MARGIN> ::= <UNSIGNED INTEGER> 00151400
<PARAGRAPH PART> ::= PAR / PARAGRAPH <PARAGRAPH ID PART> 00151500
<PARAGRAPH MARGINS> 00151600
<PARAGRAPH ID PART> ::= - / <EMPTY> 00151700
<PARAGRAPH MARGINS> ::= <LEFT MARGIN> / <LEFT MARGIN> , <LAST PRINT COL>00151800
/ <LEFT MARGIN>, <LAST PRINT COL>, 00151900
<PARAGRAPH INDENT> / <EMPTY> 00152000
<LEFT MARGIN> ::= <UNSIGNED INTEGER> 00152100
<LAST PRINT COL> ::= <UNSIGNED INTEGER> 00152200
<PARAGRAPH INDENT> ::= <UNSIGNED INTEGER> 00152300
<LETTER> ::= A/B/C/D/E/F/G/H/I/J/K/L/M/O/P/Q/R/S/T/U/V/W/X/Y/Z 00152400
<IDENTIFIER> ::= <LETTER> / <IDENTIFIER><LETTER> / <IDENTIFIER><DIGIT> 00152500
<DIGIT> ::= 0/1/2/3/4/5/6/7/8/9 00152600
<UNSIGNED INTEGER> ::= <DIGIT> / <UNSIGNED INTEGER><DIGIT> 00152700
* 7 00152800
EXAMPLES OF DOCUMENT CONTROL CARDS. 00152900
* 10 00153000
* PAGE / * PAGE 3 / * PAGE NO / 00153100
* TITLE / * TITLE CLEAR // 00153200
* END / * FINISH / * QUIT / 00153300
* SKIP / * SKIP 3 // 00153400
* UNDERLINE/ * SINGLE / * PERCENT / 00153500
* INVALID 3 / * INVALID 3, 10 / / 00153600
* CODE / * CODE 5 // 00153700
* INDEX / * INDEX 3 // 00153800
* INDENT 10 / * CENTER / * CENTRE / 00153900
* INDEX CENTER / * CENTER INDEX // 00154000
* TAB 5,25 00154100
* REVISION 1/ * PAGEINC 100 DECIMALS 2// 00154200
* TAB 5,25,45 00154300
* TABHEAD 2,1/ * TABHEAD CLEAR// 00154400
* 11 00154500
* PAGEID 3, + " OF 14" / * PAGEID 0, " I-" // 00154600
* TAB 3,10,20,40 / * TABULATE 6, 40 , 50 / 00154700
* FORM 3 , 10 20, 40 / * FORMAT 6, 40 , 50 / 00154800
* PARAGRAPH 5, 65 / * PARAGRAPH 5,65, 0 / 00154900
* PARAGRAPH - 10 , 60 / * PAR / 00155000
* GLOSSARY 5, 15 , 60 / * GLOS / 00155100
* PATTERN / * PATTERN GLOS / 00155200
* 12 00155300
* DEFINE 1 = PAGE SKIP 2 PARAGRAPH 5, 56 * / 00155400
* DEFINE 10 = INDEX 2 CENTER SKIP 2 * / 00155500
* 10 00155600
* 1 / * 10 / * 12 / 00155700
* 7 00155800
DOCUMENT CONTROL CARD SEMANTICS 00155900
* 1 00155910
THE FIRST RECORD OF EACH DOCUMENT STARTS WITH "COMMENT DOCUMENT" 00155912
AND TERMINATES WITH AN "* QUIT" OR "* FINISH". EACH 00155914
DOCUMENT MAY BE IDENTIFIED BY A STRING NAME, E.G., 00155916
COMMENT DOCUMENT "PART 1". GROUPS OF CONSECUTIVE 00155918
DOCUMENTS OR A SINGLE DOCUMENT MAY BE GENERATED BY APPROPRIATE USE 00155920
OF THE <DOCUMENT EDIT TYPE> DESCRIBED IN PART 1 OF THIS MANUAL. 00155922
* 1 00155924
NORMALLY THE DEFINES TABLES ARE CLEARED AT THE START OF EACH NEW 00155926
DOCUMENT. A SET OF GLOBAL DEFINES MAY BE USED BY STARTING A 00155928
DOCUMENT WITH "COMMENT DOCUMENT DEFINES". THE DEFINE 00155930
TABLES ARE THEN NOT CLEARED AT THE START OF EACH SUSEQUENT DOCUMENT. 00155932
NEW DEFINES OCCURING IN SUBSEQUENT DOCUMENTS ARE ADDED TO THE DEFINE 00155934
TABLE AND CHANGES TO DEFINES REMAIN AS CHANGES IN THE TABLE. 00155936
* 1 00156000
THE DOCUMENT CONTROLS MAY BE DIVIDED INTO TWO OPERATIONAL CLASSES. 00156100
SOME CONTROLS GOVERN THE ACTION TO BE TAKEN WITH THE 00156200
FOLLOWING RECORD (OR A SPECIFIED NUMBER OF RECORDS) AND OTHERS ARE 00156300
OPERATIVE UNTIL A NEW DOCUMENT CONTROL RECORD IS READ. 00156400
WHEN AN "* CONTROL" IS READ ALL TOGGLES ARE RESET AND IF NON OF THE 00156500
ITEMS ON THE CONTROL ARE RECOGNISED A "STRAIGHT" LISTING WILL BE GIVEN. 00156600
* 2 00156700
CONTROLS OF THE FIRST TYPE INCLUDE :- PAGE, PAGEID, INDEX, INDEX N, 00156800
CODE N, TITLE, SKIP N, DEFINE, DEFINE INDEX, UNDERLINE (SOME CASES), 00156900
AND INVALID. 00157000
* 2 00157100
CONTROLS OF THE SECOND TYPE INCLUDE :- PARAGRAPH, GLOSSARY, TABULATE, 00157200
FORMAT, INDENT N, CENTER, SINGLE, CODE, PATTERN, PERCENT. 00157300
* 2 00157400
CONTROLS OF BOTH TYPES MAY BE INCLUDED ON ANY DOCUMENT CONTROL RECORD 00157500
(SUBJECT TO THE SYNTAX PRINTED ABOVE). 00157600
*2 00157700
IF MORE THAN ONE "* CONTROL" PRECEDES A GIVEN SECTION OF TEXT, 00157800
THE LAST ONE WILL DETERMINE THE FORMAT. 00157900
* 1 00158000
THERE ARE TWO "MODES" BY WHICH THE DOCUMENT INPUT IS EXAMINED AND THE 00158100
DOCUMENT PRINTED, THEY ARE :- 00158200
* SKIP INDENT 10 UNDERLINE 00158300
(1) "SCANNING" MODE. 00158400
* 2 00158500
THE SOURCE INPUT IS "SCANNED" AND ALL UNNECESSARY BLANK SPACES ARE 00158600
LOST. EACH CALL ON THE SCAN PROCEDURE PRODUCES ONE OF THE FOLLOWING 00158700
ITEMS :- AN IDENTIFIER, NUMBER, SPECIAL CHARACTER OR A STRING. 00158800
IF A SPECIAL CHARACTER IS FOUND AND IS A "*" IN COLUMN ONE THEN THE 00158900
ENTIRE RECORD IS TREATED AS A DOCUMENT CONTROL RECORD. IDENTIFIERS AND 00159000
NUMBERS MUST BE LESS THAN 63 CHARACTERS IN LENGTH. THEY MAY BE 00159100
SPLIT OVER CONSECUTIVE RECORDS AND COLUMN ONE IS CONSIDERED AS A 00159200
CONTINUATION OF COLUMN 72 OF THE PREVIOUS RECORD. IF AT LEAST ONE 00159300
SPACE FOLLOWS AN ITEM SCANNED THEN ONE SPACE WILL BE INCLUDED IN THE 00159400
DOCUMENT, HOWEVER , SPACES ARE NOT REMOVED WITHIN STRINGS. 00159500
* SKIP INDENT 10 UNDERLINE 00159600
(2) "LINE" MODE. 00159700
* 2 00159800
EACH RECORD IS TREATED AS A SELF-CONTAINED UNIT, THE RELATIVE POSITION 00159900
OF DATA WITHIN THE RECORDS MAY BE CHANGED BY SOME OF THE LINE EDITING 00160000
FUNCTIONS AS DESCRIBED BELOW. 00160100
* 2 00160200
IN EITHER MODE THE USER IS CAUTIONED AGAINST USE OF SPECIAL CHARACTERS 00160300
IN COLUMN 72. ANY CHARACTER OTHER THAN A LETTER OR A DIGIT IN THAT 00160400
POSITION MAY CAUSE INFORMATION TO BE LOST. 00160500
* 3 00160600
DATE = THE CURRENT DATE WILL BE PRINTED ON THE SAME LINE AS THE PAGE 00160700
NUMBERS IN THE EDITED DOCUMENT. 00160800
* 3 00160900
DATE CLEAR = THE CURRENT DATE WILL NOT BE PRINTED WITH THE PAGE 00161000
NUMBERS. 00161100
* 3 00161200
PAGE N = SKIP TO A NEW PAGE, INCREASE THE PAGE COUNTER BY N, IF N IS 00161300
EMPTY THEN N IS SET EQUAL TO THE CURRENT PAGE INCREMENT. 00161400
IF N IS GREATER THAN ONE THEN THERE 00161500
WILL APPEAR TO BE "GAPS" IN THE DOCUMENT. THIS IS USEFUL WHEN PAGES 00161600
HAVE TO BE INSERTED WHICH HAVE BEEN PREPARED BY SOME OTHER TECHNIQUE 00161700
EXAMPLE:- GRAPHS, LINE DRAWINGS, TABLES. 00161800
THE PAGE NUMBER IS SET TO ZERO AT THE START OF A DOCUMENT BUT MAY BE 00161900
RESET BY USE OF THE "PAGEID" CONTROL BELOW. THE CONTENTS OF THE 00162000
TITLE BUFFER IS PRINTED AT THE HEAD OF EACH NEW PAGE (SEE BELOW). 00162100
* 3 00162102
ENDPAGE N= SKIP TO A NEW PAGE IF AND ONLY IF N (SINGLE SPACED) 00162104
MORE LINES WILL NOT FIT ON THIS PAGE. THIS CONTROL IS USEFL FOR 00162106
FIGURES WHICH ARE LESS THAN A FULL PAGE IN SIZE. 00162108
*3 00162200
INSERTPAGE N,M = ASSIGN THE PAGENUMBER N TO THE NEXT PAGE AND CONSIDER 00162300
THAT PAGE AS A LOGICAL UNIT. USE A PAGEINCREMENT OF M UNTIL A NEW 00162400
"PAGE" OR "INSERTPAGE" CONTROL IS FOUND. IF M IS EMPTY IT IS SET 00162500
TO ONE. IF N IS EMPTY IT WILL BE SET TO THE CURRENT NEXT PAGE. 00162600
* 3 00162700
PAGE NO = SKIP TO A NEW PAGE AND THE PAGE NUMBER IS NOT INCREASED OR 00162800
PRINTED. THIS MAY BE USED TO PRINT UN-NUMBERED TITLE PAGES. 00162900
* 3 00163000
PAGEINC N = SET THE PAGE INCREMENT COUNTER EQUAL TO N. IF N IS 00163100
EMPTY OR IF THIS CONTROL IS NOT USED AN INCREMENT OF ONE WILL BE USED. 00163200
* 3 00163300
PAGEID N , + "STRING" = THIS IS TO BE USED TO INITIALIZE THE PAGE 00163400
NUMBERING SYSTEM (IF REQUIRED). THE NEXT PAGE NUMBER TO BE USED IS N. 00163500
THE CONTENTS OF THE STRING (LESS THAN OR EQUAL TO SIX CHARACTERS IN 00163600
LENGTH) IS USED AS PART OF THE PAGE NUMBER. IF THE "+" SIGN IS USED 00163700
THEN THE STRING IS PLACED TO THE RIGHT OF THE PAGE NUMBER AND IF THE "+"00163800
IS MISSING THE STRING IS PLACED TO THE LEFT OF THE PAGE NUMBER, 00163900
EXAMPLE :- 00164000
* SKIP TABULATE 10, 36, 50 00164100
PAGEID , + " OF 14" / PRODUCES / 3 OF 14 / 00164200
PAGEID 3 , "CHAP 1" / PRODUCES / CHAP 1 3 / 00164300
* 6 00164400
IF A "PAGEID" CONTROL IS NOT USED THEN THE PAGE NUMBER WILL BE OF THE 00164500
FORM "PAGE 3" ETC. THE "PAGEID" CONTROL MAY BE USED TO NUMBER 00164600
PAGES RELATIVE TO NEW SECTIONS OR CHAPTERS. 00164700
* 3 00164800
OVER = THIS CONTOL IS USED ONLY FOLLOWED BY "PAGE" OR "INSERTPAGE" 00164900
AND CAUSES A NEW PAGE TO BE STARTED WITHOUT DISTURBING 00165000
THE CURRENT EDITING CONTROLS. 00165100
*3 00165200
DECIMALS N = THE PAGE NUMBER WILL BE FORMATTED WITH N PLACES TO THE 00165300
RIGHT OF THE DECIMAL POINT. IF N IS EMPTY IT IS SET TO TWO. 00165400
* 3 00165500
SUPPRESS = IF ON ANY PAGE ALL DECIMAL PLACES TO THE RIGHT OF THE DECIMAL00165600
POINT ARE ZEROES, NEITHER THEY NOR THE DECIMAL POINT WILL BE PRINTED. 00165700
* 3 00165800
REV E = THIS SHOULD BE USED TO INTRODUCE A REVISION LETTER TO BE 00165900
INCLUDED IN THE EDITED DOCUMENT. ALL EDITED OUTPUT LINES WHICH ARE 00166000
FORMED IN PART BY INPUT RECORDS FROM THE FILE "CARD" (THAT IS, PATCH CAR00166100
DS) WILL HAVE THE "PATCH LETTER" PRINTED IN COLUMN 77. IF A "REV" CONTRO00166200
L 00166300
IS NOT USED THEN AN "*" WILL BE PRINTED. IT IS ADVISABLE TO USE THE 00166400
"REV" CONTROL AT ONLY ONE PLACE WITHIN A DOCUMENT AS THIS RECORD 00166500
WILL BECOME PART OF THE PERMANENT FILE. SUBSEQUENT REVISIONS 00166600
SHOULD THEN CONTAIN "PATCHES" FOR THIS RECORD. 00166700
* 3 00166800
LEAVE = NORMALLY NO PATCH LETTER (OR "*" FLAG) IS PUT IN THE DOCUMENT 00166900
WHEN A "FINAL" DOCUMENT RUN IS MADE. WITH THIS CONTROL, 00167000
THE LETTER WILL BE WRITTEN AT THE END OF THE LINE EVEN IF THE 00167002
CONTROL "FINAL" IS USED. 00167004
* 3 00167100
REVISION N = THIS CONTROL IS SIMILAR TO DATE IN THAT IT CAUSES THE 00167200
REVISION TO BE WRITTEN AT THE HEAD OF EVERY PAGE. THE REVISION NUMBER 00167300
WILL BE ASSUMED TO BE ONE IF N IS EMPTY. NOTE THAT A MERGE WILL 00167400
CHANGE THE ASSIGNED REVISION LETTER UNLESS IT IS ALREADY HIGHER 00167500
THAN THAT OF THE LAST DOCUMENT. IF NEITHER THIS NOR THE 00167600
"REVISION CLEAR" OPTION IS USED, THE PAGE WILL NOT BE ASSIGNED 00167700
ANY REVISION. 00167800
* 3 00167900
REVISION CLEAR N = THIS CAUSES A REVISION TO BE ASSOCIATED WITH 00168000
EACH PAGE BUT DOES NOT WRITE IT ON THE PAGE. 00168100
* 3 00168200
CENTER = CENTER ALL LINES UNTIL A NEW CONTROL IS READ. THE TOTAL WIDTH 00168300
AVAILABLE IS 72 COLUMNS. 00168400
* 3 00168500
CENTRE = SAME AS CENTER. 00168600
* 3 00168700
INDENT N = INDENT EACH LINE N COLUMNS, IF THE RECORD OVERFLOWS PAST 00168800
COLUMN 72 AN ERROR MESSAGE WILL BE GIVEN. 00168900
* 3 00169000
WIDE = TWO SOURCE RECORDS FOR EACH DOCUMENT RECORD WILL BE USED, 00169010
ALLOWING A 120 CHARACTER PRINT LINE. THE FIRST CARD GIVES POSITIONS 00169012
1-72 AND THE SECOND GIVES THE REST. NO EDITING IS DONE. 00169014
IF EITHER RECORD IS BLANK THEN A PERCENT SIGN SHOULD BE PLACED IN 00169016
COLUMN 72. THUS WHEN THE FILE IS RESEQUENCED THE BLANK RECORD WILL NOT 00169018
BE THROWN AWAY. THE WIDE CONTROL EXAMINES COLUMN 72 AND IF THERE IS A 00169020
PERCENT SIGN IT WILL BE BLANKED OUT. 00169022
* 3 00169024
SYNTAX = THE DOCUMENT INPUT FOLLOWING THIS CONTROL IS TO BE USED IN ALL 00169100
"NORMAL" DOCUMENT RUNS AND ONLY THESE SECTIONS WILL BE USED IF 00169200
"DOCUMENT SYNTAX" IS USED ON THE $ CONTROL CARD. 00169300
* 3 00169400
SYNTAX ONLY = THE SECTIONS FOLLOWING THIS CONTROL WILL BE IGNORED 00169500
DURING "NORMAL" DOCUMENT RUNS BUT WILL BE INCLUDED DURING 00169600
"DOCUMENT SYNTAX" RUNS. THE USE OF "SYNTAX" IS RATHER UNFORTUNATE. THE 00169700
FUNCTION WAS INCLUDED SPECIFICALLY FOR USE WITH PROGRAMMING MANUAL 00169800
EDITING BUT MAY BE USED FOR ANY TYPE OF "SUMMARY" DOCUMENTS. 00169900
* 3 00170000
TITLE N = PLACE THE CONTENTS OF THE FOLLOWING LINE IN THE TITLE BUFFER 00170100
AND INDENT THE TITLE N COLUMNS IN THE BUFFER. THE TITLE BUFFER 00170200
IS PRINTED AT THE HEAD OF EACH NEW PAGE. IF N IS EMPTY THE TITLE WILL BE00170300
LEFT JUSTIFIED. 00170400
* 3 00170500
TITLE CENTER = CENTER THE TITLE IN THE TITLE BUFFER. 00170600
* 3 00170700
TITLE CLEAR = CLEAR THE TITLE BUFFER WITH BLANKS. 00170800
* 3 00170900
* 3 00171000
SKIP N = SKIP N SINGLE SPACE LINES BEFORE PRINTING THE NEXT LINE, IF N 00171100
IS EMPTY THEN ONE LINE WILL BE SKIPPED. IF A "PAGE" CONTROL APPEARS 00171200
ON THE SAME CONTROL RECORD THEN THE SKIP IS MADE AFTER A NEW PAGE IS 00171300
PRINTED. 00171400
* 3 00171500
INDEX N = PLACE THE FOLLOWING N EDITED LINES IN THE TABLE OF CONTENTS, 00171600
IF N IS EMPTY IT IS SET EQUAL TO ONE. IF A CENTER OR INDENT CONTROL 00171700
APPEARS ON THE SAME CONTROL RECORD THEN THE ORDER IN WHICH THEY APPEAR 00171800
IS IMPORTANT, EXAMPLE :- 00171900
* SKIP INDENT 20 00172000
* INDEX INDENT 4 00172100
* INDEX CENTER 00172200
* 6 00172300
THESE WILL CAUSE THE RECORDS IN THE BODY OF THE DOCUMENT TO BE 00172400
INDENTED AND CENTERED AND THE ENTRIES IN THE TABLE OF CONTENTS 00172500
TO BE LEFT JUSTIFIED. 00172600
* SKIP INDENT 20 00172700
* INDENT 4 INDEX 00172800
* CENTER INDEX 00172900
* 6 00173000
THESE ENTRIES WILL BE INDENTED AND CENTERED IN BOTH THE BODY OF THE 00173100
DOCUMENT AND ALSO IN THE TABLE OF CONTENTS. 00173200
* 3 00173210
INDEX ONLY = THIS CONTROL AFFECTS THE INDENTING IN THE 00173211
INDEX. WHEN THIS CONTROL IS SEEN AFTER AND INDENT CONTROL 00173213
HAS ALREADY BEEN PROCESSED, THE FOLLOWING LINES WILL BE INDENTED 00173215
IN THE INDEX BUT NOT IN THE DOCUMENT. 00173217
EXAMPLE OF USE: INDENT 5 INDEX ONLY. 00173219
* 3 00173221
INDEX WORDS N = THIS CONTROL IS EFFECTIVE ONLY IN SCANNING MODE. 00173223
IT PLACES WORDS FROM A DOCUMENT LINE INTO THE INDEX UNTIL N BLANK 00173225
SPACES ARE ENCOUNTERED, WHERE BLANKS PRECEDING THE FIRST 00173227
NON-BLANK CHARACTER ARE IGNORED AND A BLANK SPACE IS DEFINED TO BE 00173229
ONE OR MORE BLANK CHARACTERS. 00173231
* 4 00173300
END = SIGNAL THE END OF A DOCUMENT COMMENT. THE FILE IS SCANNED 00173400
TO LOOK FOR ANOTHER DOCUMENT COMMENT. 00173500
* 4 00173600
FINISH = SIGNAL THE END OF A DOCUMENT. THE TABLE OF CONTENTS WILL00173700
BE PRINTED. 00173800
* 4 00173900
QUIT = SIGNAL THE END OF THE LAST DOCUMENT CONTAINED ON A 00174000
PROGRAM SOURCE FILE. 00174100
* 3 00174200
TABHEAD N,M= THEN FOLLOWING N LINES (N MAY NOT BE GREATER THEN SIX) 00174300
WILL BE PUT INTO N HEADING BUFFERS STARTING WITH BUFFER M. ALL 00174400
BUFFERS UP TO THE LAST ONE FILLED WILL BE PRINTED AT THE 00174500
HEAD OF 00174600
EVERY PAGE UNTIL A "TABHEAD CLEAR" CONTROL IS READ. IF N IS 00174700
EMPTY THE COUNT IS SET TO ONE. 00174800
IF M IS EMPTY, FILLING WILL START WITH THE FIRST BUFFER. 00174900
IF THE WORD " UNDERLINE" IS INCLUDED AMONG THE DOCUMENT 00175000
CONTROLS ON THE CARD SETTING UP THE TABLE HEAD, THE 00175100
UNDERLINING WILL ALSO BE CARRIED OVER ONTO NEW PAGES. THE 00175200
UNDERLINING COUNTS AS ONE LINE OF HEADING, SO THAT ONLY FOUR LINES OF 00175300
HEADING MAY BE USED. 00175400
* 3 00175500
TABHEAD CLEAR = THE HEADINGS SET UP BY "TABHEAD" WILL NO LONGER 00175600
BE PRINTED. 00175700
* 3 00175702
TABHEAD CLEAR N = THE NTH BUFFER AND ALL FOLLOWING IT WILL 00175704
BE CLEARED AND NO LONGER PRINTED IN THE TAB HEAD. 00175706
* 3 00175800
SINGLE = PRINT ALL THE FOLLOWING EDITED RECORDS WITH SINGLE SPACE PRINTI00175900
NG UNTIL A NEW "*" CONTROL IS READ. 00176000
* 3 00176100
DOUBLE = PRINT ALL THE FOLLOWING EDITED RECORDS WITH DOUBLE SPACE 00176200
PRINTING. THIS SHOULD BE USED IF "SIX" OR "SINGLE" IS SPECIFIED ON THE 00176300
CONTROLLING "$" CARD (SEE PART ONE). 00176400
00176500
00176600
00176700
00176800
* 3 00176900
UNDERLINE N = UNDERLINE ALL THE NON-BLANK CHARACTERS IN THE FOLLOWING 00177000
N EDITED RECORDS. THIS CONTROL IS OPERATIVE WITH ALL "*" CONTROLS 00177100
EXCEPT "PATTERN" AND "PATTERN GLOS". IF TITLE RECORDS ARE TO BE 00177200
UNDERLINED THEN "UNDERLINE" MUST APPEAR WITH AND BEFORE "TITLE" 00177300
ON THE APPROPRIATE TITLE CONTROL RECORD. 00177400
* 2 00177500
IF "UNDERLINE" IS USED IN "SCANNING MODE" (THAT IS WITH 00177600
PARAGRAPH AND GLOSSARY CONTROLS) THEN THE VALUE OF N IS IGNORED AND 00177700
ALL THE EDITED LINES ARE UNDERLINED. IF IN "LINE MODE" N IS EMPTY 00177800
THEN N IS SET EQUAL TO ONE. 00177900
* 3 00178000
INVALID N, M = AFTER THE NEXT SOURCE INPUT RECORD IS READ PLACE A 00178100
* INVALID 15 00178200
QUESTION MARK Q IN COLUMNS N AND M BEFORE ANY EDITING FUNCTION IS 00178300
PERFORMED. A QUESTION MARK MAY NOT BE INCLUDED IN A CARD RECORD AS IT 00178400
IS TREATED BY THE B 5500 MCP AS AN INVALID CHARACTER AND IS ONLY 00178500
ALLOWED FOR MCP CONTROL RECORDS. THE QUESTION MARKS GENERATED BY THE USE00178600
OF THIS CONTROL ARE NOT INCLUDED IN ANY PERMANENT RECORD (ON TAPE OR C00178700
ARDS) BUT ONLY IN THE DOCUMENT. THE INVALID CONTROL MAY BE INTRODUCED AT00178800
ANY POSITION WITHIN THE INPUT RECORDS AND WHEN IT IS ENCOUNTERED, 00178900
THE EDITING CONTROLS WHICH ARE 00179000
OPERATIVE ARE NOT RESET. THAT IS, IF QUESTION MARKS ARE TO BE INCLUDED W00179100
ITHIN A PARAGRAPH THE INVALID CONTROL MAY BE INSERTED IN THE BODY 00179200
OF THE PARAGRAPH INPUT RECORDS AND THE PARAGRAPH CONTROL WILL BE 00179300
CONTINUED UNTIL A DOCUMENT CONTROL RECORD OTHER THAN AN INVALID 00179400
CONTROL IS FOUND. 00179500
NOTE THAT THE INVALID CONTROL MUST APPEAR ALONE ON TH CONTROL CARD. 00179600
* 3 00179700
INVALID N, M ALL = ALL SUCCEEDING CARDS UNTIL THE NEXT ASTERISK 00179710
CONTROL CARD WILL HAVE QUESTION MARKS PLACED IN POSITIONS N AND M. 00179712
* 3 00179714
NAMES = ALL IDENTIFIERS, STRINGS, AND NUMBERS UP TO THE NEXT ASTERISK 00179716
CONTROL WILL BE CROSS-REFERENCED TO THE CURRENT PAGE IN A SPECIAL 00179718
DOCUMENT INDEX. THIS INDEX REPLACES THE REGULAR DOCUMENT CONTROLS 00179720
CROSS-REFERENCE AND IS REQUESTED BY THE DOLLAR CARD OPTION "DOCINDEX". 00179722
THE ITEMS UP TO THE NEXT ASTERISK CONTROL ARE NOT PUT INTO THE 00179724
DOCUMENT ITSELF. 00179726
THIS CONTROL WHILE FAR FROM THE AUTOMATIC KEY WORD INDEXING WHICH 00179728
COULD BE PROVIDED, ALLOWS SOME INDEX OF IDENTIFIERS TO BE 00179730
CONSTRUCTED AND KEPT AUTOMATICALLY IN STEP WITH THE 00179732
DOCUMENT PAGE NUMBERS. 00179734
* 3 00179736
DEFINE = THIS IS USED AS AN 00179800
ABBREVIATION AND TO SAVE THE REPEATED 00179900
PREPARATION OF THE SAME CONTROLS. THE FORMAT OF A DEFINE IS :- 00180000
* SKIP INDENT 20 00180100
* DEFINE <DEFINE INDEX> = <CONTROL INFO> * 00180200
* 6 00180300
THE <DEFINE INDEX> MUST BE AN UNSIGNED INTEGER IN THE RANGE 1 TO 100, 00180400
AND THE <CONTROL INFO> MAY CONTAIN ANY OF THE DOCUMENT CONTROLS 00180500
EXCEPT "DEFINES" AND THE USE OF "DEFINES", THAT IS , 00180600
THE DEFINE CONTROL MAY NOT BE NESTED AND IS NOT RECURSIVE. THE DEFINE 00180700
CONTROLS MAY APPEAR AT ANY PLACE WITHIN THE DOCUMENT SOURCE INPUT 00180800
BUT A DEFINE INDEX MUST HAVE BEEN SPECIFIED IN A DEFINE BEFORE IT IS USE00180900
D. 00181000
* 3 00181100
<DEFINE INDEX> = THIS IS USED TO CALL OUT A PREVIOUSLY DEFINED 00181200
INDEX. EXAMPLE:- * 57 00181300
* 3 00181400
PARAGRAPH -N,M,P = FORM A PARAGRAPH STARTING IN COLUMN N AND ENDING IN C00181500
OLUMN M. INDENT THE FIRST LINE OF THE PARAGRAPH P COLUMNS FROM COLUMN N.00181600
THE MINUS SIGN "-" INDICATES THAT THE FIRST ITEM SCANNED (THAT IS 00181700
WHICH IS EMBEDDED BETWEEN BLANKS) WILL SERVE AS A PARAGRAPH 00181800
IDENTIFICATION AND WILL BE PRINTED IN COLUMN ONE. 00181900
* 6 00182000
IF ",P" IS EMPTY THEN P IS SET EQUAL TO 6, IF ",M" IS EMPTY THEN M IS 00182100
SET EQUAL TO 72 AND IF "N" IS EMPTY THEN N IS SET EQUAL TO ONE. IF THE 00182200
MINUS SIGN IS MISSING THEN NO PARAGRAPH IDENTIFICATION WILL BE 00182300
PRINTED. 00182400
* 4 00182500
PAR = FORM A PARAGRAPH IN PRINT POSITIONS AS SET UP BY THE LAST 00182600
PARAGRAPH CONTROL. IF NO SUCH CONTROL EXISTED THEN THE 00182700
PRINT POSITIONS ARE SET FOR COLUMNS 1-72. 00182800
* 3 00182900
GLOSSARY N,M,P = THIS ALLOWS THE INCLUSION OF GLOSSARY TERMS TOGETHER 00183000
WITH THEIR APPROPRIATE DEFINITIONS. THIS EDITING FUNCTION 00183100
(AND THE PATTERN EDITING FUNCTION DESCRIBED BELOW) 00183200
REQUIRES AND CHECKS FOR CONTROLS WITHIN THE BODY OF THE DOCUMENT 00183300
COMMENT AND NOT ON AN ASTERISK CARD. A GLOSSARY TERM (THE TERM MAY 00183400
CONSIST OF ONE OR MORE ENTRIES:- IDENTIFIERS, NUMBERS AND SPECIAL 00183500
CHARACTERS EXCEPT "=") IS SEPARATED FROM ITS DEFINITION BY AN EQUAL 00183600
(=) SIGN. EXAMPLE:- 00183700
* INDENT 10 00183800
FIELD SIZE = DESCRIPTION OF FIELD SIZE, ETC. 00183900
* 2 00184000
THE LAYOUT OF THE GLOSSARY TERMS AND DEFINITIONS ARE DETERMINED BY THE 00184100
VALUE OF THE PARAMETERS N,M,P. THE GLOSSARY TERM IS PLACED IN COLUMN N A00184200
ND THE DEFINITION IS FORMED AS A PARAGRAPH WITH THE LEFT HAND MARGIN 00184300
IN COLUMN M AND THE RIGHT HAND MARGIN IN COLUMN P. THE EQUAL SIGN 00184400
SEPARATING THE TERM AND ITS DEFINITION IS NOT PRINTED. THE PARAMETERS 00184500
MAY ALSO BE OF THE FORM N,M OR N,AND IN THESE CASES, THE VALUES OF THE 00184600
MISSING PARAMETERS ARE THOSE WHICH WERE LAST USED BY THE GLOSSARY EDITIN00184700
G FUNCTION. IF NO SUCH VALUES HAVE BEEN SET UP, P WILL BE SET TO 72 00184800
AND M SET TO L + 6 WHERE L IS THE LENGTH OF THE FIELD REQUIRED BY THE 00184900
GLOSSARY TERM. PLEASE NOTE THAT N,M, AND P MUST BE UNSIGNED INTEGERS. 00185000
* 2 00185100
IF THE GLOSSARY ITEM IS MISSING AN EQUAL SIGN, THE FIRST LINE OF THAT 00185200
GLOSSARY ENTRY WILL EXTEND FROM N TO P AND ALL FURTHER 00185300
LINES IN THAT ENTRY FROM M TO P. 00185400
00185500
* 4 00185600
GLOS = THIS IS AN ABBREVIATION FOR A GLOSSARY EDITING FUNCTION. WHEN A 00185700
GLOSSARY EDITING FUNCTION HAS BEEN SET UP AS DESCRIBED ABOVE AND IT IS 00185800
DESIRED TO REPEAT THE FUNCTION WITH THE SAME PARAMETERS, THIS 00185900
ABBREVIATED FORM MAY BE USED. IF NO PREVIOUS GLOSSARY TERM HAD BEEN USED00186000
THEN N IS SET TO 1 , M SET TO L + 6, AND P SET TO 72. 00186100
* 2 00186200
THE PARAMETER VALUES FOR THE PARAGRAPH AND GLOSSARY EDITING FUNCTIONS 00186300
ARE SAVED IN DIFFERENT VARIABLES WITHIN THE DOCUMENT EDITING PROGRAM . 00186400
THUS, PAR AND GLOS MAY APPEAR IN ANY ORDER WITHOUT HAVING TO RESPECIFY T00186500
HE PARAMETERS. 00186600
* 3 00186700
TABULATE N,M,P,Q = EACH OF THE FOLLOWING LINES (UNTIL A NEW CONTROL 00186800
IS READ) IS EDITED ACCORDING TO THE POSITIONS OF "/" IN THE INPUT RECORD00186900
LINE. 00187000
IF THERE ARE FOUR <TAB COL>S SPECIFIED IN THE TABULATE CONTROL THEN THE 00187100
INPUT RECORDS SHOULD CONTAIN AT LEAST FOUR "/" SIGNS, EXAMPLE:- 00187200
* SKIP INDENT 20 00187300
A/ B / C/ D / 00187400
/ BB/ / DD/ 00187500
* 6 00187600
"A" WILL BE PLACED IN COLUMN N, "B" IN COLUMN M, "C" IN COLUMN P AND 00187700
"D" IN COLUMN Q. "BB"STARTING IN COLUMN M AND "DD"STARTING IN COLUMN 00187800
Q. 00187900
* 6 00188000
THE FIRST NON BLANK CHARACTERS FOLLOWING A "/" IS PLACED IN THE 00188100
APPROPRIATE TAB COLUMN. (A "/" IS ASSUMED IN COLUMN ZERO, THAT IS, THE 00188200
FIRST NON BLANK CHARACTER IS PLACED IN COLUMN N UNLESS IT IS A "/"). 00188300
ERROR MESSAGES ARE PRINTED IF THE LENGTH OF THE "TAB" FIELDS ARE TOO 00188400
SMALL TO ACCOMODATE THE DATA APPEARING BETWEEN THE "/" MARKS. 00188500
* 3 00188600
TAB N,M,P,Q = SAME AS TABULATE ABOVE. 00188700
* 3 00188800
FORMAT N,M,P,Q = SIMILAR TO TABULATE EXCEPT THAT N,M,P AND Q INDICATE 00188900
THE COLUMNS WHERE THE FIELDS ARE TO END. THAT IS, RIGHT JUSTIFICATION. 00189000
THE CHARACTER APPEARING IMMEDIATELY BEFORE A "/" (A SPACE IS COUNTED AS 00189100
A CHARACTER FOR THIS PURPOSE) IS PLACED IN THE SPECIFIED COLUMN. IF THE 00189200
EXAMPLE FOR "TABULATE" ABOVE WERE USED WITH A "FORMAT" CONTROL THEN 00189300
"A" WOULD BE PLACED IN COLUMN N, "B" IN COLUMN M-1, "C" IN COLUMN P, AND00189400
"D" IN COLUMN Q-2. 00189500
* 3 00189600
FORM N,M,P,Q = SAME AS FORMAT ABOVE. 00189700
* 3 00189710
CODESEQ= THE SEQUENCE NUMBER OF THE FIRST RECORD 00189712
CONTRIBUTING TO A CODE, PERCENT, OR CODEPERCENT CONTROL IS 00189714
LISTED IN THE DOCUMENT. 00189716
*3 00189718
NOCODESEQ=THE SEQUENCE NUMBER OF CODE RECORDS IS NOT LISTED IN 00189720
THE DOCUMENT. THE TOGGLE SET BY THE CODESEQ CONTROL IS NOT RESET 00189722
BY EACH ASTERISK CONTROL, BUT ONLY BY USING "NOCODESEQ". 00189724
* 4 00189800
CODE = THIS ALLOWS THE INCLUSION OF LINES OF SYMBOLIC CODE TO BE 00189900
INCLUDED WITHIN THE DOCUMENT. SINCE IT IS UNDESIRABLE TO DUPLICATE ANY 00190000
SUCH SYMBOLIC RECORDS (ONE SET FOR THE ALGOL COMPILER AND THE OTHER SET 00190100
FOR THE DOCUMENT COMMENT), THE FOLLOWING ARTIFICE MAY BE UTILIZED:- 00190200
* 6 00190300
THE TWO RECORDS PRECEEDING THE CODE TO BE INCLUDED SHOULD HAVE THE 00190400
FOLLOWING FORMAT :- 00190500
* INDENT 20 00190600
COMMENT DOCUMENT 00190700
* CODE ETC SC 00190800
* 2 00190900
WHERE SC IS A SEMICOLON (CLOSING THE COMMENT FOR ALGOL) AND ETC MAY BE00191000
OTHER APPROPRIATE EDITING (EXCLUDING <PARAGRAPH> AND <GLOSSARY>) 00191100
FUNCTIONS. 00191200
* 2 00191300
THE RECORDS FOLLOWING THE LAST CODE RECORD TO BE INCLUDED IN THE DOCUMEN00191400
T SHOULD HAVE A PERCENT SIGN IN COLUMN 1. UNFORTUNATELY, THIS ARTIFICE D00191500
OES NOT LOOK VERY NEAT IN A LISTING PRODUCED BY THE ALGOL COMPILER BUT, 00191600
NEVER THE LESS, IT PROVIDES A MEANS OF DOCUMENTING SECTIONS OF CODE. FOR00191700
EXAMPLE, COMPLETE PROCEDURE HEADINGS WITHOUT DUPLICATION OF INFORMATION00191800
. MOST OF PART 3 OF THIS DOCUMENT IS PRODUCED BY THIS ARTIFICE. 00191900
* 3 00192000
CODE N = READ THE FOLLOWING N SOURCE RECORDS AND INCLUDE THEM IN THE 00192100
DOCUMENT. THIS MAY BE USED TO INCLUDE SUCH THINGS AS PROCEDURE 00192200
HEADINGS. THIS SHOULD BE USED WHEN THE NUMBER OF RECORDS IN THE 00192300
SECTION OF THE CODE TO BE USED IS NOT CHANGING "DYNAMICALLY" BY 00192400
"PATCHING". IN THE CASE WHERE THE NUMBER OF RECORDS IS CHANGING, 00192500
EXAMPLE WHEN GLOBAL DECLARATIONS ARE TO BE INCLUDED IN THE DOCUMENT 00192600
AND ADDITIONS AND DELETIONS ARE MADE DURING PROGRAM CHECKOUT, THEN THE 00192700
"CODE" CONTROL DESCRIBED ABOVE SHOULD BE USED. 00192800
* 4 00192900
PERCENT = IT MAY BE DESIRABLE TO BE ABLE TO INCLUDE 00193000
SEMICOLONS WITHIN THE 00193100
BODY OF THE DOCUMENT. UNFORTUNATELY, IF ANY SUCH SEMICOLONS WERE TO 00193200
BE INCLUDED WITHIN THE BODY OF THE DOCUMENT COMMENT, THE FIRST OF ANY 00193300
SUCH SEMICOLONS WOULD TERMINATE THE COMMENT FOR THE ALGOL COMPILER. TO B00193400
E ABLE TO ACCOMODATE SUCH DOCUMENTATION (AN EXAMPLE WOULD BE THE 00193500
DESIRE TO PRINT THE SYNTAX OF A LANGUAGE WHICH USES SEMICOLONS AS 00193600
DELIMITERS OR FOR ANY OTHER REASON), A SPECIAL FEATURE EMPLOYED 00193700
WITHIN THE ALGOL COMPILER IS USED, NAMELY, THE USE OF THE PERCENT SIGN. 00193800
A PERCENT SIGN WHICH APPEARS WITHIN A RECORD, AND WHICH IS NOT EMBEDDED 00193900
WITHIN A STRING, CAUSES THE COMPILER TO TERMINATE SCANNING THAT PARTICUL00194000
AR RECORD. THIS FEATURE, HOWEVER, IS NOT AVAILABLE WITHIN COMMENTS. THIS00194100
IS A CONVENIENT WAY TO INCLUDE COMMENTS SUCH AS NOTES WHICH INCLUDE SEM00194200
ICOLONS, (THIS MAY BE CLASSED AS A LAZY PROGRAMMERS COMMENT). 00194300
* 2 00194400
THUS, TO USE THIS EDITING FUNCTION, THE RECORD WHICH CONTAINS THE 00194500
SEMICOLON 00194600
"PERCENT" EDITING CONTROL MUST ALSO HAVE A SEMICOLON TO CLOSE OUT THE DO00194700
CUMENT COMMENT. THE FOLLOWING RECORDS TO BE INCLUDED WITHIN THE DOCUMENT00194800
MUST HAVE A PERCENT SIGN IN COLUMN ONE (THIS WILL NOT BE PRINTED) AND 00194900
THE FIRST RECORD ENCOUNTERED WHICH DOES NOT HAVE A PERCENT SIGN IN COLUM00195000
N ONE (OR A COMMENT STARTING IN COLUMN ONE), 00195100
TERMINATES THE RECORD TO BE INCLUDED IN THE DOCUMENT. THE SOURCE 00195200
PROGRAM IS THEN SEARCHED FOR ANOTHER DOCUMENT COMMENT. 00195300
* 3 00195310
CODEPERCENT = THIS IS A COMBINATION OF THE "CODE" AND "PERCENT" CONTROLS00195312
RECORDS FOLLOWING THIS CONTROL ARE USED IN THE DOCUMENT UNTIL A 00195314
RECORD WITH A PERCENT SIGN IN COLUMN ONE IS ENCOUNTERED. THIS RECORD 00195316
AND ALL SUBSEQUENT RECORDS WHICH CONTAIL A PERCENT SIGN IN COLUMN ONE 00195318
ARE USED IN THE DOCUMENT (THE PERCENT SIGN IS BLANKED OUT). 00195320
THE NEXT RECORD WHICH DOES NOT CONTAIN A PERCENT SIGN IN COLUMN ONE 00195322
TERMINATES THE CONTROL. THE SOURCE FILE IS SCANNED FOR THR NEXT 00195324
COMMENT DOCUMENT. 00195326
* 3 00195400
PATTERN = THIS CONTROL WILL PRODUCE A DIAGRAM SHOWING THE "PACKING" 00195500
OF VARIOUS FIELDS WITHIN A COMPUTER WORD. IT IS ORIENTED TOWARDS A 00195600
48 BIT B 5500 WORD. THE BIT POSITIONS ARE NUMBERED FROM 0 TO 47 FROM THE00195700
LEFT AND EACH FIELD IS DESCRIBED BY ITS STARTING BIT POSITION,THE LENGT00195800
H OF THE FIELD AND A SYMBOLIC NAME (WHICH MAY BE EMPTY) AND ALSO A SEMAN00195900
TIC DESCRIPTION. 00196000
* 6 00196100
THE CONTENTS OF THE RECORDS FOLLOWING 00196200
A "PATTERN" CONTROL ARE SCANNED 00196300
AND SHOULD COMPLY WITH THE FOLLOWING SYNATX:- 00196400
* SKIP 00196500
<WORD DESCRIPTION>::= <FIELD DESCRIPTION> . / 00196600
<FIELD DESCRIPTION> , < WORD DESCRIPTION> 00196700
<FIELD DESCRIPTION> ::= <LEFT BIT> : <FIELD LENGTH> 00196800
<SYMBOLIC NAME> = <SEMANTIC DESCRIPTION> 00196900
<LEFT BIT> ::= <UNSIGNED INTEGER> 00197000
<FIELD LENGTH> ::= <UNSIGNED INTEGER> 00197100
<SYMBOLIC NAME> ::= <IDENTIFIER> / <EMPTY> 00197200
<SEMANTIC DESCRIPTION> ::= (ANY SEQUENCE OF CHARACTERS 00197300
EXCEPT A SEMICOLON OR CROSS-HATCH "#") 00197400
* 6 00197500
A DETAILED EXAMPLE IS GIVEN IN APP-2-1. 00197600
* 3 00197700
PATTERN GLOS = THE DIAGRAM IS NOT DRAWN AND THE FIELD DESCRIPTIONS 00197800
ARE PRINTED IN A SIMILAR FORMAT TO A GLOSSARY ENTRY, 00197900
(SEE APP-2-1). 00198000
* PAGEID 1,"APP-2-" 00198100
* PAGE INDEX UNDERLINE 00198200
SAMPLE PATTERN. 00198300
* INDENT 3 SKIP UNDERLINE INDEX 00198400
EXAMPLE OF INPUT TO "* PATTERN". 00198500
* SKIP 00198600
1:5 = NOT USED # , 00198700
6:6 SHEAD = INDEX TO BE USED TO FIND THE STACK HEAD IN THE 00198800
ARRAY "LINKS". # , 00198900
12:6 = NOT USED # , 00199000
18:15 FLINK = FORWARD LINK TO BE USED WITH THE ARRAY "WAITLIST".# , 00199100
33:15 BLINK = BACKWARD LINK TO BE USED WITH THE ARRAY "WAITLIST".# . 00199200
* INDENT 3 SKIP 2 UNDERLINE INDEX 00199300
EXAMPLE OF "* PATTERN". 00199400
* SKIP PATTERN 00199500
1:5 = NOT USED # , 00199600
6:6 SHEAD = INDEX TO BE USED TO FIND THE STACK HEAD IN THE 00199700
ARRAY "LINKS". # , 00199800
12:6 = NOT USED # , 00199900
18:15 FLINK = FORWARD LINK TO BE USED WITH THE ARRAY "WAITLIST".# , 00200000
33:15 BLINK = BACKWARD LINK TO BE USED WITH THE ARRAY "WAITLIST".# . 00200100
* INDENT 3 SKIP 2 UNDERLINE INDEX 00200200
EXAMPLE OF "* PATTERN GLOS". 00200300
* SKIP PATTERN GLOS 00200400
1:5 = NOT USED # , 00200500
6:6 SHEAD = INDEX TO BE USED TO FIND THE STACK HEAD IN THE 00200600
ARRAY "LINKS". # , 00200700
12:6 = NOT USED # , 00200800
18:15 FLINK = FORWARD LINK TO BE USED WITH THE ARRAY "WAITLIST".# , 00200900
33:15 BLINK = BACKWARD LINK TO BE USED WITH THE ARRAY "WAITLIST".# . 00201000
* 14 00201100
DOCUMENT CONTROLS CROSS REFERENCE LIST. 00201200
* SKIP 2 00201300
2 (000019) *00021000* 00060000 00064000 00072000 00079000 00201400
00094000 00097000 00100000 00103000 00105000 00201500
00107000 00111000 00115000 00117000 00119000 00201600
00186000 00201000 00271000 00299000 00201700
3 (000004) *00022000* 00206000 00233000 00303000 00201800
4 (000025) *00023000* 00208000 00211000 00243000 00248000 00201900
00252000 00258000 00260000 00262000 00265000 00202000
00285000 00289000 00294000 00307000 00310000 00202100
00313000 00321000 00326000 00327000 00335000 00202200
00338000 00342000 00344000 00349000 00352000 00202300
5 (000001) *00024000* 00202400
CENTER (000004) 99006000 00032000 00034000 00039000 00202500
DEFINE (000012) 00020000 00021000 00022000 00023000 00024000 00202600
00025000 99002000 00027000 00028000 99003000 00202700
99004000 99005000 00202800
GLOS (000002) *00023000* 00230000 00202900
GLOSSARY (000005) *00022000**00024000**00027000**00028000* 00217000 00203000
INDENT (000007) 00050000 00052000 00054000 00056000 99093000 00203100
00196000 00198000 00203200
INDEX (000001) *99002000* 00203300
PAGE (000002) *99002000* 99006000 00203400
PAGEID (000001) 00029000 00203500
PAR (000001) *00021000* 00203600
PARAGRAPH (000002)*00020000**00025000* 00203700
QUIT (000001) 99108000 00203800
SKIP (000025) *00020000**00021000**00022000**00023000**00024000* 00203900
*00025000**00027000**00028000**99003000**99004000* 00204000
*99005000* 00032000 00034000 00039000 00050000 00204100
00052000 00054000 00056000 99019000 99021000 00204200
99028000 00125000 99093000 00217000 00230000 00204300
TAB (000003) *99003000**99004000**99005000* 00204400
UNDERLINE (000003)*99002000* 99006000 00039000 00204500
* FINISH ; 00204600
COMMENT DOCUMENT "PART 3" 00204700
* UNDERLINE TITLE CENTER 00204800
E.T.M. 279 (20 NOV 1965). 00204900
* DEFINE 1 = SKIP 2 PARAGRAPH 5,67,0 * 00205000
* DEFINE 2 = SKIP PAR * 00205100
* DEFINE 3 = SKIP GLOSSARY 5,25,67 * 00205200
* DEFINE 4 = SKIP GLOS * 00205300
* DEFINE 5 = SKIP GLOSSARY 8,30,67 * 00205400
* DEFINE 6 = SKIP PARAGRAPH 20,67,0 * 00205500
* DEFINE 7 = PAGE INDEX UNDERLINE * 00205600
* DEFINE 8 = SKIP GLOSSARY 10,25,67 * 00205700
* DEFINE 9 = SKIP GLOSSARY 10,35,67 * 00205800
* DEFINE 10 = SKIP 2 TAB 5, 25, 45 * 00205900
* DEFINE 11 = SKIP 2 TAB 5,35 * 00206000
* DEFINE 12 = SKIP 2 TAB 5 * 00206100
* DEFINE 13 = SKIP 2 INDENT 3 INDEX UNDERLINE * 00206200
* DEFINE 14 = PAGE INDENT 3 INDEX UNDERLINE * 00206300
* PAGEID 1, " 3-" 00206400
* PAGE CENTER UNDERLINE 00206500
A CROSS REFERENCE,FLOW CHART AND DOCUMENT EDITING PROGRAM (PART THREE). 00206600
* SKIP CENTER TITLE CLEAR 00206700
BY GLYN HUGH JONES AND JOAN G. DUNSHEE 00206800
* SKIP CENTER 00206900
TECHNICAL STAFF 00207000
BURROUGHS CORPORATION 00207100
PASADENA 00207200
* SKIP 3 INDEX CENTER UNDERLINE 00207300
SUMMARY 00207400
* 1 00207500
A SYNTACTICALLY DEFINED FLOW CHART LANGUAGE IS DESCRIBED 00207600
TOGETHER WITH A DESCRIPTION 00207700
OF THE FACILITIES PRESENTLY AVAILABLE FOR GENERATING AND MAINTAINING 00207800
FLOW CHARTS 00207900
ON A BURROUGHS B5500 COMPUTER. 00208000
* SKIP 6 TAB 2,40 00208100
AUTHORS:/APPROVED:/ 00208200
* SKIP 4 TAB 2,40 00208300
-------------------- / -------------------- / 00208400
GLYN H. JONES AND/ J. F. KALBACH/ 00208500
* SKIP TAB 2,40 00208600
JOAN G. DUNSHEE/ MANAGER,TECHNICAL STAFF/ 00208700
* SKIP 1 INDENT 30 00208800
ORIGINAL ISSUE SEP.27, 1964 00208900
FIRST REVISED ISSUE OCT. 27, 1965 00209000
SECOND REVISED ISSUE NOV. 21, 1966 00209100
THIRD REVISED ISSUE OCT.7, 1968 00209110
* 7 00209200
INTRODUCTION 00209300
* 2 00209400
THERE HAS ALWAYS BEEN A NEED TO AUTOMATE 00209500
(AS FAR AS POSSIBLE) THE 00209600
GENERATION AND UPDATING OF FLOW CHARTS RELATING TO THE DESCRIPTION 00209700
AND OPERATION OF COMPUTER PROGRAMS. 00209800
* 2 00209900
SEVERAL FLOW CHART GENERATING SYSTEMS HAVE BEEN DEVELOPED, 00210000
SUCH AS "AFLOW", "AUTOCHART", "80FLOW", ETC, TO ASSIST IN THE 00210100
DOCUMENTATION OF COMPUTER PROGRAMS AND SOFTWARE SYSTEMS. 00210200
* 2 00210300
SEVERAL OF THESE SYSTEMS REQUIRE A CONSIDERABLE EFFORT BY THE 00210400
USER TO LAYOUT THE FLOW CHART AND SUPPLY ALL THE CONNECTION DETAILS 00210500
OR THE USER IS 00210600
REQUIRED TO USE RESTRICIVE FIXED FIELD INPUT FORMS, OTHERS 00210700
REQUIRE SYNTACTICALLY CORRECT ALGOL OR FORTRAN PROGRAMS AND THESE 00210800
PRODUCE VERY DETAILED FLOW CHARTS. 00210900
* 2 00211000
FLOW CHARTS DESCRIBED USING THE LANGUAGE PRESENTED IN THIS NOTE MAY BE 00211100
EMBEDDED WITHIN "COMMENT" PORTIONS OF THE VARIOUS FREE FIELD 00211200
LANGUAGES SUCH AS ALGOL, ESPOL, AND BPL. 00211300
* 2 00211400
THE FLOW CHART GENERATION PORTION 00211500
OF THE XREF PROGRAM SCANS THE DESIGNATED 00211600
SOURCE INPUT FILES (AS DESCRIBED IN PART ONE) FOR COMMENTS 00211700
WHICH BEGIN WITH "COMMENT FLOW". SUCH COMMENTS ARE USED UNTIL 00211800
A "FINISH" OR "QUIT" IS FOUND. IF A "FINISH" IS FOUND THEN MORE 00211900
FLOWCHART COMMENTS ARE SOUGHT AND IF A "QUIT" IS FOUND THEN 00212000
FLOWCHART GENERATION IS TERMINATED. 00212100
SINCE SEMICOLONS ARE NOT DEFINED TO BE REQUIRED IN THE FLOW CHART 00212200
LANGUAGE A SEMI COLON SHOULD FOLLOW THE "FINISH" OR "QUIT" 00212300
TO CLOSE OUT THE COMMENT. 00212400
* 7 00212500
SYNTAX CONVENTIONS. 00212600
*1 00212700
THE SYNTAX OF THE FLOW CHART 00212800
LANGUAGE IS DESCRIBED THROUGH THE USE OF METALINGUISTI00212900
C SYMBOLS. THESE SYMBOLS HAVE THE FOLLOWING MEANINGS: 00213000
* 1 00213100
LEFT AND RIGHT BROKEN BRACKETS "<" AND ">" ARE USED TO CONTAIN ONE 00213200
OR MORE CHARACTERS REPRESENTING A METALINGUISTIC VARIABLE WHOSE VALUE 00213300
IS GIVEN BY A METALINGUISTIC FORMULA. 00213400
*1 00213500
THE SYMBOL "::=" MEANS "IS DEFINED TO BE" AND SEPARATES THE METALINGUIST00213600
IC VARIABLE ON THE LEFT OF THE FORMULA FROM ITS DEFINITION ON THE 00213700
RIGHT. 00213800
*1 00213900
THE SYMBOL "/" MEANS "OR". THIS SYMBOL SEPARATES MULTIPLE DEFINITIONS 00214000
OF A METALINGUISTIC VARIABLE. 00214100
*1 00214200
LESS-THAN-OR-EQUAL AND GREATER-THAN-OR-EQUAL SIGNS, "{" AND"}", ARE 00214300
USED TO ENCLOSE METALINGUISTIC VARIABLES 00214400
WHICH ARE DEFINED BY THE MEANING OF THE ENGLISH LANGUAGE EXPRESSION 00214500
CONTAINED WITHIN THE BRACES. THIS FORMULATION IS USED ONLY WHEN IT IS 00214600
IMPOSSIBLE OR IMPRACTICAL TO USE A METALINGUISTIC FORMULA. 00214700
* 1 00214800
THE BRACKETS "[" AND "]" ARE USED TO ENCLOSE GROUPS OF 00214900
METALINGUISTIC VARIABLES WHICH MAY BE PERMUTED IN ANY ORDER. EXAMPLE: 00215000
* SKIP 00215100
<D> ::= [<A> B <C>] IS EQUIVALENT TO :- 00215200
* SKIP 00215300
<D> ::= <A> B <C> / <A> <C> B / 00215400
B <A> <C> / B <C> <A> / 00215500
<C> <A> B / <C> B <A> 00215600
*1 00215700
THE ABOVE METALINGUISTIC SYMBOLS ARE USED IN FORMING A METALINGUISTIC FO00215800
RMULA. A METALINGUISTIC FORMULA IS A RULE WHICH WILL PRODUCE AN ALLOWAB00215900
LE SEQUENCE OF CHARACTERS AND/OR SYMBOLS. THE ENTIRE SET OF SUCH FORMUL00216000
AS DEFINES THE CONSTRUCTS OF THE FLOW CHART LANGUAGE. 00216100
*1 00216200
ANY MARK OR SYMBOL IN A METALINGUISTIC FORMULA WHICH IS NOT ONE OF THE A00216300
BOVE METALINGUISTIC SYMBOLS DENOTES ITSELF. 00216400
*1 00216500
FLOW CHART 00216600
CONVENTIONS USED IN WRITING SYNTAX ARE ILLUSTRATED BY THE FOLLOWING 00216700
EXAMPLE: 00216800
* SKIP 00216900
<IDENTIFIER> ::= <LETTER> / <IDENTIFIER><LETTER> / <IDENTIFIER><DIGIT> 00217000
*1 00217100
THIS METALINGUISTIC FORMULA IS READ AS FOLLOWS: AN IDENTIFIER IS D00217200
EFINED TO BE A LETTER, OR AN IDENTIFIER FOLLOWED BY A LETTER, OR AN IDEN00217300
TIFIER FOLLOWED BY A DIGIT. 00217400
*1 00217500
THE METALINGUISTIC FORMULA DEFINES A RECURSIVE RELATIONSHIP BY WHICH A C00217600
ONSTRUCT CALLED AN IDENTIFIER MAY BE FORMED. EVALUATION OF THE FORMULA 00217700
SHOWS THAT AN IDENTIFIER BEGINS WITH A LETTER. THE LETTER MAY STAND ALON00217800
E, OR MAY BE FOLLOWED BY ANY MIXTURE OF LETTERS AND DIGITS. 00217900
* 7 00218000
FLOW CHART SYNTAX 00218100
<FLOW BLOCK>::= "COMMENT FLOW" <START PART> <TITLE PART> * 00218200
<FLOW SECTIONS>*<CLOSE PART><SEMICOLON> 00218300
<START PART> ::= START / START <PAGE ID PART> / <PAGE ID PART> / 00218400
<EMPTY> 00218500
<CLOSE PART> ::= QUIT / FINISH / <EMPTY> 00218600
<TITLE PART> ::= TITLE <CONTENTS> / <EMPTY> 00218700
<FLOW SECTIONS> ::= <SECTION> / <FLOW SECTIONS> * <SECTION> 00218800
<SECTION> ::= BEGIN <SECTION BODY>* END 00218900
<SECTION BODY> ::= <FLOW BOX> / <SECTION BODY> * <FLOW BOX> 00219000
<CONTENTS> ::= {ANY STRING OF CHARACTERS NOT CONTAINING "*" OR "%"} 00219100
<FLOW BOX> ::= <LABEL> : <FUNCTIONAL BOX> / <FUNCTIONAL BOX> / 00219200
<COMMENT STATEMENT> / <SECTION HEADER> / 00219300
<PUNCH CONTROL> / 00219302
<CODE PART> <FLOW LINE CONTROLS> / 00219400
<TABLE PART> <FLOW LINE CONTROLS> 00219500
<SECTION HEADER> ::= HEAD <CONTENTS> / HEADING <CONTENTS> 00219600
<LABEL> ::= <LETTER> / <LABEL> <LETTER> / <LABEL> <DIGIT> 00219700
<COMMENT STATEMENT> ::= COMMENT <CONTENTS> 00219800
<PUNCH CONTROL> ::= PUNCH / <EMPTY> 00219802
<FUNCTIONAL BOX> ::= <BASIC BOX> / <CONTROL BOX> / <LAYOUT CONTROL> 00219900
<BASIC BOX> ::= <BASIC BOX PART> <CONTENTS> 00220000
<BASIC BOX PART> ::= BOX / <NON-RESERVED WORD> 00220100
<NON-RESERVED WORD> ::= {ANY IDENTIFIER NOT USED IN FLOW CHART SYNTAX} 00220200
<CONTROL BOX> ::= <TEST BOX> / <SWITCH BOX> / <SIMPLE CONTROL BOX> / 00220300
<ENTER BOX> / <EXIT BOX> 00220400
/ <ITERATION BOX> 00220500
<SIMPLE CONTROL BOX> ::= <CONTROL TYPE PART> <CONTENTS> / 00220600
GO TO <LABEL> / NOTE <CONTENTS> 00220700
<CONTROL TYPE PART> ::= TERM / TERMINATE / BOXONLY 00220800
<TEST BOX> ::= <TEST CUE PART> <TEST BOX PART> 00220900
<CONDITIONAL BRANCH PART> 00221000
<TEST CUE PART> ::= TEST / IF / IS / DOES / WAS 00221100
<TEST BOX PART> ::= {ANY STRING OF CHARACTERS NOT CONTAINING 00221200
"*","NO","YES","TRUE","FALSE","THEN"} 00221300
<CONDITIONAL BRANCH PART> ::= <CONDITION> <ACTION PART> 00221400
<CONDITION> ::= TRUE / FALSE / YES / NO / THEN 00221500
<ACTION PART> ::= GO TO <LABEL> / GO TO <LABEL> ELSE GO TO <LABEL> 00221600
/ ( <SECTION BODY>*) / (<SECTION BODY>*) ELSE 00221700
(<SECTION BODY>*) 00221800
<ITERATION BOX> ::= GENSYM: <TEST CUE PART> <TEST BOX PART> 00221900
<CONDITION> (<SECTION BODY>* GO TO GENSYM*) 00222000
<SWITCH BOX> ::= SWITCH <SWITCH BOX PART> GO TO <SWITCH LIST> 00222100
<SWITCH BOX PART> ::= {ANY STRING OF CHARACTERS NOT CONTAINING 00222200
"*","GO"} 00222300
<SWITCH LIST> ::= <LABEL PART> / <SWITCH LIST>, <LABEL PART> 00222400
<LABEL PART> ::= <LABEL> / <LABEL> (<LABEL INDEX>) 00222500
<LABEL INDEX> ::= {UNSIGNED INTEGER OF NOT MORE THAN 3 DIGITS} 00222600
<ENTER BOX> ::= ENTER 00222700
<EXIT BOX> ::= EXIT 00222800
<LAYOUT CONTROL> ::= <PAGE ID PART> / <PAGE PART> / <COLUMN PART> / 00222900
<MAXCOL PART> / <DATE PART> / <LEFTJUSTIFY PART> 00223000
<DATE PART> ::= DATE / DATE CLEAR / <EMPTY> 00223100
<MAXCOL PART> ::= MAXCOL <UNSIGNED INTEGER> 00223200
<LEFTJUSTIFY PART> ::= LEFTJUST / LEFTJUST NO 00223300
<PAGE PART> ::= PAGE <PAGE SKIP COUNT> / PAGE <INSERT PART> / 00223400
PAGEINC <PAGE INCREMENT> / <PAGEID PART> / 00223500
<PAGEID PART> <PAGE NMBR FORMAT> / <EMPTY> 00223600
<PAGE ID PART> ::= PAGEID <PAGE NUMBER> , <ID POSITION> <PAGE IDENT> 00223700
<PAGE NUMBER> ::= <UNSIGNED INTEGER> 00223800
<ID POSITION> ::= + / <EMPTY> 00223900
<PAGE IDENT> ::= {A STRING OF UP TO SIX CHARACTERS BOUNDED BY QUOTES} 00224000
<INSERT PART> ::= INSERTPAGE <PAGE NUMBER> <INSERT SKIP COUNT> / 00224100
INSERTPAGE 00224200
<PAGE NMBR FORMAT> ::= DECIMALS / DECIMALS <PLACES> 00224300
<PLACES ::= {UNSIGNED INTEGER EIGHT OR LESS} 00224400
<INSERT SKIP COUNT> ::= , <PAGE SKIP COUNT> / <EMPTY> 00224500
<PAGE SKIP COUNT> ::= <UNSIGNED INTEGER> / <EMPTY> 00224600
<PAGE INCREMENT> ::= <UNSIGNED INTEGER> / <EMPTY> 00224700
<COLUMN PART> ::= COL / COLUMN 00224800
<CODE PART> ::= CODE / CODE <CODE LINE COUNT> 00224900
<CODE LINE COUNT> ::= <UNSIGNED INTEGER> 00225000
<TABLE PART> ::= TABLE / TABLE <TABLE LINE COUNT> 00225100
<TABLE LINE COUNT> ::= <UNSIGNED INTEGER> 00225200
<FLOW LINE CONTROLS> ::= SINGLE / DOUBLE / <EMPTY> 00225300
00225400
<PAGE LINE COUNT> ::= <UNSIGNED INTEGER> / <EMPTY> 00225500
<UNSIGNED INTEGER> ::= <DIGIT> / <UNSIGNED INTEGER><DIGIT> 00225600
<LETTER> ::= A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z 00225700
<DIGIT> ::= 0/1/2/3/4/5/6/7/8/9 00225800
<SEMICOLON> ::= {THE USUAL MEANING} 00225900
* PAGE UNDERLINE INDEX 00226000
FLOW SEMANTICS 00226100
* 3 00226200
LEFTJUST = ALL LINES WILL BE LEFTJUSTIFIED UNTIL A "LEFTJUST NO" CONTROL00226300
IS READ. 00226400
* 4 00226500
LEFTJUST NO = RESUME CENTERING OF LINES. 00226600
* 3 00226700
DECIMALS N= PAGE NUMBER WILL BE FORMATTED WITH N PLACES TO THE RIGHT 00226800
OF THE DECIMAL POINT. IF N IS EMPTY IT IS SET TO TWO. 00226900
* 3 00227000
INSERTPAGE N,M = ASSIGN THE PAGE NUMBER N TO THE NEXT PAGE AND 00227100
CONSIDER THAT PAGE AS A LOGICAL UNIT. USE A PAGE INCREMENT OF M UNTIL A00227200
NEW "PAGE" OR "INSERTPAGE" CONTROL IS FOUND. IF N IS EMPTY IT IS 00227300
SET TO THE CURRENT NEXT PAGE. IF M IS EMPTY IT IS SET TO 1. 00227400
* 3 00227404
PUNCH = 00227406
IF MAXCOL IS GREATER THAN 2 IT IS RESET TO A VALUE OF 2. 00227410
EACH TIME A FLOW PAGE IS PRINTED IT IS ALSO WRITTEN ON THE FILE PNCH. 00227412
THE RECORDS ARE SEQUENCED IN STEPS OF 10 STARTING WITH 00000010. 00227414
FLOW CHARTS MAY BE GENERATED AND PUNCHED. 00227416
THE PUNCHED DECK MAY THEN BE USED AS A PATCH DECK TO A DOCUMENT THUS 00227418
ALLOWING FLOW CHARTS AND DOCUMENTS TO BE INTERLEAVED. 00227420
* 7 00227500
EXAMPLE OF A FLOW CHART DESCRIPTION. 00227600
COMMENT FLOW 00227700
START 00227800
PAGEID 1,"APP 3-" * 00227900
TITLE SAMPLE FLOW CHART PRODUCED BY THE XREF PROGRAM * 00228000
BEGIN 00228100
HEADING INTRODUCTION TO THE "BOXES" *ENTER* 00228200
BOX EACH SECTION IS DELIMITED BY A "BEGIN" AND "END" * 00228300
BOX SEVERAL "SECTIONS" COMPRISE A FLOW CHART 00228400
DESCRIPTION AND THE COLLECTION OF THE SECTIONS ARE 00228500
DELIMITED BY A "START <TITLE PART>" AND A "<FINISH PART>"*00228600
BOX SEVERAL DIFFERENT TYPES OF "BOXES" ARE ALLOWED 00228700
AND SAMPLES OF EACH ARE DESCRIBED BELOW * MAXCOL 2 * 00228800
BOX SUCCESSIVE "BOXES" ARE DELIMITED BY AN "*" *DATE** 00228900
BOXES WILL BE VERTICALLY CONNECTED IF THEY ARE ENTERED 00229000
THROUGH AN "ENTER" BOX OR A LABELLED BOX* 00229100
BOX THE FIRST IDENTIFIER FOUND AFTER A "*" IS 00229200
EXAMINED TO SEE IF IT IS FOLLOWED BY A COLON OR IF IT 00229300
IS A FLOW CHART RESERVED IDENTIFIER.. . IF IT 00229400
IS FOLLOWED BY A COLON IT WILL BE CONSIDERED TO BE 00229500
A LABEL. OTHERWISE, IF IT IS NOT A RESERVED WORD, IT IS 00229600
ASSUMED TO BE THE FIRST WORD OF TEXT IN A BASIC BOX. * 00229700
BOX THE NEXT SECTION WILL SHOW THE VARIOUS BOXES *EXIT* 00229800
END * 00229900
BEGIN 00230000
HEADING SAMPLE OF THE VARIOUS "BOXES". * ENTER * 00230100
BOX A FUNCTIONAL BOX MAY BE A BASIC BOX, A CONTROL BOX, 00230200
A LAYOUT CONTROL BOX, OR A NOTE BOX* 00230300
MORE: DOES A COLON FOLLOW THE FIRST IDENTIFIER 00230400
YES GO TO LABLEL* 00230500
TEST TEST WHETHER THE FIRST IDENTIFIER IS "BOX" -- 00230600
A BASIC RECTANGULAR BOX IS PRODUCED YES GO TO BASIC* 00230700
TEST IF THE FIRST IDENTIFIER IS "IF," "TEST," "IS," 00230800
"WAS," OR "DOES" THEN 00230900
GO TO TESTBOX * 00231000
TEST IF THE FIRST IDENTIFIER IS "SWITCH" 00231100
YES GO TO SWITCHL * 00231200
IF THE FIRST IDENTIFIER IS " TERM" OR 00231300
"TERMINATE" THEN GO TO TERML* 00231400
IF "BOXONLY" THEN GO TO BXONLY* 00231500
BOX IF THE FIRST IDENTIFIER IS "COMMENT" THEN THE 00231600
SOURCE INPUT IS SCANNED UNTIL AN "*" IS FOUND * 00231700
IF "CODE" OR "TABLE" WAS FOUND , TRANSFER CONTROL TO 00231800
CODEL OR TABLEL NO GO TO CONTIN* SWITCH 00231900
GO TO CODEL (0), TABLEL(1) * COL* 00232000
CONTIN: IS LAYOUT CONTROL BOX FOUND YES GO TO LAYLAB* 00232100
WAS THE FIRST IDENTIFIER "NOTE" YES GO TO NOTEBOX* 00232200
BOX IF IT WAS "GO TO" GENERATE A TRANSFER.. OTHERWISE 00232300
IT MUST BE A NON-RESERVED WORD * GO TO BASIC* 00232400
COL* 00232500
LABLEL: IF THE LABEL IS "GENSYM" THEN (GENERATE A LABEL*)*PROCESS 00232600
THE LABEL* GO TO MORE* 00232700
NOTE - THE BASIC PURPOSE OF GENSYM IS TO SIMPLIFY WRITING 00232800
LOOPS.. IT IS EXPECTED THAT A TEST ON SOME CONTROL 00232900
VARIABLE WILL BE MADE AFTER WHICH A SEQUENCE OF BOXES 00233000
ENDING WITH A "GO TO GENSYM" WILL BE CONDITIONALLY 00233100
EXECUTED.. NESTED GENSYMS ARE POSSIBLE* 00233200
BASIC: BOX CONSTRUCT A RECTANGULAR BOX WITH ALL OF THE NON-BLANK 00233300
CHARACTERS FROM THE SOURCE FILES UP TO THE NEXT "*".. 00233400
THE WORD "BOX" WILL NOT BE PRINTED IF FIRST* 00233500
GO TO MORE *COL* 00233600
TESTBOX: A BOX IS BUILT UNTIL A "NO", "YES", "THEN", "TRUE" OR 00233700
"FALSE" IS FOUND FOLLOWED BY EITHER 00233800
"GO TO <LABEL>" OR A LEFT PARENTHESIS * 00233900
IF A "GO TO" WAS FOUND THEN 00234000
(BUILD A BOX WITH APPROPRIATE TRANSFERS*) ELSE 00234100
(CREATE LABELS NECESSARY TO EXECUTE FOLLOWING BOXES 00234200
IF CONDITION HOLDS AND OTHERWISE BYPASS THEM*)* 00234300
THE WORD "TEST" WILL NOT BE PRINTED IF IT IS THE FIRST 00234400
WORD IN THE BOX* GO TO MORE* COL* 00234500
SWITCHL: BOX A BOX IS BUILT UNTIL A "GO TO" IS FOUND WHICH IS 00234600
FOLLOWED BY A LIST OF LABELS SEPARATED BY COMMAS. 00234700
EXAMPLE : - * 00234800
SWITCH CONTROL IS TRANSFERRED ACCORDING TO THE VALUE 00234900
OF SOME PARAMETER TO ONE OF THE LABELS FOLLOWING THE 00235000
"GO TO" GO TO BASIC, TESTBOX, SWITCHL,LAYLAB,MORE * COL* 00235100
NOTEBOX: CONTENTS OF NOTE ARE INCLUDED IN FLOW BUT DELIMITED BY 00235200
HORIZONTAL LINES* GO TO MORE* 00235300
NOTEBOX WHILE LINES ARE CENTERED IN THE VARIOUS BOXES, 00235400
THEY ARE LEFT-JUSTIFIED IN NOTES* 00235500
TERML: BOX A RECTANGULAR BOX IS CONSTRUCTED WITHOUT A 00235600
CONTINUATION FLOW BEYOND IT AND "TERM" OR "TERMINATE" 00235700
IS WRITTEN* 00235800
GO TO MORE* 00235900
BXONLY: A BOX IS DRAWN WITH NO CONTINUATION LINE FROM IT * 00236000
GO TO MORE* 00236100
CODEL: INCLUDE N LINES OF CODE IN THE FLOW, WHERE N IS THE CODE 00236200
LINE COUNT.. IF N IS MISSING, INCLUDE ALL CODE UNTIL A 00236300
PERCENT SIGN IS READ.* GO TO MORE* COL* 00236400
TABLEL: INCLUDE N LINES OF A TABLE IN THE FLOW, WHERE N IS THE 00236500
TABLE LINE COUNT.. IF N IS MISSING, INCLUDE ALL OF TABLE 00236600
UNTIL PERCENT SIGN IS READ.* GO TO MORE* 00236700
LAYLAB: BOX A NEW PAGE MAY BE FORMED BY USING "PAGE N" WHERE 00236800
N IS AN UNSIGNED INTEGER OR EMPTY.. THE PAGE NUMBER IS 00236900
INCREASED BY THE VALUE OF N (ONE IF N IS EMPTY) * 00237000
BOX A NEW PAGE IDENTIFICATION MAY BE INTRODUCED BY USING 00237100
"PAGEID N, + STRING" WHERE N IS THE STARTING PAGE 00237200
NUMBER AND THE PLUS SIGN INDICATES THAT THE "STRING" 00237300
IS TO BE PRINTED TO THE RIGHT OF THE PAGE NUMBER.. IF THE 00237400
PLUS IS MISSING THEN THE STRING IS PRINTED TO THE LEFT 00237500
OF THE PAGE NUMBER * 00237600
BOX THE PAGE INCREMENT IS NORMALLY SET EQUAL TO ONE BUT 00237700
IT MAY BE CHANGED TO A VALUE N BY USING "PAGEINC N" *COL* 00237800
BOX THE PRINTED FLOW CHART IS COMPOSED OF THREE VERTICAL 00237900
COLUMNS AND A NEW COLUMN WILL BE STARTED IF "COL" OR 00238000
"COLUMN" IS USED * 00238100
BOX LAYOUTS WITH ONE OR TWO COLUMNS MAY BE OBTAINED BY 00238200
USING "MAXCOL N" WHERE N IS 1, 2, OR 3 * 00238300
NOTE ABOUT LINE CONTROLS: A PERIOD "." FOLLOWED BY 00238400
A SPACE WILL CAUSE A NEW LINE WITHIN THE BOX TO BE 00238500
STARTED.. TO END A SENTENCE WITH A PERIOD, USE TWO PERIODS00238600
BEFORE SPACING.. . 00238700
THIS HOWEVER WILL CAUSE SKIPPING TO THE NEXT LINE AS WELL 00238800
AS PRINTING THE PERIOD. TO GET A PERIOD WITH NO SKIP TO 00238900
THE NEXT LINE, USE THE CONSTRUCT ".#".# THE "#" WILL 00239000
COME OUT AS A BLANK.. 00239100
WITHIN A NOTE A NEW LEFT-JUSTIFIED LINE IS BEGUN 00239200
FOLLOWING A PERIOD AND SPACE.* 00239300
BOX EACH "BEGIN" WILL START WITH A NEW PAGE * 00239400
GO TO MORE* 00239500
NOTE <FLOW LINE CONTROLS> ARE NOT PRESENTLY IMPLEMENTED* 00239600
NOTE "FINISH" SIGNALS THE END OF A FLOW CHART AND WILL 00239700
CAUSE TABLE OF CONTENTS TO BE PRINTED.. "QUIT" WILL STOP 00239800
THE SEARCH FOR FLOW CHARTS.. IF NEITHER PRECEDES THE 00239900
SEMICOLON, THE NEXT FLOW COMMENT WILL BE TREATED AS A 00240000
CONTINUATION OF THE LAST CHART* 00240100
NOTE THE ABOVE NOTE IS ONLY IMPLEMENTED FOR "QUIT" 00240200
AND "FINISH"* 00240300
END * QUIT * 00240400
* PAGEID 1 , "APP 3-" 00240500
* 7 00240600
FLOW CHART EXAMPLE (WITH BOXES). 00240700
* PAGEID 7,"APP 3-" 00240800
* 7 00240900
FLOW CHART LABEL IDENTIFIERS CROSS REFERENCE LIST 00241000
BASIC (000004) APP 3- 2 APP 3- 3 *APP 3- 3* APP 3- 4 00241100
BXONLY (000002) APP 3- 2 *APP 3- 5* 00241200
CODEL (000002) APP 3- 2 *APP 3- 5* 00241300
CONTIN (000002) APP 3- 2 *APP 3- 3* 00241400
G0001 (000002) APP 3- 3 *APP 3- 3* 00241500
G0002 (000002) APP 3- 4 *APP 3- 4* 00241600
G0003 (000002) APP 3- 4 *APP 3- 4* 00241700
LABLEL (000002) APP 3- 2 *APP 3- 3* 00241800
LAYLAB (000003) APP 3- 3 APP 3- 4 *APP 3- 5* 00241900
MORE (000011) *APP 3- 2* APP 3- 3 APP 3- 3 APP 3- 4 APP 3- 4 00242000
APP 3- 5 APP 3- 5 APP 3- 5 APP 3- 5 APP 3- 5 00242100
APP 3- 6 00242200
NOTEBOX (000002) APP 3- 3 *APP 3- 5* 00242300
SWITCHL (000003) APP 3- 2 *APP 3- 4* APP 3- 4 00242400
TABLEL (000002) APP 3- 2 *APP 3- 5* 00242500
TERML (000002) APP 3- 2 *APP 3- 5* 00242600
TESTBOX (000003) APP 3- 2 *APP 3- 4* APP 3- 4 00242700
* FINISH ; 00242800
COMMENT DOCUMENT "PART 4" 00242900
* DEFINE 1 = SKIP 2 PARAGRAPH 5,67,0 * 00243000
* DEFINE 2 = SKIP PAR * 00243100
* DEFINE 3 = SKIP GLOSSARY 5,25,67 * 00243200
* DEFINE 4 = SKIP GLOS * 00243300
* DEFINE 5 = PAGE UNDERLINE INDENT 2 INDEX * 00243400
* DEFINE 6 = SKIP PARAGRAPH 20,67,0 * 00243500
* DEFINE 7 = PAGE INDEX UNDERLINE INDENT 1 * 00243600
* DEFINE 8 = CODE SKIP * 00243700
* DEFINE 9 = CODE SKIP 2 INDEX * 00243800
* DEFINE 11 = CODE SKIP 2 INDEX 2 * 00243900
* DEFINE 21 = SKIP 2 CODE 2 INDEX * 00244000
* DEFINE 22 = SKIP 2 CODE 3 INDEX * 00244100
* DEFINE 23 = SKIP 2 CODE 4 INDEX * 00244200
* DEFINE 24 = SKIP 2 CODE 5 INDEX * 00244300
* DEFINE 25 = SKIP 2 CODE 6 INDEX * 00244400
* DEFINE 27 = SKIP 2 CODE 8 INDEX * 00244500
* DEFINE 31 = SKIP CODE 2 INDENT 5 INDEX * 00244600
* DEFINE 32 = SKIP CODE 3 INDENT 5 INDEX * 00244700
* DEFINE 33 = SKIP CODE 4 INDENT 5 INDEX * 00244800
* DEFINE 35 = SKIP CODE 6 INDENT 5 INDEX * 00244900
* PAGEID 0, " 4-" 00245000
* TITLE PAGE CENTER 00245100
A CROSS REFERENCE, FLOW CHART AND DOCUMENT EDITING PROGRAM (PART FOUR). 00245200
* SKIP CENTER 00245300
BY GLYN HUGH JONES 00245400
* SKIP CENTER 00245500
TECHNICAL STAFF 00245600
BURROUGHS CORPORATION 00245700
PASADENA 00245800
* SKIP 3 CENTER 00245900
SUMMARY 00246000
* 1 00246100
THE ALGOL PROGRAM WHICH PERFORMS THE FUNCTIONS DESCRIBED IN PARTS 00246200
1-3 OF THIS DOCUMENT IS BRIEFLY OUTLINED FOR THE USE OF THOSE 00246300
WHO NEED TO MAINTAIN THE PROGRAM THEMSELVES. 00246400
* SKIP 6 TAB 2,40 00246500
AUTHORS: / APPROVED/ 00246600
* SKIP 4 TAB 2,40 00246700
-------------------- / -------------------- / 00246800
GLYN H. JONES / J.F.KALBACH/ 00246900
* SKIP TAB 2,40 00247000
JOAN G. DUNSHEE/ MANAGER,TECHNICAL STAFF/ 00247100
* SKIP INDENT 30 00247200
MARCH 1967 00247300
* TITLE CLEAR INDEX PAGE 00247400
THIRD REVISED ISSUE OCT.7, 1968 00247410
1. INTRODUCTION 00247500
* 1 00247600
THIS DOCUMENT PRESENTS AN OUTLINE OF THE CROSS-REFERENCE PROGRAM, FOR T00247700
HE USE OF ANYONE WHO MAY NEED TO CHANGE OR MAINTAIN IT. THE 00247800
SIZE OF THE PROGRAM FORBIDS A DETAILED DESCRIPTION OF THE PROGRAM AT TH00247900
IS TIME, BUT HOPEFULLY THE BRIEF COMMENTS GIVEN HERE WILL SERVE AS 00248000
AN ORIENTATION OF SORTS. 00248100
* 1 00248200
THE STANDARD CROSS-REFERENCE IS DONE BY MEANS OF TWO SETS OF LINKED LIS00248300
TS. THE FIRST SET, KEPT IN THE ARRAY "TABLE", CONSISTS OF A LIST 00248400
FOR EVERY REFERENCEABLE CHARACTER. THE HEAD OF EACH SUCH LIST IS 00248500
GIVEN BY STACKHEAD[<CHARACTER>]. EACH LIST IN THIS SET CONTAINS ALL 00248600
CROSS-REFERENCED IDENTIFIERS BEGINNING WITH THAT LETTER, IN 00248700
ALPHABETICAL ORDER. 00248800
* 2 00248900
THE SECOND SET OF LISTS, CONTAINED IN THE ARRAY "SEQLINKS", CONSISTS 00249000
OF A LIST FOR EACH IDENTIFIER GIVING THE OCCURENCES OF THAT IDENTIFIER. 00249100
THE "TABLE" ENTRY FOR THAT IDENTIFIER GIVES THE HEAD OF THE LIST (SEE 00249200
ABOVE). EACH ENTRY CONTAINS NOT THE ACTUAL SEQUENCE NUMBER BUT A 00249300
POINTER TO THE NUMBER IN A SEPARATE ARRAY, "CURSEQ". 00249400
* 2 00249500
ALMOST ALL REFERENCES TO THE ARRAYS INVOLVED ARE THROUGH THE 00249600
DEFINES NEAR THE BEGINNING OF THE PROGRAM. 00249700
* 2 00249800
IF THE CONTROL "LARGE" IS USED, A DIFFERENT SCHEME IS EMPLOYED. 00249900
EVERY TIME A CROSS-REFERENCEABLE ITEM IS FOUND, A RECORD CONSISTING OF 00250000
THAT ITEM PLUS THE CURRENT SEQUENCE NUMBER IS WRITTEN OUT ON DISK. 00250100
WHEN THE INPUT IS EXHAUSTED, THE ACCUMULATED RECORDS ARE SORTED BY THE 00250200
"SORT" INTRINSIC. 00250300
* END ; 00250400
COMMENT BLANK OUT DEFINES % % % % % % % % % % 00250500
DEFINE 00250600
ABOUTV = 250 # , 00250700
ABSV = 054 # , 00250800
ACCEPTV = 251 # , 00250900
ACCESSV = 252 # , 00251000
ACTUALV = 253 # , 00251100
ADDRESSV = 100 # , 00251200
ADVANCINGV = 254 # , 00251300
AFTERV = 255 # , 00251400
ALLV = 256 # , 00251500
ALPHAV = 055 # , 00251600
ALPHABETICV = 257 # , 00251700
ALPHANUMERICV = 258 # , 00251800
ALTERV = 260 # , 00251900
ALTERNATEV = 259 # , 00252000
ANV = 261 # , 00252100
ANDV = 069 # , 00252200
APPLYV = 262 # , 00252300
ARCTANV = 056 # , 00252400
AREV = 263 # , 00252500
AREAV = 264 # , 00252600
AREASV = 265 # , 00252700
ARRAYV = 078 # , 00252800
ASCENDINGV = 266 # , 00252900
ASSEMBLEV = 101 # , 00253000
ASSIGNV = 267 # , 00253100
ATV = 268 # , 00253200
AUTHORV = 269 # , 00253300
BEFOREV = 270 # , 00253400
BEGINV = 004 # , 00253500
BEGINNINGV = 271 # , 00253600
BINARYV = 102 # , 00253700
BITSV = 274 # , 00253800
BLANKV = 277 # , 00253900
BLOCKV = 278 # , 00254000
BOOLEANV = 075 # , 00254100
BOXV = 006 # , 00254200
BOXONLYV = 030 # , 00254300
BRTV = 142 # , 00254400
BYV = 280 # , 00254500
BZV = 281 # , 00254600
CASEV = 103 # , 00254700
CCXV = 144 # , 00254800
CDCV = 145 # , 00254900
CFEV = 147 # , 00255000
CFLV = 146 # , 00255100
CFXV = 148 # , 00255200
CHANNELV = 285 # , 00255300
CHARACTERV = 286 # , 00255400
CHARACTERSV = 287 # , 00255500
CHECKV = 288 # , 00255600
CHRV = 901 # , 00255700
CHSV = 151 # , 00255800
CIV = 902 # , 00255900
CLV = 289 # , 00256000
CLASSV = 290 # , 00256100
CLOSEV = 104 # , 00256200
CMPV = 292 # , 00256300
COBOLV = 294 # , 00256400
COCV = 149 # , 00256500
CODEV = 029 # , 00256600
COLV = 023 # , 00256700
COLUMNV = 023 # , 00256800
COMV = 150 # , 00256900
COMMENTV = 007 # , 00257000
COMPUTEV = 297 # , 00257100
COMPUTATIONALV = 295 # , 00257200
CONFIGURATIONV = 298 # , 00257300
CONSTANTV = 299 # , 00257400
CONTAINSV = 300 # , 00257500
CONTROLV = 105 # , 00257600
CONVERSIONV = 301 # , 00257700
COPYV = 302 # , 00257800
CORRESPONDINGV = 303 # , 00257900
COSV = 060 # , 00258000
CPV = 304 # , 00258100
CPUV = 106 # , 00258200
CRDV = 107 # , 00258300
CSBV = 143 # , 00258400
CYCLEV = 306 # , 00258500
DATAV = 307 # , 00258600
DATEV = 026 # , 00258700
DBV = 903 # , 00258800
DBLV = 057 # , 00258900
DCV = 904 # , 00259000
DECV = 905 # , 00259100
DECLARATIVESV = 310 # , 00259200
DEFINEV = 079 # , 00259300
DELV = 153 # , 00259400
DEPENDINGV = 311 # , 00259500
DESCENDINGV = 312 # , 00259600
DIAV = 154 # , 00259700
DIAGNOSTICV = 313 # , 00259800
DIBV = 155 # , 00259900
DIGITV = 314 # , 00260000
DIGITSV = 315 # , 00260100
DISCV = 108 # , 00260200
DISKV = 109 # , 00260300
DISPLAYV = 316 # , 00260400
DIVS = 906 # , 00260500
DIVV = 061 # , 00260600
DIVIDEV = 317 # , 00260700
DIVIDEDV = 318 # , 00260800
DIVISIONV = 319 # , 00260900
DOV = 066 # , 00261000
DOESV = 033 # , 00261100
DOLLARV = 320 # , 00261200
DOUBLEV = 058 # , 00261300
DRUMV = 321 # , 00261400
DSV = 907 # , 00261500
DSCV = 110 # , 00261600
DUMPV = 059 # , 00261700
DUPV = 152 # , 00261800
ELSEV = 062 # , 00261900
ENDV = 005 # , 00262000
ENDINGV = 322 # , 00262100
ENTERV = 017 # , 00262200
ENTIERV = 053 # , 00262300
ENVIRONMENTV = 328 # , 00262400
EQUALV = 329 # , 00262500
EQUALSV = 330 # , 00262600
EQLV = 156 # , 00262700
EQVV = 052 # , 00262800
ERRORV = 331 # , 00262900
EVERYV = 332 # , 00263000
EXAMINEV = 333 # , 00263100
EXCEEDSV = 334 # , 00263200
EXITV = 018 # , 00263300
EXPV = 051 # , 00263400
GEQV = 163 # , 00263500
FALSEV = 011 # , 00263600
FCEV = 158 # , 00263700
FCLV = 157 # , 00263800
FCXV = 159 # , 00263900
FDV = 335 # , 00264000
FFXV = 161 # , 00264100
FILEV = 080 # , 00264200
FILLV = 081 # , 00264300
FILLERV = 339 # , 00264400
FINISHV = 002 # , 00264500
FIRSTV = 340 # , 00264600
FLAGV = 160 # , 00264700
FLOATV = 341 # , 00264800
FORV = 064 # , 00264900
FORMATV = 082 # , 00265000
FORWARDV = 083 # , 00265100
FROMV = 342 # , 00265200
FSV = 343 # , 00265300
GIVINGV = 344 # , 00265400
GOV = 013 # , 00265500
GREATERV = 345 # , 00265600
GTRV = 162 # , 00265700
HASHEDV = 346 # , 00265800
HEADV = 008 # , 00265900
HEADINGV = 008 # , 00266000
HLBV = 164 # , 00266100
HP2V = 166 # , 00266200
HUNTV = 165 # , 00266300
IAV = 111 # , 00266400
IDENTIFICATIONV = 350 # , 00266500
IDV = 349 # , 00266600
IDVV = 170 # , 00266700
IFV = 014 # , 00266800
IIOV = 179 # , 00266900
INCLUDEV = 353 # , 00267000
INPUTV = 354 # , 00267100
INSTALLATIONV = 356 # , 00267200
INTOV = 357 # , 00267300
INVALIDV = 358 # , 00267400
IORV = 175 # , 00267500
IMPV = 050 # , 00267600
INV = 049 # , 00267700
INAV = 171 # , 00267800
INBV = 172 # , 00267900
INIV = 174 # , 00268000
INTEGERV = 074 # , 00268100
INXV = 173 # , 00268200
IP1V = 177 # , 00268300
IP2V = 176 # , 00268400
IPSV = 178 # , 00268500
ISV = 033 # , 00268600
ISDV = 167 # , 00268700
ISNV = 168 # , 00268800
ITIV = 169 # , 00268900
JSV = 359 # , 00269000
JUMPV = 908 # , 00269100
JUSTIFIEDV = 360 # , 00269200
KEYV = 361 # , 00269300
KEYBOARDV = 362 # , 00269400
LABELV = 076 # , 00269500
LEADINGV = 363 # , 00269600
LEAVINGV = 364 # , 00269700
LEFTV = 365 # , 00269800
LEQV = 182 # , 00269900
LESSV = 366 # , 00270000
LIBRARYV = 367 # , 00270100
LITV = 909 # , 00270200
LINESV = 368 # , 00270300
LNV = 048 # , 00270400
LLLV = 181 # , 00270500
LNDV = 183 # , 00270600
LNGV = 184 # , 00270700
LOCV = 910 # , 00270800
LOCALV = 911 # , 00270900
LOCATIONV = 369 # , 00271000
LOCKV = 112 # , 00271100
LODV = 185 # , 00271200
LORV = 186 # , 00271300
LPV = 374 # , 00271400
LQVV = 187 # , 00271500
LSSV = 180 # , 00271600
MAXCOLV = 025 # , 00271700
MDV = 375 # , 00271800
MEMORYV = 190 # , 00271900
MFIDV = 379 # , 00272000
MINUSV = 380 # , 00272100
MODV = 091 # , 00272200
MODEV = 381 # , 00272300
MODULESV = 382 # , 00272400
MKSV = 188 # , 00272500
MONITORV = 090 # , 00272600
MOVEV = 383 # , 00272700
MTPV = 113 # , 00272800
MULV = 189 # , 00272900
MULTIPLEV = 386 # , 00273000
MULTIPLIEDV = 384 # , 00273100
MULTIPLYV = 385 # , 00273200
NABSV = 191 # , 00273300
NAMEV = 192 # , 00273400
NEGATIVEV = 387 # , 00273500
NEQV = 193 # , 00273600
NEXTV = 388 # , 00273700
NFLAGV = 194 # , 00273800
NOV = 032 # , 00273900
NOPV = 195 # , 00274000
NOTV = 084 # , 00274100
NOTEV = 027 # , 00274200
NUMV = 912 # , 00274300
NUMERICV = 391 # , 00274400
OCV = 394 # , 00274500
OCCURSV = 395 # , 00274600
OCTV = 913 # , 00274700
OFV = 114 # , 00274800
OFFV = 396 # , 00274900
OMITTEDV = 397 # , 00275000
ONV = 398 # , 00275100
OPENV = 115 # , 00275200
OPTIONALV = 399 # , 00275300
ORV = 068 # , 00275400
OTHERWISEV = 400 # , 00275500
OUTV = 067 # , 00275600
OUTPUTV = 401 # , 00275700
OVERFLOWV = 136 # , 00275800
OWNV = 093 # , 00275900
PAGEV = 019 # , 00276000
PAGEIDV = 022 # , 00276100
PAGEINCV = 024 # , 00276200
PCV = 404 # , 00276300
PCTV = 116 # , 00276400
PERFORMV = 405 # , 00276500
PICTUREV = 406 # , 00276600
PLACESV = 407 # , 00276700
PLUSV = 408 # , 00276800
POINTV = 409 # , 00276900
POLISHV = 196 # , 00277000
POSITIONV = 411 # , 00277100
POSITIVEV = 410 # , 00277200
PREPAREDV = 412 # , 00277300
PRINTERV = 117 # , 00277400
PRINTERSV = 413 # , 00277500
PRIORITYV = 414 # , 00277600
PRLV = 197 # , 00277700
PRNV = 118 # , 00277800
PROCEDUREV = 073 # , 00277900
PROCEEDV = 415 # , 00278000
PROTECTV = 417 # , 00278100
PTV = 418 # , 00278200
PUNCHV = 119 # , 00278300
PURGEV = 120 # , 00278400
QUITV = 003 # , 00278500
QUOTEV = 420 # , 00278600
RANDOMV = 421 # , 00278700
RANGEV = 422 # , 00278800
READV = 072 # , 00278900
READERV = 121 # , 00279000
READERSV = 423 # , 00279100
REALV = 077 # , 00279200
RECORDV = 426 # , 00279300
RECORDINGV = 424 # , 00279400
RECORDSV = 425 # , 00279500
RDFV = 206 # , 00279600
RDSV = 204 # , 00279700
RDVV = 205 # , 00279800
REDEFINESV = 428 # , 00279900
REELV = 122 # , 00280000
RELEASEV = 094 # , 00280100
REMARKSV = 430 # , 00280200
RENAMESV = 431 # , 00280300
RENAMINGV = 432 # , 00280400
REPLACINGV = 433 # , 00280500
RERUNV = 434 # , 00280600
RESERVEV = 435 # , 00280700
RESETV = 914 # , 00280800
RETURNV = 436 # , 00280900
REVERSEV = 095 # , 00281000
REVERSEDV = 437 # , 00281100
REWINDV = 123 # , 00281200
RFBV = 208 # , 00281300
RIGHTV = 439 # , 00281400
RGV = 438 # , 00281500
RNOV = 207 # , 00281600
ROUNDEDV = 440 # , 00281700
RRRV = 209 # , 00281800
RSBV = 198 # , 00281900
RTMV = 201 # , 00282000
RTNV = 202 # , 00282100
RSPV = 199 # , 00282200
RTRV = 203 # , 00282300
RTSV = 200 # , 00282400
RUNV = 441 # , 00282500
SAMEV = 442 # , 00282600
SAVEV = 085 # , 00282700
SBV = 915 # , 00282800
SCV = 916 # , 00282900
SDV = 444 # , 00283000
SECTIONV = 445 # , 00283100
SECURITYV = 446 # , 00283200
SEEKV = 124 # , 00283300
SEGMENTV = 447 # , 00283400
SEGMENTSV = 448 # , 00283500
SELECTV = 450 # , 00283600
SENTENCEV = 451 # , 00283700
SENTINELV = 452 # , 00283800
SEQUENCEDV = 453 # , 00283900
SEQUENTIALV = 454 # , 00284000
SETV = 917 # , 00284100
SFBV = 221 # , 00284200
SIV = 918 # , 00284300
SIGNV = 096 # , 00284400
SIGNEDV = 125 # , 00284500
SINV = 097 # , 00284600
SIZEV = 455 # , 00284700
SKIPV = 919 # , 00284800
SNV = 126 # , 00284900
SNDV = 220 # , 00285000
SORTV = 460 # , 00285100
SPACEV = 127 # , 00285200
SPACESV = 458 # , 00285300
SPOV = 128 # , 00285400
SQRTV = 092 # , 00285500
SSBV = 210 # , 00285600
SSFV = 213 # , 00285700
SSNV = 212 # , 00285800
SSPV = 214 # , 00285900
STARTV = 001 # , 00286000
STANDARDV = 461 # , 00286100
STATUSV = 462 # , 00286200
STDV = 216 # , 00286300
STEPV = 086 # , 00286400
STFV = 218 # , 00286500
STNV = 217 # , 00286600
STOPV = 463 # , 00286700
STREAMV = 089 # , 00286800
STSV = 215 # , 00286900
SUBV = 920 # , 00287000
SUBROUTINEV = 219 # , 00287100
SUBTRACTV = 464 # , 00287200
SUPERVISORV = 465 # , 00287300
SUPPRESSV = 470 # , 00287400
SWITCHV = 016 # , 00287500
SYV = 466 # , 00287600
SYMBOLICV = 467 # , 00287700
SYNCHRONIZEDV = 468 # , 00287800
SZV = 469 # , 00287900
TABLEV = 028 # , 00288000
TALLYV = 921 # , 00288100
TALLYINGV = 471 # , 00288200
TAPEV = 129 # , 00288300
TAPESV = 472 # , 00288400
TESTV = 033 # , 00288500
TERMV = 021 # , 00288600
TERMINATEV = 021 # , 00288700
TFBV = 222 # , 00288800
TFRV = 223 # , 00288900
THANV = 478 # , 00289000
THENV = 063 # , 00289100
THROUGHV = 479 # , 00289200
THRUV = 480 # , 00289300
TIMEV = 130 # , 00289400
TIMESV = 481 # , 00289500
TITLEV = 009 # , 00289600
TIOV = 225 # , 00289700
TOV = 012 # , 00289800
TOGGLEV = 922 # , 00289900
TOPV = 224 # , 00290000
TRACEV = 131 # , 00290100
TRBV = 226 # , 00290200
TRUEV = 010 # , 00290300
UAV = 132 # , 00290400
ULV = 133 # , 00290500
UNV = 134 # , 00290600
UNEQUALV = 483 # , 00290700
UNLOCKV = 484 # , 00290800
UNTILV = 070 # , 00290900
UPONV = 485 # , 00291000
USAGEV = 488 # , 00291100
USEV = 489 # , 00291200
USINGV = 490 # , 00291300
VAV = 132 # , 00291400
VALUEV = 088 # , 00291500
VALUESV = 491 # , 00291600
VARYINGV = 492 # , 00291700
VFIV = 227 # , 00291800
WASV = 033 # , 00291900
WDSV = 923 # , 00292000
WHENV = 493 # , 00292100
WHILEV = 065 # , 00292200
WITHV = 087 # , 00292300
WORDSV = 494 # , 00292400
WRITEV = 071 # , 00292500
XCHV = 228 # , 00292600
XITV = 229 # , 00292700
YESV = 031 # , 00292800
ZEROV = 496 # , 00292900
ZEROESV = 498 # , 00293000
ZEROSV = 497 # , 00293100
ZIPV = 135 # , 00293200
ZONV = 924 # , 00293300
ZSV = 499 # , 00293400
ANDV = 069 # , 00293500
ASSIGNV = 267 # , 00293600
BLOCKV = 278 # , 00293700
BACKSPACEV = 127 # , 00293800
CONTINUEV = 195 # , 00293900
COMPLEXV = 501 # , 00294000
COMMONV = 500 # , 00294100
CALLV = 017 # , 00294200
DOUBLEV = 058 # , 00294300
DOV = 066 # , 00294400
DIMENSIONV = 455 # , 00294500
DATAV = 307 # , 00294600
EQV = 156 # , 00294700
EXTERNALV = 367 # , 00294800
EQUIVALENCEV = 428 # , 00294900
ENTRYV = 502 # , 00295000
ENDV = 005 # , 00295100
FALSEV = 011 # , 00295200
FUNCTIONV = 073 # , 00295300
FORMATV = 082 # , 00295400
FILEV = 080 # , 00295500
GOTOV = 013 # , 00295600
GEV = 163 # , 00295700
GTV = 162 # , 00295800
GOV = 013 # , 00295900
INTEGERV = 074 # , 00296000
IFV = 014 # , 00296100
LEV = 182 # , 00296200
LTV = 180 # , 00296300
LOGICALV = 075 # , 00296400
NOTV = 084 # , 00296500
NEV = 193 # , 00296600
NAMELISTV = 503 # , 00296700
ORV = 068 # , 00296800
PUNCHV = 119 # , 00296900
PROGRAMV = 505 # , 00297000
PRINTV = 118 # , 00297100
PAUSEV = 504 # , 00297200
PRECISIONV = 058 # , 00297300
REWINDV = 123 # , 00297400
RETURNV = 436 # , 00297500
REALV = 077 # , 00297600
READV = 072 # , 00297700
SUBROUTINEV = 073 # , 00297800
STOPV = 463 # , 00297900
TRUEV = 010 # , 00298000
TOV = 012 # , 00298100
WRITEV = 071 # , 00298200
ZP1V = 230 # ; 00298300
COMMENT DOCUMENT* PAGE INDEX SKIP 2 * * * * * * * * * * * * * * * * 00298400
2. GLOBAL DECLARATIONS. 00298500
* INDEX INDENT 1 SKIP 3 * * * * * * * * * * * * * * * * * * * * * * * 00298600
FIRST FIVE PROGRAM VARIABLES. 00298700
* CODE 5; 00298800
INTEGER PRT; 00298900
BOOLEAN LISTOG; 00299000
BOOLEAN MONITOG; 00299100
BOOLEAN DUMPFLAG; 00299200
INTEGER ISEQ; 00299300
COMMENT DOCUMENT* SKIP CODE 2* * * * * * * * * * * * * * * * * * * * *; 00299400
SAVE ARRAY RESERVED[0:850]; 00299500
SAVE INTEGER ARRAY RESTACK[0:63]; 00299600
COMMENT DOCUMENT* 23 * * * * * * * * * * * * * * * * * * * * * * * * ; 00299700
PROCEDURE FILLJUNK(N); 00299800
VALUE N; 00299900
INTEGER N; 00300000
COMMENT INITIALIZES RESERVED ARRAYS ACCORDING TO DESIRED LANGUAGE; 00300100
BEGIN 00300200
LABEL LALG,LBPL,LCOB,LESP,LFORT,LFLO 00300300
,EXIT; 00300400
SWITCH CHOOSE ~ LALG,LBPL,LCOB,LESP,LFLO,LFORT 00300500
; 00300600
GO TO CHOOSE[N]; 00300700
LBPL: 00300800
FILL RESERVED[*] WITH 0, % BPL 00300900
OCT0000000006600000 , % 00006 00 00301000
OCT0000032122626060 , % 003ABS 00301100
OCT0000000014400001 , % 0000 |01 00301200
OCT0000072124245125 , % 007ADDRE 00301300
OCT6262606060606060 , % SS 00301400
OCT0000000006700003 , % 00006Y03 00301500
OCT0000052143473021 , % 005ALPHA 00301600
OCT0000000010500006 , % 00008Q06 00301700
OCT0000032145246060 , % 003AND 00301800
OCT0000000011600010 , % 00009 08 00301900
OCT0000052151512170 , % 005ARRAY 00302000
OCT0000000014500012 , % 0000 Q0# 00302100
OCT0000102162622544 , % 008ASSEM 00302200
OCT2243256060606060 , % BLE 00302300
OCT0000000000400000 , % 00000|00 00302400
OCT0000052225273145 , % 005BEGIN 00302500
OCT0000000014600017 , % 0000 0} 00302600
OCT0000062231452151 , % 006BINAR 00302700
OCT7060606060606060 , % Y 00302800
OCT0000000011300021 , % 00009H0A 00302900
OCT0000072246464325 , % 007BOOLE 00303000
OCT2145606060606060 , % AN 00303100
OCT0000000014700000 , % 0000 Y00 00303200
OCT0000042321622560 , % 004CASE 00303300
OCT0000000015000027 , % 0000:00G 00303400
OCT0000052343466225 , % 005CLOSE 00303500
OCT0000000000700031 , % 00000Y0I 00303600
OCT0000072346444425 , % 007COMME 00303700
OCT4563606060606060 , % NT 00303800
OCT0000000015100033 , % 0000:80[ 00303900
OCT0000072346456351 , % 007CONTR 00304000
OCT4643606060606060 , % OL 00304100
OCT0000000015200036 , % 0000:+0< 00304200
OCT0000032347646060 , % 003CPU 00304300
OCT0000000015300041 , % 0000:H0J 00304400
OCT0000032351246060 , % 003CRD 00304500
OCT0000000003200000 , % 00003+00 00304600
OCT0000042421632560 , % 004DATE 00304700
OCT0000000011700045 , % 00009Y0N 00304800
OCT0000062425263145 , % 006DEFIN 00304900
OCT2560606060606060 , % E 00305000
OCT0000000015400047 , % 0000:|0P 00305100
OCT0000042431622360 , % 004DISC 00305200
OCT0000000015500052 , % 0000:Q0$ 00305300
OCT0000042431624260 , % 004DISK 00305400
OCT0000000007500054 , % 00007Q0- 00305500
OCT0000032431656060 , % 003DIV 00305600
OCT0000000010200056 , % 00008+0; 00305700
OCT0000022446606060 , % 002DO 00305800
OCT0000000007200060 , % 00007+0 00305900
OCT0000062446642243 , % 006DOUBL 00306000
OCT2560606060606060 , % E 00306100
OCT0000000015600062 , % 0000: 0S 00306200
OCT0000032462236060 , % 003DSC 00306300
OCT0000000007300065 , % 00007H0V 00306400
OCT0000042464444760 , % 004DUMP 00306500
OCT0000000007600000 , % 00007 00 00306600
OCT0000042543622560 , % 004ELSE 00306700
OCT0000000000500071 , % 00000Q0Z 00306800
OCT0000032545246060 , % 003END 00306900
OCT0000000001300000 , % 00001H00 00307000
OCT0000052621436225 , % 005FALSE 00307100
OCT0000000012000075 , % 0000#00= 00307200
OCT0000042631432560 , % 004FILE 00307300
OCT0000000012300077 , % 0000#H0" 00307400
OCT0000072646516621 , % 007FORWA 00307500
OCT5124606060606060 , % RD 00307600
OCT0000000001500000 , % 00001Q00 00307700
OCT0000022746606060 , % 002GO 00307800
OCT0000000015700000 , % 0000:Y00 00307900
OCT0000023121606060 , % 002IA 00308000
OCT0000000001600106 , % 00001 16 00308100
OCT0000023126606060 , % 002IF 00308200
OCT0000000011200110 , % 00009+18 00308300
OCT0000073145632527 , % 007INTEG 00308400
OCT2551606060606060 , % ER 00308500
OCT0000000011400000 , % 00009|00 00308600
OCT0000054321222543 , % 005LABEL 00308700
OCT0000000016000115 , % 0000>01: 00308800
OCT0000044346234260 , % 004LOCK 00308900
OCT0000000013300000 , % 0000@H00 00309000
OCT0000034446246060 , % 003MOD 00309100
OCT0000000013200121 , % 0000@+1A 00309200
OCT0000074446453163 , % 007MONIT 00309300
OCT4651606060606060 , % OR 00309400
OCT0000000016100123 , % 0000>81C 00309500
OCT0000034463476060 , % 003MTP 00309600
OCT0000000004000000 , % 00004000 00309700
OCT0000024546606060 , % 002NO 00309800
OCT0000000012400130 , % 0000#|1H 00309900
OCT0000034546636060 , % 003NOT 00310000
OCT0000000016200000 , % 0000>+00 00310100
OCT0000024626606060 , % 002OF 00310200
OCT0000000016300134 , % 0000>H1& 00310300
OCT0000044647254560 , % 004OPEN 00310400
OCT0000000010400136 , % 00008|1< 00310500
OCT0000024651606060 , % 002OR 00310600
OCT0000000021000140 , % 0000A01| 00310700
OCT0000104665255126 , % 008OVERF 00310800
OCT4346666060606060 , % LOW 00310900
OCT0000000002300000 , % 00002H00 00311000
OCT0000044721272560 , % 004PAGE 00311100
OCT0000000016400145 , % 0000>|1N 00311200
OCT0000034723636060 , % 003PCT 00311300
OCT0000000016500147 , % 0000>Q1P 00311400
OCT0000074751314563 , % 007PRINT 00311500
OCT2551606060606060 , % ER 00311600
OCT0000000016600151 , % 0000> 1R 00311700
OCT0000034751456060 , % 003PRN 00311800
OCT0000000011100154 , % 0000981- 00311900
OCT0000114751462325 , % 009PROCE 00312000
OCT2464512560606060 , % DURE 00312100
OCT0000000016700156 , % 0000>Y1; 00312200
OCT0000054764452330 , % 005PUNCH 00312300
OCT0000000017000161 , % 0000}01/ 00312400
OCT0000054764512725 , % 005PURGE 00312500
OCT0000000011000000 , % 00009000 00312600
OCT0000045125212460 , % 004READ 00312700
OCT0000000017100165 , % 0000}81V 00312800
OCT0000065125212425 , % 006READE 00312900
OCT5160606060606060 , % R 00313000
OCT0000000017200167 , % 0000}+1X 00313100
OCT0000045125254360 , % 004REEL 00313200
OCT0000000013600172 , % 0000@ 1, 00313300
OCT0000075125432521 , % 007RELEA 00313400
OCT6225606060606060 , % SE 00313500
OCT0000000017300174 , % 0000}H1! 00313600
OCT0000065125663145 , % 006REWIN 00313700
OCT2460606060606060 , % D 00313800
OCT0000000012500000 , % 0000#Q00 00313900
OCT0000046221652560 , % 004SAVE 00314000
OCT0000000017400202 , % 0000}|22 00314100
OCT0000046225254260 , % 004SEEK 00314200
OCT0000000017500204 , % 0000}Q24 00314300
OCT0000066231274525 , % 006SIGNE 00314400
OCT2460606060606060 , % D 00314500
OCT0000000017600206 , % 0000} 26 00314600
OCT0000026245606060 , % 002SN 00314700
OCT0000000017700211 , % 0000}Y29 00314800
OCT0000056247212325 , % 005SPACE 00314900
OCT0000000020000213 , % 0000+02@ 00315000
OCT0000036247466060 , % 003SPO 00315100
OCT0000000020100000 , % 0000+800 00315200
OCT0000046321472560 , % 004TAPE 00315300
OCT0000000007700217 , % 00007Y2} 00315400
OCT0000046330254560 , % 004THEN 00315500
OCT0000000020200221 , % 0000++2A 00315600
OCT0000046331442560 , % 004TIME 00315700
OCT0000000001400223 , % 00001|2C 00315800
OCT0000026346606060 , % 002TO 00315900
OCT0000000020300225 , % 0000+H2E 00316000
OCT0000056351212325 , % 005TRACE 00316100
OCT0000000001200227 , % 00001+2G 00316200
OCT0000046351642560 , % 004TRUE 00316300
OCT0000000020400000 , % 0000+|00 00316400
OCT0000026421606060 , % 002UA 00316500
OCT0000000020500233 , % 0000+Q2[ 00316600
OCT0000026443606060 , % 002UL 00316700
OCT0000000020600235 , % 0000+ 2( 00316800
OCT0000026445606060 , % 002UN 00316900
OCT0000000010600237 , % 00008 2~ 00317000
OCT0000056445633143 , % 005UNTIL 00317100
OCT0000000013000000 , % 0000@000 00317200
OCT0000056521436425 , % 005VALUE 00317300
OCT0000000010100000 , % 00008800 00317400
OCT0000056630314325 , % 005WHILE 00317500
OCT0000000012700245 , % 0000#Y2N 00317600
OCT0000046631633060 , % 004WITH 00317700
OCT0000000010700247 , % 00008Y2P 00317800
OCT0000056651316325 , % 005WRITE 00317900
OCT0000000020700000 , % 0000+Y00 00318000
OCT0000037131476060 ; % 003ZIP 00318100
FILL RESTACK[*] WITH % BPL 00318200
0, 0, 0, 0, 0, 0, 0, 0, 00318300
0, 0, 0, 0, 0, 0, 0, 0, 00318400
0, 12, 20, 35, 55, 59, 65, 68, 00318500
0, 74, 0, 0, 0, 0, 0, 0, 00318600
0, 0, 0, 79, 86, 90, 98, 115, 00318700
0, 127, 0, 0, 0, 0, 0, 0, 00318800
0, 0, 141, 153, 161, 163, 169, 0, 00318900
0,171,0,0,0,0,0,0; 00319000
GO TO EXIT; 00319100
LESP: 00319200
FILL RESERVED[*] WITH 0, % ESPOL 00319300
OCT0000000006600000 , % 00006 00 00319400
OCT0000032122626060 , % 003ABS 00319500
OCT0000000160400001 , % 0001 |01 00319600
OCT0000032124246060 , % 003ADD 00319700
OCT0000000010500003 , % 00008Q03 00319800
OCT0000032145246060 , % 003AND 00319900
OCT0000000011600005 , % 00009 05 00320000
OCT0000052151512170 , % 005ARRAY 00320100
OCT0000000000400000 , % 00000|00 00320200
OCT0000052225273145 , % 005BEGIN 00320300
OCT0000000011300011 , % 00009H09 00320400
OCT0000072246464325 , % 007BOOLE 00320500
OCT2145606060606060 , % AN 00320600
OCT0000000021600013 , % 0000A 0@ 00320700
OCT0000032251636060 , % 003BRT 00320800
OCT0000000021700000 , % 0000AY00 00320900
OCT0000032362226060 , % 003CSB 00321000
OCT0000000022000020 , % 0000B00+ 00321100
OCT0000032323676060 , % 003CCX 00321200
OCT0000000022100022 , % 0000B80B 00321300
OCT0000032324236060 , % 003CDC 00321400
OCT0000000022200024 , % 0000B+0D 00321500
OCT0000032326436060 , % 003CFL 00321600
OCT0000000022300026 , % 0000BH0F 00321700
OCT0000032326256060 , % 003CFE 00321800
OCT0000000022400030 , % 0000B|0H 00321900
OCT0000032326676060 , % 003CFX 00322000
OCT0000000022500032 , % 0000BQ0. 00322100
OCT0000032346236060 , % 003COC 00322200
OCT0000000022600034 , % 0000B 0& 00322300
OCT0000032346446060 , % 003COM 00322400
OCT0000000000700036 , % 00000Y0< 00322500
OCT0000072346444425 , % 007COMME 00322600
OCT4563606060606060 , % NT 00322700
OCT0000000022700040 , % 0000BY0| 00322800
OCT0000032330626060 , % 003CHS 00322900
OCT0000000007300000 , % 00007H00 00323000
OCT0000042464444760 , % 004DUMP 00323100
OCT0000000023000045 , % 0000C00N 00323200
OCT0000032464476060 , % 003DUP 00323300
OCT0000000023100047 , % 0000C80P 00323400
OCT0000032425436060 , % 003DEL 00323500
OCT0000000011700051 , % 00009Y0R 00323600
OCT0000062425263145 , % 006DEFIN 00323700
OCT2560606060606060 , % E 00323800
OCT0000000010200053 , % 00008+0* 00323900
OCT0000022446606060 , % 002DO 00324000
OCT0000000007200056 , % 00007+0; 00324100
OCT0000062446642243 , % 006DOUBL 00324200
OCT2560606060606060 , % E 00324300
OCT0000000023200060 , % 0000C+0 00324400
OCT0000032431216060 , % 003DIA 00324500
OCT0000000023300063 , % 0000CH0T 00324600
OCT0000032431226060 , % 003DIB 00324700
OCT0000000007500065 , % 00007Q0V 00324800
OCT0000032431656060 , % 003DIV 00324900
OCT0000000007600000 , % 00007 00 00325000
OCT0000042543622560 , % 004ELSE 00325100
OCT0000000000500071 , % 00000Q0Z 00325200
OCT0000032545246060 , % 003END 00325300
OCT0000000023400073 , % 0000C|0% 00325400
OCT0000032550436060 , % 003EQL 00325500
OCT0000000006400075 , % 00006|0= 00325600
OCT0000032550656060 , % 003EQV 00325700
OCT0000000001300000 , % 00001H00 00325800
OCT0000052621436225 , % 005FALSE 00325900
OCT0000000023500101 , % 0000CQ11 00326000
OCT0000032623436060 , % 003FCL 00326100
OCT0000000023600103 , % 0000C 13 00326200
OCT0000032623256060 , % 003FCE 00326300
OCT0000000023700105 , % 0000CY15 00326400
OCT0000032623676060 , % 003FCX 00326500
OCT0000000024000107 , % 0000D017 00326600
OCT0000042643212760 , % 004FLAG 00326700
OCT0000000024100111 , % 0000D819 00326800
OCT0000032626676060 , % 003FFX 00326900
OCT0000000010000113 , % 0000801@ 00327000
OCT0000032646516060 , % 003FOR 00327100
OCT0000000012300115 , % 0000#H1: 00327200
OCT0000072646516621 , % 007FORWA 00327300
OCT5124606060606060 , % RD 00327400
OCT0000000024200000 , % 0000D+00 00327500
OCT0000032763516060 , % 003GTR 00327600
OCT0000000024300122 , % 0000DH1B 00327700
OCT0000032725506060 , % 003GEQ 00327800
OCT0000000001500124 , % 00001Q1D 00327900
OCT0000022746606060 , % 002GO 00328000
OCT0000000024400000 , % 0000D|00 00328100
OCT0000033043226060 , % 003HLB 00328200
OCT0000000024500130 , % 0000DQ1H 00328300
OCT0000043064456360 , % 004HUNT 00328400
OCT0000000024600132 , % 0000D 1. 00328500
OCT0000033047026060 , % 003HP2 00328600
OCT0000000024700000 , % 0000DY00 00328700
OCT0000033162246060 , % 003ISD 00328800
OCT0000000025000136 , % 0000E01< 00328900
OCT0000033162456060 , % 003ISN 00329000
OCT0000000025100140 , % 0000E81| 00329100
OCT0000033163316060 , % 003ITI 00329200
OCT0000000025200142 , % 0000E+1K 00329300
OCT0000033124656060 , % 003IDV 00329400
OCT0000000006100144 , % 0000681M 00329500
OCT0000023145606060 , % 002IN 00329600
OCT0000000025300146 , % 0000EH1O 00329700
OCT0000033145216060 , % 003INA 00329800
OCT0000000025400150 , % 0000E|1Q 00329900
OCT0000033145226060 , % 003INB 00330000
OCT0000000011200152 , % 00009+1$ 00330100
OCT0000073145632527 , % 007INTEG 00330200
OCT2551606060606060 , % ER 00330300
OCT0000000025500154 , % 0000EQ1- 00330400
OCT0000033145676060 , % 003INX 00330500
OCT0000000025600157 , % 0000E 1{ 00330600
OCT0000033145316060 , % 003INI 00330700
OCT0000000001600161 , % 00001 1/ 00330800
OCT0000023126606060 , % 002IF 00330900
OCT0000000025700163 , % 0000EY1T 00331000
OCT0000033146516060 , % 003IOR 00331100
OCT0000000026000165 , % 0000F01V 00331200
OCT0000033147026060 , % 003IP2 00331300
OCT0000000026100167 , % 0000F81X 00331400
OCT0000033147016060 , % 003IP1 00331500
OCT0000000026200171 , % 0000F+1Z 00331600
OCT0000033147626060 , % 003IPS 00331700
OCT0000000026300173 , % 0000FH1% 00331800
OCT0000033131466060 , % 003IIO 00331900
OCT0000000011400000 , % 00009|00 00332000
OCT0000054321222543 , % 005LABEL 00332100
OCT0000000026400177 , % 0000F|1" 00332200
OCT0000034362626060 , % 003LSS 00332300
OCT0000000026500201 , % 0000FQ21 00332400
OCT0000034343436060 , % 003LLL 00332500
OCT0000000026700203 , % 0000FY23 00332600
OCT0000034345246060 , % 003LND 00332700
OCT0000000027000205 , % 0000G025 00332800
OCT0000034345276060 , % 003LNG 00332900
OCT0000000027100207 , % 0000G827 00333000
OCT0000034346246060 , % 003LOD 00333100
OCT0000000027200211 , % 0000G+29 00333200
OCT0000034346516060 , % 003LOR 00333300
OCT0000000027300213 , % 0000GH2@ 00333400
OCT0000034350656060 , % 003LQV 00333500
OCT0000000026600215 , % 0000F 2: 00333600
OCT0000034325506060 , % 003LEQ 00333700
OCT0000000027400000 , % 0000G|00 00333800
OCT0000034442626060 , % 003MKS 00333900
OCT0000000027500221 , % 0000GQ2A 00334000
OCT0000034464436060 , % 003MUL 00334100
OCT0000000027600223 , % 0000G 2C 00334200
OCT0000064425444651 , % 006MEMOR 00334300
OCT7060606060606060 , % Y 00334400
OCT0000000013300225 , % 0000@H2E 00334500
OCT0000034446246060 , % 003MOD 00334600
OCT0000000013200230 , % 0000@+2H 00334700
OCT0000074446453163 , % 007MONIT 00334800
OCT4651606060606060 , % OR 00334900
OCT0000000027700000 , % 0000GY00 00335000
OCT0000044521226260 , % 004NABS 00335100
OCT0000000030000235 , % 0000H02( 00335200
OCT0000044521442560 , % 004NAME 00335300
OCT0000000030100237 , % 0000H82~ 00335400
OCT0000034525506060 , % 003NEQ 00335500
OCT0000000030200241 , % 0000H+2J 00335600
OCT0000054526432127 , % 005NFLAG 00335700
OCT0000000012400243 , % 0000#|2L 00335800
OCT0000034546636060 , % 003NOT 00335900
OCT0000000030300245 , % 0000HH2N 00336000
OCT0000034546476060 , % 003NOP 00336100
OCT0000000010300000 , % 00008H00 00336200
OCT0000034664636060 , % 003OUT 00336300
OCT0000000013500251 , % 0000@Q2R 00336400
OCT0000034666456060 , % 003OWN 00336500
OCT0000000010400253 , % 00008|2* 00336600
OCT0000024651606060 , % 002OR 00336700
OCT0000000030400000 , % 0000H|00 00336800
OCT0000064746433162 , % 006POLIS 00336900
OCT3060606060606060 , % H 00337000
OCT0000000030500257 , % 0000HQ2{ 00337100
OCT0000034751436060 , % 003PRL 00337200
OCT0000000011100262 , % 0000982S 00337300
OCT0000114751462325 , % 009PROCE 00337400
OCT2464512560606060 , % DURE 00337500
OCT0000000030600000 , % 0000H 00 00337600
OCT0000035162226060 , % 003RSB 00337700
OCT0000000030700267 , % 0000HY2X 00337800
OCT0000035162476060 , % 003RSP 00337900
OCT0000000031000271 , % 0000I02Z 00338000
OCT0000035163626060 , % 003RTS 00338100
OCT0000000031100273 , % 0000I82% 00338200
OCT0000035163446060 , % 003RTM 00338300
OCT0000000031200275 , % 0000I+2= 00338400
OCT0000035163456060 , % 003RTN 00338500
OCT0000000031300277 , % 0000IH2" 00338600
OCT0000035163516060 , % 003RTR 00338700
OCT0000000031400301 , % 0000I|31 00338800
OCT0000035124626060 , % 003RDS 00338900
OCT0000000031500303 , % 0000IQ33 00339000
OCT0000035124656060 , % 003RDV 00339100
OCT0000000031600305 , % 0000I 35 00339200
OCT0000035124266060 , % 003RDF 00339300
OCT0000000011500307 , % 00009Q37 00339400
OCT0000045125214360 , % 004REAL 00339500
OCT0000000011000311 , % 00009039 00339600
OCT0000045125212460 , % 004READ 00339700
OCT0000000031700313 , % 0000IY3@ 00339800
OCT0000035145466060 , % 003RNO 00339900
OCT0000000032000315 , % 0000.03: 00340000
OCT0000035126226060 , % 003RFB 00340100
OCT0000000032100317 , % 0000.83} 00340200
OCT0000035151516060 , % 003RRR 00340300
OCT0000000012500000 , % 0000#Q00 00340400
OCT0000046221652560 , % 004SAVE 00340500
OCT0000000032200323 , % 0000.+3C 00340600
OCT0000036262226060 , % 003SSB 00340700
OCT0000000032400325 , % 0000.|3E 00340800
OCT0000036262456060 , % 003SSN 00340900
OCT0000000032500327 , % 0000.Q3G 00341000
OCT0000036262266060 , % 003SSF 00341100
OCT0000000032600331 , % 0000. 3I 00341200
OCT0000036262476060 , % 003SSP 00341300
OCT0000000032700333 , % 0000.Y3[ 00341400
OCT0000036263626060 , % 003STS 00341500
OCT0000000033000335 , % 0000[03( 00341600
OCT0000036263246060 , % 003STD 00341700
OCT0000000012600337 , % 0000# 3~ 00341800
OCT0000046263254760 , % 004STEP 00341900
OCT0000000033100341 , % 0000[83J 00342000
OCT0000036263456060 , % 003STN 00342100
OCT0000000033200343 , % 0000[+3L 00342200
OCT0000036263266060 , % 003STF 00342300
OCT0000000013100345 , % 0000@83N 00342400
OCT0000066263512521 , % 006STREA 00342500
OCT4460606060606060 , % M 00342600
OCT0000000163000347 , % 0001T03P 00342700
OCT0000036264226060 , % 003SUB 00342800
OCT0000000033300352 , % 0000[H3$ 00342900
OCT0000126264225146 , % 00#SUBRO 00343000
OCT6463314525606060 , % UTINE 00343100
OCT0000000033400354 , % 0000[|3- 00343200
OCT0000036245246060 , % 003SND 00343300
OCT0000000033500357 , % 0000[Q3{ 00343400
OCT0000036226226060 , % 003SFB 00343500
OCT0000000002000361 , % 0000203/ 00343600
OCT0000066266316323 , % 006SWITC 00343700
OCT3060606060606060 , % H 00343800
OCT0000000014000363 , % 0000 03T 00343900
OCT0000046231274560 , % 004SIGN 00344000
OCT0000000033600000 , % 0000[ 00 00344100
OCT0000036326226060 , % 003TFB 00344200
OCT0000000033700370 , % 0000[Y3Y 00344300
OCT0000036326516060 , % 003TFR 00344400
OCT0000000001400372 , % 00001|3, 00344500
OCT0000026346606060 , % 002TO 00344600
OCT0000000034000374 , % 0000&03! 00344700
OCT0000036346476060 , % 003TOP 00344800
OCT0000000007700376 , % 00007Y3] 00344900
OCT0000046330254560 , % 004THEN 00345000
OCT0000000034100400 , % 0000&840 00345100
OCT0000036331466060 , % 003TIO 00345200
OCT0000000034200402 , % 0000&+42 00345300
OCT0000036351226060 , % 003TRB 00345400
OCT0000000001200404 , % 00001+44 00345500
OCT0000046351642560 , % 004TRUE 00345600
OCT0000000010600000 , % 00008 00 00345700
OCT0000056445633143 , % 005UNTIL 00345800
OCT0000000013000000 , % 0000@000 00345900
OCT0000056521436425 , % 005VALUE 00346000
OCT0000000034300412 , % 0000&H4# 00346100
OCT0000036526316060 , % 003VFI 00346200
OCT0000000010100000 , % 00008800 00346300
OCT0000056630314325 , % 005WHILE 00346400
OCT0000000010700416 , % 00008Y4> 00346500
OCT0000056651316325 , % 005WRITE 00346600
OCT0000000034400000 , % 0000&|00 00346700
OCT0000036723306060 , % 003XCH 00346800
OCT0000000034500422 , % 0000&Q4B 00346900
OCT0000036731636060 , % 003XIT 00347000
OCT0000000034600000 , % 0000& 00 00347100
OCT0000037147016060 , % 003ZP1 00347200
OCT0000000020700426 , % 0000+Y4F 00347300
OCT0000037131476060 ; % 003ZIP 00347400
FILL RESTACK[*] WITH % ESPOL 00347500
0, 0, 0, 0, 0, 0, 0, 0, 00347600
0, 0, 0, 0, 0, 0, 0, 0, 00347700
0, 7, 14, 35, 55, 63, 79, 86, 00347800
92, 125, 0, 0, 0, 0, 0, 0, 00347900
0, 0, 0, 143, 154, 167, 173, 180, 00348000
0, 209, 0, 0, 0, 0, 0, 0, 00348100
0, 0, 246, 262, 264, 268, 272, 276, 00348200
0,280,0,0,0,0,0,0; 00348300
GO TO EXIT; 00348400
LALG: 00348500
FILL RESERVED[*] WITH 0, % ALGOL 00348600
OCT0000000006600000 , % 00006 00 00348700
OCT0000032122626060 , % 003ABS 00348800
OCT0000000160400001 , % 0001 |01 00348900
OCT0000032124246060 , % 003ADD 00349000
OCT0000000006700003 , % 00006Y03 00349100
OCT0000052143473021 , % 005ALPHA 00349200
OCT0000000010500005 , % 00008Q05 00349300
OCT0000032145246060 , % 003AND 00349400
OCT0000000007000007 , % 00007007 00349500
OCT0000062151236321 , % 006ARCTA 00349600
OCT4560606060606060 , % N 00349700
OCT0000000011600011 , % 00009 09 00349800
OCT0000052151512170 , % 005ARRAY 00349900
OCT0000000000400000 , % 00000|00 00350000
OCT0000052225273145 , % 005BEGIN 00350100
OCT0000000011300016 , % 00009H0> 00350200
OCT0000072246464325 , % 007BOOLE 00350300
OCT2145606060606060 , % AN 00350400
OCT0000000160500000 , % 0001 Q00 00350500
OCT0000032330516060 , % 003CHR 00350600
OCT0000000160600023 , % 0001 0C 00350700
OCT0000022331606060 , % 002CI 00350800
OCT0000000000700025 , % 00000Y0E 00350900
OCT0000072346444425 , % 007COMME 00351000
OCT4563606060606060 , % NT 00351100
OCT0000000007400027 , % 00007|0G 00351200
OCT0000032346626060 , % 003COS 00351300
OCT0000000160700000 , % 0001 Y00 00351400
OCT0000022422606060 , % 002DB 00351500
OCT0000000007100034 , % 0000780& 00351600
OCT0000032422436060 , % 003DBL 00351700
OCT0000000161000036 , % 0001/00< 00351800
OCT0000022423606060 , % 002DC 00351900
OCT0000000161100040 , % 0001/80| 00352000
OCT0000032425236060 , % 003DEC 00352100
OCT0000000011700042 , % 00009Y0K 00352200
OCT0000062425263145 , % 006DEFIN 00352300
OCT2560606060606060 , % E 00352400
OCT0000000161200044 , % 0001/+0M 00352500
OCT0000022431606060 , % 002DI 00352600
OCT0000000007500047 , % 00007Q0P 00352700
OCT0000032431656060 , % 003DIV 00352800
OCT0000000010200051 , % 00008+0R 00352900
OCT0000022446606060 , % 002DO 00353000
OCT0000000007200053 , % 00007+0* 00353100
OCT0000062446642243 , % 006DOUBL 00353200
OCT2560606060606060 , % E 00353300
OCT0000000161300055 , % 0001/H0) 00353400
OCT0000022462606060 , % 002DS 00353500
OCT0000000007300060 , % 00007H0 00353600
OCT0000042464444760 , % 004DUMP 00353700
OCT0000000007600000 , % 00007 00 00353800
OCT0000042543622560 , % 004ELSE 00353900
OCT0000000000500064 , % 00000Q0U 00354000
OCT0000032545246060 , % 003END 00354100
OCT0000000006500066 , % 00006Q0W 00354200
OCT0000062545633125 , % 006ENTIE 00354300
OCT5160606060606060 , % R 00354400
OCT0000000006400070 , % 00006|0Y 00354500
OCT0000032550656060 , % 003EQV 00354600
OCT0000000006300073 , % 00006H0% 00354700
OCT0000032567476060 , % 003EXP 00354800
OCT0000000001300000 , % 00001H00 00354900
OCT0000052621436225 , % 005FALSE 00355000
OCT0000000012000077 , % 0000#00" 00355100
OCT0000042631432560 , % 004FILE 00355200
OCT0000000012100101 , % 0000#811 00355300
OCT0000042631434360 , % 004FILL 00355400
OCT0000000010000103 , % 00008013 00355500
OCT0000032646516060 , % 003FOR 00355600
OCT0000000012200105 , % 0000#+15 00355700
OCT0000062646514421 , % 006FORMA 00355800
OCT6360606060606060 , % T 00355900
OCT0000000012300107 , % 0000#H17 00356000
OCT0000072646516621 , % 007FORWA 00356100
OCT5124606060606060 , % RD 00356200
OCT0000000001500000 , % 00001Q00 00356300
OCT0000022746606060 , % 002GO 00356400
OCT0000000001600000 , % 00001 00 00356500
OCT0000023126606060 , % 002IF 00356600
OCT0000000006200117 , % 00006+1} 00356700
OCT0000033144476060 , % 003IMP 00356800
OCT0000000006100121 , % 0000681A 00356900
OCT0000023145606060 , % 002IN 00357000
OCT0000000011200123 , % 00009+1C 00357100
OCT0000073145632527 , % 007INTEG 00357200
OCT2551606060606060 , % ER 00357300
OCT0000000161400000 , % 0001/|00 00357400
OCT0000044164444760 , % 004JUMP 00357500
OCT0000000011400000 , % 00009|00 00357600
OCT0000054321222543 , % 005LABEL 00357700
OCT0000000161500132 , % 0001/Q1. 00357800
OCT0000034331636060 , % 003LIT 00357900
OCT0000000006000134 , % 0000601& 00358000
OCT0000024345606060 , % 002LN 00358100
OCT0000000161600136 , % 0001/ 1< 00358200
OCT0000034346236060 , % 003LOC 00358300
OCT0000000161700140 , % 0001/Y1| 00358400
OCT0000054346232143 , % 005LOCAL 00358500
OCT0000000013300000 , % 0000@H00 00358600
OCT0000034446246060 , % 003MOD 00358700
OCT0000000013200144 , % 0000@+1M 00358800
OCT0000074446453163 , % 007MONIT 00358900
OCT4651606060606060 , % OR 00359000
OCT0000000004000000 , % 00004000 00359100
OCT0000024546606060 , % 002NO 00359200
OCT0000000012400151 , % 0000#|1R 00359300
OCT0000034546636060 , % 003NOT 00359400
OCT0000000162000153 , % 0001S01* 00359500
OCT0000034564446060 , % 003NUM 00359600
OCT0000000162100000 , % 0001S800 00359700
OCT0000034623636060 , % 003OCT 00359800
OCT0000000010400157 , % 00008|1{ 00359900
OCT0000024651606060 , % 002OR 00360000
OCT0000000010300161 , % 00008H1/ 00360100
OCT0000034664636060 , % 003OUT 00360200
OCT0000000013500163 , % 0000@Q1T 00360300
OCT0000034666456060 , % 003OWN 00360400
OCT0000000002300000 , % 00002H00 00360500
OCT0000044721272560 , % 004PAGE 00360600
OCT0000000011100167 , % 0000981X 00360700
OCT0000114751462325 , % 009PROCE 00360800
OCT2464512560606060 , % DURE 00360900
OCT0000000011000000 , % 00009000 00361000
OCT0000045125212460 , % 004READ 00361100
OCT0000000011500174 , % 00009Q1! 00361200
OCT0000045125214360 , % 004REAL 00361300
OCT0000000013600176 , % 0000@ 1] 00361400
OCT0000075125432521 , % 007RELEA 00361500
OCT6225606060606060 , % SE 00361600
OCT0000000162200200 , % 0001S+20 00361700
OCT0000055125622563 , % 005RESET 00361800
OCT0000000013700203 , % 0000@Y23 00361900
OCT0000075125652551 , % 007REVER 00362000
OCT6225606060606060 , % SE 00362100
OCT0000000012500000 , % 0000#Q00 00362200
OCT0000046221652560 , % 004SAVE 00362300
OCT0000000162300210 , % 0001SH28 00362400
OCT0000026222606060 , % 002SB 00362500
OCT0000000162400212 , % 0001S|2# 00362600
OCT0000026223606060 , % 002SC 00362700
OCT0000000162500214 , % 0001SQ2 00362800
OCT0000036225636060 , % 003SET 00362900
OCT0000000162600216 , % 0001S 2> 00363000
OCT0000026231606060 , % 002SI 00363100
OCT0000000014000220 , % 0000 02+ 00363200
OCT0000046231274560 , % 004SIGN 00363300
OCT0000000014100222 , % 0000 82B 00363400
OCT0000036231456060 , % 003SIN 00363500
OCT0000000162700224 , % 0001SY2D 00363600
OCT0000046242314760 , % 004SKIP 00363700
OCT0000000013400226 , % 0000@|2F 00363800
OCT0000046250516360 , % 004SQRT 00363900
OCT0000000012600230 , % 0000# 2H 00364000
OCT0000046263254760 , % 004STEP 00364100
OCT0000000013100232 , % 0000@82. 00364200
OCT0000066263512521 , % 006STREA 00364300
OCT4460606060606060 , % M 00364400
OCT0000000163000234 , % 0001T02& 00364500
OCT0000036264226060 , % 003SUB 00364600
OCT0000000002000237 , % 0000202~ 00364700
OCT0000066266316323 , % 006SWITC 00364800
OCT3060606060606060 , % H 00364900
OCT0000000163100000 , % 0001T800 00365000
OCT0000056321434370 , % 005TALLY 00365100
OCT0000000007700244 , % 00007Y2M 00365200
OCT0000046330254560 , % 004THEN 00365300
OCT0000000001400246 , % 00001|2O 00365400
OCT0000026346606060 , % 002TO 00365500
OCT0000000163200250 , % 0001T+2Q 00365600
OCT0000066346272743 , % 006TOGGL 00365700
OCT2560606060606060 , % E 00365800
OCT0000000001200252 , % 00001+2$ 00365900
OCT0000046351642560 , % 004TRUE 00366000
OCT0000000010600000 , % 00008 00 00366100
OCT0000056445633143 , % 005UNTIL 00366200
OCT0000000013000000 , % 0000@000 00366300
OCT0000056521436425 , % 005VALUE 00366400
OCT0000000163300000 , % 0001TH00 00366500
OCT0000036624626060 , % 003WDS 00366600
OCT0000000010100263 , % 0000882T 00366700
OCT0000056630314325 , % 005WHILE 00366800
OCT0000000012700265 , % 0000#Y2V 00366900
OCT0000046631633060 , % 004WITH 00367000
OCT0000000010700267 , % 00008Y2X 00367100
OCT0000056651316325 , % 005WRITE 00367200
OCT0000000163400000 , % 0001T|00 00367300
OCT0000037146456060 ; % 003ZON 00367400
FILL RESTACK[*] WITH % ALGOL 00367500
0, 0, 0, 0, 0, 0, 0, 0, 00367600
0, 0, 0, 0, 0, 0, 0, 0, 00367700
0, 12, 16, 26, 50, 61, 74, 77, 00367800
0, 85, 0, 0, 0, 0, 0, 0, 00367900
0, 88, 0, 98, 102, 109, 117, 121, 00368000
0, 133, 0, 0, 0, 0, 0, 0, 00368100
0, 0, 161, 173, 175, 177, 185, 0, 00368200
0,187,0,0,0,0,0,0; 00368300
GO TO EXIT; 00368400
LFLO: 00368500
FILL RESERVED[*] WITH 0, % FLOW 00368600
OCT0000000000100000 , % 00000800 00368700
OCT0000056263215163 , % 005START 00368800
OCT0000000000200000 , % 00000+00 00368900
OCT0000062631453162 , % 006FINIS 00369000
OCT3060606060606060 , % H 00369100
OCT0000000000300000 , % 00000H00 00369200
OCT0000045064316360 , % 004QUIT 00369300
OCT0000000000400000 , % 00000|00 00369400
OCT0000052225273145 , % 005BEGIN 00369500
OCT0000000000500000 , % 00000Q00 00369600
OCT0000032545246060 , % 003END 00369700
OCT0000000000600010 , % 00000 08 00369800
OCT0000032246676060 , % 003BOX 00369900
OCT0000000000700000 , % 00000Y00 00370000
OCT0000072346444425 , % 007COMME 00370100
OCT4563606060606060 , % NT 00370200
OCT0000000001000000 , % 00001000 00370300
OCT0000043025212460 , % 004HEAD 00370400
OCT0000000001000021 , % 0000100A 00370500
OCT0000073025212431 , % 007HEADI 00370600
OCT4527606060606060 , % NG 00370700
OCT0000000001100000 , % 00001800 00370800
OCT0000056331634325 , % 005TITLE 00370900
OCT0000000001200026 , % 00001+0F 00371000
OCT0000046351642560 , % 004TRUE 00371100
OCT0000000001300003 , % 00001H03 00371200
OCT0000052621436225 , % 005FALSE 00371300
OCT0000000001400030 , % 00001|0H 00371400
OCT0000026346606060 , % 002TO 00371500
OCT0000000001500000 , % 00001Q00 00371600
OCT0000022746606060 , % 002GO 00371700
OCT0000000001600000 , % 00001 00 00371800
OCT0000023126606060 , % 002IF 00371900
OCT0000000002000001 , % 00002001 00372000
OCT0000066266316323 , % 006SWITC 00372100
OCT3060606060606060 , % H 00372200
OCT0000000002100012 , % 0000280# 00372300
OCT0000052545632551 , % 005ENTER 00372400
OCT0000000002200045 , % 00002+0N 00372500
OCT0000042567316360 , % 004EXIT 00372600
OCT0000000002300000 , % 00002H00 00372700
OCT0000044721272560 , % 004PAGE 00372800
OCT0000000002500034 , % 00002Q0& 00372900
OCT0000046325514460 , % 004TERM 00373000
OCT0000000002500053 , % 00002Q0* 00373100
OCT0000116325514431 , % 009TERMI 00373200
OCT4521632560606060 , % NATE 00373300
OCT0000000002600051 , % 00002 0R 00373400
OCT0000064721272531 , % 006PAGEI 00373500
OCT2460606060606060 , % D 00373600
OCT0000000002700016 , % 00002Y0> 00373700
OCT0000032346436060 , % 003COL 00373800
OCT0000000002700063 , % 00002Y0T 00373900
OCT0000062346436444 , % 006COLUM 00374000
OCT4560606060606060 , % N 00374100
OCT0000000003000060 , % 0000300 00374200
OCT0000074721272531 , % 007PAGEI 00374300
OCT4523606060606060 , % NC 00374400
OCT0000000003100000 , % 00003800 00374500
OCT0000064421672346 , % 006MAXCO 00374600
OCT4360606060606060 , % L 00374700
OCT0000000003200000 , % 00003+00 00374800
OCT0000042421632560 , % 004DATE 00374900
OCT0000000003300000 , % 00003H00 00375000
OCT0000044546632560 , % 004NOTE 00375100
OCT0000000004100076 , % 0000480] 00375200
OCT0000042446256260 , % 004DOES 00375300
OCT0000000004100040 , % 0000480| 00375400
OCT0000023162606060 , % 002IS 00375500
OCT0000000004100000 , % 00004800 00375600
OCT0000036621626060 , % 003WAS 00375700
OCT0000000003400055 , % 00003|0) 00375800
OCT0000056321224325 , % 005TABLE 00375900
OCT0000000003500065 , % 00003Q0V 00376000
OCT0000042346242560 , % 004CODE 00376100
OCT0000000003600014 , % 00003 0 00376200
OCT0000072246674645 , % 007BOXON 00376300
OCT4370606060606060 , % LY 00376400
OCT0000000003700000 , % 00003Y00 00376500
OCT0000037025626060 , % 003YES 00376600
OCT0000000004000100 , % 00004010 00376700
OCT0000024546606060 , % 002NO 00376800
OCT0000000004100110 , % 00004818 00376900
OCT0000046325626360 ; % 004TEST 00377000
FILL RESTACK[*] WITH % FLOW 00377100
0, 0, 0, 0, 0, 0, 0, 0, 00377200
0, 0, 0, 0, 0, 0, 0, 0, 00377300
0, 0, 76, 74, 66, 39, 26, 30, 00377400
19, 68, 0, 0, 0, 0, 0, 0, 00377500
0, 0, 0, 0, 59, 81, 0, 56, 00377600
6, 0, 0, 0, 0, 0, 0, 0, 00377700
0, 0, 34, 83, 0, 0, 70, 0, 00377800
79,0,0,0,0,0,0,0; 00377900
GO TO EXIT; 00378000
LCOB: 00378100
FILL RESERVED[*] WITH 0, 00378200
OCT0000000000500000 , % 00000Q00 00378300
OCT0000032545246060 , % 003END 00378400
OCT0000000001400000 , % 00001|00 00378500
OCT0000026346606060 , % 002TO 00378600
OCT0000000001500000 , % 00001Q00 00378700
OCT0000022746606060 , % 002GO 00378800
OCT0000000001600000 , % 00001 00 00378900
OCT0000023126606060 , % 002IF 00379000
OCT0000000002100001 , % 00002801 00379100
OCT0000052545632551 , % 005ENTER 00379200
OCT0000000002200011 , % 00002+09 00379300
OCT0000042567316360 , % 004EXIT 00379400
OCT0000000003300000 , % 00003H00 00379500
OCT0000044546632560 , % 004NOTE 00379600
OCT0000000004000015 , % 0000400: 00379700
OCT0000024546606060 , % 002NO 00379800
OCT0000000004100007 , % 00004807 00379900
OCT0000023162606060 , % 002IS 00380000
OCT0000000006000000 , % 00006000 00380100
OCT0000024345606060 , % 002LN 00380200
OCT0000000006100021 , % 0000680A 00380300
OCT0000023145606060 , % 002IN 00380400
OCT0000000006300013 , % 00006H0@ 00380500
OCT0000032567476060 , % 003EXP 00380600
OCT0000000006600000 , % 00006 00 00380700
OCT0000032122626060 , % 003ABS 00380800
OCT0000000007000031 , % 0000700I 00380900
OCT0000062151236321 , % 006ARCTA 00381000
OCT4560606060606060 , % N 00381100
OCT0000000007300000 , % 00007H00 00381200
OCT0000042464444760 , % 004DUMP 00381300
OCT0000000007400000 , % 00007|00 00381400
OCT0000032346626060 , % 003COS 00381500
OCT0000000007600027 , % 00007 0G 00381600
OCT0000042543622560 , % 004ELSE 00381700
OCT0000000007700003 , % 00007Y03 00381800
OCT0000046330254560 , % 004THEN 00381900
OCT0000000010000000 , % 00008000 00382000
OCT0000032646516060 , % 003FOR 00382100
OCT0000000010400000 , % 00008|00 00382200
OCT0000024651606060 , % 002OR 00382300
OCT0000000010500033 , % 00008Q0[ 00382400
OCT0000032145246060 , % 003AND 00382500
OCT0000000010600000 , % 00008 00 00382600
OCT0000056445633143 , % 005UNTIL 00382700
OCT0000000010700000 , % 00008Y00 00382800
OCT0000056651316325 , % 005WRITE 00382900
OCT0000000011000000 , % 00009000 00383000
OCT0000045125212460 , % 004READ 00383100
OCT0000000011100000 , % 00009800 00383200
OCT0000114751462325 , % 009PROCE 00383300
OCT2464512560606060 , % DURE 00383400
OCT0000000011400023 , % 00009|0C 00383500
OCT0000054321222543 , % 005LABEL 00383600
OCT0000000011700036 , % 00009Y0< 00383700
OCT0000062425263145 , % 006DEFIN 00383800
OCT2560606060606060 , % E 00383900
OCT0000000012000046 , % 0000#00O 00384000
OCT0000042631432560 , % 004FILE 00384100
OCT0000000012200072 , % 0000#+0, 00384200
OCT0000062646514421 , % 006FORMA 00384300
OCT6360606060606060 , % T 00384400
OCT0000000012400017 , % 0000#|0} 00384500
OCT0000034546636060 , % 003NOT 00384600
OCT0000000012700056 , % 0000#Y0; 00384700
OCT0000046631633060 , % 004WITH 00384800
OCT0000000013000000 , % 0000@000 00384900
OCT0000056521436425 , % 005VALUE 00385000
OCT0000000013200000 , % 0000@+00 00385100
OCT0000074446453163 , % 007MONIT 00385200
OCT2551606060606060 , % ER 00385300
OCT0000000013300105 , % 0000@H15 00385400
OCT0000034446246060 , % 003MOD 00385500
OCT0000000013400000 , % 0000@|00 00385600
OCT0000046250516360 , % 004SQRT 00385700
OCT0000000013600060 , % 0000@ 0 00385800
OCT0000075125432521 , % 007RELEA 00385900
OCT6225606060606060 , % SE 00386000
OCT0000000014000112 , % 0000 01# 00386100
OCT0000046231274560 , % 004SIGN 00386200
OCT0000000014100117 , % 0000 81} 00386300
OCT0000036231456060 , % 003SIN 00386400
OCT0000000014400052 , % 0000 |0$ 00386500
OCT0000072124245125 , % 007ADDRE 00386600
OCT6262606060606060 , % SS 00386700
OCT0000000015000040 , % 0000:00| 00386800
OCT0000052343466225 , % 005CLOSE 00386900
OCT0000000015100126 , % 0000:81F 00387000
OCT0000072346456351 , % 007CONTR 00387100
OCT4643606060606060 , % OL 00387200
OCT0000000015500067 , % 0000:Q0X 00387300
OCT0000042431624260 , % 004DISK 00387400
OCT0000000016000065 , % 0000>00V 00387500
OCT0000044346234260 , % 004LOCK 00387600
OCT0000000016200050 , % 0000>+0Q 00387700
OCT0000024626606060 , % 002OF 00387800
OCT0000000016300137 , % 0000>H1~ 00387900
OCT0000044647254560 , % 004OPEN 00388000
OCT0000000016500062 , % 0000>Q0S 00388100
OCT0000074751314563 , % 007PRINT 00388200
OCT2551606060606060 , % ER 00388300
OCT0000000016700143 , % 0000>Y1L 00388400
OCT0000054764452330 , % 005PUNCH 00388500
OCT0000000017000146 , % 0000}01O 00388600
OCT0000054764512725 , % 005PURGE 00388700
OCT0000000017100114 , % 0000}81 00388800
OCT0000065125212425 , % 006READE 00388900
OCT5160606060606060 , % R 00389000
OCT0000000017200152 , % 0000}+1$ 00389100
OCT0000045125254360 , % 004REEL 00389200
OCT0000000017300155 , % 0000}H1) 00389300
OCT0000065125663145 , % 006REWIN 00389400
OCT2460606060606060 , % D 00389500
OCT0000000017400121 , % 0000}|1A 00389600
OCT0000046225254260 , % 004SEEK 00389700
OCT0000000017500162 , % 0000}Q1S 00389800
OCT0000066231274525 , % 006SIGNE 00389900
OCT2460606060606060 , % D 00390000
OCT0000000017600164 , % 0000} 1U 00390100
OCT0000026245606060 , % 002SN 00390200
OCT0000000017700167 , % 0000}Y1X 00390300
OCT0000056247212325 , % 005SPACE 00390400
OCT0000000020100044 , % 0000+80M 00390500
OCT0000046321472560 , % 004TAPE 00390600
OCT0000000020400103 , % 0000+|13 00390700
OCT0000026521606060 , % 002VA 00390800
OCT0000000027600110 , % 0000G 18 00390900
OCT0000064425444651 , % 006MEMOR 00391000
OCT7060606060606060 , % Y 00391100
OCT0000000037200123 , % 0000~+1C 00391200
OCT0000052122466463 , % 005ABOUT 00391300
OCT0000000037300202 , % 0000~H22 00391400
OCT0000062123232547 , % 006ACCEP 00391500
OCT6360606060606060 , % T 00391600
OCT0000000037400204 , % 0000~|24 00391700
OCT0000062123232562 , % 006ACCES 00391800
OCT6260606060606060 , % S 00391900
OCT0000000037500207 , % 0000~Q27 00392000
OCT0000062123636421 , % 006ACTUA 00392100
OCT4360606060606060 , % L 00392200
OCT0000000037600212 , % 0000~ 2# 00392300
OCT0000112124652145 , % 009ADVAN 00392400
OCT2331452760606060 , % CING 00392500
OCT0000000037700215 , % 0000~Y2: 00392600
OCT0000052126632551 , % 005AFTER 00392700
OCT0000000040000220 , % 0000|02+ 00392800
OCT0000032143436060 , % 003ALL 00392900
OCT0000000040100222 , % 0000|82B 00393000
OCT0000122143473021 , % 00#ALPHA 00393100
OCT2225633123606060 , % BETIC 00393200
OCT0000000040200224 , % 0000|+2D 00393300
OCT0000142143473021 , % 00 ALPHA 00393400
OCT4564442551312360 , % NUMERIC 00393500
OCT0000000040300227 , % 0000|H2G 00393600
OCT0000112143632551 , % 009ALTER 00393700
OCT4521632560606060 , % NATE 00393800
OCT0000000040400232 , % 0000||2. 00393900
OCT0000052143632551 , % 005ALTER 00394000
OCT0000000040500235 , % 0000|Q2( 00394100
OCT0000022145606060 , % 002AN 00394200
OCT0000000040600237 , % 0000| 2~ 00394300
OCT0000052147474370 , % 005APPLY 00394400
OCT0000000040700241 , % 0000|Y2J 00394500
OCT0000032151256060 , % 003ARE 00394600
OCT0000000041000243 , % 0000J02L 00394700
OCT0000042151252160 , % 004AREA 00394800
OCT0000000041100245 , % 0000J82N 00394900
OCT0000052151252162 , % 005AREAS 00395000
OCT0000000041200247 , % 0000J+2P 00395100
OCT0000112162232545 , % 009ASCEN 00395200
OCT2431452760606060 , % DING 00395300
OCT0000000041300251 , % 0000JH2R 00395400
OCT0000062162623127 , % 006ASSIG 00395500
OCT4560606060606060 , % N 00395600
OCT0000000041400254 , % 0000J|2- 00395700
OCT0000022163606060 , % 002AT 00395800
OCT0000000041500257 , % 0000JQ2{ 00395900
OCT0000062164633046 , % 006AUTHO 00396000
OCT5160606060606060 , % R 00396100
OCT0000000041600000 , % 0000J 00 00396200
OCT0000062225264651 , % 006BEFOR 00396300
OCT2560606060606060 , % E 00396400
OCT0000000041700264 , % 0000JY2U 00396500
OCT0000112225273145 , % 009BEGIN 00396600
OCT4531452760606060 , % NING 00396700
OCT0000000042500267 , % 0000KQ2X 00396800
OCT0000052243214542 , % 005BLANK 00396900
OCT0000000042200272 , % 0000K+2, 00397000
OCT0000042231636260 , % 004BITS 00397100
OCT0000000042600274 , % 0000K 2! 00397200
OCT0000052243462342 , % 005BLOCK 00397300
OCT0000000043000276 , % 0000L02] 00397400
OCT0000022270606060 , % 002BY 00397500
OCT0000000043100300 , % 0000L830 00397600
OCT0000022271606060 , % 002BZ 00397700
OCT0000000043500130 , % 0000LQ1H 00397800
OCT0000072330214545 , % 007CHANN 00397900
OCT2543606060606060 , % EL 00398000
OCT0000000043600304 , % 0000L 34 00398100
OCT0000112330215121 , % 009CHARA 00398200
OCT2363255160606060 , % CTER 00398300
OCT0000000043700307 , % 0000LY37 00398400
OCT0000122330215121 , % 00#CHARA 00398500
OCT2363255162606060 , % CTERS 00398600
OCT0000000044000312 , % 0000M03# 00398700
OCT0000052330252342 , % 005CHECK 00398800
OCT0000000044100315 , % 0000M83: 00398900
OCT0000022343606060 , % 002CL 00399000
OCT0000000044200317 , % 0000M+3} 00399100
OCT0000052343216262 , % 005CLASS 00399200
OCT0000000044400321 , % 0000M|3A 00399300
OCT0000032344476060 , % 003CMP 00399400
OCT0000000044600323 , % 0000M 3C 00399500
OCT0000052346224643 , % 005COBOL 00399600
OCT0000000044700325 , % 0000MY3E 00399700
OCT0000152346444764 , % 00:COMPU 00399800
OCT6321633146452143 , % TATIONAL 00399900
OCT0000000045100327 , % 0000N83G 00400000
OCT0000072346444764 , % 007COMPU 00400100
OCT6325606060606060 , % TE 00400200
OCT0000000045200332 , % 0000N+3. 00400300
OCT0000152346452631 , % 00:CONFI 00400400
OCT2764512163314645 , % GURATION 00400500
OCT0000000045300335 , % 0000NH3( 00400600
OCT0000102346456263 , % 008CONST 00400700
OCT2145636060606060 , % ANT 00400800
OCT0000000045400340 , % 0000N|3| 00400900
OCT0000102346456321 , % 008CONTA 00401000
OCT3145626060606060 , % INS 00401100
OCT0000000045500343 , % 0000NQ3L 00401200
OCT0000122346456525 , % 00#CONVE 00401300
OCT5162314645606060 , % RSION 00401400
OCT0000000045600346 , % 0000N 3O 00401500
OCT0000042346477060 , % 004COPY 00401600
OCT0000000045700351 , % 0000NY3R 00401700
OCT0000152346515125 , % 00:CORRE 00401800
OCT6247464524314527 , % SPONDING 00401900
OCT0000000046000353 , % 0000O03* 00402000
OCT0000022347606060 , % 002CP 00402100
OCT0000000046200356 , % 0000O+3; 00402200
OCT0000052370234325 , % 005CYCLE 00402300
OCT0000000046300133 , % 0000OH1[ 00402400
OCT0000042421632160 , % 004DATA 00402500
OCT0000000046600362 , % 0000O 3S 00402600
OCT0000142425234321 , % 00 DECLA 00402700
OCT5121633165256260 , % RATIVES 00402800
OCT0000000046700364 , % 0000OY3U 00402900
OCT0000112425472545 , % 009DEPEN 00403000
OCT2431452760606060 , % DING 00403100
OCT0000000047000367 , % 0000P03X 00403200
OCT0000122425622325 , % 00#DESCE 00403300
OCT4524314527606060 , % NDING 00403400
OCT0000000047100372 , % 0000P83, 00403500
OCT0000122431212745 , % 00#DIAGN 00403600
OCT4662633123606060 , % OSTIC 00403700
OCT0000000047200375 , % 0000P+3= 00403800
OCT0000052431273163 , % 005DIGIT 00403900
OCT0000000047300400 , % 0000PH40 00404000
OCT0000062431273163 , % 006DIGIT 00404100
OCT6260606060606060 , % S 00404200
OCT0000000047400402 , % 0000P|42 00404300
OCT0000072431624743 , % 007DISPL 00404400
OCT2170606060606060 , % AY 00404500
OCT0000000047500405 , % 0000PQ45 00404600
OCT0000062431653124 , % 006DIVID 00404700
OCT2560606060606060 , % E 00404800
OCT0000000047600410 , % 0000P 48 00404900
OCT0000072431653124 , % 007DIVID 00405000
OCT2524606060606060 , % ED 00405100
OCT0000000047700413 , % 0000PY4@ 00405200
OCT0000102431653162 , % 008DIVIS 00405300
OCT3146456060606060 , % ION 00405400
OCT0000000050000416 , % 0000Q04> 00405500
OCT0000062446434321 , % 006DOLLA 00405600
OCT5160606060606060 , % R 00405700
OCT0000000050100421 , % 0000Q84A 00405800
OCT0000042451644460 , % 004DRUM 00405900
OCT0000000050200042 , % 0000Q+0K 00406000
OCT0000062545243145 , % 006ENDIN 00406100
OCT2760606060606060 , % G 00406200
OCT0000000051000426 , % 0000R04F 00406300
OCT0000132545653151 , % 00@ENVIR 00406400
OCT4645442545636060 , % ONMENT 00406500
OCT0000000051100431 , % 0000R84I 00406600
OCT0000052550642143 , % 005EQUAL 00406700
OCT0000000051200434 , % 0000R+4& 00406800
OCT0000062550642143 , % 006EQUAL 00406900
OCT6260606060606060 , % S 00407000
OCT0000000051300436 , % 0000RH4< 00407100
OCT0000052551514651 , % 005ERROR 00407200
OCT0000000051400441 , % 0000R|4J 00407300
OCT0000052565255170 , % 005EVERY 00407400
OCT0000000051500443 , % 0000RQ4L 00407500
OCT0000072567214431 , % 007EXAMI 00407600
OCT4525606060606060 , % NE 00407700
OCT0000000051600445 , % 0000R 4N 00407800
OCT0000072567232525 , % 007EXCEE 00407900
OCT2462606060606060 , % DS 00408000
OCT0000000051700074 , % 0000RY0! 00408100
OCT0000022624606060 , % 002FD 00408200
OCT0000000052300453 , % 0000$H4* 00408300
OCT0000062631434325 , % 006FILLE 00408400
OCT5160606060606060 , % R 00408500
OCT0000000052400455 , % 0000$|4) 00408600
OCT0000052631516263 , % 005FIRST 00408700
OCT0000000052500460 , % 0000$Q4 00408800
OCT0000052643462163 , % 005FLOAT 00408900
OCT0000000052600462 , % 0000$ 4S 00409000
OCT0000042651464460 , % 004FROM 00409100
OCT0000000052700464 , % 0000$Y4U 00409200
OCT0000022662606060 , % 002FS 00409300
OCT0000000053000005 , % 0000*005 00409400
OCT0000062731653145 , % 006GIVIN 00409500
OCT2760606060606060 , % G 00409600
OCT0000000053100470 , % 0000*84Y 00409700
OCT0000072751252163 , % 007GREAT 00409800
OCT2551606060606060 , % ER 00409900
OCT0000000053200000 , % 0000*+00 00410000
OCT0000063021623025 , % 006HASHE 00410100
OCT2460606060606060 , % D 00410200
OCT0000000053500025 , % 0000*Q0E 00410300
OCT0000023124606060 , % 002ID 00410400
OCT0000000053600501 , % 0000* 51 00410500
OCT0000163124254563 , % 00>IDENT 00410600
OCT3126312321633146 , % IFICATIO 00410700
OCT4560606060606060 , % N 00410800
OCT0000000054100503 , % 0000-853 00410900
OCT0000073145234364 , % 007INCLU 00411000
OCT2425606060606060 , % DE 00411100
OCT0000000054200507 , % 0000-+57 00411200
OCT0000053145476463 , % 005INPUT 00411300
OCT0000000054400512 , % 0000-|5# 00411400
OCT0000143145626321 , % 00 INSTA 00411500
OCT4343216331464560 , % LLATION 00411600
OCT0000000054500514 , % 0000-Q5 00411700
OCT0000043145634660 , % 004INTO 00411800
OCT0000000054600517 , % 0000- 5} 00411900
OCT0000073145652143 , % 007INVAL 00412000
OCT3124606060606060 , % ID 00412100
OCT0000000054700000 , % 0000-Y00 00412200
OCT0000024162606060 , % 002JS 00412300
OCT0000000055000524 , % 0000)05D 00412400
OCT0000114164626331 , % 009JUSTI 00412500
OCT2631252460606060 , % FIED 00412600
OCT0000000055100000 , % 0000)800 00412700
OCT0000034225706060 , % 003KEY 00412800
OCT0000000055200531 , % 0000)+5I 00412900
OCT0000104225702246 , % 008KEYBO 00413000
OCT2151246060606060 , % ARD 00413100
OCT0000000055300135 , % 0000)H1( 00413200
OCT0000074325212431 , % 007LEADI 00413300
OCT4527606060606060 , % NG 00413400
OCT0000000055400536 , % 0000)|5< 00413500
OCT0000074325216531 , % 007LEAVI 00413600
OCT4527606060606060 , % NG 00413700
OCT0000000055500541 , % 0000)Q5J 00413800
OCT0000044325266360 , % 004LEFT 00413900
OCT0000000055600544 , % 0000) 5M 00414000
OCT0000044325626260 , % 004LESS 00414100
OCT0000000055700546 , % 0000)Y5O 00414200
OCT0000074331225121 , % 007LIBRA 00414300
OCT5170606060606060 , % RY 00414400
OCT0000000056000550 , % 0000;05Q 00414500
OCT0000054331452562 , % 005LINES 00414600
OCT0000000056100553 , % 0000;85* 00414700
OCT0000104346232163 , % 008LOCAT 00414800
OCT3146456060606060 , % ION 00414900
OCT0000000056600555 , % 0000; 5) 00415000
OCT0000024347606060 , % 002LP 00415100
OCT0000000056700177 , % 0000;Y1" 00415200
OCT0000024424606060 , % 002MD 00415300
OCT0000000057300562 , % 0000{H5S 00415400
OCT0000044426312460 , % 004MFID 00415500
OCT0000000057400564 , % 0000{|5U 00415600
OCT0000054431456462 , % 005MINUS 00415700
OCT0000000057500566 , % 0000{Q5W 00415800
OCT0000044446242560 , % 004MODE 00415900
OCT0000000057600570 , % 0000{ 5Y 00416000
OCT0000074446246443 , % 007MODUL 00416100
OCT2562606060606060 , % ES 00416200
OCT0000000057700572 , % 0000{Y5, 00416300
OCT0000044446652560 , % 004MOVE 00416400
OCT0000000060000575 , % 0000 05= 00416500
OCT0000124464436331 , % 00#MULTI 00416600
OCT4743312524606060 , % PLIED 00416700
OCT0000000060100577 , % 0000 85" 00416800
OCT0000104464436331 , % 008MULTI 00416900
OCT4743706060606060 , % PLY 00417000
OCT0000000060200602 , % 0000 +62 00417100
OCT0000104464436331 , % 008MULTI 00417200
OCT4743256060606060 , % PLE 00417300
OCT0000000060300077 , % 0000 H0" 00417400
OCT0000104525272163 , % 008NEGAT 00417500
OCT3165256060606060 , % IVE 00417600
OCT0000000060400610 , % 0000 |68 00417700
OCT0000044525676360 , % 004NEXT 00417800
OCT0000000060700613 , % 0000 Y6@ 00417900
OCT0000074564442551 , % 007NUMER 00418000
OCT3123606060606060 , % IC 00418100
OCT0000000061200141 , % 0000/+1J 00418200
OCT0000024623606060 , % 002OC 00418300
OCT0000000061300620 , % 0000/H6+ 00418400
OCT0000064623236451 , % 006OCCUR 00418500
OCT6260606060606060 , % S 00418600
OCT0000000061400622 , % 0000/|6B 00418700
OCT0000034626266060 , % 003OFF 00418800
OCT0000000061500625 , % 0000/Q6E 00418900
OCT0000074644316363 , % 007OMITT 00419000
OCT2524606060606060 , % ED 00419100
OCT0000000061600627 , % 0000/ 6G 00419200
OCT0000024645606060 , % 002ON 00419300
OCT0000000061700632 , % 0000/Y6. 00419400
OCT0000104647633146 , % 008OPTIO 00419500
OCT4521436060606060 , % NAL 00419600
OCT0000000062000634 , % 0000S06& 00419700
OCT0000114663302551 , % 009OTHER 00419800
OCT6631622560606060 , % WISE 00419900
OCT0000000062100637 , % 0000S86~ 00420000
OCT0000064664634764 , % 006OUTPU 00420100
OCT6360606060606060 , % T 00420200
OCT0000000062400150 , % 0000S|1Q 00420300
OCT0000024723606060 , % 002PC 00420400
OCT0000000062500645 , % 0000SQ6N 00420500
OCT0000074725512646 , % 007PERFO 00420600
OCT5144606060606060 , % RM 00420700
OCT0000000062600647 , % 0000S 6P 00420800
OCT0000074731236364 , % 007PICTU 00420900
OCT5125606060606060 , % RE 00421000
OCT0000000062700652 , % 0000SY6$ 00421100
OCT0000064743212325 , % 006PLACE 00421200
OCT6260606060606060 , % S 00421300
OCT0000000063000655 , % 0000T06) 00421400
OCT0000044743646260 , % 004PLUS 00421500
OCT0000000063100660 , % 0000T86 00421600
OCT0000054746314563 , % 005POINT 00421700
OCT0000000063200662 , % 0000T+6S 00421800
OCT0000104746623163 , % 008POSIT 00421900
OCT3165256060606060 , % IVE 00422000
OCT0000000063300664 , % 0000TH6U 00422100
OCT0000104746623163 , % 008POSIT 00422200
OCT3146456060606060 , % ION 00422300
OCT0000000063400667 , % 0000T|6X 00422400
OCT0000104751254721 , % 008PREPA 00422500
OCT5125246060606060 , % RED 00422600
OCT0000000063500672 , % 0000TQ6, 00422700
OCT0000104751314563 , % 008PRINT 00422800
OCT2551626060606060 , % ERS 00422900
OCT0000000063600675 , % 0000T 6= 00423000
OCT0000104751314651 , % 008PRIOR 00423100
OCT3163706060606060 , % ITY 00423200
OCT0000000063700700 , % 0000TY70 00423300
OCT0000074751462325 , % 007PROCE 00423400
OCT2524606060606060 , % ED 00423500
OCT0000000064100703 , % 0000U873 00423600
OCT0000074751466325 , % 007PROTE 00423700
OCT2363606060606060 , % CT 00423800
OCT0000000064200706 , % 0000U+76 00423900
OCT0000024763606060 , % 002PT 00424000
OCT0000000064400000 , % 0000U|00 00424100
OCT0000055064466325 , % 005QUOTE 00424200
OCT0000000064500157 , % 0000UQ1{ 00424300
OCT0000065121452446 , % 006RANDO 00424400
OCT4460606060606060 , % M 00424500
OCT0000000064600715 , % 0000U 7: 00424600
OCT0000055121452725 , % 005RANGE 00424700
OCT0000000064700720 , % 0000UY7+ 00424800
OCT0000075125212425 , % 007READE 00424900
OCT5162606060606060 , % RS 00425000
OCT0000000065000722 , % 0000V07B 00425100
OCT0000115125234651 , % 009RECOR 00425200
OCT2431452760606060 , % DING 00425300
OCT0000000065100725 , % 0000V87E 00425400
OCT0000075125234651 , % 007RECOR 00425500
OCT2462606060606060 , % DS 00425600
OCT0000000065200730 , % 0000V+7H 00425700
OCT0000065125234651 , % 006RECOR 00425800
OCT2460606060606060 , % D 00425900
OCT0000000065400733 , % 0000V|7[ 00426000
OCT0000115125242526 , % 009REDEF 00426100
OCT3145256260606060 , % INES 00426200
OCT0000000065600736 , % 0000V 7< 00426300
OCT0000075125442151 , % 007REMAR 00426400
OCT4262606060606060 , % KS 00426500
OCT0000000065700741 , % 0000VY7J 00426600
OCT0000075125452144 , % 007RENAM 00426700
OCT2562606060606060 , % ES 00426800
OCT0000000066000744 , % 0000W07M 00426900
OCT0000105125452144 , % 008RENAM 00427000
OCT3145276060606060 , % ING 00427100
OCT0000000066100747 , % 0000W87P 00427200
OCT0000115125474321 , % 009REPLA 00427300
OCT2331452760606060 , % CING 00427400
OCT0000000066200752 , % 0000W+7$ 00427500
OCT0000055125516445 , % 005RERUN 00427600
OCT0000000066300755 , % 0000WH7) 00427700
OCT0000075125622551 , % 007RESER 00427800
OCT6525606060606060 , % VE 00427900
OCT0000000066400757 , % 0000W|7{ 00428000
OCT0000065125636451 , % 006RETUR 00428100
OCT4560606060606060 , % N 00428200
OCT0000000066500762 , % 0000WQ7S 00428300
OCT0000105125652551 , % 008REVER 00428400
OCT6225246060606060 , % SED 00428500
OCT0000000066600765 , % 0000W 7V 00428600
OCT0000025127606060 , % 002RG 00428700
OCT0000000066700770 , % 0000WY7Y 00428800
OCT0000055131273063 , % 005RIGHT 00428900
OCT0000000067000772 , % 0000X07, 00429000
OCT0000075146644524 , % 007ROUND 00429100
OCT2524606060606060 , % ED 00429200
OCT0000000067100774 , % 0000X87! 00429300
OCT0000035164456060 , % 003RUN 00429400
OCT0000000067200171 , % 0000X+1Z 00429500
OCT0000046221442560 , % 004SAME 00429600
OCT0000000067401001 , % 0000X|81 00429700
OCT0000026224606060 , % 002SD 00429800
OCT0000000067501003 , % 0000XQ83 00429900
OCT0000076225236331 , % 007SECTI 00430000
OCT4645606060606060 , % ON 00430100
OCT0000000067601005 , % 0000X 85 00430200
OCT0000106225236451 , % 008SECUR 00430300
OCT3163706060606060 , % ITY 00430400
OCT0000000067701010 , % 0000XY88 00430500
OCT0000076225274425 , % 007SEGME 00430600
OCT4563606060606060 , % NT 00430700
OCT0000000070001013 , % 0000Y08@ 00430800
OCT0000106225274425 , % 008SEGME 00430900
OCT4563626060606060 , % NTS 00431000
OCT0000000070201016 , % 0000Y+8> 00431100
OCT0000066225432523 , % 006SELEC 00431200
OCT6360606060606060 , % T 00431300
OCT0000000070301021 , % 0000YH8A 00431400
OCT0000106225456325 , % 008SENTE 00431500
OCT4523256060606060 , % NCE 00431600
OCT0000000070401024 , % 0000Y|8D 00431700
OCT0000106225456331 , % 008SENTI 00431800
OCT4525436060606060 , % NEL 00431900
OCT0000000070501027 , % 0000YQ8G 00432000
OCT0000116225506425 , % 009SEQUE 00432100
OCT4523252460606060 , % NCED 00432200
OCT0000000070601032 , % 0000Y 8. 00432300
OCT0000126225506425 , % 00#SEQUE 00432400
OCT4563312143606060 , % NTIAL 00432500
OCT0000000070701035 , % 0000YY8( 00432600
OCT0000046231712560 , % 004SIZE 00432700
OCT0000000071201040 , % 0000Z+8| 00432800
OCT0000066247212325 , % 006SPACE 00432900
OCT6260606060606060 , % S 00433000
OCT0000000071401042 , % 0000Z|8K 00433100
OCT0000046246516360 , % 004SORT 00433200
OCT0000000071501045 , % 0000ZQ8N 00433300
OCT0000106263214524 , % 008STAND 00433400
OCT2151246060606060 , % ARD 00433500
OCT0000000071601047 , % 0000Z 8P 00433600
OCT0000066263216364 , % 006STATU 00433700
OCT6260606060606060 , % S 00433800
OCT0000000071701052 , % 0000ZY8$ 00433900
OCT0000046263464760 , % 004STOP 00434000
OCT0000000072001055 , % 0000,08) 00434100
OCT0000106264226351 , % 008SUBTR 00434200
OCT2123636060606060 , % ACT 00434300
OCT0000000072101057 , % 0000,88{ 00434400
OCT0000126264472551 , % 00#SUPER 00434500
OCT6531624651606060 , % VISOR 00434600
OCT0000000072201062 , % 0000,+8S 00434700
OCT0000026270606060 , % 002SY 00434800
OCT0000000072301065 , % 0000,H8V 00434900
OCT0000106270442246 , % 008SYMBO 00435000
OCT4331236060606060 , % LIC 00435100
OCT0000000072401067 , % 0000,|8X 00435200
OCT0000146270452330 , % 00 SYNCH 00435300
OCT5146453171252460 , % RONIZED 00435400
OCT0000000072501072 , % 0000,Q8, 00435500
OCT0000026271606060 , % 002SZ 00435600
OCT0000000072601075 , % 0000, 8= 00435700
OCT0000106264474751 , % 008SUPPR 00435800
OCT2562626060606060 , % ESS 00435900
OCT0000000072700173 , % 0000,Y1% 00436000
OCT0000106321434370 , % 008TALLY 00436100
OCT3145276060606060 , % ING 00436200
OCT0000000073001102 , % 0000%092 00436300
OCT0000056321472562 , % 005TAPES 00436400
OCT0000000073601105 , % 0000% 95 00436500
OCT0000046330214560 , % 004THAN 00436600
OCT0000000073701107 , % 0000%Y97 00436700
OCT0000076330514664 , % 007THROU 00436800
OCT2730606060606060 , % GH 00436900
OCT0000000074001111 , % 0000!099 00437000
OCT0000046330516460 , % 004THRU 00437100
OCT0000000074101114 , % 0000!89 00437200
OCT0000056331442562 , % 005TIMES 00437300
OCT0000000074300054 , % 0000!H0- 00437400
OCT0000076445255064 , % 007UNEQU 00437500
OCT2143606060606060 , % AL 00437600
OCT0000000074401120 , % 0000!|9+ 00437700
OCT0000066445434623 , % 006UNLOC 00437800
OCT4260606060606060 , % K 00437900
OCT0000000074501123 , % 0000!Q9C 00438000
OCT0000046447464560 , % 004UPON 00438100
OCT0000000075001126 , % 0000=09F 00438200
OCT0000056462212725 , % 005USAGE 00438300
OCT0000000075101130 , % 0000=89H 00438400
OCT0000036462256060 , % 003USE 00438500
OCT0000000075201132 , % 0000=+9. 00438600
OCT0000056462314527 , % 005USING 00438700
OCT0000000075300175 , % 0000=H1= 00438800
OCT0000066521436425 , % 006VALUE 00438900
OCT6260606060606060 , % S 00439000
OCT0000000075401136 , % 0000=|9< 00439100
OCT0000076521517031 , % 007VARYI 00439200
OCT4527606060606060 , % NG 00439300
OCT0000000075500101 , % 0000=Q11 00439400
OCT0000046630254560 , % 004WHEN 00439500
OCT0000000075601144 , % 0000= 9M 00439600
OCT0000056646512462 , % 005WORDS 00439700
OCT0000000076000000 , % 0000]000 00439800
OCT0000047125514660 , % 004ZERO 00439900
OCT0000000076101150 , % 0000]89Q 00440000
OCT0000057125514662 , % 005ZEROS 00440100
OCT0000000076201152 , % 0000]+9$ 00440200
OCT0000067125514625 , % 006ZEROE 00440300
OCT6260606060606060 , % S 00440400
OCT0000000076301154 , % 0000]H9- 00440500
OCT0000027162606060 , % 002ZS 00440600
OCT0000000160400261 , % 0001 |2/ 00440700
OCT0000032124246060 , % 003ADD 00440800
OCT0000000163101116 , % 0001T89> 00440900
OCT0000056321434370 , % 005TALLY 00441000
OCT0000000060500615 , % 0000 Q6: 00441100
OCT0000164546544425 , % 00>NO-ME 00441200
OCT4446517054246444 , % MORY-DUM 00441300
OCT4760606060606060 , % P 00441400
OCT0000000060601165 , % 0000 9V 00441500
OCT0000144546455462 , % 00 NON-S 00441600
OCT6321452421512460 , % TANDARD 00441700
OCT0000000075701146 , % 0000=Y9O 00441800
OCT0000176646514231 , % 00}WORKI 00441900
OCT4527546263465121 , % NG-STORA 00442000
OCT2725606060606060 , % GE 00442100
OCT0000000074601134 , % 0000! 9& 00442200
OCT0000136447472551 , % 00@UPPER 00442300
OCT5422466445246060 , % -BOUND 00442400
OCT0000000074701200 , % 0000!Y#0 00442500
OCT0000146447472551 , % 00 UPPER 00442600
OCT5422466445246260 , % -BOUNDS 00442700
OCT0000000074201163 , % 0000!+9T 00442800
OCT0000136346242170 , % 00@TODAY 00442900
OCT6254242163256060 , % S-DATE 00443000
OCT0000000073101206 , % 0000%8#6 00443100
OCT0000136325233045 , % 00@TECHN 00443200
OCT3150642554216060 , % IQUE-A 00443300
OCT0000000073201211 , % 0000%+#9 00443400
OCT0000136325233045 , % 00@TECHN 00443500
OCT3150642554226060 , % IQUE-B 00443600
OCT0000000073301214 , % 0000%H# 00443700
OCT0000136325233045 , % 00@TECHN 00443800
OCT3150642554236060 , % IQUE-C 00443900
OCT0000000073401217 , % 0000%|#} 00444000
OCT0000136325233045 , % 00@TECHN 00444100
OCT3150642554476060 , % IQUE-P 00444200
OCT0000000073501222 , % 0000%Q#B 00444300
OCT0000146325626354 , % 00 TEST- 00444400
OCT4721636325514560 , % PATTERN 00444500
OCT0000000071301077 , % 0000ZH8" 00444600
OCT0000156247252331 , % 00:SPECI 00444700
OCT2143544521442562 , % AL-NAMES 00444800
OCT0000000071001230 , % 0000Z0#H 00444900
OCT0000126246516354 , % 00#SORT- 00445000
OCT6321472562606060 , % TAPES 00445100
OCT0000000071101233 , % 0000Z8#[ 00445200
OCT0000176246645123 , % 00}SOURC 00445300
OCT2554234644476463 , % E-COMPUT 00445400
OCT2551606060606060 , % ER 00445500
OCT0000000070101236 , % 0000Y8#< 00445600
OCT0000156225274425 , % 00:SEGME 00445700
OCT4563544331443163 , % NT-LIMIT 00445800
OCT0000000067301242 , % 0000XH#K 00445900
OCT0000136221652554 , % 00@SAVE- 00446000
OCT2621236346516060 , % FACTOR 00446100
OCT0000000065500777 , % 0000VQ7" 00446200
OCT0000135125254354 , % 00@REEL- 00446300
OCT4564442225516060 , % NUMBER 00446400
OCT0000000065301250 , % 0000VH#Q 00446500
OCT0000145125234651 , % 00 RECOR 00446600
OCT2454234664456360 , % D-COUNT 00446700
OCT0000000064300711 , % 0000UH79 00446800
OCT0000124764512725 , % 00#PURGE 00446900
OCT5424216325606060 , % -DATE 00447000
OCT0000000064001256 , % 0000U0#; 00447100
OCT0000124751462751 , % 00#PROGR 00447200
OCT2144543124606060 , % AM-ID 00447300
OCT0000000062201261 , % 0000S+#/ 00447400
OCT0000214721472551 , % 00APAPER 00447500
OCT5463214725545125 , % -TAPE-RE 00447600
OCT2124255160606060 , % ADER 00447700
OCT0000000062301264 , % 0000SH#U 00447800
OCT0000204721472551 , % 00+PAPER 00447900
OCT5463214725544764 , % -TAPE-PU 00448000
OCT4523306060606060 , % NCH 00448100
OCT0000000061000642 , % 0000/06K 00448200
OCT0000164622412523 , % 00>OBJEC 00448300
OCT6354475146275121 , % T-PROGRA 00448400
OCT4460606060606060 , % M 00448500
OCT0000000061101274 , % 0000/8#! 00448600
OCT0000174622412523 , % 00}OBJEC 00448700
OCT6354234644476463 , % T-COMPUT 00448800
OCT2551606060606060 , % ER 00448900
OCT0000000057000605 , % 0000{065 00449000
OCT0000174425444651 , % 00}MEMOR 00449100
OCT7054246444475442 , % Y-DUMP-K 00449200
OCT2570606060606060 , % EY 00449300
OCT0000000057101304 , % 0000{8@4 00449400
OCT0000134425444651 , % 00@MEMOR 00449500
OCT7054246444476060 , % Y-DUMP 00449600
OCT0000000057201310 , % 0000{+@8 00449700
OCT0000174425626221 , % 00}MESSA 00449800
OCT2725544751314563 , % GE-PRINT 00449900
OCT2551606060606060 , % ER 00450000
OCT0000000056200560 , % 0000;+5 00450100
OCT0000134346662551 , % 00@LOWER 00450200
OCT5422466445246060 , % -BOUND 00450300
OCT0000000056301317 , % 0000;H@} 00450400
OCT0000144346662551 , % 00 LOWER 00450500
OCT5422466445246260 , % -BOUNDS 00450600
OCT0000000056401322 , % 0000;|@B 00450700
OCT0000114346665465 , % 009LOW-V 00450800
OCT2143642560606060 , % ALUE 00450900
OCT0000000056501325 , % 0000;Q@E 00451000
OCT0000124346665465 , % 00#LOW-V 00451100
OCT2143642562606060 , % ALUES 00451200
OCT0000000054300521 , % 0000-H5A 00451300
OCT0000143145476463 , % 00 INPUT 00451400
OCT5446646347646360 , % -OUTPUT 00451500
OCT0000000053701333 , % 0000*Y@[ 00451600
OCT0000033154466060 , % 003I-O 00451700
OCT0000000054001336 , % 0000-0@< 00451800
OCT0000133154465423 , % 00@I-O-C 00451900
OCT4645635146436060 , % ONTROL 00452000
OCT0000000053300476 , % 0000*H4] 00452100
OCT0000123031273054 , % 00#HIGH- 00452200
OCT6521436425606060 , % VALUE 00452300
OCT0000000053401343 , % 0000*|@L 00452400
OCT0000133031273054 , % 00@HIGH- 00452500
OCT6521436425626060 , % VALUES 00452600
OCT0000000052200466 , % 0000$+4W 00452700
OCT0000132631432554 , % 00@FILE- 00452800
OCT4331443163626060 , % LIMITS 00452900
OCT0000000052101351 , % 0000$8@R 00453000
OCT0000122631432554 , % 00#FILE- 00453100
OCT4331443163606060 , % LIMIT 00453200
OCT0000000052001354 , % 0000$0@- 00453300
OCT0000142631432554 , % 00 FILE- 00453400
OCT2346456351464360 , % CONTROL 00453500
OCT0000000050300450 , % 0000QH4Q 00453600
OCT0000212545243145 , % 00AENDIN 00453700
OCT2754263143255443 , % G-FILE-L 00453800
OCT2122254360606060 , % ABEL 00453900
OCT0000000050401362 , % 0000Q|@S 00454000
OCT0000212545243145 , % 00AENDIN 00454100
OCT2754632147255443 , % G-TAPE-L 00454200
OCT2122254360606060 , % ABEL 00454300
OCT0000000050501366 , % 0000QQ@W 00454400
OCT0000122545245446 , % 00#END-O 00454500
OCT2654414622606060 , % F-JOB 00454600
OCT0000000050601372 , % 0000Q @, 00454700
OCT0000132545245446 , % 00@END-O 00454800
OCT2654263143256060 , % F-FILE 00454900
OCT0000000050701375 , % 0000QY@= 00455000
OCT0000132545245446 , % 00@END-O 00455100
OCT2654632147256060 , % F-TAPE 00455200
OCT0000000046400424 , % 0000O|4D 00455300
OCT0000152421632554 , % 00:DATE- 00455400
OCT2346444731432524 , % COMPILED 00455500
OCT0000000046501403 , % 0000OQ 3 00455600
OCT0000142421632554 , % 00 DATE- 00455700
OCT6651316363254560 , % WRITTEN 00455800
OCT0000000046100360 , % 0000O83 00455900
OCT0000152351252163 , % 00:CREAT 00456000
OCT3146455424216325 , % ION-DATE 00456100
OCT0000000045001411 , % 0000N0 9 00456200
OCT0000172346444764 , % 00}COMPU 00456300
OCT6321633146452143 , % TATIONAL 00456400
OCT5401606060606060 , % -1 00456500
OCT0000000044501414 , % 0000MQ 00456600
OCT0000052344475401 , % 005CMP-1 00456700
OCT0000000044301420 , % 0000MH + 00456800
OCT0000132343462342 , % 00@CLOCK 00456900
OCT5464453163626060 , % -UNITS 00457000
OCT0000000043201422 , % 0000L+ B 00457100
OCT0000122321512454 , % 00#CARD- 00457200
OCT4764452330606060 , % PUNCH 00457300
OCT0000000043301425 , % 0000LH E 00457400
OCT0000132321512454 , % 00@CARD- 00457500
OCT5125212425516060 , % READER 00457600
OCT0000000043401430 , % 0000L| H 00457700
OCT0000142321512454 , % 00 CARD- 00457800
OCT5125212425516260 , % READERS 00457900
OCT0000000042700302 , % 0000KY32 00458000
OCT0000132243462342 , % 00@BLOCK 00458100
OCT5423466445636060 , % -COUNT 00458200
OCT0000000042401436 , % 0000K| < 00458300
OCT0000062254050500 , % 006B-550 00458400
OCT0060606060606060 , % 0 00458500
OCT0000000042301441 , % 0000KH J 00458600
OCT0000062254050000 , % 006B-500 00458700
OCT0060606060606060 , % 0 00458800
OCT0000000042001444 , % 0000K0 M 00458900
OCT0000242225273145 , % 00DBEGIN 00459000
OCT4531452754263143 , % NING-FIL 00459100
OCT2554432122254360 , % E-LABEL 00459200
OCT0000000042101447 , % 0000K8 P 00459300
OCT0000242225273145 , % 00DBEGIN 00459400
OCT4531452754632147 , % NING-TAP 00459500
OCT2554432122254360 ; % E-LABEL 00459600
FILL RESTACK[*] WITH 00459700
0, 0, 0, 0, 0, 0, 0, 0, 00459800
0, 0, 0, 0, 0, 0, 0, 0, 00459900
0, 625, 811, 795, 774, 768, 751, 315, 00460000
742, 736, 0, 0, 0, 0, 0, 0, 00460100
0, 342, 347, 728, 715, 633, 704, 696, 00460200
459, 683, 0, 0, 0, 0, 0, 0, 00460300
0, 0, 677, 661, 643, 609, 636, 0, 00460400
0,623,0,0,0,0,0,0; 00460500
GO TO EXIT ; 00460600
LFORT: 00460700
FILL RESERVED[*] WITH 0, % FORTRAN 00460800
OCT0000000041300000 , % 0000JH00 00460900
OCT0000062162623127 , % 006ASSIG 00461000
OCT4560606060606060 , % N 00461100
OCT0000000017700000 , % 0000}Y00 00461200
OCT0000112221234262 , % 009BACKS 00461300
OCT4721232560606060 , % PACE 00461400
OCT0000000042600004 , % 0000K 04 00461500
OCT0000052243462342 , % 005BLOCK 00461600
OCT0000000002100000 , % 00002800 00461700
OCT0000042321434360 , % 004CALL 00461800
OCT0000000076400011 , % 0000]|09 00461900
OCT0000062346444446 , % 006COMMO 00462000
OCT4560606060606060 , % N 00462100
OCT0000000076500013 , % 0000]Q0@ 00462200
OCT0000072346444743 , % 007COMPL 00462300
OCT2567606060606060 , % EX 00462400
OCT0000000030300016 , % 0000HH0> 00462500
OCT0000102346456331 , % 008CONTI 00462600
OCT4564256060606060 , % NUE 00462700
OCT0000000046300000 , % 0000OH00 00462800
OCT0000042421632160 , % 004DATA 00462900
OCT0000000070700024 , % 0000YY0D 00463000
OCT0000112431442545 , % 009DIMEN 00463100
OCT6231464560606060 , % SION 00463200
OCT0000000010200026 , % 00008+0F 00463300
OCT0000022446606060 , % 002DO 00463400
OCT0000000007200031 , % 00007+0I 00463500
OCT0000062446642243 , % 006DOUBL 00463600
OCT2560606060606060 , % E 00463700
OCT0000000007200000 , % 00007+00 00463800
OCT0000114751252331 , % 009PRECI 00463900
OCT6231464560606060 , % SION 00464000
OCT0000000000500000 , % 00000Q00 00464100
OCT0000032545246060 , % 003END 00464200
OCT0000000012000000 , % 0000#000 00464300
OCT0000042631432560 , % 004FILE 00464400
OCT0000000076600041 , % 0000] 0J 00464500
OCT0000052545635170 , % 005ENTRY 00464600
OCT0000000065400045 , % 0000V|0N 00464700
OCT0000132550643165 , % 00@EQUIV 00464800
OCT2143254523256060 , % ALENCE 00464900
OCT0000000055700047 , % 0000)Y0P 00465000
OCT0000102567632551 , % 008EXTER 00465100
OCT4521436060606060 , % NAL 00465200
OCT0000000012200043 , % 0000#+0L 00465300
OCT0000062646514421 , % 006FORMA 00465400
OCT6360606060606060 , % T 00465500
OCT0000000011100055 , % 0000980) 00465600
OCT0000102664452363 , % 008FUNCT 00465700
OCT3146456060606060 , % ION 00465800
OCT0000000001500000 , % 00001Q00 00465900
OCT0000022746606060 , % 002GO 00466000
OCT0000000001400000 , % 00001|00 00466100
OCT0000026346606060 , % 002TO 00466200
OCT0000000001600000 , % 00001 00 00466300
OCT0000023126606060 , % 002IF 00466400
OCT0000000011200067 , % 00009+0X 00466500
OCT0000073145632527 , % 007INTEG 00466600
OCT2551606060606060 , % ER 00466700
OCT0000000011300000 , % 00009H00 00466800
OCT0000074346273123 , % 007LOGIC 00466900
OCT2143606060606060 , % AL 00467000
OCT0000000076700000 , % 0000]Y00 00467100
OCT0000104521442543 , % 008NAMEL 00467200
OCT3162636060606060 , % IST 00467300
OCT0000000077000036 , % 0000"00< 00467400
OCT0000054721646225 , % 005PAUSE 00467500
OCT0000000016600102 , % 0000> 12 00467600
OCT0000054751314563 , % 005PRINT 00467700
OCT0000000077100104 , % 0000"814 00467800
OCT0000074751462751 , % 007PROGR 00467900
OCT2144606060606060 , % AM 00468000
OCT0000000016700106 , % 0000>Y16 00468100
OCT0000054764452330 , % 005PUNCH 00468200
OCT0000000011000000 , % 00009000 00468300
OCT0000045125212460 , % 004READ 00468400
OCT0000000011500113 , % 00009Q1@ 00468500
OCT0000045125214360 , % 004REAL 00468600
OCT0000000066400115 , % 0000W|1: 00468700
OCT0000065125636451 , % 006RETUR 00468800
OCT4560606060606060 , % N 00468900
OCT0000000017300117 , % 0000}H1} 00469000
OCT0000065125663145 , % 006REWIN 00469100
OCT2460606060606060 , % D 00469200
OCT0000000071700000 , % 0000ZY00 00469300
OCT0000046263464760 , % 004STOP 00469400
OCT0000000011100125 , % 0000981E 00469500
OCT0000126264225146 , % 00#SUBRO 00469600
OCT6463314525606060 , % UTINE 00469700
OCT0000000010700000 , % 00008Y00 00469800
OCT0000056651316325 , % 005WRITE 00469900
OCT0000000026400074 , % 0000F|0! 00470000
OCT0000024363606060 , % 002LT 00470100
OCT0000000026600134 , % 0000F 1& 00470200
OCT0000024325606060 , % 002LE 00470300
OCT0000000023400052 , % 0000C|0$ 00470400
OCT0000022550606060 , % 002EQ 00470500
OCT0000000030100077 , % 0000H80" 00470600
OCT0000024525606060 , % 002NE 00470700
OCT0000000024200063 , % 0000D+0T 00470800
OCT0000022763606060 , % 002GT 00470900
OCT0000000024300144 , % 0000DH1M 00471000
OCT0000022725606060 , % 002GE 00471100
OCT0000000012400142 , % 0000#|1K 00471200
OCT0000034546636060 , % 003NOT 00471300
OCT0000000010500001 , % 00008Q01 00471400
OCT0000032145246060 , % 003AND 00471500
OCT0000000010400000 , % 00008|00 00471600
OCT0000024651606060 , % 002OR 00471700
OCT0000000001200065 , % 00001+0V 00471800
OCT0000046351642560 , % 004TRUE 00471900
OCT0000000001300060 , % 00001H0 00472000
OCT0000052621436225 , % 005FALSE 00472100
OCT0000000001500146 , % 00001Q1O 00472200
OCT0000042746634660 ; % 004GOTO 00472300
FILL RESTACK[*] WITH % FORTRAN 00472400
0, 0, 0, 0, 0, 0, 0, 0, 00472500
0, 0, 0, 0, 0, 0, 0, 0, 00472600
0, 106, 7, 17, 27, 96, 112, 114, 00472700
0, 57, 0, 0, 0, 0, 0, 0, 00472800
0, 0, 0, 94, 0, 104, 108, 73, 00472900
0, 82, 0, 0, 0, 0, 0, 0, 00473000
0, 0, 87, 110, 0, 0, 90, 0, 00473100
0, 0, 0, 0, 0, 0, 0, 0; 00473200
GO TO EXIT ; 00473300
EXIT: 00473400
END FILLJUNK; 00473500
COMMENT DOCUMENT* CODE 12 * * * * * * * * * * * * * * * * * * * * * * ; 00473600
DEFINE FILLBPL = 00473700
FILLJUNK(2)#; 00473800
DEFINE FILLESPOL = 00473900
FILLJUNK(4) #; 00474000
DEFINE FILLALGOL = 00474100
FILLJUNK(1) #; 00474200
DEFINE FILLCOBOL = 00474300
FILLJUNK(3) #; 00474400
DEFINE FILLFLOW = 00474500
FILLJUNK(5) #; 00474600
DEFINE FILLFORTRAN = 00474700
FILLJUNK(6)#; 00474800
COMMENT DOCUMENT* 7 * * * * * * * * * * * * * * * * * * * * * * * * 00474900
FILE DECLARATIONS. 00475000
* 8 ; 00475100
FILE XREFILE DISK SERIAL[20:3000] (2,10,150,SAVE 10); 00475200
FILE XREFSORT DISK SERIAL [20:3000] (2,10,150,SAVE 10); 00475300
FILE DISK DISK SERIAL "DISKSYM" "XREF"(2,10,150) ; 00475400
FILE NEWDISK DISK SERIAL [20:3000] "DISKSYM" "XREF" 00475500
(2,10,150,SAVE 10) ; 00475600
FILE IRFILE DISK SERIAL [20:1000] "INFO" "RETR" 00475700
(2,10,150,SAVE 10) ; 00475800
FILE BACKUPDIR DISK SERIAL [20:500] "BACKUP" "DIRECT" (1,15, 00475900
150,SAVE 10); 00476000
FILE OLDDOC DISK SERIAL (2,15,90); 00476100
FILE NEWDOC DISK SERIAL (2,15,90); 00476200
FILE SCRATCH DISK SERIAL [20:1000] (2,10,150); 00476300
FILE EARLYSCRATCH DISK SERIAL [20:1000](2,10,150); 00476400
FILE IN TAPE "0CRDIMG" (2,56,10) ; 00476500
FILE BUSTED(1,1020,20) ; 00476600
FILE CASTA DISK SERIAL "CASTA" "LIBRARY"(2,56) ; 00476700
FILE CASTB(2,56),CASTC(2,56) ; 00476800
FILE BACKUPTAPE 2(2,81,15,SAVE 10) ; 00476900
FILE BACKUPDISK DISK SERIAL [20:4000](2,15,90,SAVE 10); 00477000
PROCEDURE ERROR(N) ; VALUE N ; INTEGER N ; FORWARD ; 00477002
FILE OLDBACKUP DISK SERIAL "BACKUPD" (2,15,90); 00477100
FILE OLDBAC "BACKUPT" (2,81,15); 00477200
SWITCH FILE BACKUPSW ~ BACKUPDISK,BACKUPTAPE,OLDBACKUP,OLDDOC, 00477300
NEWDOC,OLDBAC ; 00477400
DEFINE BACKUP = BACKUPSW[BACKIND] # ; 00477500
SWITCH FILE CASTSW ~ CASTA , CASTB , CASTC ; 00477600
FILE CA "CASTA" (2,56,SAVE 100) ; 00477700
FILE CB "CASTB" (2,56,SAVE 100) ; 00477800
FILE CC "CASTC" (2,56,SAVE 100) ; 00477900
SWITCH FILE CASTOUT ~ CA,CB,CC ; 00478000
SAVE FILE OUT NEWTAPE "0CRDIMG" (2,56,10,SAVE 10) ; 00478100
FILE IN CARD(5,10) ; 00478200
FILE NEWPATCH "PATCHES" (2,56,10,SAVE 10); 00478300
FILE PATCHTAPE "PATCHES" (2,56,10); 00478400
SWITCH FILE PATCHES ~ CARD,PATCHTAPE; 00478500
DEFINE CARDS = PATCHES[PATCHIND] #; 00478600
FILE OUT LINE 4(2,15,SAVE 10) ; 00478700
SWITCH FILE SWFIN ~ TAPE,DISK,SCRATCH,EARLYSCRATCH,PATCHTAPE; 00478800
SWITCH FILE SWFOUT ~ NEWTAPE,NEWDISK,SCRATCH,EARLYSCRATCH, 00478900
NEWPATCH; 00479000
FILE PNCH 0(5,10,SAVE 10) ; 00479100
FILE OUT PUNTAPE (2,10,SAVE 100) ; 00479200
SWITCH FILE NEWPUNCH ~ PNCH,PUNTAPE ; 00479300
FILE OUT SPOOUT 11(5,10) ; 00479400
FILE IN SPOIN 11(1,10) ; 00479500
FILE TAP(2,56,10); 00479600
DEFINE NTAPE = NEWTAPE # , 00479700
PUNCH = PNCH # , 00479800
PRINT = LINE # ; 00479900
DEFINE SWIN = SWFIN[SWFININD] # , 00480000
SWOUT = SWFOUT[SWFOUTIND] # ; 00480100
% END OF FILE DECLARATIONS ; 00480200
PROCEDURE DUMPARRAYS ; FORWARD ; 00480300
COMMENT DOCUMENT* 7 * * * * * * * * * * * * * * * * * * * * * * * * * 00480400
INTEGER DECLARATIONS. 00480500
* 8 ; 00480600
INTEGER FCASTSEQ,LCASTSEQ,CASTINDEX,CASTPOINT,T1,T2,NCASTRECS ; 00480700
INTEGER SWFININD,SWFOUTIND ; 00480800
INTEGER CASTAINDEX ; 00480900
INTEGER BACKIND ; 00481000
INTEGER NOBACKUPRINTS,PUNCHSW ; 00481100
INTEGER PARINDENT,SAVEPARINDENT,DOCER ; 00481200
INTEGER DEVICE,TABINDEX; 00481300
INTEGER NWPR,W; 00481400
INTEGER NINES,RESTYPE,BRESTYPE,SNEWSEQ ; 00481500
INTEGER RR,PP,SCRAM,NEWSEQ,SEQINC ; 00481600
INTEGER XREFSEQ; 00481700
INTEGER TEMPIND,LASTSEQLINK,LASTCURSEQ,TAMPIND ; 00481800
INTEGER FIRSTCHAR,LASTCHAR ; 00481900
INTEGER STREAMBEGCOUNT ; 00482000
INTEGER HEADPOINT,CARDTALLY,I,TOTAL ; 00482100
INTEGER NENDS,CURBEG,BEGINDEX ; 00482200
INTEGER NUNDERLINES,PAGECHAR ; 00482300
INTEGER FCASTINDEX,LCASTINDEX ; 00482400
INTEGER BPOINT,IJUNK,BINDENT ; 00482500
INTEGER UJUNK; 00482600
INTEGER VOLUME,FIRSTPAGELINE,BKDIRCOUNT,BKRCRDCOUNT; 00482700
INTEGER DOCREV; 00482800
INTEGER PAGEPOINT; 00482900
INTEGER NRESERVED,STLENGTH ; 00483000
INTEGER SKIPVAL,INDENTVAL ; 00483100
INTEGER PARLOW,PARHIGH,PARP,NOPROC ; 00483200
INTEGER PAGEINC; 00483300
INTEGER SAVEPAGEINC ; 00483400
INTEGER NLINES,PAGEN,MAXLINES ; 00483500
INTEGER YEAR,DAY,MONTH,HOUR,MINUTE,SECOND,MAXCOLS,FERR ; 00483600
INTEGER PLSAVE,PHSAVE,GLSAVE,GHSAVE,GINDSAVE ; 00483700
INTEGER RESULT,COUNT,LCR,NCR,NINDEXLINES ; 00483800
INTEGER DOCDEFIND,NDOCDEFS ; 00483900
INTEGER FIRSTBIT,LASTBIT,FIELDSIZE,COL74 ; 00484000
INTEGER CODELINECOUNT,NBLBOXES ; 00484100
INTEGER TABLEUPPERBOUND ; 00484200
INTEGER LABC ; 00484300
INTEGER COBCOUNT ; 00484400
INTEGER MAXCOUNTER ; 00484500
INTEGER ZF ; % 0 LINE , 1 BACKUP , 2 BOTH 00484600
INTEGER ZSP ; % 1 SINGLE SPACE , 2 DOUBLE SPACE 00484700
INTEGER ZLB ; % % USED LIKE ZF IN READATAPE 00484800
INTEGER ZZF ; % USED TO SAVE ZF LOCAL TO PROCEDURES 00484900
INTEGER ZLCOUNT ; % LINE COUNTER USED IN ZPL 00485000
INTEGER ZLCOUNTMAX ; % MAX NUMBER OF LINE ON BACKUP PAGE 00485100
INTEGER ZPAGEN,ZCONTPAGEN; 00485200
INTEGER SAVEZ,SAVEZZ, CONTPAGEN; 00485300
INTEGER TEMP; 00485400
INTEGER OLDPAGE; 00485500
INTEGER SAVEPAGEN; 00485600
INTEGER FLOWIND; 00485700
INTEGER ACONT; 00485800
INTEGER PLACES; 00485900
INTEGER SAVESEQ; 00486000
INTEGER ASAVESEQ,ZSPERM; 00486100
INTEGER J,KJUNK; 00486200
INTEGER THLINES,THL; 00486300
INTEGER THPOS; 00486400
INTEGER INSINC; 00486500
INTEGER PAGEQUAL; 00486600
INTEGER MAXSEG,SEGCOUNT; 00486700
INTEGER CHARCOUNT; 00486800
INTEGER K; 00486900
INTEGER PATCHIND; 00487000
INTEGER FIRSTSEQ; 00487100
INTEGER NONAMES; 00487200
INTEGER PR ; 00487300
INTEGER ESIND ; 00487400
INTEGER OLDASEQ, 00487500
CORESIZE ; % USED BY SORT 6OR LARGE 00487600
INTEGER INDEXWORDS; 00487602
% END OF INTEGER DECLARATIONS ; 00487700
COMMENT DOCUMENT* 7 * * * * * * * * * * * * * * * * * * * * * * * * * 00487800
DEFINE DECLARATIONS. 00487900
* 8 ; 00488000
DEFINE RC = PP.[33:6],PP.[39:9] # ; 00488100
DEFINE NFORMTABS = FORMCOLS[0] # ; 00488200
DEFINE TABLINK = [33:15] # ; 00488300
DEFINE TYPLINK = [18:15] # , 00488400
SEQ = SEQUENCE[0] # , 00488500
OLDSEQ = SEQUENCE[1] # , 00488600
VOIDSEQ = SEQUENCE[2] # , 00488700
LASTSEQ = SEQUENCE[3] # , 00488800
LASTERROR = SEQUENCE[4] # , 00488900
FLOWSEQ = SEQUENCE[5] # , 00489000
PROCTAG = [1:2] # , 00489100
LISTHEAD = TABLE[TABIND].[3:15] # , 00489200
LISTTAIL = TABLE[TABIND].[18:15] # , 00489300
LOADCOUNT = SEQLINKS[SEQIND].[3:15] # , 00489400
SEQIND = TEMPIND.[33:6],TEMPIND.[39:9] # , 00489500
LASTSEQIND = LASTSEQLINK.[33:6],LASTSEQLINK.[39:9] # , 00489600
LASTCURIND = LASTCURSEQ.[33:6],LASTCURSEQ.[39:9] # , 00489700
NEXTSEQLINK = SEQLINKS[SEQIND].[18:15] # , 00489800
CURSEQIND = TAMPIND.[33:6],TAMPIND.[39:9] # , 00489900
SEQPROCPOINT = SEQLINKS[SEQIND].[2:1] # , 00490000
SEQPOINTER = SEQLINKS[SEQIND].[33:15] # ; 00490100
DEFINE BEGIND = BEGINDEX.[36:6],BEGINDEX.[42:6] # ; 00490200
DEFINE TABIND = TABINDEX.[33:6],TABINDEX.[39:9] # ; 00490300
DEFINE 00490400
SBTOG = SAVEBACKUPTOG # , 00490500
PERIOD = Q.[18:6] = "." #, 00490600
ASTERISK = Q = "1* " # , 00490700
COMMA = Q = "1, " # , 00490800
RTPAREN = Q = "1) " # , 00490900
RTBRACK = Q = "1] " # , 00491000
LFPAREN = Q = "1( " # , 00491100
LFBRACK = Q = "1[ " # , 00491200
SLASH = Q = "1/ " # , 00491300
MINUS = Q = "1- " # , 00491400
PLUS = Q = "1+ " # , 00491500
SEMICOLON = Q = "1; " # , 00491600
GREATERTHAN = Q = "1> " # , 00491700
LESSTHAN = Q = "1< " # , 00491800
COLON = Q = "1: " # , 00491900
NUMSIGN = Q = "1# " # , 00492000
PERCENT = Q.[18:6] = "%" # , 00492100
QUOTE = Q.[18:6] = """ # , 00492200
RTQUOTE = Q.[18:6] = """ AND NOT QUOTETOG # , 00492300
LFTQUOTE = Q.[18:6] = """ AND QUOTETOG # , 00492400
IDENTIFIER =RESULT = 1 # , 00492500
FINDQUOTE = DO SCAN UNTIL Q.[18:6] = """ # , 00492600
FINDSEMICOLON = DO SCAN UNTIL Q.[18:6] = ";" # ; 00492700
DEFINE LEFTCONNECT = (QUOTE OR LFPAREN OR LFBRACK OR LESSTHAN 00492800
OR Q= "1{ ") AND EXAMINE(NCR) ! " " AND 00492900
EXAMINE(NCR) ! "." #; 00493000
DEFINE RTCONNECT = (ATEMP~EXAMINE(NCR) ) = """ OR ATEMP = 00493100
")" OR ATEMP = "," OR ATEMP = "]" OR ATEMP = ">" 00493200
OR ATEMP = "}" OR ATEMP = "/" OR ATEMP = "-" OR 00493300
ATEMP = ":" OR 00493400
(DOCONLY AND ATEMP = ";") # ; 00493500
DEFINE 00493600
CCSEQ= CBUFF[10]#, 00493700
LCSEQ =CBUFF[11]#, 00493800
CTSEQ = TBUFF[10]#, 00493900
LTSEQ = TBUFF[11]#, 00494000
NIDENT = TABLE[0,0]#; 00494100
DEFINE 00494200
COMMENTV = 007#, 00494300
PROCEDUREV = 073#, 00494400
STREAMV = 089#; 00494500
DEFINE DOV = 66#, 00494600
GOTOV = 13#, 00494700
IFV = 14#, 00494800
ASSIGNV = 267#; 00494900
% END OF DEFINE DECLARATIONS ; 00495000
COMMENT DOCUMENT* 7 * * * * * * * * * * * * * * * * * * * * * * * * * 00495100
BOOLEAN DECLARATIONS. 00495200
* 8 ; 00495300
BOOLEAN FIRSTDOCIDTOG,LASTDOCIDTOG,DOCIDTOG ; 00495301
BOOLEAN DEBUG,DOLLARFLAG,ENDCARD; 00495400
BOOLEAN DONTJUSTIFY ; 00495500
BOOLEAN FLOWTOG,FLOWFOUND,FLOWBOXTOG,SYNTAXTOG ; 00495600
BOOLEAN FSYNTAXTOG; 00495700
BOOLEAN SAVEREMOTETOG,FIRSTDOLLAR,DATETOG ; 00495800
BOOLEAN DOCONLY,RESEQONLY ; 00495900
BOOLEAN DOCSYNTAX,DOCSYNTAXONLY,BIGTOG,SHUFFLETOG ; 00496000
BOOLEAN UNDERTOG,DOUBLETOG,LISTCARDTOG,DOCXREFTOG ; 00496100
BOOLEAN DOCINDEXTOG,DOCNAMES; % FOR SPECIAL DOCUMENT XREF 00496102
BOOLEAN TABTOG,INDEXFIXTOG,DOCDEBUG ; 00496200
BOOLEAN LISTONLYTOG,LFPAGEID; 00496300
BOOLEAN CLEARTITLETOG,TITLEFULL ; 00496400
BOOLEAN PATCHTOG,PATCHFLAG,REMOTETOG ; 00496500
BOOLEAN PARIDTOG,SAVEPARIDTOG,COPYTOG ; 00496600
BOOLEAN INVTOG,STRINGTOG,CONTOG ; 00496700
BOOLEAN BUILDEBUG; 00496800
BOOLEAN EMITFLAG,SEQBLANKTOG ; 00496900
BOOLEAN SYNTAXCHECK,TAPETOG, TTAPEOPENED; 00497000
BOOLEAN SEQTOG,RESEQTOG,NEWTOG,PRINTOG,BACKUPTOG,PUNCHTOG ; 00497100
BOOLEAN NOTLAST,NEWTAPEOPENED; 00497200
BOOLEAN QUOTETOG,ALPHATOG,NOTBLANK ; 00497300
BOOLEAN LOOKFORDOLLAR,CASTOG; 00497400
BOOLEAN ALLTOG,FROMTOG,TOENDTOG ; 00497500
BOOLEAN COBOLTOG ; 00497600
BOOLEAN COUNTOG,CONTCARD ; 00497700
BOOLEAN DOUBLEONLY,TUNDERTOG,PUNDERTOG,PDOUBLETOG ; 00497800
BOOLEAN XREFTOG,BEGINTOG,PROCTOG,PROCFLAG ; 00497900
BOOLEAN PRINTCLOSED,NAMETOG,PROCXREFLAG,BLOCKTOG,PROCBLKFLAG ; 00498000
BOOLEAN STREAMTOG; 00498100
BOOLEAN CENTERTOG,SKIPTOG,PAGETOG,QUITOG,INDEXTOG,INDENTOG, 00498200
TITLETOG,DOCTOG,BACKUPCLOSED,ENDTOG,ASTERFLAG, 00498300
INDEXONLYTOG, % TRUE IF INDEX ONLY IS TO BE INDENTED. 00498310
MISSTOG, 00498400
INVALLTOG , 00498500
DOCUMENTFOUND,PERCENTOG,DOCLISTOG,VOIDTOG,PBACKONLY ; 00498600
BOOLEAN DOCLISTFLAG; 00498700
BOOLEAN PROCPUNCH ; 00498800
BOOLEAN SIXLINES,NOPAGETOG ; 00498900
BOOLEAN WIDETOG ; % FOR WIDE PRINTING IN DOCUMENT 00498902
BOOLEAN NAMEPUNCH ; 00499000
BOOLEAN CODEPERCENTOG ; 00499001
BOOLEAN NODEBUGTOG,DEBUGSTUFF,ASMLTOG,BPLFLOWTOG ; 00499100
BOOLEAN NEWMULTITOG,FLOWTABTOG ; 00499200
BOOLEAN MAKEIRTOG,MAKETOG ; 00499300
BOOLEAN BUILDTOG,RESERVEDTOG,RESFLAG,STREAMBODY ; 00499400
BOOLEAN STARTCODEFLAG , FIRSTCODELINE , LABELUSE ; 00499500
BOOLEAN PARTOG,FINALDOCTOG,ASTERTOG ; 00499600
BOOLEAN FINITOG,NOSPOTOG,LASTNOSPACE,NOTFIRSTDOCPAGE ; 00499700
BOOLEAN GLOSSTOG,FREETOG,FIXEDTOG,LOGICTOG ; 00499800
BOOLEAN BSTICKFLAG,CODETOG,BLANKNEWSEQ ; 00499900
BOOLEAN BUILDPUNCHTOG,COMMENTOG ; 00500000
BOOLEAN ENDCODETOG,PROCDECFLAG ; 00500100
BOOLEAN PATTOG,SORTOG,FORMTOG ; 00500200
BOOLEAN PATBOXTOG,PATCHCARD ; 00500300
BOOLEAN BPLTOG,ASSIGNTOG ; 00500400
BOOLEAN SIMULATOG ; 00500401
BOOLEAN BNFTOG,ESPOLTOG; 00500500
BOOLEAN FORTRTOG; 00500600
BOOLEAN DEBEATLETOG; 00500700
BOOLEAN PRINTALLTOG,PRINTSELECTOG,HOLDOFFTOG,OLDONLYTOG; 00500800
BOOLEAN DIRTOG,DIRONLYTOG; 00500900
BOOLEAN MERGETOG; 00501000
BOOLEAN GLYNTOG ; 00501100
BOOLEAN LISTTOBACKUPTOG,SAVEBACKUPTOG,AUTOPRINT; 00501200
BOOLEAN FLOWDOCBLOCKTOG ; 00501300
BOOLEAN INSERTOG,DECIMALSTOG; 00501400
BOOLEAN DEBLANKTOG ; 00501500
BOOLEAN BLANKNAMEPUNCH,ONLYTOG; 00501600
BOOLEAN DISCMCP,CODECOUNTOG,BACKUPUSED,CARDSOPEN ; 00501700
BOOLEAN ZPLOVER ; % SET TRUE IN ZPG IF BACKUP PAGE OVERFLOWS 00501800
BOOLEAN INSERTROW,PATCHINBUFF; 00501900
BOOLEAN ZNOSKIP,PATCHPAGE,UPDATETOG, DOCOUTPUT; 00502000
COMMENT ZNOSKIP WILL ALLOW GROUPS OF LINES CONCEIVED OF AS A UNIT 00502100
TO BE PRINTED WITHOUT AUTOMATIC OVERFLOW; 00502200
BOOLEAN NOCODESEQ ; 00502210
BOOLEAN REVTOG; 00502300
BOOLEAN LEFTPAGE; 00502400
BOOLEAN HEADFULL,TIGHTFULL; 00502500
BOOLEAN OVERTOG; 00502600
BOOLEAN PUNCHPAGES,PUNCHAFTER,NEWCARD; 00502700
BOOLEAN BBSEQ; 00502800
BOOLEAN BBB; 00502900
BOOLEAN LASTLINE; 00503000
BOOLEAN PAGEFULL; 00503100
BOOLEAN TABHEAD,CONSTTAB; 00503200
BOOLEAN INSTOG; 00503300
BOOLEAN THUNDTOG; 00503400
BOOLEAN ALLONE,DISKOUTOG,DISKINTOG, MAKEMULTOG; 00503500
BOOLEAN ENDCARDA; 00503600
BOOLEAN B35OPTOG; 00503700
BOOLEAN BMON; 00503800
BOOLEAN LEAVETOG; 00503900
BOOLEAN LOOKFORSTAR; 00504000
BOOLEAN CANTPAGEHERE; 00504100
BOOLEAN SELECTIVEXREF; 00504200
BOOLEAN ASMFLOWTOG; 00504300
BOOLEAN TRANSTOG; 00504400
BOOLEAN SCRATCHTOG; 00504500
BOOLEAN SUPPRESSTOG,SUPTHISTIME; 00504600
BOOLEAN ALLSEGS; 00504700
BOOLEAN TAPEPATCHES,PATCHRESEQ,NEWPATCHTOG; 00504800
BOOLEAN REMOVEOVERTOG ; 00504900
BOOLEAN QFLOWTOG ; 00505000
BOOLEAN PATCHEDLINE; 00505100
BOOLEAN DOCPATCHED,NEWVOL; 00505200
BOOLEAN TITLECHANGE,HEADCHANGE ; 00505300
BOOLEAN ESCAPETOG,DATATABLE; 00505400
BOOLEAN WATCHOUT; 00505500
BOOLEAN PROCFLAG2; 00505600
BOOLEAN DATOG; 00505700
BOOLEAN HOLDASTER ; 00505800
BOOLEAN HOLDFLOW ; 00505900
BOOLEAN HOLTOG ; 00506000
BOOLEAN ASTERPATCHED ; 00506100
% END OF BOOLEAN DECLARATIONS ; 00506200
COMMENT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; 00506300
COMMENT DOCUMENT* 7 * * * * * * * * * * * * * * * * * * * * * * * * 00506400
MISCELLANEOUS DECLARATIONS. 00506500
* 8; 00506600
FORMAT MONITFORM(2A6) ; 00506700
FORMAT FDOCER(I3," DOCUMENT ERRORS FOUND") ; 00506800
FORMAT TOTALFORM("NO OF TABLE SEARCHES = ",I10) ; 00506900
FORMAT MARKER("A-A-A") ; 00507000
FORMAT BADRUN("**** EOJ XREF/",A6,X2,A6,I8," ERRORS ****") , 00507100
STARTJOB( "BOJ XREF/",A6, X2 A6) , 00507200
GOODRUN("---- EOJ XREF/",A6,X2,A6," ----") ; 00507300
FORMAT FCOLS (12("1234567890")); 00507400
FORMAT ENDMARKER("A-A-AZ"); 00507500
COMMENT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; 00507600
REAL PROCTIME,STARTIME,JUNK ; 00507700
COMMENT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; 00507800
FORMAT DATEFORM("XREF PROGRAM OF ",A6," THIS LISTING ", 00507900
"PRODUCED",I4,X1,A3,X1,"19",I2," TIME",I3,".",I2) ; 00508000
LABEL MOREFILL,MORCOM,MORECAST ; 00508100
LABEL MOREBUILD ; 00508200
LABEL RESCAN,NEXT,EOFCARD ; 00508300
LABEL L1,L2,LL,CONTINUE,L3,RD,EOF,EOPROG,L4,COMPILE ; 00508400
LABEL BMONJ; 00508500
COMMENT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; 00508600
ALPHA Q,DATE; 00508700
ALPHA PROGID ; 00508800
ALPHA ATEMP ; 00508900
FORMAT HEADFORM(3I8); 00509000
FORMAT DIRINFOFORM (I5,I8,I8); 00509100
ALPHA APAGEN,PAGEID ; 00509200
ALPHA PATCHLETTER ; 00509300
ALPHA MONTHA ; 00509400
LIST DATELIST(DATE,DAY,MONTHA,YEAR,HOUR,MINUTE) ; 00509500
LIST ZLIST(PAGEQUAL,OLDPAGE,ZCONTPAGEN,FIRSTPAGELINE, 00509600
BKRCRDCOUNT,DOCREV,VOLUME,REVTOG); 00509700
% END MISCELLANEOUS DECLARATIONS 00509800
COMMENT DOCUMENT* 7 * * * * * * * * * * * * * * * * * * * * * * * * * 00509900
ARRAY DECLARATIONS. 00510000
* 8 ; 00510100
SAVE INTEGER ARRAY STACK[0:125] ; 00510200
SAVE ARRAY ZAR[0:15] ; 00510300
ARRAY FIRSTDOCID,LASTDOCID[0:20] ; 00510301
ARRAY BNFARRAY[0:15] ; 00510400
ARRAY PAGENUM[0:14] ; 00510500
ARRAY TABLE[0:60,0:511] ; 00510600
ARRAY SPOMESS[0:5,0:10]; 00510700
ARRAY FLOWINDEX[0:200,0:15]; 00510800
SAVE ARRAY ACCUM[0:14] ; COMMENT IDENTIFIERS ARE BUILT HERE ; 00510900
ARRAY XREFBUFF[0:15] ; 00511000
INTEGER ARRAY FORMCOLS[0:50] ; 00511100
SAVE ARRAY BUFFER[0:14] ; 00511200
SAVE ARRAY GLOBE[0:20] ; 00511300
SAVE ARRAY CASTDIR[0:3,0:56] , CASTBUFF[0:56] ; 00511400
SAVE ARRAY NAMEBUFF[0:15] ; 00511500
ARRAY SEQLINKS,CURSEQ[0:90,0:511] ; 00511600
SAVE ARRAY CBUFF,TBUFF,LISTBUFFER[0:14] ; 00511700
SAVE ARRAY LASTCASTID,FIRSTCASTID[0:14] ; 00511800
ARRAY MULTNAME[0:10] ; 00511900
SAVE ARRAY TALLIES[0:63],HEADING[0:15] ; 00512000
SAVE ARRAY ASMLBUFF[0:2,0:15] ; 00512100
SAVE ARRAY COBOLBUFF[0:2,0:15] ; 00512200
SAVE ARRAY COBACCUM[0:15] ; 00512300
ARRAY PAIRSEQ[0:63,0:63],JUNKARRAY[0:15] ; 00512400
ARRAY CASTLINKS[0:150] ; 00512500
ARRAY INVCH[0:10] ; 00512600
ARRAY DATEBUFF[0:4] ; 00512700
SAVE ARRAY SEQUENCE[0:6],BLANKARRAY[0:15] ; 00512800
SAVE ARRAY BLOCKBUFFER[0:15] ; 00512900
ARRAY DOCDEFINES[0:100,0:10],DOCDEFLINKS[0:100] ; 00513000
ARRAY UNDERBUFF [0:15],DOCTITLE[0:14]; 00513100
DEFINE TITLEBUFF = DOCTITLE # ; 00513200
SAVE ARRAY LAR[0:15]; 00513300
ARRAY REVISIONS [0:100]; 00513400
ARRAY CONTBUF[0:15]; 00513500
ARRAY CONTID[0:1],REVB[0:1]; 00513600
ARRAY WORDBUF,OLDBUF,NEWBUF[0:15]; 00513700
ARRAY PAGES[0:500]; 00513800
DEFINE CHOOSEG = PAGES #; 00513900
ARRAY TABARR[0:5,0:15]; 00514000
ARRAY AACONT[0:4]; 00514100
ARRAY SAVEBUF[0:15]; 00514200
ALPHA ARRAY ESTABLE[0:4] ; 00514300
ARRAY TUNDERBUFF[0:15]; 00514400
% END OF ARRAY DECLARATIONS ; 00514500
COMMENT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; 00514600
COMMENT DOCUMENT* 5 * * * * * * * * * * * * * * * * * * * * * * * * * 00514700
A. GENERAL UTILITY STREAM PROCEDURES. 00514800
* END; 00514900
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * ** * ** ; 00515000
REAL STREAM PROCEDURE MKABS(A) ; 00515100
COMMENT RETURNS ABSOLUTE ADDRESS OF NAME PARAMETER A; 00515200
BEGIN 00515300
DI ~ A ; MKABS ~ DI ; 00515400
END MKABS ; 00515500
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00515600
STREAM PROCEDURE FIXCOL73(LCR) ; 00515700
VALUE LCR ; 00515800
COMMENT PUTS % IN LOCATION LCR; 00515900
BEGIN 00516000
DI ~ LCR ; DS ~ 1 LIT "%" ; 00516100
END FIXCOL73 ; 00516200
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * ; 00516300
STREAM PROCEDURE CLEAR(A,N) ; 00516400
VALUE N ; 00516500
COMMENT CLEARS N + 1 WORDS STARTING AT A ; 00516600
BEGIN 00516700
DI ~ A ; DS ~ 8 LIT " " ; SI ~ A ; DS ~ N WDS ; 00516800
END CLEAR ; 00516900
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00517000
STREAM PROCEDURE CLEARCHAR(D,DPOS,NCHARS) ; 00517100
VALUE DPOS,NCHARS ; 00517200
COMMENT CLEARS NCHARS CHARACTERS STARTING AT D + DPOS ; 00517300
BEGIN 00517400
DI ~ D ; DI ~ DI + DPOS ; NCHARS ( DS ~ 1 LIT " " ) ; 00517500
END CLEARCHAR ; 00517600
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00517700
STREAM PROCEDURE SETCHAR (D,DPOS,CHAR) ; 00517800
VALUE CHAR,DPOS ; 00517900
COMMENT PUTS THE CHARACTER CHAR INTO D + DPOS ; 00518000
BEGIN 00518100
DI ~ D ; DI ~ DI + DPOS ; SI ~ LOC CHAR ; SI ~ SI + 7 ; 00518200
DS ~ 1 CHR ; 00518300
END SETCHAR ; 00518400
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00518500
REAL STREAM PROCEDURE EXAMINE(NCR) ; 00518600
VALUE NCR ; 00518700
COMMENT RETURNS CHARACTER FOUND AT THE ABSOLUTE ADDRESS NCR ; 00518800
BEGIN 00518900
SI ~ NCR ; DI ~ LOC EXAMINE ; DI ~ DI + 7 ; DS ~ CHR ; 00519000
END EXAMINE ; 00519100
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * ; 00519200
BOOLEAN STREAM PROCEDURE FINDCHAR(S,CHAR) ; 00519300
VALUE S,CHAR ; 00519400
COMMENT TRUE IF NEXT NON-BLANK CHARACTER FROM S IS CHAR ; 00519500
BEGIN 00519600
LABEL MORE ; 00519700
TALLY ~ 0 ; SI ~ S ; 00519800
MORE: IF SC = " " THEN 00519900
BEGIN 00520000
SI ~ SI + 1 ; GO TO MORE ; 00520100
END ; 00520200
DI ~ LOC CHAR ; DI ~ DI + 7 ; 00520300
IF SC = DC THEN TALLY ~ 1 ; 00520400
FINDCHAR ~ TALLY ; 00520500
END FINDCHAR ; 00520600
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00520700
INTEGER STREAM PROCEDURE SEQCOMP(CARDSEQ,TAPESEQ) ; 00520800
COMMENT 0 FOR < , 1 FOR > , 2 FOR = ; 00520900
BEGIN 00521000
SI ~ CARDSEQ ; DI ~ TAPESEQ ; 00521100
IF 8 SC > DC THEN TALLY ~ 1 ELSE 00521200
BEGIN 00521300
SI ~ SI - 8 ; DI ~ DI - 8 ; 00521400
IF 8 SC = DC THEN TALLY ~ 2 ELSE TALLY ~ 0 ; 00521500
END ; 00521600
SEQCOMP ~ TALLY ; 00521700
END SEQCOMP ; 00521800
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00521900
STREAM PROCEDURE OCTTODEC(SOURCE,DEST) ; 00522000
COMMENT CONVERTS ONE 48 BIT INTEGER WORD TO 8 CHAR ; 00522100
BEGIN 00522200
SI ~ SOURCE ; DI ~ DEST ; DS ~ 8 DEC ; 00522300
END OCTTODEC ; 00522400
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00522500
STREAM PROCEDURE DECTOOCT(SOURCE,DEST) ; 00522600
COMMENT CONVERTS 8 CHAR TO ONE INTEGER WORD ; 00522700
BEGIN 00522800
SI ~ SOURCE ; DI ~ DEST ; DS ~ 8 OCT ; 00522900
END DECTOOCT ; 00523000
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00523100
STREAM PROCEDURE DTOCT(S,SPOS,D,N) ; 00523200
VALUE SPOS,N ; 00523300
COMMENT CONVERTS N CHRS FROM DEC AT S+SPOS TO A BINARY WORD AT D; 00523400
BEGIN 00523500
SI ~ S ; SI ~ SI + SPOS ; DI ~ D ; DS ~ N OCT ; 00523600
END DTOCT ; 00523700
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00523800
STREAM PROCEDURE MOVECHARS(SOURCE,DEST,SPOS,DPOS,NCHARS) ; 00523900
VALUE SPOS,DPOS,NCHARS ; 00524000
COMMENT MOVES NCHARS CHARACTERS FROM SOURCE+SPOS TO DEST+DPOS ; 00524100
BEGIN 00524200
LOCAL T ; 00524300
SI ~ LOC NCHARS ; SI ~ SI + 6 ; DI ~ LOC T ; DI ~ DI + 7 ;00524400
DS ~ 1 CHR ;SI ~ SOURCE ; DI ~ DEST ; DI~DI+DPOS; 00524500
SI ~ SI + SPOS ; T(DS~ 32 CHR ; DS ~ 32 CHR) ; 00524600
DS ~ NCHARS CHR ; 00524700
END MOVECHARS ; 00524800
COMMENT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; 00524900
PROCEDURE READATAPE ; FORWARD ; 00525000
PROCEDURE ASTERCONTROLS ; FORWARD ; 00525100
PROCEDURE EDIT; FORWARD; 00525200
PROCEDURE NEWDOCPAGE; FORWARD; 00525300
PROCEDURE MAKEIRFILE; FORWARD; 00525400
PROCEDURE DOCERROR(N) ; VALUE N ; INTEGER N ; FORWARD ; 00525500
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00525600
STREAM PROCEDURE MOVEWORDS(SOURCE,DEST,NWORDS) ; 00525700
VALUE NWORDS ; 00525800
COMMENT MOVES NWORDS WORDS FROM S TO D ; 00525900
BEGIN 00526000
LOCAL T ; 00526100
SI ~ LOC NWORDS ; SI ~ SI + 6 ; DI ~LOC T ; DI ~ DI + 7 ; 00526200
DS ~ 1 CHR ; SI ~ SOURCE ; DI ~ DEST ; 00526300
T ( DS ~ 32 WDS ; DS ~ 32 WDS ) ; DS ~ NWORDS WDS ; 00526400
END MOVEWORDS ; 00526500
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00526600
BOOLEAN STREAM PROCEDURE EQUAL(SOURCE,DEST,NCHRS) ; 00526700
VALUE NCHRS ; 00526800
COMMENT TRUE IF NCHARS CHRS FROM SOURCE EQUAL THOSE FROM DEST ; 00526900
BEGIN 00527000
SI ~ SOURCE ; DI ~ DEST ; 00527100
IF NCHRS SC = DC THEN TALLY ~ 1 ELSE TALLY ~ 0 ; 00527200
EQUAL ~ TALLY ; 00527300
END EQUAL ; 00527400
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00527500
BOOLEAN STREAM PROCEDURE CHAREQUAL(S,SPOS,D,DPOS,NCHARS) ; 00527600
VALUE SPOS,DPOS,NCHARS ; 00527700
COMMENT TRUE IF NCHARS CHR AT S+SPOS = THOSE AT D +DPOS ; 00527800
BEGIN 00527900
SI ~ S ; SI ~ SI+ SPOS ; DI ~ D ; DI ~ DI + DPOS ; 00528000
IF NCHARS SC = DC THEN TALLY ~1 ELSE TALLY ~ 0 ; 00528100
CHAREQUAL ~ TALLY ; 00528200
END CHAREQUAL ; 00528300
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00528400
BOOLEAN STREAM PROCEDURE CHARGREAT(S,SPOS,D,DPOS,NCHARS) ; 00528500
VALUE SPOS,DPOS,NCHARS ; 00528600
COMMENT TRUE IS NCHARS CHRS AT S+SPOS > THOSE AT D+DPOS ; 00528700
BEGIN 00528800
SI ~ S ; SI ~ SI+ SPOS ; DI ~ D ; DI ~ DI + DPOS ; 00528900
IF NCHARS SC > DC THEN TALLY ~1 ELSE TALLY ~ 0 ; 00529000
CHARGREAT ~ TALLY ; 00529100
END CHARGREAT ; 00529200
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00529300
BOOLEAN STREAM PROCEDURE WORDEQUAL(S,D,NWORDS) ; 00529400
VALUE NWORDS ; 00529500
COMMENT TRUE IF NWORDS WORDS FROM S EQUAL THOSE AT D; 00529600
BEGIN 00529700
LABEL L ; 00529800
SI ~ S ; DI ~ D ; TALLY ~ 0 ; 00529900
NWORDS ( IF 8 SC ! DC THEN JUMP OUT 1 TO L ) ; 00530000
TALLY ~ 1 ; 00530100
L: WORDEQUAL ~ TALLY ; 00530200
END WORDEQUALL ; 00530300
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00530400
BOOLEAN STREAM PROCEDURE BLANKTEST(S,NWORDS) ; 00530500
VALUE NWORDS ; 00530600
COMMENT TRUE IF SOME ONE OF THE NWORDS WORDS STARTING AT S IS NOT BLNK;00530700
BEGIN 00530800
LABEL L ; 00530900
SI ~ S ; TALLY ~ 1 ; 00531000
NWORDS(8(IF SC ! " " THEN JUMP OUT 2 TO L ; SI ~ SI + 1));00531100
TALLY ~ 0 ; 00531200
L: BLANKTEST ~ TALLY ; 00531300
END BLANKTEST ; 00531400
COMMENT DOCUMENT* 23 * * * * * * * * * * * * * * * * * * * * * * * * *; 00531500
BOOLEAN STREAM PROCEDURE CNBLANK(S,SPOS,N); 00531600
VALUE SPOS,N; 00531700
COMMENT TRUE IF ONE OF N(UP TO 63) CHARACTERS STARTING AT S+SPOS 00531800
IS NON-BLANK ; 00531900
BEGIN 00532000
LABEL L; 00532100
SI~S; SI~SI+SPOS; TALLY ~ 1; 00532200
N(IF SC! " " THEN JUMP OUT 1 TO L; SI~ SI+1;); 00532300
TALLY ~ 0; 00532400
L: CNBLANK ~ TALLY ; 00532500
END ; 00532600
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * ; 00532700
BOOLEAN STREAM PROCEDURE DEBUGREC(S,CH) ; 00532800
VALUE CH ; 00532900
COMMENT TRUE IF 2 CHRS STARTING AT S +CH ARE "%%" ; 00533000
BEGIN 00533100
LOCAL T ; 00533200
DI ~ LOC T ; DI ~ DI + 6 ; DS ~ 2 LIT "%%" ; 00533300
DI ~ DI - 2 ; TALLY ~ 0 ; 00533400
SI ~ S ; SI ~ SI + CH ; 00533500
IF 2 SC = DC THEN TALLY ~ 1 ; 00533600
DEBUGREC ~ TALLY ; 00533700
END DEBUGREC ; 00533800
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00533900
BOOLEAN STREAM PROCEDURE CHECKDOLLAR(S) ; 00534000
COMMENT TRUE IF FIRST CHR IN S IS "$" ; 00534100
BEGIN 00534200
SI ~ S ; IF SC = "$" THEN TALLY ~ 1 ELSE TALLY ~ 0 ; 00534300
CHECKDOLLAR ~ TALLY ; 00534400
END CHECKDOLLAR ; 00534500
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00534600
BOOLEAN STREAM PROCEDURE CHECKCHAR(S,SPOS,CHAR) ; 00534700
VALUE SPOS,CHAR ; 00534800
COMMENT TRUE IF CHR AT S+SPOS IS CHAR ; 00534900
BEGIN 00535000
SI ~ S ; SI ~ SI + SPOS ; DI ~ LOC CHAR ; DI ~ DI + 7 ; 00535100
IF SC = DC THEN TALLY ~ 1 ELSE TALLY ~ 0 ; 00535200
CHECKCHAR ~ TALLY ; 00535300
END CHECKCHAR ; 00535400
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00535500
BOOLEAN STREAM PROCEDURE CHECKCOMMENT(S,SPOS) ; 00535600
VALUE SPOS ; 00535700
COMMENT TRUE IF FIRST WORD STARTING AT S + SPOS IS "COMMENT" ; 00535800
BEGIN 00535900
LOCAL T ; 00536000
DI ~ LOC T ; DS ~ 8 LIT "COMMENT " ; 00536100
SI ~ S ; SI ~ SI+ SPOS ; DI ~ LOC T ; 00536200
IF 8 SC = DC THEN TALLY ~ 1 ELSE TALLY ~ 0 ; 00536300
CHECKCOMMENT ~ TALLY ; 00536400
END CHECKCOMMENT ; 00536500
COMMENT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; 00536600
COMMENT DOCUMENT* 5 * * * * * * * * * * * * * * * * * * * * * * * * * 00536700
B. SCANNER AND SPECIAL LANGUAGE EDITING PROCEDURES. 00536800
* END; 00536900
COMMENT DOCUMENT* 24 * * * * * * * * * * * * * * * * * * * * * * * * ; 00537000
STREAM PROCEDURE SCANNER(NCR,COUNTV,ACCUM,COMCOUNT,RESULT,RESULTV, 00537100
COUNT,ST2,NCRV,ST1) ; 00537200
VALUE COUNTV,COMCOUNT,RESULTV,ST2,NCRV,ST1; 00537300
COMMENT SETS ACCUM TO SOME SCANNED ENTITY AND RETURNS THE NUMBER OF 00537400
CHARS IN THE ENTITY AS COUNT AND THE TYPE OF ENTITY AS RESULT; 00537500
BEGIN 00537600
LABEL DEBLANK,NUMBERS,IDBLDR,GNC,K,EXIT,FINIS,L,ERROR, 00537700
COMMENTS,COMMANTS; 00537800
DI ~ RESULT; DI ~ DI+7; 00537900
SI ~ NCRV; 00538000
COMMENT SETUP DI FOR CHANGE IN RESULT AND SI FOR A LOOK AT BUFFER; 00538100
CI ~ CI+RESULTV; COMMENT SWITCH ON VALUE OF RESULT; 00538200
GO TO DEBLANK; COMMENT 0 IS INITIAL CODE; 00538300
GO TO IDBLDR; COMMENT 1 IS ID CODE; 00538400
GO TO FINIS; COMMENT 2 IS SPECIAL CHARACTER CODE; 00538500
GO TO NUMBERS; COMMENT 3 IS NUMBER CODE; 00538600
GO TO FINIS; COMMENT 4 IS ERROR CODE; 00538700
GO TO GNC; COMMENT 5 IS GET NEXT CHARACTOR CODE; 00538800
GO TO COMMANTS; COMMENT 6 IS COMMENT CODE; 00538900
COMMENT 7 IS DEBLANK ONLY CODE; 00539000
IF SC=" " THEN 00539100
BEGIN K: SI ~ SI+1; 00539200
IF SC =" " THEN GO TO K 00539300
END; 00539400
GO TO FINIS; 00539500
DEBLANK: IF SC = " " THEN 00539600
BEGIN L: SI ~SI+1; IF SC = " " THEN GO TO L END; 00539700
COMMENT IF WE ARRIVE HERE WE HAVE A NON-BLANK CHARACTOR; 00539800
NCRV ~ SI; 00539900
IF SC } "0" THEN GO TO NUMBERS; 00540000
IF SC = ALPHA THEN GO TO IDBLDR; 00540100
COMMENT IF WE ARRIVE HERE WE HAVE A SPECIAL CHARACTOR (OR GNC); 00540200
GNC: IF SC = """ THEN 00540300
BEGIN 00540400
DS ~ LIT "5" ; 00540500
SI ~ SI + 1 ; IF SC = """ THEN 00540600
BEGIN 00540700
TALLY ~ 2 ; 00540800
SI ~ SI + 1 ; IF SC ! """ THEN GO TO ERROR ; 00540900
TALLY ~ 3 ; SI ~ SI + 1 ; 00541000
IF SC = """ THEN SI ~ SI-2 ELSE GO TO EXIT ; 00541100
END ; 00541200
TALLY ~ 1 ; COMCOUNT(TALLY ~ TALLY + 1 ; 00541300
IF SC ! """ THEN SI ~ SI + 1 ELSE 00541400
BEGIN 00541500
SI ~ SI + 1 ; IF SC ! """ THEN 00541600
BEGIN 00541700
SI ~ SI - 1 ; JUMP OUT TO EXIT ; 00541800
END ; 00541900
TALLY ~ TALLY + 1 ; SI ~ SI + 1 ; 00542000
END ; 00542100
) ; 00542200
GO TO ERROR ; 00542300
END ELSE 00542400
BEGIN 00542500
DS ~ LIT "2" ; 00542600
TALLY ~ 1 ; SI ~ SI + 1 ; GO TO EXIT ; 00542700
END ; 00542800
COMMANTS: IF SC ! ";" THEN BEGIN 00542900
COMMENTS: SI ~ SI+1; 00543000
IF SC > "%" THEN GO TO COMMENTS; 00543100
IF SC < ";" THEN GO TO COMMENTS; 00543200
COMMENT CHARACTORS BETWEEN % AND SEMICOLON ARE HANDLED BY WORD 00543300
MODE PART OF COMMENT ROUTINE; 00543400
END; 00543500
GO TO FINIS; 00543600
IDBLDR: TALLY ~ 63; DS ~ LIT "1"; 00543700
COMCOUNT( TALLY~ TALLY+1; 00543800
IF SC = ALPHA THEN SI~SI+1 ELSE JUMP OUT TO EXIT); 00543900
TALLY ~ TALLY+1; IF SC = ALPHA THEN BEGIN 00544000
ERROR: DI~DI-1; DS ~ LIT "4" ; TALLY ~ 63 ; GO TO EXIT ; 00544100
END ELSE GO TO EXIT; 00544200
COMMENT IF WE ARRIVE AT ERROR WE HAVE MORE THAN 63 CHARACTORS 00544300
IN AN IDENTIFIER OR NUMBER; 00544400
NUMBERS: TALLY ~ 63; DS ~ LIT "3"; 00544500
COMCOUNT( TALLY ~ TALLY+1; 00544600
IF SC <"0"THEN JUMP OUT TO EXIT; SI~SI+1); 00544700
GO TO ERROR; 00544800
EXIT: ST1 ~ TALLY; COMMENT ST1 CONTAINS NUMBER OF CHAR- 00544900
ACTORS WE ARE GOING TO MOVE INTO THE 00545000
ACCUMULATOR; 00545100
TALLY ~ TALLY+COUNTV; ST2 ~ TALLY; 00545200
DI ~ COUNT; SI ~ LOC ST2; DS ~ WDS; 00545300
COMMENT THIS CODE UPDATED COUNT; 00545400
DI ~ ACCUM; SI ~ SI-3; DS ~ 3 CHR; 00545500
COMMENT THIS CODE PLACES COUNT IN ACCUM AS WELL; 00545600
DI ~ DI+COUNTV; COMMENT POSITION DI PAST CHARACTORS 00545700
ALREADY IN THE ACCUMULATOR, IF ANY; 00545800
SI ~ NCRV; DS ~ ST1 CHR; 00545900
COMMENT MOVE CHARACTORS INTO ACCUM; 00546000
FINIS: DI ~ NCR; ST1 ~ SI; SI ~ LOC ST1; DS ~ WDS; 00546100
COMMENT RESET NCR TO LOCATION OF NEXT CHARACTOR TO BE SCANNED; 00546200
END OF SCANNER ; 00546300
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00546400
PROCEDURE SCAN ; 00546500
COMMENT DRIVES SCANNER, GETTING NEW RECORD WHEN NECESSARY ; 00546600
BEGIN 00546700
LABEL L1,L2,RET ; 00546800
IF MONITOG THEN WRITE(PRINT,MONITFORM,"SCAN "," ") ;00546900
L2: 00547000
CLEAR(ACCUM,14) ; 00547100
COUNT ~ RESULT ~ 0 ; ACCUM[1] ~ " " ; 00547200
L1: 00547300
SCANNER(NCR,COUNT,ACCUM[1],63-COUNT,RESULT,RESULT, 00547400
COUNT,0,NCR,0) ; 00547500
LABELUSE ~ FALSE ; 00547600
IF RESULT = 4 OR (RESULT =5 AND COUNT { 1) THEN 00547700
BEGIN 00547800
READATAPE ; GO TO RET ; 00547900
END ; 00548000
ENDCARD ~ FALSE ; 00548100
Q ~ ACCUM[1] ; 00548200
IF DEBUG THEN EDIT ; 00548300
IF QUOTETOG THEN IF SEMICOLON THEN QUOTETOG~FALSE; 00548302
IF Q = "1& " AND BPLTOG THEN Q ~ "1% " ; 00548400
IF PERCENT THEN 00548500
IF DOLLARFLAG OR ASTERFLAG OR NOT QUOTETOG THEN 00548600
BEGIN 00548700
READATAPE ; ENDCARD ~ TRUE ; GO TO RET ; 00548800
END ELSE IF LCR.[33:15] = NCR.[33:15]THEN 00548900
BEGIN READATAPE ; GO TO L2 ; END ; 00549000
IF LCR = NCR THEN 00549100
BEGIN 00549200
READATAPE ; GO TO L1 ; 00549300
END ; 00549400
RET: END SCAN ; 00549500
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * ; 00549600
STREAM PROCEDURE BUILDBNFID(NCRV,NCR,COUNT,BNFARRAY) ; 00549700
VALUE NCRV ; 00549800
COMMENT BUILDS METALINGUISTIC ENTITIES GIVEN IN BACKUS NORMAL FORM ; 00549900
BEGIN 00550000
LOCAL S ; 00550100
LABEL L,EXIT ; 00550200
SI ~ NCRV ; SI ~ SI - 1 ; TALLY ~0 ; DI ~ BNFARRAY ; 00550300
L: IF SC = "%" THEN GO TO EXIT ; 00550400
IF SC ! ">" THEN 00550500
BEGIN 00550600
DS ~ 1 CHR ; TALLY ~ TALLY + 1 ; GO TO L ; 00550700
END ; 00550800
IF SC = ">" THEN 00550900
BEGIN 00551000
DS ~ 1 CHR ; TALLY ~ TALLY + 1 ; 00551100
END ; 00551200
EXIT: S ~ SI ; DI ~ NCR ; SI ~ LOC S ; DS ~ WDS ; 00551300
S ~ TALLY ; DI ~ COUNT ; SI ~ LOC S ; DS ~ WDS ; 00551400
END BUILDBNFID ; 00551500
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * ; 00551600
PROCEDURE COBOLEDIT(BUFF,COBOLBUFF) ; 00551700
ARRAY BUFF[*],COBOLBUFF[*] ; 00551800
COMMENT PUTS ORIG. BUFF IN COBOLBUFF AND MOVES SEQ NO. TO BUFF[9] ; 00551900
BEGIN 00552000
MOVEWORDS(BUFF,COBOLBUFF,10) ; 00552100
CLEAR(BUFF[9],0) ; 00552200
MOVECHARS(BUFF[0],BUFF[9],0,2,6) ; 00552300
CLEARCHAR(BUFF[0],0,6) ; 00552400
END COBOLEDIT ; 00552500
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * ; 00552600
BOOLEAN STREAM PROCEDURE NOTCOBIDPART (NCR) ; 00552700
VALUE NCR ; 00552800
COMMENT TRUE IF NEXT ITEM FROM NCR TERMINATES COBOL ID ; 00552900
BEGIN 00553000
LABEL L, EXIT ; 00553100
TALLY ~ 0; SI ~ NCR ; 00553200
IF SC = " " THEN GO TO L; 00553300
IF SC = ALPHA THEN GO TO EXIT ; 00553400
IF SC = "-" THEN GO TO EXIT ; 00553500
L: TALLY ~ 1; 00553600
EXIT: NOTCOBIDPART ~ TALLY ; 00553700
END ; 00553800
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * ; 00553900
PROCEDURE BUILDCOBID ; 00554000
COMMENT FORMS ONE IDENTIFIER FROM HYPHEN-SEPARATED ENTITIES ; 00554100
BEGIN 00554200
LABEL EXIT,CONT ; 00554300
COBCOUNT ~ COUNT ; 00554400
MOVEWORDS(ACCUM,COBACCUM,10) ; 00554500
CONT: IF NOTCOBIDPART (NCR) THEN 00554600
GO TO EXIT ; SCAN ; 00554700
MOVECHARS(ACCUM[1],COBACCUM[1],3,COBCOUNT+3,COUNT); 00554800
COUNT ~ COUNT + COBCOUNT ; COBCOUNT ~ COUNT ; 00554900
COBACCUM[1].[12:6] ~ COUNT.[42:6] ; 00555000
MOVEWORDS(COBACCUM,ACCUM,10) ; 00555100
Q ~ ACCUM[1] ; 00555200
IF COUNT > 62 THEN GO TO EXIT ; 00555300
GO TO CONT ; 00555400
EXIT: 00555500
END BUILDCOBID ; 00555600
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * ; 00555700
PROCEDURE ASMLEDIT(BUFF,ASMLBUFF) ; 00555800
ARRAY BUFF[*],ASMLBUFF[*] ; 00555900
COMMENT SETS UP B3500 ASSEMBLY LANGUAGE FOR XREF ; 00556000
BEGIN 00556100
ALPHA OP ; 00556200
INTEGER I ; 00556300
COMMENT DOCUMENT* 31 * * * * * * * * * * * * * * * * * * * * * * * * ; 00556400
STREAM PROCEDURE BUST(S,D,DD); 00556500
COMMENT PUTS VARIANT FIELDS IN DD, ADDRESS AND LABEL FIELDS IN D ; 00556600
BEGIN 00556700
SI ~S ; SI ~SI + 7 ; DI ~ D ; DS ~ 2 LIT"00" ;DS~ 6 CHR; 00556800
SI ~ SI + 8 ; 00556900
3(DS ~ 2 LIT "00" ; DS ~ 6 CHR ; SI ~ SI + 6 ); 00557000
SI~S; SI~SI+ 31; DI~DD; 00557100
3(DS~6 LIT "00"; DS~2 CHR; SI~SI+10); 00557200
END BUST ; 00557300
COMMENT DOCUMENT* 31 * * * * * * * * * * * * * * * * * * * * * * * * ; 00557400
STREAM PROCEDURE ASMLFIXSEQ(S,D) ; 00557500
COMMENT MOVES SEQUENCE TO BUFF[9] ; 00557600
BEGIN 00557700
DI ~ D ; DS ~8 LIT " "; SI ~ D ; DS ~ 9 WDS ; 00557800
DI ~ DI - 8 ; DS ~ 2 LIT " "; SI ~S ; SI ~ SI + 1 ; 00557900
DS ~ 6 CHR ; 00558000
END ASMLFIXSEQ ; 00558100
COMMENT DOCUMENT* 31 * * * * * * * * * * * * * * * * * * * * * * * * ; 00558200
STREAM PROCEDURE GETOP(S,D) ; 00558300
COMMENT PULLS OFF OP FIELD FOR TESTING ; 00558400
BEGIN 00558500
DI ~ D ; 00558600
SI ~ S ; SI ~ SI + 13 ; DI ~ DI + 4 ; DS ~ 4 CHR ; 00558700
END GETOP ; 00558800
IF MONITOG THEN WRITE(LINE,MONITFORM,"ASMLED","IT "); 00558900
GETOP(BUFF,OP) ; 00559000
MOVEWORDS(BUFF,ASMLBUFF,10) ; 00559100
ASMLFIXSEQ(ASMLBUFF,BUFF) ; 00559200
IF NOT TRANSTOG THEN 00559300
DOCLISTFLAG ~ TRUE ; 00559400
IF NOT TRANSTOG THEN 00559500
IF FLOWTOG OR DOCTOG THEN 00559600
BEGIN 00559700
IF OP ="DOCU" OR FLOWTABTOG THEN 00559800
MOVECHARS(ASMLBUFF[2],BUFF,1,0,63) ELSE 00559900
BEGIN 00560000
CLEAR(BUFF,8) ; 00560100
DOCLISTFLAG ~ FALSE ; 00560200
END ; 00560300
END ELSE 00560400
BEGIN 00560500
BUST(ASMLBUFF,BUFF[1],AACONT[2]); 00560600
FOR I ~ 2,3,4 DO IF AACONT[I] = "NL" OR 00560700
AACONT[I] = "AL" OR AACONT[I] = "SL" THEN 00560800
BUFF[I] ~ " " ; 00560900
IF OP = "CNST" OR OP = "RECD" OR OP = "FILE" OR 00561000
OP = "DOCU" OR OP = "SPEC" 00561100
OR OP = " " OR 00561200
OP = "REMK" OR 00561300
OP = "SPAC" OR OP = "SYNC" OR 00561400
OP = "D " OR OP ="DATA" OR OP = "LOCN" OR 00561500
OP = "IDNT" THEN LABC ~ 1 ELSE LABC ~ 4 ; 00561600
IF B35OPTOG AND LABC ! 1 THEN 00561700
BEGIN 00561800
BUFF[5] ~ OP; BUFF[5].[12:12] ~ " " ; 00561900
LABC~ LABC + 1; 00562000
END; 00562100
IF BUFF[1] ! " " THEN BUFF[1] ~ - BUFF[1]; 00562200
BUFF[6] ~LABC; 00562300
END ; 00562400
END ASMLEDIT ; 00562500
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * *; 00562600
STREAM PROCEDURE HOLCONVERT(A,B); 00562700
COMMENT CHANGES 9 WDS FROM HOLLERITH TO BCL ; 00562800
BEGIN 00562900
SI~A; DI~ B; 00563000
9(8( IF SC = "%" THEN BEGIN DS~ 1 LIT "(" ; SI~SI+1; END ELSE 00563100
IF SC = "[" THEN BEGIN DS ~ 1 LIT ")" ; SI~SI+1; END ELSE 00563200
IF SC = "#" THEN BEGIN DS ~ 1 LIT "=" ; SI ~SI+1; END ELSE 00563300
IF SC = "&" THEN BEGIN DS ~ 1 LIT "+"; SI ~SI+1; END ELSE 00563400
DS ~ CHR;)); 00563500
END HOLCONVERT; 00563600
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00563700
BOOLEAN STREAM PROCEDURE QUOTESCAN (NCR,ACCUM,NCRV) ; 00563800
VALUE NCRV ; 00563900
COMMENT TRUE IF QUOTE, SCANS SPECIALLY IF QUOTE OR PERCENT ; 00564000
BEGIN 00564100
LOCAL ST1 ; 00564200
LABEL L,NOTQUOTE,OK; 00564300
SI ~NCRV ; IF SC = " " THEN BEGIN L: SI ~SI +1; 00564400
IF SC = " " THEN GO TO L; END ; 00564500
IF SC ! """ THEN IF SC ! "%" THEN GO TO NOTQUOTE ; 00564600
IF SC = """ THEN TALLY ~ 1 ELSE TALLY ~0; 00564700
DI ~ACCUM; DS~ 3 LIT "001"; DS ~ CHR; DS ~ 4 LIT " " ; 00564800
DI ~ NCR; ST1 ~SI; SI~ LOC ST1; DS ~WDS; 00564900
GO TO OK ; 00565000
NOTQUOTE: TALLY ~ 0; 00565100
OK: QUOTESCAN ~TALLY; 00565200
END QUOTESCAN ; 00565300
COMMENT DOCUMENT* 22* * * * * * ** * * * * * * * * * * * * * * * * * ; 00565400
BOOLEAN STREAM PROCEDURE NUMCHECK(NCR); 00565500
VALUE NCR; 00565600
COMMENT TRUE IF NUMBER IS IN DECIMAL FORM ; 00565700
BEGIN 00565800
LABEL L; 00565900
TALLY ~0; SI ~NCR; IF SC ! "." THEN GO TO L; 00566000
SI ~ SI +1; IF SC= " " THEN GO TO L; 00566100
IF SC < "0" THEN GO TO L; 00566200
TALLY ~1; 00566300
L: NUMCHECK~TALLY; 00566400
END ; 00566500
COMMENT DOCUMENT* 23 * * * * * * * * * * * * * * * * * * * * * * * * * ;00566600
PROCEDURE BRACKCOMBINE(TYPE) ; 00566700
VALUE TYPE; 00566800
INTEGER TYPE; 00566900
COMMENT COMBINES SPECIAL CHARACTERS WITH WORDS AND NUMBERS ; 00567000
BEGIN 00567100
LABEL COMBINE,AGAIN ; 00567200
LABEL GOOUT ; 00567300
LABEL FINISHUP; 00567400
INTEGER SUBCOUNT,SVRESULT ; 00567500
MOVEWORDS(ACCUM[1],COBACCUM[1],10) ; 00567600
SUBCOUNT ~ COUNT +3; 00567700
AGAIN: 00567800
IF HOLDASTER THEN GO TO FINISHUP ; 00567900
IF ACCUM[1] = "1% " THEN ACCUM[1] ~0; 00568000
IF QUOTESCAN(NCR,ACCUM[1],NCR) THEN 00568100
BEGIN 00568200
COUNT ~1; 00568300
RESULT ~2; 00568400
END ELSE IF ACCUM[1] = "1% " THEN 00568500
IF LCR.[33:15] = NCR.[33:15] THEN 00568600
BEGIN 00568700
READATAPE; 00568800
IF ASTERTOG THEN GO TO GOOUT ; 00568900
IF EXAMINE(NCR) = " " THEN LASTNOSPACE ~ FALSE ; 00569000
GO TO AGAIN ; 00569100
END ELSE 00569200
BEGIN 00569300
COUNT ~ 1; 00569400
RESULT ~2; 00569500
END ELSE 00569600
BEGIN 00569700
WATCHOUT ~ TRUE ; 00569800
SCAN ; 00569900
WATCHOUT ~ FALSE ; 00570000
END ; 00570100
MOVECHARS(ACCUM[1],COBACCUM[1],3,SUBCOUNT,COUNT) ; 00570200
SUBCOUNT ~ SUBCOUNT + COUNT ; 00570300
IF TYPE = 1 THEN IF RESULT = 2 THEN 00570400
BEGIN 00570500
IF LEFTCONNECT THEN GO TO AGAIN; 00570600
END ELSE SVRESULT ~ RESULT ; 00570700
IF TYPE = 2 THEN IF EXAMINE(NCR) ! " " THEN 00570800
IF RTCONNECT THEN GO TO AGAIN ; 00570900
IF TYPE = 3 THEN 00571000
BEGIN 00571100
TYPE ~ 2 ; 00571200
GO TO AGAIN ; 00571300
END ; 00571400
FINISHUP : 00571500
RESULT ~ SVRESULT ; 00571600
MOVEWORDS(COBACCUM[1],ACCUM[1],10) ; 00571700
Q ~ ACCUM [1] ; 00571800
COUNT ~ SUBCOUNT - 3 ; 00571900
GOOUT: 00572000
END ; 00572100
COMMENT DOCUMENT* 21* * * * * * * * * * * * * * * * * * * * * * * * *; 00572200
PROCEDURE DOCSCAN; 00572300
COMMENT MODIFIES SCANNER OUTPUT FOR DOCUMENTATION PURPOSES ; 00572400
BEGIN 00572500
LABEL OK, LOOP, RT, AGAIN ; 00572600
LABEL AWAY; 00572700
IF MONITOG THEN WRITE(LINE,MONITFORM,"DOCSCA","N "); 00572800
IF HOLDASTER THEN 00572900
BEGIN 00573000
HOLDASTER ~ FALSE; 00573100
ASTERCONTROLS ; 00573200
GO TO AWAY; 00573300
END ; 00573400
AGAIN: 00573500
IF ACCUM[1] = "1% " THEN ACCUM[1] ~0; 00573600
IF QUOTESCAN (NCR,ACCUM[1],NCR) THEN 00573700
BEGIN 00573800
Q ~ ACCUM[1] ; 00573900
COUNT ~1; 00574000
RESULT ~2; 00574100
END ELSE IF ACCUM[1] = "1% " THEN 00574200
IF LCR.[33:15] = NCR.[33:15] THEN 00574300
BEGIN 00574400
READATAPE; 00574500
IF ASTERTOG THEN GO TO AWAY ; 00574600
IF EXAMINE(NCR) = " " THEN LASTNOSPACE ~ FALSE ; 00574700
GO TO AGAIN ; 00574800
END ELSE 00574900
BEGIN 00575000
COUNT ~ 1; 00575100
RESULT ~ 2; 00575200
END ELSE 00575300
BEGIN 00575400
WATCHOUT ~ TRUE; 00575500
SCAN ; 00575600
WATCHOUT ~ FALSE; 00575700
END ; 00575800
IF HOLDASTER THEN GO TO AWAY ; 00575900
IF RESULT ! 2 THEN GO TO RT; 00576000
IF LEFTCONNECT THEN BRACKCOMBINE(1); 00576100
RT: 00576200
IF EXAMINE(NCR) = " " THEN GO TO OK ; 00576300
IF COUNT ! 1 THEN IF CHECKCHAR(ACCUM[1],COUNT +2, 00576400
""") THEN GO TO AWAY ; 00576500
IF Q = "1* " THEN GO TO OK ; 00576600
IF RTCONNECT THEN BRACKCOMBINE(2) ; 00576700
OK: 00576800
IF RESULT = 3 THEN IF NUMCHECK(NCR) THEN 00576900
BRACKCOMBINE(3) ; 00577000
IF DEBUG THEN EDIT ; 00577100
AWAY: 00577200
END DOCSCAN ; 00577300
COMMENT DOCUMENT* 5 * * * * * * * * * * * * * * * * * * * * * * * * 00577400
C. PRINTING PROCEDURES. 00577500
* END; 00577600
COMMENT DOCUMENT* 23 * * * * * * * * * * * * * * * * * * * * * * * * ; 00577700
PROCEDURE ZPG(ZF) ; 00577800
VALUE ZF ; 00577900
INTEGER ZF ; 00578000
COMMENT STARTS NEW PAGE, ZF=1 ON BACKUP, ZF=0 ON PRINTER, ZF=2 ON BOTH;00578100
BEGIN 00578200
FORMAT PAGEMARKER(15("*-*-*-*-")) ; 00578300
IF MONITOG THEN 00578400
WRITE (PRINT,MONITFORM, "ZPG "," "); 00578500
IF DOCOUTPUT THEN 00578600
BEGIN 00578700
SAVEZ ~ ZPAGEN; 00578800
SAVEZZ ~ ZCONTPAGEN; 00578900
ZPAGEN ~ PAGEN; 00579000
ZCONTPAGEN ~ CONTPAGEN ; 00579100
IF ZF =1 OR ZF=2 THEN 00579200
IF UPDATETOG THEN 00579300
IF BKRCRDCOUNT ! FIRSTPAGELINE THEN 00579400
BEGIN 00579500
IF PROGID = "TEST " THEN 00579600
BKRCRDCOUNT ~ BKRCRDCOUNT +1; 00579700
IF PAGEQUAL < 2 THEN 00579800
PAGEQUAL ~ IF PATCHPAGE THEN 1 ELSE 0; 00579900
DOCPATCHED ~ DOCPATCHED OR PATCHPAGE ; 00580000
WRITE (LAR[*],*,ZLIST); 00580100
MOVECHARS (PAGENUM[7], LAR[8],10-PAGECHAR,0,16); 00580200
MOVECHARS (ACONT,LAR[10],0,0,8); 00580300
IF PROGID = "TEST " THEN 00580400
WRITE (BACKUP,15,LAR[*]); 00580500
WRITE (BACKUPDIR,15, LAR[*]); 00580600
BKDIRCOUNT~BKDIRCOUNT+1; 00580700
IF NEWVOL THEN 00580800
BEGIN 00580900
FOR I ~ 0 STEP 1 UNTIL 14 DO ZAR[I] ~ 0; 00581000
WRITE(ZAR[*],* ,5,DOCPATCHED,DOCREV); 00581100
DOCPATCHED ~ FALSE; 00581200
WRITE(BACKUPDIR,15, ZAR[*] ); 00581300
BKDIRCOUNT ~ BKDIRCOUNT + 1; 00581400
NEWVOL ~ FALSE; 00581500
END ; 00581600
IF BKDIRCOUNT >1022 THEN ERROR(10); 00581602
END ELSE 00581700
IF NEWVOL THEN 00581800
BEGIN 00581900
FOR I ~ 0 STEP 1 UNTIL 14 DO ZAR[I] ~ 0; 00582000
WRITE(ZAR[*],*,5,DOCPATCHED,DOCREV); 00582100
DOCPATCHED ~ FALSE; 00582200
WRITE(BACKUPDIR,15,ZAR[*]); 00582300
BKDIRCOUNT ~ BKDIRCOUNT +1; 00582400
NEWVOL ~ FALSE; 00582500
END ; 00582600
END; 00582700
IF ZF = 0 OR ZF = 2 THEN WRITE(LINE[PAGE]) ; 00582800
IF ZF = 1 OR ZF = 2 THEN 00582900
BEGIN 00583000
WRITE(BACKUP,MARKER) ; 00583100
BKRCRDCOUNT ~BKRCRDCOUNT+1; 00583200
FIRSTPAGELINE~BKRCRDCOUNT; 00583300
END ; 00583400
IF PAGETOG AND DOCOUTPUT THEN 00583500
PATCHPAGE ~ FALSE ; 00583600
IF NOT NOPAGETOG THEN 00583700
IF UPDATETOG AND DOCOUTPUT AND NOT PAGETOG THEN 00583800
ZCONTPAGEN~ZCONTPAGEN +1 ELSE 00583900
BEGIN 00584000
ZCONTPAGEN ~0; ZPAGEN ~ ZPAGEN+PAGEINC; 00584100
END; 00584200
IF DOCOUTPUT THEN 00584300
BEGIN 00584400
PAGEN ~ ZPAGEN; 00584500
OLDPAGE~ZPAGEN; 00584600
CONTPAGEN ~ ZCONTPAGEN; 00584700
ZPAGEN ~ SAVEZ; 00584800
ZCONTPAGEN ~ SAVEZZ; 00584900
NLINES ~ 0; 00585000
END ELSE 00585100
ZLCOUNT ~0 ; 00585200
ZPLOVER ~ FALSE ; 00585300
END ZPG ; 00585400
COMMENT DOCUMENT* 25 * * * * * * * * * * * * * * * * * * * * * * * *; 00585500
PROCEDURE ZPL(ZF,ZSP,ZAR) ; 00585600
VALUE ZF,ZSP ; 00585700
INTEGER ZF,ZSP ; 00585800
ARRAY ZAR[0] ; 00585900
COMMENT WRITES AN ARRAY ROW ON LINE OR BACKUP, CHECKING LINE COUNT. 00586000
ZF =1 MEANS BACKUP, 0 LINE, 2 BOTH. ZSP IS SNGL OR DBL SPACE; 00586100
BEGIN 00586200
IF MONITOG THEN WRITE(LINE,MONITFORM,"ZPL- "," "); 00586300
IF DOCOUTPUT THEN 00586400
BEGIN 00586500
NLINES ~ NLINES + ZSP; 00586600
IF NLINES } MAXLINES THEN 00586700
BEGIN 00586800
IF NOT ZNOSKIP THEN 00586900
BEGIN 00587000
IF PUNCHPAGES THEN 00587100
BEGIN 00587200
IF PATTOG AND NOT PAGETOG THEN 00587300
IF BBB THEN DOCERROR(34); 00587400
IF PUNCHAFTER THEN 00587500
IF NOT PAGETOG THEN 00587600
BEGIN 00587700
IF ASAVESEQ = 0 THEN DOCERROR(33); 00587800
IF INSTOG THEN 00587900
BEGIN 00588000
IF NOT INSERTROW THEN SAVEPAGEN ~ PAGEN; 00588100
TEMP~ PAGEN +INSINC; 00588200
INSERTROW~ TRUE; 00588300
OCTTODEC(TEMP,BLOCKBUFFER[3]); 00588400
PAGEINC ~INSINC; 00588500
END; 00588600
ASAVESEQ ~ ASAVESEQ +1; COMMENT 00588700
IF ASAVESEQ{ ISEQ-2 THEN ASAVESEQ~ASAVESEQ+1; 00588800
OCTTODEC(ASAVESEQ,BLOCKBUFFER[9]); 00588900
IF PUNCHTOG THEN WRITE(PUNCH,10,BLOCKBUFFER[*]) ELSE 00589000
WRITE(LINE,15,BLOCKBUFFER[*]); 00589100
END; 00589200
PUNCHAFTER ~ FALSE; 00589300
END; 00589400
ZPG(ZF); 00589500
NEWDOCPAGE; 00589600
NLINES ~ NLINES +ZSP; 00589700
IF DOCLISTOG THEN 00589800
BEGIN 00589900
DOCOUTPUT ~ FALSE; 00590000
FOR I ~ 0 STEP 1 UNTIL 15 DO SETCHAR (PAGENUM[3],I,"*"); 00590100
ZPL (0,2,PAGENUM[*]); 00590200
DOCOUTPUT ~ TRUE; 00590300
END; 00590400
END; 00590500
ZPLOVER ~ TRUE; 00590600
END ELSE 00590700
IF PUNCHPAGES THEN 00590800
BEGIN 00590900
PAGEFULL ~ LASTLINE OR (PAGEFULL AND 00591000
(NLINES = MAXLINES - 1) ) ; 00591100
LASTLINE ~ (NLINES=MAXLINES-2|ZSPERM) OR 00591200
(NLINES=MAXLINES-ZSPERM-1); 00591300
END; 00591400
END ELSE 00591500
ZLCOUNT ~ ZLCOUNT + ZSP; 00591600
PATCHPAGE ~ PATCHINBUFF OR PATCHPAGE; 00591700
PATCHINBUFF~FALSE; 00591800
IF ZF =0 OR ZF = 2 THEN 00591900
BEGIN 00592000
IF ZSP =1 THEN WRITE(LINE,15,ZAR[*]) ELSE 00592100
IF ZSP = 2 THEN 00592200
WRITE(LINE[DBL],15,ZAR[*]); 00592300
END ; 00592400
IF ZF = 1 OR ZF =2 THEN 00592500
BEGIN 00592600
IF ZSP =1 OR ZSP=2 THEN 00592700
WRITE(BACKUP,15,ZAR[*]); BACKUPUSED ~ TRUE ; 00592800
IF ZSP =2 THEN WRITE(BACKUP,15,BLANKARRAY[*]) ; 00592900
BKRCRDCOUNT ~BKRCRDCOUNT+ZSP; 00593000
END ; 00593100
END ZPL ; 00593200
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00593300
PROCEDURE PRINTBACKUP ; 00593400
COMMENT PRINTS DISK OR TAPE XREF BACKUPS ; 00593500
BEGIN 00593600
SAVE ARRAY B[0:14] ; 00593700
LABEL RD,EOF ; 00593800
FORMAT FTEST("PRINTBACKUP AUTOPRINT",10("*-*-*-*-")) ; 00593900
COMMENT DOCUMENT* 31 * * * * * * * * * * * * * * * * * * * * * * * * ; 00594000
BOOLEAN STREAM PROCEDURE TESTMARKER(S) ; 00594100
COMMENT TRUE IF END OF PAGE ON BACKUP ; 00594200
BEGIN 00594300
LOCAL T ; 00594400
DI ~ LOC T ; DS ~ 5 LIT "A-A-A" ; 00594500
SI ~ S ; DI ~ LOC T ; 00594600
IF 5 SC =DC THEN TALLY ~ 1 ELSE TALLY ~ 0 ; 00594700
TESTMARKER ~ TALLY ; 00594800
END TESTMARKER ; 00594900
IF MONITOG THEN WRITE(PRINT,MONITFORM,"PRINTB","ACKUP ") ;00595000
CLEAR(B,14) ; 00595100
REWIND(BACKUP) ; 00595200
WRITE(PRINT[PAGE],15,BLANKARRAY[*]) ; 00595300
IF PROGID = "TEST " THEN WRITE(LINE[DBL],FTEST) ; 00595400
RD: READ(BACKUP,15,B[*])[EOF] ; 00595500
IF TESTMARKER(B) AND PROGID ! "TEST " THEN 00595600
BEGIN 00595700
IF CHECKCHAR (B[0],5,"Z") THEN GO TO EOF; 00595800
WRITE(PRINT[PAGE],15,BLANKARRAY[*]) 00595900
END ELSE WRITE (PRINT,15, B[*]); 00596000
CLEAR(B,14) ; 00596100
GO TO RD ; 00596200
EOF: REWIND(BACKUP) ; 00596300
END PRINTBACKUP ; 00596400
COMMENT DOCUMENT* 5 * * * * * * * * * * * * * * * * * * * * * * * * * 00596500
D. PROCEDURES FOR DEBUGGING AND CHANGING XREF. 00596600
* END; 00596700
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00596800
STREAM PROCEDURE TABLEDIT(ADDRESS,TABLE,BUFFER,NWORDS) ; 00596900
VALUE NWORDS ; 00597000
COMMENT FORMATS AN ARRAY ROW TO BE DUMPED ; 00597100
BEGIN 00597200
SI ~ ADDRESS ; DI ~ BUFFER ; SI ~ SI + 5 ; SKIP 3 SB ; 00597300
5 ( 3 ( DS ~ 1 RESET ) ; 00597400
3 ( IF SB THEN DS ~ 1 SET ELSE DS ~ 1 00597500
RESET ; SKIP 1 SB ) ) ; SI ~ TABLE ; DS ~ 1 LIT " " ;00597600
NWORDS(DS ~1 LIT " "; 2(DS ~ 1 LIT " " ; 8(3(DS ~ 1 RESET ); 00597700
3(IF SB THEN DS ~ 1 SET ELSE DS ~ 1 RESET ; SKIP 1 SB))));00597800
END TABLEDIT ; 00597900
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00598000
STREAM PROCEDURE EDITSCAN(NCR,COUNT,ACCUM,RESULT,BUFFER,LCR) ; 00598100
COMMENT FORMATS OUTPUT OF SCANNER FOR DEBUGGING CONTROL, "DEBUG" ; 00598200
BEGIN DI ~ BUFFER ; SI ~ NCR ; 00598300
16(3(DS ~ 1 RESET ) ; 3(IF SB THEN DS ~ 1 SET ELSE DS ~ 1 RESET ; 00598400
SKIP 1 SB ) ) ; 00598500
DS ~ 3 LIT " " ; 00598600
SI ~ COUNT ; 00598700
16(3(DS ~ 1 RESET ) ; 3(IF SB THEN DS ~ 1 SET ELSE DS ~ 1 RESET ; 00598800
SKIP 1 SB ) ) ; 00598900
DS ~ 3 LIT " " ; 00599000
SI ~ ACCUM ; SI ~ SI + 2 ; 00599100
2(3(DS ~ 1 RESET ) ; 3(IF SB THEN DS ~ 1 SET ELSE DS ~ 1 RESET ; 00599200
SKIP 1 SB ) ) ; DS ~ 16 CHR ; 00599300
DS ~ 3 LIT " " ; 00599400
DS ~ 3 LIT " " ; 00599500
SI ~ RESULT ; 00599600
16(3(DS ~ 1 RESET ) ; 3(IF SB THEN DS ~ 1 SET ELSE DS ~ 1 RESET ; 00599700
SKIP 1 SB ) ) ; 00599800
DS ~ 3 LIT " " ; 00599900
SI ~ LCR ; 16(3(DS ~ 1 RESET ) ; 3(IF SB THEN DS ~ 1 SET 00600000
ELSE DS ~ 1 RESET ; SKIP 1 SB ) ) ; 00600100
END EDITSCAN ; 00600200
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00600300
PROCEDURE EDIT ; 00600400
COMMENT DRIVES EDITSCAN ; 00600500
BEGIN 00600600
IF MONITOG THEN WRITE(PRINT,MONITFORM,"EDIT "," ") ;00600700
CLEAR(BUFFER,14) ; 00600800
EDITSCAN(NCR,COUNT,ACCUM[1],RESULT,BUFFER,LCR) ; 00600900
WRITE(PRINT,15,BUFFER[*]) ; 00601000
END EDIT ; 00601100
COMMENT DOCUMENT* 27 * * * * * * * * * * * * * * * * * * * * * * * ; 00601200
PROCEDURE DUMPARRAYROW (A,LBOUND,UBOUND,ADDRESS,FILENAME,ANAME1, 00601300
ANAME2) ; 00601400
VALUE ADDRESS,LBOUND,UBOUND ; 00601500
INTEGER ADDRESS,LBOUND,UBOUND ; 00601600
ALPHA ANAME1,ANAME2 ; 00601700
FILE FILENAME ; 00601800
ARRAY A[*] ; 00601900
COMMENT DUMPS ONE ARRAY ROW TO GIVEN FILE ; 00602000
BEGIN 00602100
INTEGER ADD,I,J,NPROWS,NLASTROW ; 00602200
BOOLEAN SAMELINE ; 00602300
SAVE ARRAY BUFFER,OLDBUFFER[0:14] ; 00602400
FORMAT ASTER(X6,12(" * * * *")) ; 00602500
FORMAT NAMEFORM("ARRAY ",2A6) ; 00602600
IF MONITOG THEN WRITE(PRINT,MONITFORM,"DUMPAR","RAYROW") ;00602700
CLEAR(BUFFER,14) ; CLEAR(OLDBUFFER,14) ; 00602800
SAMELINE ~ FALSE ; 00602900
WRITE(FILENAME[DBL],15,BUFFER[*]) ; 00603000
WRITE(FILENAME[DBL],NAMEFORM,ANAME1,ANAME2 ) ; 00603100
NPROWS ~ ((UBOUND+1-LBOUND) DIV 6 - 1 ) | 6 ; 00603200
NLASTROW ~ (UBOUND + 1 - LBOUND ) MOD 6 ; 00603300
ADD ~ ADDRESS ; 00603400
FOR I ~ 0 STEP 6 UNTIL NPROWS DO 00603500
BEGIN 00603600
TABLEDIT(ADD,A[I+LBOUND],BUFFER,6) ; 00603700
ADD ~ ADD + 6 ; 00603800
IF WORDEQUAL(OLDBUFFER[1],BUFFER[1],14) THEN 00603900
BEGIN 00604000
IF NOT SAMELINE THEN WRITE(FILENAME,ASTER) ; 00604100
SAMELINE ~TRUE ; 00604200
END ELSE 00604300
BEGIN 00604400
WRITE(FILENAME,15,BUFFER[*]) ; SAMELINE ~ FALSE ; 00604500
END ; 00604600
MOVEWORDS(BUFFER,OLDBUFFER,15) ; 00604700
CLEAR(BUFFER,14) ; 00604800
END ; 00604900
IF NLASTROW !0 THEN 00605000
BEGIN 00605100
CLEAR(BUFFER,14) ; 00605200
TABLEDIT(ADD,A[(NPROWS+6) +LBOUND],BUFFER,NLASTROW) ; 00605300
WRITE(FILENAME,15,BUFFER[*]) ; 00605400
END ; 00605500
END DUMPARRAYROW ; 00605600
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00605700
PROCEDURE DUMPARRAYS ; 00605800
COMMENT DUMPS MOST OF ARRAYS IN PROGRAM ; 00605900
BEGIN 00606000
INTEGER LASTROW,II ; 00606100
ARRAY PRTARRAY[0:511] ; 00606200
IF MONITOG THEN WRITE(PRINT,MONITFORM,"DUMPAR","RATS ") ;00606300
WRITE(PRINT[PAGE],15,BLANKARRAY[*]) ; 00606400
WRITE(PRINT[DBL],15,HEADING[*]) ; 00606500
MOVEWORDS(PRT,PRTARRAY,500) ; 00606600
DUMPARRAYROW(PRTARRAY,0,500,21,PRINT,"PRTARR","AY "); 00606700
DUMPARRAYROW (PAGENUM,0,14,0,PRINT,"PAGENU","M "); 00606800
DUMPARRAYROW(WORDBUF,0,15,0,LINE,"WORDBU","F "); 00606900
DUMPARRAYROW(OLDBUF,0,15,0,LINE,"OLDBUF"," "); 00607000
DUMPARRAYROW(PAGES,0,PAGEPOINT,0,LINE,"PAGES "," "); 00607100
DUMPARRAYROW (CONTBUF,0,15,0,PRINT,"CONTBU","F "); 00607200
DUMPARRAYROW(RESERVED,0,250,0,PRINT,"RESERV","ED ") ; 00607300
DUMPARRAYROW ( RESTACK,0,63,0,PRINT, "RESTAC","K "); 00607400
DUMPARRAYROW(STACK,0,63,0,PRINT,"STACK "," ") ; 00607500
LASTROW ~ PP.[33:6]; 00607600
FOR II ~ 0 STEP 1 UNTIL LASTROW DO 00607700
DUMPARRAYROW(TABLE[II,*],0,511,II|512,PRINT, 00607800
"TABLE "," ") ; 00607900
LASTROW ~ LASTSEQLINK.[33:6] ; 00608000
FOR II ~ 0 STEP 1 UNTIL LASTROW DO 00608100
DUMPARRAYROW(SEQLINKS[II,*],0,511,II|512,PRINT, 00608200
"SEQLIN","KS ") ; 00608300
LASTROW ~ LASTCURSEQ.[33:6] ; 00608400
FOR II ~ 0 STEP 1 UNTIL LASTROW DO 00608500
DUMPARRAYROW(CURSEQ[II,*],0,511,II|512,PRINT, 00608600
"CURSEQ"," ") ; 00608700
LASTROW ~ BEGINDEX.[36:6] ; 00608800
FOR II ~ 0 STEP 1 UNTIL LASTROW DO 00608900
DUMPARRAYROW(PAIRSEQ[II,*],0,63,II|64,PRINT, 00609000
"PAIRSE","Q ") ; 00609100
DUMPARRAYROW(CASTBUFF,0,56,0,PRINT,"CASTBU","FF ") ; 00609200
FOR II ~ 0 STEP 1 UNTIL 3 DO 00609300
DUMPARRAYROW(CASTDIR[II,*],0,56,II|56,PRINT,"CASTDI", 00609400
"R ") ; 00609500
DUMPARRAYROW(CASTLINKS,0,150,0,PRINT,"CASTLI","NKS ") ; 00609600
DUMPARRAYROW(NAMEBUFF,0,15,0,PRINT,"NAMEBU","FF ") ; 00609700
DUMPARRAYROW(LASTCASTID,0,14,0,PRINT,"LASTCA","STID ") ; 00609800
DUMPARRAYROW(FIRSTCASTID,0,14,0,PRINT,"FIRSTC", 00609900
"ASTID ") ; 00610000
DUMPARRAYROW(TALLIES,0,63,0,PRINT,"TALLIE","S ") ; 00610100
DUMPARRAYROW(HEADING,0,15,0,PRINT,"HEADIN","G ") ; 00610200
DUMPARRAYROW(DOCDEFLINKS,0,100,0,PRINT,"DOCDEF","LINKS ");00610300
FOR II ~ 0 STEP 1 UNTIL NDOCDEFS DO 00610400
DUMPARRAYROW(DOCDEFINES[DOCDEFLINKS[II],*],0,10,0, 00610500
PRINT,"DOCDEF","INES ") ; 00610600
END DUMPARRAYS ; 00610700
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00610800
PROCEDURE BUILDRESERVED ; 00610900
COMMENT BUILDS A NEW RESERVED WORD ARRAY TO BE PUNCHED OUT ; 00611000
BEGIN 00611100
INTEGER SINDEX,NWORDS ; 00611200
SINDEX ~ Q.[18:6] ; 00611300
NWORDS ~ IF COUNT { 5 THEN 1 ELSE ((COUNT-6) DIV 8 + 2) ; 00611400
MOVEWORDS(ACCUM[1],RESERVED[RR+1],NWORDS) ; 00611500
RESERVED[RR].TABLINK ~ RESTACK[SINDEX] ; 00611600
RESTACK[SINDEX] ~ RR ; 00611700
RESERVED[RR].TYPLINK ~ BRESTYPE ; 00611800
RR ~ RR + NWORDS + 1 ; 00611900
END BUILDRESERVED ; 00612000
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00612100
PROCEDURE PUNCHRESERVEDFILLSTATEMENTS ; 00612200
COMMENT PUNCHES OUT NEW RESERVED TABLE FILL STATEMENT; 00612300
BEGIN 00612400
FORMAT FFILL(X14,"FILL RESERVED[*] WITH ",I4,",") ; 00612500
INTEGER NWORDS,I,STARTSEQ,TEMP ; 00612600
SAVE ARRAY FILLBUFF[0:14] ; 00612700
FORMAT FSTACK(X14,"FILL RESTACK[*] WITH " / 00612800
8(X14,8(I5,A1)/)) ; 00612900
LIST LSTACK(FOR I ~ 0 STEP 1 UNTIL 62 DO [RESTACK[I],","], 00613000
RESTACK[63],";") ; 00613100
COMMENT DOCUMENT* 31 * * * * * * * * * * * * * * * * * * * * * * * * *; 00613200
STREAM PROCEDURE OCTRAN(SOURCE,DEST) ; 00613300
COMMENT EDITS CARD INTO LEGAL ALGOL WITH COMMENT SHOWING BCD ; 00613400
BEGIN 00613500
SI ~ SOURCE ; DI ~ DEST ; 00613600
DI ~ DI - 2 ; DS ~ 3 LIT "OCT" ; 00613700
16( 3( DS ~ 1 RESET ) ; 3 ( IF SB THEN DS ~ 1 SET ELSE 00613800
DS ~ 1 RESET ; SKIP 1 SB )) ; 00613900
DS ~ 8 LIT " , % " ; 00614000
SI ~ SOURCE ; DS ~ 8 CHR ; 00614100
END OCTRAN ; 00614200
WRITE(PRINT,FFILL,RESERVED[0]) ; 00614300
IF BUILDPUNCHTOG THEN 00614400
WRITE(PUNCH,FFILL,RESERVED[0]) ; 00614500
NWORDS ~ RR - 1 ; 00614600
FOR I ~ 1 STEP 1 UNTIL NWORDS DO 00614700
BEGIN 00614800
CLEAR(FILLBUFF,14) ; 00614900
OCTRAN(RESERVED[I],FILLBUFF[2]) ; 00615000
FOR IJUNK ~ 1 STEP 1 UNTIL 8 DO 00615100
IF CHECKCHAR(FILLBUFF[5],IJUNK,12) THEN 00615200
SETCHAR(FILLBUFF[5],IJUNK," ") ; 00615300
IF I = NWORDS THEN SETCHAR(FILLBUFF[2],19,";") ; 00615400
WRITE(PRINT,15,FILLBUFF[*]) ; 00615500
IF BUILDPUNCHTOG THEN 00615600
WRITE(PUNCH,10,FILLBUFF[*]) ; 00615700
END ; 00615800
WRITE(PRINT[DBL],FSTACK,LSTACK) ; 00615900
IF BUILDPUNCHTOG THEN WRITE(PUNCH,FSTACK,LSTACK) ; 00616000
END PUNCHRESERVEDFILLSTATEMENTS ; 00616100
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00616200
PROCEDURE PUNCHRESERVEDEFINES ; 00616300
COMMENT CREATES DEFINES REFERENCING TABLE TYPE ; 00616400
BEGIN 00616500
FORMAT FDEFINE("DEFINE") ; 00616600
INTEGER NEXT,NCHAR,TYPE,STARTSEQ ; 00616700
SAVE ARRAY DEFBUFF[0:14] ; 00616800
LABEL REDO ; 00616900
INTEGER I ; 00617000
LABEL RET ; 00617100
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * *; 00617200
STREAM PROCEDURE TRANSFER(SOURCE,DEST,NCHAR,TYPE) ; 00617300
VALUE NCHAR ; 00617400
COMMENT CREATES A NAME FOR THE DEFINE ; 00617500
BEGIN 00617600
SI ~ SOURCE ; SI ~ SI + 3 ; 00617700
DI ~ DEST ; DI ~ DI - 2 ; 00617800
DS ~ NCHAR CHR ; DS ~ 4 LIT "V = " ; 00617900
SI ~ TYPE ; DS ~ 3 DEC ; DS ~ 4 LIT " # ," ; 00618000
END TRANSFER ; 00618100
WRITE(PRINT,FDEFINE) ; 00618200
IF BUILDPUNCHTOG THEN WRITE(PUNCH,FDEFINE) ; 00618300
FOR I ~ 0 STEP 1 UNTIL 63 DO 00618400
BEGIN 00618500
NEXT ~ RESTACK[I] ; 00618600
IF NEXT = 0 THEN GO TO RET ; 00618700
REDO: CLEAR(DEFBUFF,14) ; 00618800
NCHAR ~ RESERVED[NEXT+1].[12:6] ; 00618900
TYPE ~ RESERVED[NEXT].TYPLINK ; 00619000
TRANSFER(RESERVED[NEXT+1],DEFBUFF[2],NCHAR,TYPE) ; 00619100
NEXT ~ RESERVED[NEXT].TABLINK ; 00619200
WRITE(PRINT,15,DEFBUFF[*]) ; 00619300
IF BUILDPUNCHTOG THEN 00619400
WRITE(PUNCH,10,DEFBUFF[*]) ; 00619500
IF NEXT ! 0 THEN GO TO REDO ; 00619600
RET: 00619700
END ; 00619800
END PUNCHRESERVEDEFINES ; 00619900
COMMENT DOCUMENT* 5 * * * * * * * * * * * * * * * * * * * * * * * * * 00620000
E. ERROR PROCEDURES. 00620100
* END; 00620200
COMMENT DOCUMENT* 23 * * * * * * * * * * * * * * * * * * * * * * * * * ;00620300
PROCEDURE DOCERROR(N) ; 00620400
VALUE N ; 00620500
INTEGER N ; 00620600
COMMENT ERROR PROCEDURE: COUNTS ERRORS AND WRITES MESSAGES ; 00620700
BEGIN 00620800
ALPHA S1,S2 ; 00620900
COMMENT DOCUMENT* 31 * * * * * * * * * * * * * * * * * * * * * * * * ; 00621000
STREAM PROCEDURE SEQSPLIT(SEQ,S1,S2) ; 00621100
COMMENT FORMATS REFERENCE TO LAST ERROR ; 00621200
BEGIN 00621300
SI ~ SEQ ; DI ~ S1 ; DI ~ DI + 4 ; DS ~ 4 CHR ; 00621400
DI ~ S2 ; DI ~ DI + 4 ; DS ~ 4 CHR ; 00621500
END SEQSPLIT ; 00621600
FORMAT TOTALERRORS(2("****"),X2,"NUMBER OF ERRORS DETECTED=",I4, 00621700
X2,"LAST ERROR",X2,2A4,X2,2("****")) , 00621800
LASTDOCER(X80,2A4,X22,"LAST ERROR") ; 00621900
COMMENT FORMATS WITHOUT TEXT ARE FREE FOR NEW USE ; 00622000
SWITCH FORMAT DOCERR ~ (/) 00622100
,(X8 ," 1 LAST PRINT COL OUT OF RANGE SET=72 ",X40,2A4,X16,2("XXXX")) 00622200
,(X8 ," 2 MISSING DEFINE INDEX ",X40,2A4,X16,2("XXXX")) 00622300
,(X8 ," 3 DEFINE INDEX > 100 ",X40,2A4,X16,2("XXXX")) 00622400
,(X8 ," 4 THIS INDEX HAS NOT BEEN DEFINED ",X40,2A4,X16,2("XXXX")) 00622500
,(X8 ," 5 MISSING = IN DEFINE ",X40,2A4,X16,2("XXXX")) 00622600
,(X8 ," 6 TABULATE COL OUT OF RANGE ",X40,2A4,X16,2("XXXX")) 00622700
,(X8 ," 7 TAB COL { LAST TAB COL ",X40,2A4,X16,2("XXXX")) 00622800
,(X8 ," 8 INDENT VALUE TOO LARGE ",X40,2A4,X16,2("XXXX")) 00622900
,(X8 ," 9 MISSING LEFT FIELD BIT DEFINITION ",X40,2A4,X16,2("XXXX")) 00623000
,(X8 ," 10 MISSING FIELD LENGTH DEFINITION ",X40,2A4,X16,2("XXXX")) 00623100
,(X8 ," 11 MISSING , OR . AFTER # ",X40,2A4,X16,2("XXXX")) 00623200
,(X8, " 12 TOO MANY ESCAPE CHRS REQUESTED ",X40,2A4,X16,2("XXXX")) 00623300
,(X8 ," 13 MISSING COLON ",X40,2A4,X16,2("XXXX")) 00623400
,(X8 ," 14 LEFT FIELD OVERLAP ",X40,2A4,X16,2("XXXX")) 00623500
,(X8 ," 15 RIGHT FIELD OVERLAP > 48 ",X40,2A4,X16,2("XXXX")) 00623600
,(X18 " 16 INVALID TABHEAD LINE POSITION ",X40,2A4,X16,2("XXXX")) 00623700
,(X8 ," 17 LEFT FIELD OVERFLOW IN FORMAT ",X40,2A4,X16,2("XXXX")) 00623800
,(X8 ," 18 MISSING * TO CLOSE DEFINE DEFINITION",X40,2A4,X16,2("XXXX")) 00623900
,(X8 ," 19 CARD SEQUENCE ERROR ",X40,2A4,X16,2("XXXX")) 00624000
,(X8 ," 20 TAPE SEQUENCE ERROR ",X40,2A4,X16,2("XXXX")) 00624100
,(X8, " 21 RIDICULOUS LINE COUNT REQUESTED ",X40,2A4,X16,2("XXXX")) 00624200
,(X8, " 22 ",X40,2A4,X16,2("XXXX")) 00624300
,(X8, " 23 MISSING REVISION LETTER ",X40,2A4,X16,2("XXXX")) 00624400
,(X8, " 24 VOID NOT ALLOWED ON * CARD ",X40,2A4,X16,2("XXXX")) 00624500
,(X8 ," 25 SEQ NUMBER NOT ON INPUT TAPE ",X40,2A4,X16,2("XXXX")) 00624600
,(X8 ," 26 NEW SEQ { LAST SEQ OF LAST BATCH ",X40,2A4,X16,2("XXXX")) 00624700
,(X8 ," 27 THIS END HAS NO BEGIN ",X40,2A4,X16,2("XXXX")) 00624800
,(X8 ," 28 BNF IDENTIFIER GREATER THAN 62 CHAR ",X40,2A4,X16,2("XXXX")) 00624900
,(X8 ," 29 BNF IDENTIFIER RIGHT > MISSING ",X40,2A4,X16,2("XXXX")) 00625000
,(X8 ," 30 INSERTPAGE NOT ALLOWED WITH PAGE ",X40,2A4,X16,2("XXXX")) 00625100
,(X8, " 31 PRINTALL NOT ALLOWED WITH BACKUP ",X40,2A4,X16,2("XXXX")) 00625200
,( X8," 32 PAGE MUST BE AN INTEGER ",X40,2A4,X16,2("XXXX")) 00625300
,(X8," 33 PAGING OCCURS AT A BLANK SEQ NO. ",X40,2A4,X16,2("XXXX")) 00625400
,(X8, " 34 PAGING OCCURS IN MIDDLE OF PATTERN ",X40,2A4,X16,2("XXXX")) 00625500
,(X8, " 35 TAB HEAD COUNT TOO LARGE ",X40,2A4,X16,2("XXXX")) 00625600
,(X8, " 36 TOO MANY CHARS FOR TABFIELD ",X40,2A4,X16,2("XXXX")) 00625700
,(X8, " 37 INSUFFICIENT FILE INFORMATION ",X40,2A4,X16,2("XXXX")) 00625800
,(X8, " 38 MISSING <INPUT PART> ",X40,2A4,X16,2("XXXX")) 00625900
,(X8, " 39 MISSING COMMA AFTER FIRST IDENTIFIER",X40,2A4,X16,2("XXXX")) 00626000
,(X8, " 40 MULTIFILE NAMES NOT THE SAME ",X40,2A4,X16,2("XXXX")) 00626100
; 00626200
SWITCH FORMAT FERROR ~ (/) 00626300
,(X8 ," 1 NO SPACE AFTER A,B, OR C ",X40,2A4,X16,2("XXXX")) 00626400
,(X8 ," 2 NO A,B OR C ON CAST $ CARD ",X40,2A4,X16,2("XXXX")) 00626500
,(X8 ," 3 NO SUCH ENTRY IN THE CAST DIRECTORY ",X40,2A4,X16,2("XXXX")) 00626600
,(X8 ," 4 MISSING TO ON $ CARD ",X40,2A4,X16,2("XXXX")) 00626700
,(X8 ," 5 FIRST LETTER TO XREF IN ERROR ",X40,2A4,X16,2("XXXX")) 00626800
,(X8 ," 6 LAST LETTER TO XREF IN ERROR ",X40,2A4,X16,2("XXXX")) 00626900
,(X8 ," 7 MISSING $ IN COL 2 OF CONT CARD ",X40,2A4,X16,2("XXXX")) 00627000
,(X8 ," 8 RESEQUENCE NOT ALLOWED WITH CAST ALL",X40,2A4,X16,2("XXXX")) 00627100
,(X8, " 9 DOCUMENT NOT ALLOWED WITH NEW ",X40,2A4,X16,2("XXXX")) 00627200
,(X8, " 10 NUMBER OF DOCUMENT PAGES > 1022 ",X40,2A4,X16,2("XXXX")) 00627300
,(X8 ," 11 XREF AND NAMES NOT ALLOWED TOGETHER ",X40,2A4,X16,2("XXXX")) 00627400
,(X8 ," 12 PROCEDURE AND NAMES NOT ALLOWED TOG.",X40,2A4,X16,2("XXXX")) 00627500
,(X8, " 13 ",X40,2A4,X16,2("XXXX")) 00627600
,(X8," 14 MISSING *QUIT FOR DOCUMENT OR FLOW",X40,2A4,X16, 2("XXXX")) 00627700
,(X8 ," 15 MISSING SEQ NUMBER AFTER VOID ",X40,2A4,X16,2("XXXX")) 00627800
,(X8 ," 16 MISSING CARD,TAPE,CAST,BACKUP,COPY ",X40,2A4,X16,2("XXXX")) 00627900
,(X8 ," 17 MISSING START SEQ NUMBER ",X40,2A4,X16,2("XXXX")) 00628000
,(X8 ," 18 MISSING <TO END> AFTER <ALL> ",X40,2A4,X16,2("XXXX")) 00628100
,(X8 ," 19 MISSING CAST OR TAPE AFTER COPY ",X40,2A4,X16,2("XXXX")) 00628200
,(X8 ," 20 ",X40,2A4,X16,2("XXXX")) 00628300
,(X8 ," 21 SHUFFLE ALLOWED ONLY WITH $ TAPE ",X40,2A4,X16,2("XXXX")) 00628400
,(X8 ," 22 MISSING MULTIFILE IDENTIFIER ",X40,2A4,X16,2("XXXX")) 00628500
,(X8 ," 23 MULTIFILE IDENT > 7 CHARACTERS ",X40,2A4,X16,2("XXXX")) 00628600
,(X8 ," 24 ONLY NEW MULTIFILE WITH CAST ALL ",X40,2A4,X16,2("XXXX")) 00628700
,(X8 ," 25 LISTBACKUP AND FLOW NOT ALLOWED ",X40,2A4,X16,2("XXXX")) 00628800
,(X8 ," 26 LISTBACKUP AND DOCUMENT NOT ALLOWED ",X40,2A4,X16,2("XXXX")) 00628900
,(X8 ," 27 LISTBACKUP AND BLOCK NOT ALLOWED ",X40,2A4,X16,2("XXXX")) 00629000
,(X8, " 28 ",X40,2A4,X16,2("XXXX")) 00629100
,(X8, " 29 DOCUMENT REVISION LETTER TOO HIGH ",X40,2A4,X16,2("XXXX")) 00629200
,(X8, " 30 MISSING DISK OR TAPE AFTER MAKEMULTI",X40,2A4,X16,2("XXXX")) 00629300
,(X8, " 31 FILE IDENT STARTS WITH SPECIAL CHAR ",X40,2A4,X16,2("XXXX")) 00629400
,(X8, " 32 TOO MANY <SELECTIVE XREF CONTROLS> ",X40,2A4,X16,2("XXXX")) 00629500
,(X8, " 33 BLANK CARD NEEDED BEFORE $ VOID ",X40,2A4,X16,2("XXXX")) 00629600
,(X8, " 34 THIS VOID SHOULD BE ON MAIN $ CARD ",X40,2A4,X16,2("XXXX")) 00629700
,(X8, " 35 TOO MANY SEGMENTS REQUESTED ",X40,2A4,X16,2("XXXX")) 00629800
,(X8, " 36 NO SEGMENTS REQUESTED ",X40,2A4,X16,2("XXXX")) 00629900
,(X8, " 37 INVALID SEGMENT NUMBER OR SPAN ",X40,2A4,X16,2("XXXX")) 00630000
,(X8, " 38 $ PATCHTAPE TAPEPATCHES NOT ALOOWED ",X40,2A4,X16,2("XXXX")) 00630100
,(X8, " 39 MISSING * OR $ ",X40,2A4,X16,2("XXXX")) 00630200
; 00630300
SWITCH FORMAT FLOWERR ~ (/) 00630400
,(X8 ," 1 MISPLACED START ",X40,2A4,X16,2("XXXX")) 00630500
,(X8 ," 2 MISSING END ",X40,2A4,X16,2("XXXX")) 00630600
,(X8 ," 3 PREVIOUS SECTION NOT CLOSED WITH END",X40,2A4,X16,2("XXXX")) 00630700
,(X8 ," 4 THIS END HAS NO BEGIN ",X40,2A4,X16,2("XXXX")) 00630800
,(X8 ," 5 MISPLACED HEADING ",X40,2A4,X16,2("XXXX")) 00630900
,(X8 ," 6 MISPLACED TITLE ",X40,2A4,X16,2("XXXX")) 00631000
,(X8 ," 7 BOX MAY NOT START WITH YES OR TRUE ",X40,2A4,X16,2("XXXX")) 00631100
,(X8 ," 8 BOX MAY NOT START WITH NO OR FALSE ",X40,2A4,X16,2("XXXX")) 00631200
,(X8 ," 9 BOX MAY NOT START WITH TO ",X40,2A4,X16,2("XXXX")) 00631300
,(X8 ," 10 LABEL IS NOT AN IDENTIFIER IN GO TO ",X40,2A4,X16,2("XXXX")) 00631400
,(X8 ," 11 MISSING COLON AFTER LABEL ",X40,2A4,X16,2("XXXX")) 00631500
,(X8 ," 12 SOME BODY GOOFED SEE AUTHOR ",X40,2A4,X16,2("XXXX")) 00631600
,(X8 ," 13 TITLE OR HEADING TOO LONG ",X40,2A4,X16,2("XXXX")) 00631700
,(X8 ," 14 CONTENTS OF BOX TOO LONG ",X40,2A4,X16,2("XXXX")) 00631800
,(X8 ," 15 MISSING LABEL AFTER GO TO ",X40,2A4,X16,2("XXXX")) 00631900
,(X8 ," 16 MISSING GO TO OR RT PAREN IN TESTBOX",X40,2A4,X16,2("XXXX")) 00632000
,(X8, " 17 MISSING COMMA,SEMICOLON OR ASTERISK ",X40,2A4,X16,2("XXXX")) 00632100
,(X8 ," 18 MISSING PAGE # IN PAGEID BOX ",X40,2A4,X16,2("XXXX")) 00632200
,(X8 ," 19 MISSING COMMA IN PAGEID BOX ",X40,2A4,X16,2("XXXX")) 00632300
,(X8 ," 20 MISSING PAGEID STRING ",X40,2A4,X16,2("XXXX")) 00632400
,(X8 ," 21 MAXCOL OUT OF RANGE ",X40,2A4,X16,2("XXXX")) 00632500
,(X8 ," 22 MISSING START IN FLOW CHART ",X40,2A4,X16,2("XXXX")) 00632600
,(X8, " 23 MISSING GO TO IN SWITCH BOX ",X40,2A4,X16,2("XXXX")) 00632700
,(X8 ," 24 MISSING BEGIN IN FLOW CHART ",X40,2A4,X16,2("XXXX")) 00632800
,(X8, " 25 ",X40,2A4,X16,2("XXXX")) 00632900
,(X8 ," 26 ITEM GREATER THAN BOX WIDTH ",X40,2A4,X16,2("XXXX")) 00633000
,(X8, " 27 ",X40,2A4,X16,2("XXXX")) 00633100
,(X8, " 28 ",X40,2A4,X16,2("XXXX")) 00633200
,(X8 ," 29 MISSING LABEL INDEX ",X40,2A4,X16,2("XXXX")) 00633300
,(X8 ," 30 LABEL INDEX > 3 DIGITS ",X40,2A4,X16,2("XXXX")) 00633400
,(X8 ," 31 MISSING RIGHT PAREN ",X40,2A4,X16,2("XXXX")) 00633500
,(X8, " 32 EXTRA GO TO GENSYM ",X40,2A4,X16,2("XXXX")) 00633600
,(X8 ," 33 BOX MAY NOT BEGIN WITH ELSE ",X40,2A4,X16,2("XXXX")) 00633700
,(X8 ," 34 TEST BOX MISSING CONDITION (EG YES) ",X40,2A4,X16,2("XXXX")) 00633800
,(X8 ," 35 MISSING *QUIT. MAY BE EXTRA RT PAREN",X40,2A4,X16,2("XXXX")) 00633900
,(X8, " 36 PAGING OCCURS IN SWITCH ",X40,2A4,X16,2("XXXX")) 00634000
; 00634100
BOOLEAN TEMP; 00634200
TEMP ~ DOCOUTPUT; DOCOUTPUT ~ FALSE; 00634300
IF N = 0 THEN 00634400
BEGIN 00634500
SEQSPLIT(LASTERROR,S1,S2) ; 00634600
WRITE(PRINT[DBL],TOTALERRORS,DOCER,S1,S2) ; 00634700
END ELSE 00634800
BEGIN 00634900
DOCER ~ DOCER + 1 ; 00635000
SEQSPLIT(SEQ,S1,S2) ; 00635100
IF N > 200 THEN 00635200
WRITE (ZAR[*],FLOWERR[N-200],S1,S2) ELSE 00635300
IF N > 100 THEN 00635400
BEGIN 00635500
WRITE(ZAR[*],FERROR[N-100],S1,S2) ; 00635600
END ELSE 00635700
WRITE (ZAR[*],DOCERR[N],S1,S2); 00635800
IF ZLB = 0 OR ZLB = 2 THEN ZPL(ZLB,2,ZAR[*]) 00635900
ELSE WRITE (PRINT[DBL],15,ZAR[*]); 00636000
IF DOCER > 1 THEN 00636100
BEGIN 00636200
SEQSPLIT(LASTERROR,S1,S2) ; 00636300
WRITE( ZAR[*],LASTDOCER ,S1,S2); 00636400
IF ZLB = 0 OR ZLB = 2 THEN ZPL(ZLB,2,ZAR[*]) 00636500
ELSE WRITE (PRINT[DBL],15,ZAR[*]); 00636600
END ; 00636700
MOVEWORDS( SEQ,LASTERROR,1) ; 00636800
END ; 00636900
DOCOUTPUT ~ TEMP; 00637000
END DOCERROR ; 00637100
COMMENT DOCUMENT* 23 * * * * * * * * * * * * * * * * * * * * * * * * *; 00637200
PROCEDURE ERROR(N); 00637300
VALUE N ; 00637400
INTEGER N ; 00637500
COMMENT CALLS DOCERROR AND KILLS JOB ; 00637600
BEGIN 00637700
IF MONITOG THEN WRITE(PRINT,MONITFORM,"ERROR "," ") ;00637800
WRITE(PRINT[DBL],15,GLOBE[*]) ; 00637900
DOCERROR(N+100) ; 00638000
IF CARDSOPEN THEN 00638100
DO READ(CARDS)[EOPROG] UNTIL FALSE ; 00638200
GO TO EOPROG ; 00638300
END ERROR ; 00638400
COMMENT DOCUMENT* 23 * * * * * * * * * * * * * * * * * * * * * * * * ; 00638500
PROCEDURE FLOWERROR(N) ; 00638600
VALUE N ; 00638700
INTEGER N ; 00638800
COMMENT CALLS DOCERROR ; 00638900
BEGIN 00639000
IF NOT DOCLISTOG THEN 00639100
WRITE(PRINT[DBL],15,GLOBE[*]) ; 00639200
DOCERROR(N+200) ; 00639300
END FLOWERROR ; 00639400
COMMENT DOCUMENT* 5 * * * * * * * * * * * * * * * * * * * * * * * * * 00639500
F. PROCEDURES FOR PROCESSING CAST FILES. 00639600
* END; 00639700
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00639800
PROCEDURE FILLCASTLINKS ; 00639900
COMMENT FORMATS INFO FROM CAST DIRECTORY INTO THE ARRAY CASTLINKS; 00640000
BEGIN 00640100
INTEGER POS,TEMPSEQ,IDCOUNT,I,ROW,NEXTCOUNT,CHARPOS ; 00640200
INTEGER WORD,CIND ; 00640300
LABEL EXIT,NEXT ; 00640400
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * *; 00640500
STREAM PROCEDURE TRANSFER(WORD,CHAR,IDCOUNT,TSEQ,NEXTCOUNT); 00640600
VALUE CHAR,IDCOUNT ; 00640700
COMMENT PICKS OFF SEQUENCE NUMBER FOR THIS FILE ; 00640800
BEGIN 00640900
SI ~ WORD ; SI ~ SI + CHAR ; SI ~ SI + IDCOUNT ; 00641000
DI ~ TSEQ ; DI ~ DI + 5 ; DS ~ 3 CHR ; 00641100
DI ~ NEXTCOUNT ; DI ~ DI + 7 ; DS ~ CHR ; 00641200
END TRANSFER ; 00641300
IF MONITOG THEN WRITE(PRINT,MONITFORM,"FILLCA","STLINK") ;00641400
REWIND(CASTSW[CASTINDEX]) ; 00641500
ROW ~ 1 ; POS ~ 9 ; CIND ~ 0 ; 00641600
READ(CASTSW[CASTINDEX],56,CASTDIR[ROW,*]) ; 00641700
CASTAINDEX ~ CASTDIR[1,0] ; 00641800
FOR I ~ 2 STEP 1 UNTIL CASTDIR[1,0] DO 00641900
READ(CASTSW[CASTINDEX],56,CASTDIR[I,*]) ; 00642000
MOVECHARS(CASTDIR[1,1],NEXTCOUNT,0,7,1); 00642100
NEXT: IDCOUNT ~ NEXTCOUNT ; 00642200
WORD ~ POS DIV 8 ; CHARPOS ~ POS.[45:3] ; 00642300
TRANSFER(CASTDIR[ROW,WORD],CHARPOS,IDCOUNT,TEMPSEQ, 00642400
NEXTCOUNT) ; 00642500
IF TEMPSEQ ! 0 THEN 00642600
BEGIN 00642700
CIND ~ CIND + 1 ; 00642800
CASTLINKS[CIND].[ 6:6] ~ ROW ; 00642900
CASTLINKS[CIND].[12:6] ~ WORD ; 00643000
CASTLINKS[CIND].[18:6] ~ CHARPOS ; 00643100
CASTLINKS[CIND].[24:6] ~ IDCOUNT ; 00643200
CASTLINKS[CIND].[30:18] ~ TEMPSEQ ; 00643300
END ; 00643400
POS ~ POS + IDCOUNT + 4 ; 00643500
IF IDCOUNT !0 THEN GO TO NEXT ; 00643600
IF IDCOUNT = 0 AND TEMPSEQ ! 0 THEN GO TO EXIT ; 00643700
ROW ~ ROW + 1 ; 00643800
MOVECHARS(CASTDIR[ROW,0],NEXTCOUNT,0,7,1) ; 00643900
POS ~ 1 ; GO TO NEXT ; 00644000
EXIT: 00644100
CASTLINKS[0] ~ CIND ; 00644200
END FILLCASTLINKS ; 00644300
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00644400
PROCEDURE READCAST ; 00644500
COMMENT GETS 10 WORD RECORD FROM CAST FILE, CHECKING FOR EOF ; 00644600
BEGIN 00644700
IF MONITOG THEN WRITE(PRINT,MONITFORM,"READCA","ST ") ;00644800
IF NCASTRECS < 0 THEN GO TO EOF ; 00644900
NCASTRECS ~ NCASTRECS - 1 ; 00645000
MOVEWORDS(CASTBUFF[CASTPOINT],TBUFF,10) ; 00645100
CASTPOINT ~ CASTPOINT + 11 ; 00645200
IF CASTPOINT = 56 THEN 00645300
BEGIN 00645400
CASTPOINT ~ 1 ; 00645500
READ(CASTSW[CASTINDEX],56,CASTBUFF[*]) ; 00645600
END ; 00645700
END READCAST ; 00645800
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00645900
INTEGER PROCEDURE FINDCASTID(FIRSTCASTID) ; 00646000
ARRAY FIRSTCASTID[0] ; 00646100
COMMENT CHECKS IF ID IS ON CAST FILE AND WHERE ; 00646200
BEGIN 00646300
INTEGER T ; 00646400
LABEL RET ; 00646500
IF MONITOG THEN WRITE(PRINT,MONITFORM,"FINDCA","STID ") ;00646600
FOR T ~ 1 STEP 1 UNTIL CASTLINKS[0] DO 00646700
IF CHAREQUAL(FIRSTCASTID[1],0,CASTDIR[CASTLINKS[T].[6:6] ,00646800
CASTLINKS[T].[12:6]], 00646900
CASTLINKS[T].[18:6],FIRSTCASTID[0].[42:6]) AND 00647000
FIRSTCASTID[0].[42:6]= CASTLINKS[T].[24:6] THEN 00647100
GO TO RET ; 00647200
ERROR(3) ; 00647300
RET: FINDCASTID ~ T ; 00647400
END FINDCASTID ; 00647500
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00647600
PROCEDURE PRINTCASTDIRECTORY ; 00647700
COMMENT FORMATS AND PRINTS CAST DIRECTORY ; 00647800
BEGIN 00647900
INTEGER T,TEMP,IDCOUNT ; 00648000
FORMAT DIRHEAD(X8,"CAST TAPE DIRECTORY") ; 00648100
IF MONITOG THEN WRITE(PRINT,MONITFORM,"PCASTD","IRECTR") ;00648200
ZPG(ZF) ; 00648300
WRITE(ZAR[*],DIRHEAD) ; 00648400
ZPL(ZF,2,ZAR) ; 00648500
FOR T ~ 1 STEP 1 UNTIL CASTLINKS[0] DO 00648600
BEGIN 00648700
CLEAR(LISTBUFFER,14) ; 00648800
TEMP ~ CASTLINKS[T].[30:18] ; 00648900
OCTTODEC(TEMP,LISTBUFFER[1]) ; 00649000
IDCOUNT ~ CASTLINKS[T].[24:6] ; 00649100
IF IDCOUNT ! 0 THEN 00649200
MOVECHARS(CASTDIR[CASTLINKS[T].[6:6],CASTLINKS[T].[12:6]],00649300
LISTBUFFER[3],CASTLINKS[T].[18:6],0,IDCOUNT) ; 00649400
ZPL(ZF,2,LISTBUFFER); 00649500
END ; 00649600
CLEAR(LISTBUFFER,14) ; 00649700
ZPG(ZF) ; 00649800
END PRINTCASTDIRECTORY ; 00649900
COMMENT DOCUMENT* 5 * * * * * * * * * * * * * * * * * * * * * * * * * 00650000
G. MAIN CROSS-REFERENCING PROCEDURES. 00650100
* END; 00650200
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * *; 00650300
BOOLEAN PROCEDURE SORTSCRAMBLE ; 00650400
COMMENT TRUE IF THIS IDENTIFIER SHOULD BE XREF-ED. IF NOT BIGTOG, 00650500
CHECKS WHETHER ID IS ALREADY IN LIST, AND IF NOT ADDS IT ; 00650600
BEGIN 00650700
ALPHA TT; 00650800
INTEGER PRESCOUNT,PRES,NEXT,LAST,CASE,NWORDS,SCRAM,MAXCOUNT ; 00650900
LABEL LOOP,EXIT,MOVE ; 00651000
BOOLEAN BOOL ; 00651100
DEFINE PRESI = PRES.[33:6],PRES.[39:9] # , 00651200
LASTI = LAST.[33:6],LAST.[39:9] # ; 00651300
IF MONITOG THEN WRITE(PRINT,MONITFORM,"SORTSC","RAMBLE") ;00651400
SCRAM ~ Q.[18:6] ; BOOL ~ FALSE ; 00651500
TALLIES[SCRAM] ~ TALLIES[SCRAM] + 1 ; 00651600
IF NOT DOCTOG THEN 00651700
IF SCRAM < FIRSTCHAR OR SCRAM > LASTCHAR THEN GO TO EXIT ;00651800
IF NOT NAMETOG THEN 00651900
IF FINDCHAR(NCR,":") OR FINDCHAR(NCR,"~") THEN 00652000
LABELUSE ~TRUE ; 00652100
IF ASSIGNTOG AND NOT LABELUSE THEN GO TO EXIT ; 00652200
IF BNFTOG AND ASTERTOG THEN GO TO EXIT ; 00652300
TOTAL ~ TOTAL + 1 ; 00652400
PROCFLAG2 ~ PROCFLAG; 00652500
IF BIGTOG THEN IF NOT NAMETOG THEN 00652600
IF NOT PROCFLAG THEN 00652700
BEGIN 00652800
BOOL ~ TRUE; 00652900
GO TO EXIT; 00653000
END; 00653100
PRES ~ 0 ; NEXT ~ STACK[SCRAM] ; 00653200
LOOP: LAST ~ PRES ; PRES ~ NEXT ; 00653300
IF PRES = 0 THEN GO TO MOVE ; 00653400
NEXT ~ TABLE[PRESI].TABLINK ; 00653500
PRESCOUNT ~ TABLE[PRESI+1].[12:6] ; 00653600
MAXCOUNT ~ IF COUNT < PRESCOUNT THEN PRESCOUNT ELSE COUNT;00653700
MAXCOUNT ~ PRESCOUNT ; 00653800
IF CHAREQUAL(ACCUM[1],3,TABLE[PRESI+1],3,MAXCOUNT) THEN 00653900
BEGIN 00654000
IF COUNT !PRESCOUNT THEN GO TO LOOP ; 00654100
IF PROCFLAG THEN 00654200
BEGIN 00654300
IF TABLE[PRESI].PROCTAG ! 3 THEN 00654400
TABLE[PRESI].PROCTAG ~ TABLE[PRESI].PROCTAG + 1 ; 00654500
IF RESTYPE ! PROCEDUREV THEN 00654600
BEGIN 00654700
PROCFLAG ~ FALSE ; 00654800
PROCBLKFLAG ~ PROCDECFLAG ~ TRUE ; 00654900
NOPROC ~ NOPROC + 1 ; 00655000
END ; 00655100
END ; 00655200
TABINDEX ~ PRES ; BOOL ~TRUE ; GO TO EXIT ; 00655300
END ; 00655400
IF CHARGREAT(ACCUM[1],3,TABLE[PRESI+1],3,MAXCOUNT) THEN 00655500
GO TO LOOP ; 00655600
MOVE: 00655700
IF NAMETOG THEN GO TO EXIT ; 00655800
IF ( PROCTOG AND NOT PROCFLAG) OR 00655900
(BLOCKTOG AND NOT PROCFLAG) THEN GO TO EXIT ; 00656000
NWORDS ~ IF COUNT { 5 THEN 1 ELSE ((COUNT-6) DIV 8 + 2 ) ;00656100
IF PP.[39:9] + NWORDS + 1 > 511 THEN 00656200
BEGIN 00656300
PP.[33:6] ~ PP.[33:6] + 1 ; PP.[39:9] ~ 0 ; 00656400
END ELSE PP ~ PP + 1 ; 00656500
IF LAST = 0 THEN STACK[SCRAM] ~ PP 00656600
ELSE TABLE[LASTI].TABLINK ~ PP ; 00656700
TABLE[RC] ~ PRES ; 00656800
IF PROCFLAG THEN 00656900
BEGIN 00657000
IF TABLE[RC].PROCTAG ! 3 THEN 00657100
TABLE[RC].PROCTAG ~ TABLE[RC].PROCTAG + 1 ; 00657200
IF RESTYPE ! PROCEDUREV THEN 00657300
BEGIN 00657400
PROCFLAG ~ FALSE ; 00657500
PROCBLKFLAG ~ PROCDECFLAG ~ TRUE ; 00657600
NOPROC ~ NOPROC + 1 ; 00657700
END ; 00657800
END ; 00657900
TABINDEX ~ PP ; 00658000
BOOL ~ TRUE ; 00658100
MOVEWORDS(ACCUM[1],TABLE[RC+1],NWORDS) ; 00658200
CHARCOUNT ~ CHARCOUNT + COUNT; 00658300
IF BUILDEBUG THEN 00658400
BEGIN 00658500
CLEAR(BUFFER,14) ; 00658600
MOVEWORDS(ACCUM[1],BUFFER,NWORDS) ; 00658700
WRITE(PRINT[DBL],15,BUFFER[*]) ; 00658800
END ; 00658900
PP ~ PP + NWORDS ; 00659000
EXIT: SORTSCRAMBLE ~ IF COUNTOG THEN FALSE ELSE BOOL ; 00659100
PROCFLAG ~ (NOT XREFTOG) AND (RESTYPE = PROCEDUREV); 00659200
END SORTSCRAMBLE ; 00659300
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00659400
PROCEDURE PRINTNAMES ; 00659500
COMMENT PRINTS STATISTICS AND LIST OF NAMES XREF-ED ; 00659600
BEGIN 00659700
INTEGER T,STACKLIM,COUNT,CHAROUT; 00659800
FORMAT NUMFORM("NUMBER OF IDENTIFIERS = ",I5) ; 00659900
FORMAT FID("LIST OF IDENTIFIERS CROSS REFERENCED") ; 00660000
SWITCH FORMAT FTOTALS ~ 00660100
("TOTAL NUMBER OF POSSIBLE XREF ENTRIES =",I11), 00660200
("NUMBER OF WORDS REQUIRED BY SYMBOL TABLE =", I8), 00660300
("NUMBER OF XREF ENTRIES PRINTED BELOW =",I12), 00660400
("NUMBER OF CARDS CONTAINING XREFS =",I16), 00660500
("NUMBER OF CARD IMAGES SCANNED =",I19), 00660600
("NUMBER OF BLANK SEQUENCE NUMBERS =", I16), 00660700
("NUMBER OF IDENTIFIERS =",I27), 00660800
("NUMBER OF CHARACTERS IN SYMBOL TABLE =",I12) 00660900
; COMMENT FORMAT FIELD LENGTH = 50; 00661000
INTEGER K; 00661100
FORMAT 00661200
FSCAN ("ELAPSED TIME", F8.2," MIN. PROCESSOR TIME", 00661300
F8.2," SECS."); 00661400
SWITCH FORMAT FTALLIES ~ 00661500
("NUMBER OF XREFS PER FIRST LETTER"), 00661600
(4(X2,"LETTER COUNT")), 00661700
(4(X5,A1,I6,X2)); 00661800
ARRAY LTOTALS[0:10]; 00661900
LIST LTALLIES(FOR K ~I STEP 1 UNTIL I+3 DO [K,TALLIES[K]]); 00662000
LABEL REDO,TERM,RET ; 00662100
IF TOTAL = 0 THEN GO TO RET ; 00662200
IF MONITOG THEN WRITE(PRINT,MONITFORM,"PRINTN","AMES ") ;00662300
IF BIGTOG THEN GO TO TERM; 00662400
CLEAR(LISTBUFFER,14) ; 00662500
ZPG(ZF) ; 00662600
ZPL (ZF,2,HEADING); 00662700
WRITE(ZAR[*],FID) ; 00662800
ZPL(ZF,2,ZAR); 00662900
STACKLIM ~ IF ALPHATOG THEN 63 ELSE 125 ; NONAMES ~ 0 ; 00663000
FOR T ~ 0 STEP 1 UNTIL STACKLIM DO 00663100
BEGIN 00663200
PP ~ STACK[T]; 00663300
IF PP = 0 THEN GO TO TERM ; 00663400
CLEAR(NAMEBUFF,14) ; CHAROUT ~ 0 ; 00663500
REDO: COUNT ~ TABLE[RC+1].[12:6] ; 00663600
IF CHAROUT + COUNT > 72 THEN 00663700
BEGIN 00663800
IF DOUBLEONLY THEN ZPL(ZF,2,NAMEBUFF) ELSE 00663900
ZPL(ZF,1,NAMEBUFF); 00664000
CLEAR(NAMEBUFF,14) ; CHAROUT ~ 0 ; 00664100
END ; 00664200
MOVECHARS(TABLE[RC+1],NAMEBUFF[CHAROUT.[41:4]],3, 00664300
CHAROUT.[45:3],COUNT) ; 00664400
CHAROUT ~ CHAROUT + COUNT + 1 ; NONAMES ~ NONAMES + 1 ; 00664500
IF GLYNTOG THEN CHAROUT ~72 ; 00664600
PP ~ TABLE[RC].TABLINK ; 00664700
IF PP !0 THEN GO TO REDO ; 00664800
IF DOUBLEONLY THEN ZPL(ZF,2,NAMEBUFF) ELSE 00664900
ZPL(ZF,1,NAMEBUFF); 00665000
TERM: END; 00665100
ZPG(ZF); 00665200
ZPL(ZF,1,BLANKARRAY); 00665300
ZPL(ZF,2,HEADING); 00665400
LTOTALS [0]~ TOTAL; LTOTALS[1]~ PR; 00665500
LTOTALS[2] ~ LASTSEQLINK; LTOTALS[3] ~LASTCURSEQ; 00665600
LTOTALS[4] ~CARDTALLY; LTOTALS[6] ~ NONAMES; 00665700
LTOTALS[5] ~(XREFSEQ - 99000000) DIV 1000; 00665800
LTOTALS[7]~ CHARCOUNT; 00665900
IF BIGTOG THEN FOR I ~ 0,4,5,6 DO 00666000
BEGIN 00666100
WRITE(ZAR[*],FTOTALS[I],LTOTALS[I]); 00666200
ZPL(ZF,ZSP,ZAR); 00666300
END ELSE 00666400
FOR I ~ 0 STEP 1 UNTIL 7 DO 00666500
BEGIN 00666600
WRITE(ZAR[*],FTOTALS[I],LTOTALS[I]); 00666700
ZPL(ZF,ZSP,ZAR); 00666800
END; 00666900
ZPL(ZF,1,BLANKARRAY); 00667000
IF NOT REMOTETOG THEN 00667100
BEGIN 00667200
WRITE(ZAR[*],FTALLIES[0]); 00667300
ZPL(ZF,ZSP,ZAR); 00667400
WRITE(ZAR[*],FTALLIES[1]); 00667500
ZPL(ZF,ZSP,ZAR); 00667600
FOR I ~ 0 STEP 4 UNTIL 60 DO 00667700
BEGIN 00667800
WRITE (ZAR[*],FTALLIES[2],LTALLIES); 00667900
ZPL(ZF,ZSP,ZAR); 00668000
END; 00668100
WRITE(ZAR[*],FSCAN, (TIME(1)-STARTIME)/3600.0, 00668200
(TIME(2)-PROCTIME)/60.0); 00668300
ZPL(ZF,2,ZAR); 00668400
END; 00668500
RET: 00668600
END PRINTNAMES ; 00668700
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00668800
PROCEDURE BEGINCOUNT ; 00668900
COMMENT COUNTS BEGINS AND SAVES SEQ NO. TO PRINT WITH MATCHING END ; 00669000
BEGIN 00669100
IF MONITOG THEN WRITE(PRINT,MONITFORM,"BEGINC","OUNT ") ;00669200
BEGINDEX ~ BEGINDEX + 1 ; 00669300
MOVEWORDS(SEQ,PAIRSEQ[BEGIND],1) ; 00669400
END BEGINCOUNT ; 00669500
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00669600
PROCEDURE PRINTPROCEDUREIDS ; 00669700
COMMENT PRINTS LIST OF PROCEDURES ; 00669800
BEGIN 00669900
INTEGER T,TT,T1,T2,SAVEPP,CLASS ; 00670000
LABEL TERM,MORE ; 00670100
FORMAT HEAD(X24,"LISTING OF PROCEDURE IDENTIFIERS") ; 00670200
IF MONITOG THEN WRITE(PRINT,MONITFORM,"PPROCE","DURIDS") ;00670300
ZPG(ZF) ; 00670400
ZPL(ZF,2,HEADING); 00670500
WRITE(ZAR[*],HEAD); 00670600
ZPL(ZF,2,ZAR); 00670700
SAVEPP ~ PP ; 00670800
FOR T ~ 0 STEP 1 UNTIL 63 DO 00670900
BEGIN 00671000
PP ~ STACK[T] ; 00671100
IF PP = 0 THEN GO TO TERM ; 00671200
MORE: CLEAR(LISTBUFFER,14) ; 00671300
CLASS ~ TABLE[RC].PROCTAG ; 00671400
IF CLASS ! 0 THEN 00671500
BEGIN 00671600
MOVECHARS(TABLE[RC+1],LISTBUFFER[5],3,0, 00671700
TABLE[RC+1].[12:6] ) ; 00671800
TT ~ TABLE[RC].PROCTAG ; 00671900
MOVECHARS(TT,LISTBUFFER[4],7,4,1) ; 00672000
T1 ~ TABLE[RC].[3:15] ; 00672100
T2 ~ SEQLINKS[T1.[33:6],T1.[39:9]].[33:15] ; 00672200
MOVECHARS(CURSEQ[T2.[33:6],T2.[39:9]],LISTBUFFER[3], 00672300
0,0,8); 00672400
ZPL(ZF,1,LISTBUFFER); 00672500
END ; 00672600
PP ~ TABLE[RC].TABLINK ; 00672700
IF PP ! 0 THEN GO TO MORE ; 00672800
TERM: END ; 00672900
PP ~ SAVEPP ; 00673000
END PRINTPROCEDUREIDS ; 00673100
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00673200
PROCEDURE ENDCOUNT ; 00673300
COMMENT COUNTS DOWN BEGINS AND WRITES SEQ OF BEGIN FOR THIS END ; 00673400
BEGIN 00673500
INTEGER TEMP ; 00673600
LABEL RET ; 00673700
IF MONITOG THEN WRITE(PRINT,MONITFORM,"ENDCOU","NT ") ;00673800
IF BEGINDEX = 0 THEN 00673900
BEGIN 00674000
IF LISTOG THEN 00674100
DOCERROR(27) ; GO TO RET ; 00674200
END; 00674300
IF LISTOG AND NOT BLANKNEWSEQ THEN 00674400
BEGIN 00674500
CLEAR(LISTBUFFER,14) ; 00674600
IF REMOTETOG THEN 00674700
MOVEWORDS(PAIRSEQ[BEGIND],LISTBUFFER[8],1) ELSE 00674800
MOVEWORDS(PAIRSEQ[BEGIND],LISTBUFFER[10],1) ; 00674900
ZPL(ZF,2,LISTBUFFER); 00675000
END ; 00675100
BEGINDEX ~ BEGINDEX - 1 ; 00675200
IF STREAMBODY AND STREAMBEGCOUNT = BEGINDEX THEN 00675300
STREAMBODY ~ FALSE ; 00675400
RET: 00675500
END ENDCOUNT ; 00675600
COMMENT DOCUMENT* 23 * * * * * * * * * * * * * * * * * * * * * * * ; 00675700
PROCEDURE BUILDXREF ; 00675800
COMMENT ADDS CURRENT SEQUENCE NUMBER TO LINKED LIST OF XREF ENTRIES 00675900
FOR THIS IDENTIFIER, OR (IF BIGTOG) WRITES A RECORD OF THE 00676000
IDENTIFIER PLUS THE SEQ NO. ON A DISK FILE TO BE LATER SORTED; 00676100
BEGIN 00676200
BOOLEAN SEQADDFLAG ; 00676300
LABEL RETURN ; 00676400
IF MONITOG THEN WRITE(PRINT,MONITFORM,"BUILDX","REF ") ;00676500
IF FLOWTOG OR DOCINDEXTOG THEN 00676600
BEGIN 00676700
MOVEWORDS(SEQ,FLOWSEQ,1) ; 00676800
CLEAR(SEQ,0); 00676900
IF LEFTPAGE THEN 00677000
BEGIN 00677100
MOVECHARS (PAGENUM[7], SEQ, 10-PAGECHAR,0,6); 00677200
MOVECHARS (PAGENUM[7],SEQ,16-PAGECHAR, 8-PAGECHAR, 00677300
PAGECHAR); 00677400
END ELSE 00677500
BEGIN 00677600
MOVECHARS (PAGENUM[7], SEQ, 10, 0,6); 00677700
MOVECHARS (PAGENUM[7], SEQ, 10-PAGECHAR,0,PAGECHAR); 00677800
END ; 00677900
END ; 00678000
IF BIGTOG THEN 00678100
BEGIN 00678200
CLEAR(XREFBUFF,9) ; 00678300
IF COUNT > MAXCOUNTER THEN MAXCOUNTER ~ COUNT ; 00678400
MOVECHARS(ACCUM[1],XREFBUFF,3,0,COUNT) ; 00678500
MOVEWORDS(SEQ,XREFBUFF[9],1) ; 00678600
XREFBUFF[8] ~ IF PROCDECFLAG OR LABELUSE THEN 00678700
-COUNT ELSE COUNT ; 00678800
WRITE(XREFILE,10,XREFBUFF[*]) ; 00678900
IF NOT PROCFLAG2 THEN 00679000
GO TO RETURN ; 00679100
END ; 00679200
IF SEQCOMP(SEQ,CURSEQ[LASTCURIND]) ! 2 THEN 00679300
BEGIN 00679400
LASTCURSEQ ~ LASTCURSEQ + 1 ; 00679500
MOVEWORDS(SEQ,CURSEQ[LASTCURIND],1) ; 00679600
IF NAMEPUNCH AND NOT PUNCHTOG THEN 00679700
BEGIN 00679800
IF BLANKNAMEPUNCH THEN CLEAR(JUNKARRAY,8) ELSE 00679900
MOVEWORDS(GLOBE,JUNKARRAY,9) ; 00680000
MOVEWORDS(SEQ,JUNKARRAY[9],1) ; 00680100
WRITE(PNCH,10,JUNKARRAY[*]) ; 00680200
END ; 00680300
END ; 00680400
SEQADDFLAG ~ TRUE ; 00680500
LASTSEQLINK ~ LASTSEQLINK + 1 ; 00680600
IF LASTSEQLINK > 32000 THEN 00680700
BEGIN 00680800
FORMAT TOOMANY("TOO MANY XREF ENTRIES > 32000") ; 00680900
WRITE(PRINT[DBL],TOOMANY) ; 00681000
GO TO EOFCARD ; 00681100
END ; 00681200
IF LISTHEAD =0 THEN 00681300
BEGIN 00681400
LISTHEAD ~ LASTSEQLINK ; 00681500
LISTTAIL ~ LASTSEQLINK ; 00681600
TEMPIND ~ LISTHEAD ; 00681700
LOADCOUNT ~ 1 ; 00681800
END ELSE 00681900
BEGIN 00682000
TEMPIND ~ LISTTAIL ; 00682100
SEQADDFLAG ~ SEQCOMP(CURSEQ[(SEQPOINTER).[33:6], 00682200
(SEQPOINTER).[39:9]],SEQ) ! 2;00682300
NEXTSEQLINK ~ LASTSEQLINK ; 00682400
LISTTAIL ~ LASTSEQLINK ; 00682500
TEMPIND ~ LISTHEAD ; 00682600
IF (NOT LOGICTOG) OR (LOGICTOG AND SEQADDFLAG) THEN 00682700
LOADCOUNT ~ LOADCOUNT + 1 ; 00682800
END ; 00682900
IF BSTICKFLAG THEN LOADCOUNT ~ LOADCOUNT + 1 ; 00683000
TEMPIND ~ LASTSEQLINK ; 00683100
NEXTSEQLINK ~ 0 ; 00683200
SEQPOINTER ~ LASTCURSEQ ; 00683300
SEQPROCPOINT ~ IF PROCDECFLAG OR LABELUSE THEN 1 ELSE 0 ; 00683400
RETURN: 00683500
PROCDECFLAG ~ FALSE ; 00683600
IF FLOWTOG OR DOCINDEXTOG THEN MOVEWORDS(FLOWSEQ,SEQ,1); 00683700
END BUILDXREF ; 00683800
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * ; 00683900
PROCEDURE SORTITONDISK(FI,FO) ; 00684000
FILE FI,FO ; 00684100
COMMENT USED TO SORT ON DISK WHEN "LARGE" IS USED (BIGTOG=TRUE) ; 00684200
BEGIN 00684300
INTEGER STREAM PROCEDURE E(A,B,N) ; 00684400
VALUE N ; 00684500
BEGIN 00684600
SI ~ A ; DI ~ B ; IF N SC = DC THEN TALLY ~ 2 ELSE 00684700
BEGIN 00684800
SI ~ A ; DI ~ B ; IF N SC < DC THEN TALLY ~ 1 00684900
END ; 00685000
E ~ TALLY ; 00685100
END E ; 00685200
BOOLEAN PROCEDURE CMP(A,B) ; 00685300
ARRAY A,B[0] ; 00685400
CMP ~ IF IJUNK ~ E(A,B,MAXCOUNTER) ! 2 THEN 00685500
BOOLEAN(IJUNK) ELSE E(A[9],B[9],8) ! 0 ; 00685600
PROCEDURE HV(A) ; 00685700
ARRAY A[0] ; 00685800
BEGIN 00685900
STREAM PROCEDURE P(A,B) ; 00686000
VALUE B ; 00686100
BEGIN 00686200
DI ~ A ; SI ~ LOC B ; SI ~ SI + 7 ; 00686300
8(DS ~ CHR ; SI ~ SI - 1 ) ; 00686400
SI ~ A ; DS ~ 9 WDS ; 00686500
END P ; 00686600
P(A,12) ; 00686700
END HV ; 00686800
SORT(FO,FI,0,HV,CMP,10,CORESIZE) ; 00686900
END SORTITONDISK ; 00687000
COMMENT DOCUMENT* 22 * * * * * * * * * * *** * * * * * * * * * * * * ; 00687100
PROCEDURE PRINTXREF ; 00687200
COMMENT FORMATS AND PRINTS XREF ENTRIES FROM LINKED LIST OR (IF BIGTOG)00687300
FROM SORTED DISK FILE XREFSORT ; 00687400
BEGIN 00687500
INTEGER T,STACKLIM,COUNT,CHAROUT ; 00687600
INTEGER SCHAR ; 00687700
LABEL REDO,MORE,TERM,RET ; 00687800
FORMAT XREFHEAD("IDENTIFIER CROSS REFERENCE LIST") , 00687900
FXREFHEAD("FLOW CHART LABEL IDENTIFIERS CROSS", 00688000
" REFERENCE LIST") , 00688100
DXREFHEAD("DOCUMENT CONTROLS AND DEFINES CROSS REFERENCE",00688200
" LIST") ; 00688300
IF TOTAL = 0 THEN GO TO RET ; 00688400
IF MONITOG THEN WRITE(PRINT,MONITFORM,"PRINTX","REF ") ;00688500
PR ~ PP; 00688600
IF FLOWTOG THEN 00688700
BEGIN 00688800
SAVEREMOTETOG ~ REMOTETOG ; REMOTETOG ~TRUE ; 00688900
HOLDFLOW ~ TRUE; FLOWTOG ~ FALSE; 00689000
END ; 00689100
IF MAKEIRTOG THEN 00689200
BEGIN 00689300
MAKEIRFILE ; GO TO RET ; 00689400
END ; 00689500
MAXCOLS ~ IF REMOTETOG THEN 68 ELSE 118 ; 00689600
CLEAR(LISTBUFFER,14) ; 00689700
ZPG(ZF); IF NOT HOLDFLOW THEN ZPL(ZF,2,HEADING) ELSE 00689800
NEWDOCPAGE; 00689900
IF NOT HOLDFLOW THEN 00690000
PAGEQUAL ~ 3; 00690100
IF DOCINDEXTOG THEN WRITE(ZAR[*],XREFHEAD) ELSE 00690110
IF DOCTOG THEN WRITE(ZAR[*],DXREFHEAD) ELSE 00690200
IF HOLDFLOW THEN WRITE (ZAR[*],FXREFHEAD) ELSE 00690300
WRITE(ZAR[*],XREFHEAD) ; 00690400
ZPL(ZF,2,ZAR); 00690500
STACKLIM ~ IF ALPHATOG THEN 63 ELSE 125 ; 00690600
IF BIGTOG THEN 00690700
BEGIN 00690800
LABEL REDO,EOF,MORE ; 00690900
ARRAY LASTREC[0:15] ; 00691000
REWIND(XREFSORT) ; 00691100
READ(XREFSORT,10,XREFBUFF[*])[EOF] ; 00691200
NONAMES ~ 0; 00691300
REDO: CLEAR(NAMEBUFF,14) ; 00691400
NONAMES ~ NONAMES +1; 00691500
COUNT ~ ABS(XREFBUFF[8]) ; 00691600
MOVECHARS(XREFBUFF[0],NAMEBUFF,0,0,COUNT); 00691700
ZPL(ZF,2,BLANKARRAY); 00691800
CHAROUT ~ COUNT + 2 ; 00691900
SCHAR~ CHAROUT ~(((COUNT+10) DIV 10)+1)|10 ; 00692000
MORE: 00692100
MOVECHARS(XREFBUFF[9] ,NAMEBUFF[CHAROUT.[41:4]],0, 00692200
CHAROUT.[45:3],8) ; 00692300
IF XREFBUFF[8] < 0 THEN 00692400
BEGIN 00692500
SETCHAR(NAMEBUFF[(CHAROUT-1).[41:4]],(CHAROUT-1).[45:3], 00692600
"*") ; 00692700
SETCHAR(NAMEBUFF[(CHAROUT+8).[41:4]],(CHAROUT+8).[45:3], 00692800
"*") ; 00692900
END ; 00693000
CHAROUT ~ CHAROUT + 10 ; 00693100
IF CHAROUT > MAXCOLS THEN 00693200
BEGIN 00693300
ZPL(ZF,1,NAMEBUFF); 00693400
CLEAR(NAMEBUFF,14) ; CHAROUT ~ SCHAR ; 00693500
END ; 00693600
MOVEWORDS(XREFBUFF,LASTREC,10) ; 00693700
READ(XREFSORT,10,XREFBUFF[*])[EOF] ; 00693800
IF NOT EQUAL(XREFBUFF,LASTREC,MAXCOUNTER) THEN 00693900
BEGIN 00694000
IF CHAROUT ! SCHAR THEN 00694100
ZPL(ZF,1,NAMEBUFF); 00694200
GO TO REDO ; 00694300
END ; 00694400
GO TO MORE ; 00694500
EOF: 00694600
IF CHAROUT ! SCHAR THEN 00694700
ZPL(ZF,1,NAMEBUFF); 00694800
BEGIN 00694900
FILE XREFILE DISK SERIAL (2,10,30,SAVE 10) ; 00695000
REWIND(XREFSORT) ; REWIND(XREFILE) ; 00695100
READ(XREFSORT,10,XREFBUFF[*]) ; CLOSE(XREFSORT,PURGE) ; 00695200
READ(XREFILE ,10,XREFBUFF[*]) ; CLOSE(XREFILE ,PURGE) ; 00695300
END ; 00695400
END ELSE 00695500
FOR T ~0 STEP 1 UNTIL STACKLIM DO 00695600
BEGIN 00695700
ISEQ ~ T; 00695800
TABINDEX ~ PP ~ STACK[T] ; 00695900
IF PP = 0 THEN GO TO TERM ; 00696000
REDO: CLEAR(NAMEBUFF,14) ; 00696100
COUNT ~ TABLE[RC+1].[12:6] ; 00696200
MOVECHARS(TABLE[RC+1],NAMEBUFF,3,0,COUNT); 00696300
ZPL(ZF,2,BLANKARRAY); 00696400
TEMPIND ~ LISTHEAD ; 00696500
CHAROUT ~ COUNT + 2 ; 00696600
SETCHAR(NAMEBUFF[CHAROUT DIV 8],CHAROUT.[45:3],"(") ; 00696700
IJUNK ~ SEQLINKS[SEQIND].[3:15] ; 00696800
OCTTODEC(IJUNK,JUNK) ; 00696900
CHAROUT ~CHAROUT + 1 ; 00697000
MOVECHARS(JUNK,NAMEBUFF[CHAROUT DIV 8],2,CHAROUT.[45:3],6);00697100
CHAROUT ~ CHAROUT + 6 ; 00697200
SETCHAR(NAMEBUFF[CHAROUT DIV 8],CHAROUT.[45:3],")") ; 00697300
SCHAR~ CHAROUT ~(((COUNT+10) DIV 10)+1)|10 ; 00697400
MORE: TAMPIND ~ SEQLINKS[SEQIND].[33:15] ; 00697500
MOVECHARS(CURSEQ[CURSEQIND],NAMEBUFF[CHAROUT.[41:4]],0, 00697600
CHAROUT.[45:3],8) ; 00697700
IF SEQPROCPOINT = 1 THEN 00697800
BEGIN 00697900
SETCHAR(NAMEBUFF[(CHAROUT-1).[41:4]],(CHAROUT-1).[45:3], 00698000
"*") ; 00698100
SETCHAR(NAMEBUFF[(CHAROUT+8).[41:4]],(CHAROUT+8).[45:3], 00698200
"*") ; 00698300
END ; 00698400
CHAROUT ~ CHAROUT + 10 ; 00698500
IF CHAROUT > MAXCOLS THEN 00698600
BEGIN 00698700
ZPL(ZF,1,NAMEBUFF); 00698800
CLEAR(NAMEBUFF,14) ; CHAROUT ~ SCHAR ; 00698900
END ; 00699000
TEMPIND ~ NEXTSEQLINK ; 00699100
IF TEMPIND = 0 THEN 00699200
BEGIN 00699300
IF CHAROUT ! SCHAR THEN 00699400
ZPL(ZF,1,NAMEBUFF); 00699500
TABINDEX ~ PP ~ TABLE[RC].TABLINK ; 00699600
IF PP ! 0 THEN GO TO REDO ELSE GO TO TERM ; 00699700
END ; 00699800
GO TO MORE ; 00699900
TERM: END ; 00700000
RET: 00700100
FLOWTOG ~ HOLDFLOW; 00700200
HOLDFLOW ~ FALSE ; 00700300
IF FLOWTOG THEN REMOTETOG ~ SAVEREMOTETOG ; 00700400
END PRINTXREF ; 00700500
COMMENT DOCUMENT* 22 * * * * * * * * * * * * ** * * * * * * * * * * ; 00700600
BOOLEAN PROCEDURE SEARCHRESERVED ; 00700700
COMMENT TRUE IF Q SHOULD NOT BE XREF-ED BECAUSE IT IS A RESERVED WORD. 00700800
ALSO SETS RESTYPE TO SHOW WHAT CLASS THAT WORD IS ; 00700900
BEGIN 00701000
INTEGER NEXT ; 00701100
LABEL LOOP,EXIT,CONT,BUILD,FOUND ; 00701200
LABEL MORE ; 00701300
RESTYPE ~ 0; IF RESERVEDTOG THEN 00701400
IF NOT FORTRTOG THEN 00701500
IF NOT ( Q = "7COMME" OR Q = "9PROCE" OR Q = "6STREA" 00701600
OR Q = "4WITH ") THEN 00701700
BEGIN 00701800
SEARCHRESERVED ~ FALSE; 00701900
GO TO EXIT; 00702000
END; 00702100
NEXT ~ RESTACK[Q.[18:6]] ; 00702200
IF ASMLTOG AND NOT (FLOWTOG OR DOCTOG)THEN 00702300
BEGIN 00702400
SEARCHRESERVED ~ FALSE ; GO TO EXIT ; 00702500
END ; 00702600
GO TO MORE ; 00702700
LOOP: NEXT ~ RESERVED[NEXT].TABLINK ; 00702800
MORE: 00702900
IF NEXT = 0 THEN 00703000
BEGIN 00703100
BUILD: SEARCHRESERVED ~FALSE ; GO TO EXIT ; 00703200
END ; 00703300
CONT: IF RESERVED[NEXT+1] ! Q THEN GO TO LOOP ; 00703400
IF COUNT { 5 THEN GO TO FOUND ; 00703500
IF NOT EQUAL(RESERVED[NEXT+2],ACCUM[2],COUNT-5) THEN 00703600
GO TO LOOP ; 00703700
FOUND: SEARCHRESERVED ~TRUE ; 00703800
RESTYPE ~ RESERVED[NEXT].TYPLINK ; 00703900
EXIT: 00704000
END SEARCHRESERVED ; 00704100
COMMENT DOCUMENT* 5 * * * * * * * * * * * * * * * * * * * * * * * * * 00704200
H. PROCEDURES TO MAKE AN IR FILE FROM XREF FACTS. 00704300
* END; 00704400
COMMENT DOCUMENT* 23 * * * * * * * * * * * * * * * * * * * * * * * * *; 00704500
PROCEDURE ARRAYTOIRFILE(A,UB) ; 00704600
VALUE UB ; INTEGER UB ; 00704700
ARRAY A[0] ; 00704800
COMMENT SPLITS ARRAY A INTO 10 WORD RECORDS, WRITES THEM ON IRFILE; 00704900
BEGIN 00705000
ARRAY TEMP[0:15] ; 00705100
INTEGER I,J,K,N ; 00705200
J ~ (UB+1) DIV 10 ; 00705300
K ~ (UB+1) MOD 10 ; 00705400
N ~ (J|10) - 10 ; 00705500
FOR I ~ 0 STEP 10 UNTIL N DO 00705600
BEGIN 00705700
MOVEWORDS(A[I],TEMP[0] , 10) ; 00705800
WRITE(IRFILE,10,TEMP[*]) ; 00705900
END ; 00706000
IF K !0 THEN 00706100
BEGIN 00706200
CLEAR(TEMP,9) ; 00706300
MOVEWORDS(A[I],TEMP,K) ; 00706400
WRITE(IRFILE,10,TEMP[*]) ; 00706500
END ; 00706600
END ARRAYTOIRFILE ; 00706700
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * ; 00706800
PROCEDURE MAKEIRFILE ; 00706900
COMMENT MAKES IR FILE FROM XREF-CREATED TABLES OF NAMES AND ENTRIES; 00707000
BEGIN 00707100
LABEL REDO,MORE,TERM ; 00707200
INTEGER I,PP,T,COUNT,IRINDEX,SIRINDEX,TCOUNT ; 00707300
ARRAY IR[0:15] ; 00707400
WRITE(IRFILE,10,IR[*]) ; 00707500
CLEAR(IR,14) ; 00707600
IRINDEX ~ 1 ; 00707700
FOR T ~0 STEP 1 UNTIL 63 DO 00707800
BEGIN 00707900
TABINDEX ~ PP ~ STACK[T] ; 00708000
IF PP = 0 THEN GO TO TERM ; 00708100
REDO: 00708200
COUNT ~ TABLE[RC+1].[12:6] ; 00708300
TEMPIND ~ LISTHEAD ; 00708400
IJUNK ~ SEQLINKS[SEQIND].[3:15] ; 00708500
TCOUNT ~ IJUNK ; 00708600
OCTTODEC(IJUNK,JUNK) ; 00708700
CLEAR(IR,14) ; SIRINDEX ~ IR[0] ~ IRINDEX ; 00708800
IR[1] ~ IJUNK ; IR[2] ~ COUNT ; 00708900
WRITE(IRFILE,10,IR[*]) ; 00709000
CLEAR(IR,14) ; IRINDEX ~IRINDEX + 1 ; I ~ 0 ; 00709100
IR[1] ~" " ; 00709200
MOVECHARS(TABLE[RC+1],IR[1],3,3,COUNT) ; 00709300
WRITE(IRFILE,10,IR[*]) ; CLEAR(IR,14); 00709400
IRINDEX ~ IRINDEX + 1 ; 00709500
MORE: TAMPIND ~ SEQLINKS[SEQIND].[33:15] ; 00709600
MOVEWORDS(CURSEQ[CURSEQIND],IR[I],1) ; 00709700
I ~ I + 1 ; 00709800
IF I > 9 THEN 00709900
BEGIN 00710000
WRITE(IRFILE,10,IR[*]); 00710100
I ~0 ; IRINDEX ~ IRINDEX +1 ; CLEAR(IR,14) ; 00710200
END ; 00710300
TEMPIND ~ NEXTSEQLINK ; 00710400
IF TEMPIND = 0 THEN 00710500
BEGIN 00710600
IF I ! 0 THEN 00710700
BEGIN 00710800
WRITE(IRFILE,10,IR[*]) ; 00710900
IRINDEX ~ IRINDEX + 1 ; 00711000
END ; 00711100
LISTTAIL ~ TCOUNT ; 00711200
LISTHEAD ~ SIRINDEX ; 00711300
TABINDEX ~ TABLE[RC].TABLINK ; 00711400
PP ~ TABINDEX ; 00711500
IF PP ! 0 THEN GO TO REDO ELSE GO TO TERM ; 00711600
END ; 00711700
GO TO MORE ; 00711800
TERM: END ; 00711900
SIRINDEX ~ IRINDEX ; 00712000
I ~ TABLEUPPERBOUND ; 00712100
T ~ ( I DIV 512 ) ; 00712200
FOR I ~ 0 STEP 1 UNTIL T DO 00712300
ARRAYTOIRFILE(TABLE[I,*],511) ; 00712400
ARRAYTOIRFILE(STACK,63) ; 00712500
REWIND(IRFILE) ; 00712600
IR[0] ~ SIRINDEX ; IR[1] ~ T ; 00712700
WRITE(IRFILE,10,IR[*]) ; 00712800
LOCK(IRFILE,RELEASE) ; 00712900
END MAKEIRFILE ; 00713000
COMMENT DOCUMENT* 5 * * * * * * * * * * * * * * * * * * * * * * * * * 00713100
I. DOCUMENT EDITING PROCEDURES. 00713200
* END; 00713300
COMMENT DOCUMENT* 23 * * * * * * * * * * * * * * * * * * * * * * * * ; 00713400
INTEGER PROCEDURE DELTANCR(NCR1,NCR2); 00713500
VALUE NCR1,NCR2 ; 00713600
INTEGER NCR1,NCR2 ; 00713700
COMMENT FINDS NUMBER OF CHRS BETWEEN TWO ABSOLUTE ADDRESSES ; 00713800
BEGIN 00713900
INTEGER IJUNK,KJUNK ; 00714000
IJUNK.[45:3] ~NCR1.[30:3] ; 00714100
IJUNK.[30:15] ~ NCR1.[33: 15] ; 00714200
KJUNK.[45:3] ~NCR2.[30:3] ; 00714300
KJUNK.[30:15] ~ NCR2. [33:15] ; 00714400
DELTANCR ~ KJUNK - IJUNK ; 00714500
END ; 00714600
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00714700
PROCEDURE REPLACEIT; 00714800
COMMENT ANALIZES SYNTAX OF <INSERT PART> FOR REPLACE ; 00714900
BEGIN 00715000
INTEGER SVNCR,SVNCR2 ; 00715100
LABEL ENDINS ; 00715200
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * ; 00715300
STREAM PROCEDURE REPLACE (NCR,NBLKS) ; 00715400
VALUE NCR,NBLKS ; 00715500
COMMENT CHANGES <INSERT PART> TO "PAGE" ; 00715600
BEGIN 00715700
DI ~ NCR; DI~ DI - 10; DS~ 10 LIT " PAGE " ; 00715800
NBLKS(DS ~ 1 LIT " "; ); 00715900
END ; 00716000
SVNCR ~ SVNCR2 ~ NCR ; 00716100
IF FINDCHAR(NCR,"%" ) THEN GO TO ENDINS ; 00716200
SCAN; IF RESULT ! 3 THEN GO TO ENDINS ; 00716300
SVNCR2~NCR; 00716400
IF FINDCHAR(NCR,"%") THEN GO TO ENDINS; 00716500
SCAN; IF NOT COMMA THEN GO TO ENDINS; 00716600
SVNCR2 ~ NCR; 00716700
IF FINDCHAR(NCR,"%" ) THEN GO TO ENDINS ; 00716800
SCAN; IF RESULT ! 3 THEN GO TO ENDINS ; 00716900
SVNCR2 ~ NCR ; 00717000
ENDINS: 00717100
TEMP ~ DELTANCR(SVNCR,SVNCR2) ; 00717200
REPLACE (SVNCR,TEMP) ; 00717300
END REPLACEIT ; 00717400
COMMENT DOCUMENT* 22 * * * * * * * * * * * * * * * * * * * * * * * * *; 00717500
STREAM PROCEDURE BITFIELDCONVERT(FIRSTBIT,FIELDSIZE,DEST,DESTPOS) ; 00717600
VALUE DESTPOS ; 00717700
COMMENT FORMATS FIELD LENGTH FOR PATTERN CONTROL ; 00717800
BEGIN 00717900
DI ~ DEST ; DI ~ DI + DESTPOS ; DS ~ 2 LIT "-[" ; 00718000
SI ~ FIRSTBIT ; DS ~ 2 DEC ; DS ~ 1 LIT ":" ; 00718100
SI ~FIELDSIZE ; DS ~ 2 DEC ; DS ~ 2 LIT "]-" ; 00718200
END BITFIELDCONVERT ; 00718300
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * ; 00718400
STREAM PROCEDURE FIXUNDERLINE(A,B) ; 00718500
COMMENT PUTS A HYPHEN IN B FOR EVERY NON-BLANK POSITION IN A ; 00718600
BEGIN 00718700
DI ~ B ; DS ~ 8 LIT " " ; SI ~B ; DS ~ 14 WDS ; 00718800
SI ~ A ; DI ~ B ; 9(8(IF SC ! " " THEN DS ~ 1 LIT "-" 00718900
ELSE DI ~ DI + 1 ; SI ~ SI + 1)) ; 00719000
END FIXUNDERLINE ; 00719100
INTEGER STREAM PROCEDURE COUNTQUOTES(S,SPOS,N); VALUE SPOS,N; 00719102
BEGIN 00719104
LOCAL T ; 00719106
SI~ LOC N; DI~ LOC T; SI~SI+6; DI~DI+7; 00719108
DS~CHR; 00719110
SI~S; SI~SI+SPOS ; TALLY ~ 0; 00719112
2(32(T(IF SC=""" THEN TALLY~TALLY+1; 00719114
SI~SI+1; ))); 00719116
N(IF SC= """ THEN TALLY ~ TALLY +1; SI~SI+1;) ; 00719118
COUNTQUOTES ~ TALLY ; 00719120
END COUNTQUOTES ; 00719122
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * ; 00719200
PROCEDURE NEWDOCPAGE; 00719300
COMMENT WRITES PAGE NUMBER,HEADING,ETC ON A NEW PAGE OF DOCUMENT ; 00719400
BEGIN 00719500
INTEGER BLOCKEXTENDER ; 00719600
IF MONITOG THEN WRITE (PRINT,MONITFORM,"NEWDOC","PAGE ");00719700
ZPLOVER ~FALSE; 00719800
IF PAGEID = " " THEN PAGEID ~ " PAGE " ; 00719900
OCTTODEC(PAGEN,APAGEN) ; 00720000
FOR IJUNK ~ 0 STEP 1 UNTIL 7 DO 00720100
IF NOT CHECKCHAR(APAGEN,IJUNK,"0") THEN 00720200
BEGIN 00720300
IF DECIMALSTOG THEN 00720400
IF (8-PLACES)< IJUNK THEN IJUNK ~ 8-PLACES; 00720500
CLEARCHAR(APAGEN,0,IJUNK) ; 00720600
PAGECHAR ~ 9 - IJUNK ; IJUNK ~ 9 ; 00720700
END ; 00720800
CLEAR(PAGENUM,14) ; 00720900
LEFTPAGE~LFPAGEID; 00721000
IF SUPPRESSTOG THEN 00721100
BEGIN 00721200
SUPTHISTIME ~ TRUE; 00721300
FOR I ~ 8- PLACES STEP 1 UNTIL 7 DO 00721400
IF NOT CHECKCHAR(APAGEN,I,"0") THEN SUPTHISTIME~FALSE; 00721500
END; 00721600
IF LFPAGEID THEN 00721700
BEGIN 00721800
IF PAGEN ! 0 THEN 00721900
MOVECHARS(PAGEID,PAGENUM[7],2,10-PAGECHAR,6) ; 00722000
IF DECIMALSTOG THEN 00722100
BEGIN 00722200
MOVECHARS (APAGEN,PAGENUM[7], 8-PAGECHAR,16-PAGECHAR, 00722300
PAGECHAR-PLACES); 00722400
SETCHAR ( PAGENUM[7] ,16-PLACES,"."); 00722500
IF SUPTHISTIME THEN 00722600
CLEARCHAR(PAGENUM[7],16-PLACES,PLACES+1) ELSE 00722700
MOVECHARS (APAGEN,PAGENUM[7],8-PLACES, 17-PLACES, 00722800
PLACES); 00722900
END ELSE 00723000
MOVECHARS(APAGEN,PAGENUM[7],8-PAGECHAR,16-PAGECHAR, 00723100
PAGECHAR) ; 00723200
END ELSE 00723300
BEGIN 00723400
IF DECIMALSTOG THEN 00723500
BEGIN 00723600
MOVECHARS (APAGEN,PAGENUM[7], 8-PAGECHAR,9-PAGECHAR, 00723700
PAGECHAR-PLACES); 00723800
SETCHAR ( PAGENUM[7],9-PLACES, "."); 00723900
IF SUPTHISTIME THEN 00724000
CLEARCHAR(PAGENUM[7],9-PLACES,PLACES+1) ELSE 00724100
MOVECHARS (APAGEN, PAGENUM[7], 8-PLACES,10-PLACES, 00724200
PLACES); 00724300
END ELSE 00724400
MOVECHARS(APAGEN,PAGENUM[7],8-PAGECHAR,10-PAGECHAR, 00724500
PAGECHAR) ; 00724600
IF PAGEN ! 0 THEN 00724700
MOVECHARS(PAGEID,PAGENUM[7],2,10,6) ; 00724800
END ; 00724900
IF DATETOG THEN MOVECHARS(DATEBUFF,PAGENUM[5],0,6,9) ; 00725000
IF REVTOG THEN MOVECHARS ( REVB[0],PAGENUM[1],0,0,8); 00725100
IF DOCDEBUG THEN 00725200
BEGIN 00725300
WRITE(ZAR[*],FCOLS) ; ZPL(ZF,1,ZAR) ; 00725400
END ; 00725500
IF NOT (NOPAGETOG OR FLOWTOG) THEN ZPL(ZF,1,PAGENUM); 00725600
IF NOPAGETOG THEN ZPL(ZF,1,BLANKARRAY); 00725700
IF CONTPAGEN = 0 THEN CLEAR (ACONT,0) ELSE 00725800
BEGIN 00725900
OCTTODEC (CONTPAGEN,ACONT); 00726000
FOR IJUNK~ 5 STEP 1 UNTIL 7 DO 00726100
IF NOT CHECKCHAR (ACONT,IJUNK,"0") THEN 00726200
BEGIN 00726300
CLEARCHAR (ACONT,0,IJUNK); 00726400
IJUNK ~ 9; 00726500
END; 00726600
MOVECHARS (ACONT,CONTBUF[8],5,6,3); 00726700
IF NOT (NOPAGETOG OR FLOWTOG) THEN ZPL(ZF,1,CONTBUF[*]); 00726800
END; 00726900
IF (TITLEFULL AND DOCTOG) OR (HOLDFLOW AND TIGHTFULL) THEN00727000
BEGIN 00727100
IF TITLECHANGE THEN PATCHPAGE ~ TRUE; 00727200
IF TUNDERTOG THEN 00727300
BEGIN 00727400
ZPL(ZF,1,DOCTITLE); ZPL(ZF,1,TUNDERBUFF); 00727500
END ELSE ZPL(ZF,2,DOCTITLE) ; ZPL(ZF,1,BLANKARRAY) ; 00727600
END ELSE IF NOT FLOWTOG THEN 00727700
ZPL(ZF,1,BLANKARRAY); 00727800
IF TABHEAD THEN 00727900
BEGIN 00728000
ZPL(ZF,1,BLANKARRAY); 00728100
IF THUNDTOG THEN 00728200
BEGIN 00728300
FOR I~ 0 STEP 1 UNTIL THPOS-3 DO 00728400
ZPL(ZF,ZSP,TABARR[I,*]); 00728500
ZPL(ZF,1,TABARR[THPOS-2,*]); 00728600
ZPL(ZF,ZSP,TABARR[THPOS-1,*]); 00728700
END ELSE 00728800
FOR I~ 0 STEP 1 UNTIL THPOS-1 DO 00728900
ZPL(ZF,ZSP,TABARR[I,*]); 00729000
END; 00729100
NOTFIRSTDOCPAGE ~ TRUE ; 00729200
END NEWDOCPAGE; 00729300
STREAM PROCEDURE INDEXBLANKS(A,B,N); VALUE N; 00729302
BEGIN LABEL L,K,M,P; 00729304
SI~A; DI~B; 00729306
L: IF SC= " " THEN BEGIN DS~CHR; GO TO L; END ; 00729308
N( K:IF SC=" " THEN BEGIN DS~ CHR ; M: IF SC= " " THEN 00729310
BEGIN SI~SI+1; GO TO M; END END ELSE 00729312
BEGIN IF SC="%" THEN JUMP OUT TO P; 00729314
DS~CHR; GO TO K; END;); 00729316
P: 00729318
END ; 00729320
00729400
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * ; 00729500
PROCEDURE PARJUSTIFY (A,LASTP,LMARGIN) ; VALUE LASTP,LMARGIN ; 00729600
ARRAY A[0]; INTEGER LASTP,LMARGIN ; 00729700
COMMENT JUSTIFIES RIGHT MARGIN OF TEXT-MODE LINE ; 00729800
BEGIN 00729900
LABEL OK ; 00730000
LABEL ENDEXIT ; 00730100
ARRAY B[0:15] ; 00730200
INTEGER NWDS,NBLANKS,NCHARS, FIRSTP,LB,RB ; 00730300
STREAM PROCEDURE BLANKMARGINS(S,LBLANKS,RBLANKS,NWDS) ; VALUE NWDS ; 00730400
COMMENT RETURNS WIDTH OF LEFT (LBLANKS) AND RT (RBLANKS) MARGINS ; 00730500
BEGIN 00730600
LOCAL T ; 00730700
LABEL L,LL ; 00730800
SI ~ S ; DI ~ T ; 00730900
NWDS(8(IF SC ! " " THEN JUMP OUT 2 TO L ; 00731000
SI ~ SI + 1 ; DI ~ DI + 8 ;)) ; 00731100
L: T ~ DI ; DI ~ LBLANKS ; SI ~ LOC T ; DS ~ 1 WDS ; 00731200
TALLY ~ 0 ; T ~ TALLY ; 00731300
SI ~ S ; NWDS(SI ~ SI + 8); SI ~ SI - 1 ; DI ~ T ; 00731400
NWDS(8(IF SC ! " " THEN JUMP OUT 2 TO LL ; 00731500
SI ~ SI - 1 ; DI ~ DI + 8 ;)) ; 00731600
LL: T ~ DI ; DI ~ RBLANKS ; SI ~ LOC T ; DS ~ 1 WDS ; 00731700
END BLANKMARGINS ; 00731800
INTEGER STREAM PROCEDURE COUNTBLANKS(S,SPOS,N) ; 00731900
VALUE SPOS , N ; 00732000
BEGIN 00732100
LABEL L ; 00732200
SI ~ S ; SI ~ SI + SPOS ; TALLY ~ 0 ; 00732300
N(IF SC = " " THEN TALLY ~ TALLY + 1 ; 00732400
IF SC = "%" THEN JUMP OUT 1 TO L ; 00732500
SI ~ SI + 1 ) ; 00732600
L: COUNTBLANKS ~ TALLY ; 00732700
END COUNTBLANKS ; 00732800
STREAM PROCEDURE FIXTERM(D) ; 00732801
BEGIN 00732803
DI ~D ; DS ~ 8 LIT "%LLANFPG" ; 00732805
END FIXTERM ; 00732807
STREAM PROCEDURE JUSTIFY(S,SPOS,D,DPOS,N) ; 00732900
VALUE SPOS,DPOS,N ; 00733000
BEGIN 00733100
LOCAL LOCDI,STOP ; 00733101
LABEL L1,L2,L3,L4,EXIT ; 00733200
LABEL L5,L6 ; 00733201
DI ~ LOC STOP ; DS ~ 8 LIT "%LLANFPG" ; 00733202
SI ~ S ; SI ~ SI + SPOS ; 00733300
DI ~ D ; DI ~ DI + DPOS ; 00733400
N(L3: 00733500
IF SC = "%" THEN 00733600
BEGIN 00733602
LOCDI ~ DI ; 00733604
DI ~ LOC STOP ; 00733606
IF 8 SC = DC THEN 00733608
JUMP OUT 1 TO EXIT ; 00733610
SI ~ SI - 8 ; DI ~ LOCDI ; 00733612
END ; 00733614
IF SC = """ THEN 00733620
BEGIN 00733622
L5: DS ~ 1 CHR ; IF SC ! """ THEN GO TO L5 ; 00733624
END ; 00733626
DS ~ 1 CHR ; 00733700
IF SC = " "THEN 00733800
BEGIN 00733900
DS ~ 1 CHR ; DS ~ 1 LIT " " ; 00734000
GO TO L1 ; 00734100
END ; 00734200
IF SC = "%" THEN 00734300
BEGIN 00734302
LOCDI ~ DI ; 00734304
DI ~ LOC STOP ; 00734306
IF 8 SC = DC THEN 00734308
JUMP OUT 1 TO EXIT ; 00734310
SI ~ SI - 8 ; DI ~ LOCDI ; 00734312
END ; 00734314
GO TO L3 ; 00734400
L1: ) ; 00734500
L2: 00734600
IF SC = "%" THEN 00734601
BEGIN 00734603
LOCDI ~ DI ; 00734605
DI ~ LOC STOP ; 00734607
IF 8 SC = DC THEN 00734609
GO TO EXIT ; 00734611
SI ~ SI - 8 ; DI ~ LOCDI ; 00734613
END ; 00734615
IF SC = """ THEN 00734617
BEGIN 00734619
L6: DS ~ 1 CHR ; IF SC = """ THEN 00734621
BEGIN 00734623
DS ~ 1 CHR ; GO TO L2 ; 00734625
END ELSE 00734627
GO TO L6 ; 00734629
END ; 00734631
DS ~ 1 CHR ; GO TO L2 ; 00734700
EXIT: 00734800
END JUSTIFY ; 00734900
IF DONTJUSTIFY THEN GO TO ENDEXIT ; 00735000
NWDS ~ 10 ; NCHARS ~ 80 ; 00735100
FIXTERM(A[10]) ; 00735200
BLANKMARGINS(A,LB,RB,NWDS) ; 00735300
IF LB = NCHARS THEN GO TO OK ; 00735400
CLEAR(B,14) ; 00735500
COMMENT SET LB TO MAX(FIRST CHAR, LEFT MARGIN) ; 00735600
IF LB < LMARGIN THEN 00735700
BEGIN 00735800
LB ~ LMARGIN ; 00735900
MOVECHARS(A[0],B[0],0,0,LB); 00736000
END ; 00736100
IF LB + RB } 63 THEN GO TO OK ; 00736200
COMMENT CHICKEN OUT ON ODD NUMBER OF QUOTES; 00736202
IF COUNTQUOTES(A,LB,80-LB) MOD 2 ! 0 THEN GO TO OK; 00736203
FIRSTP ~ LB ; % OUTPUT START POINTER 00736300
NBLANKS ~ LASTP - 80 + RB ; 00736400
IF NBLANKS { 0 THEN GO TO OK ; 00736500
JUSTIFY(A[LB DIV 8],LB.[45:3],B[FIRSTP DIV 8], 00736600
FIRSTP.[45:3] , NBLANKS ) ; 00736700
MOVEWORDS(B,A,10) ; 00736800
OK: 00736900
CLEARCHAR(A[10],0,8) ; 00737000
ENDEXIT: 00737100
END PARJUSTIFY ; 00737200
00737300
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00737400
PROCEDURE PRINTDOCUMENT ; 00737500
COMMENT DOES ALL WORK OF EDITING A DOCUMENT ; 00737600
BEGIN 00737700
ARRAY DOCONTENTS [0:500, 0:14], DOCBUFF [0:14]; 00737800
INTEGER LBLANKS,RBLANKS,NCHRS,POINT,CONTIND,I, 00737900
NCHARS,TABSIZE,FORMP,COLPOS,IJUNK,ITEMP ; 00738000
INTEGER PREVCOL ; 00738100
INTEGER SVPARP; 00738102
BOOLEAN INDENTERR,PAREMPTY; 00738200
BOOLEAN FIRSTEQUAL; 00738300
BOOLEAN PINDEXT; 00738302
BOOLEAN GLOBALDEFINETOG ; 00738303
BOOLEAN DOCOK ; 00738304
BOOLEAN TEMPPAGETOG ; 00738400
BOOLEAN FIRSTPARIDTOG ; 00738500
LABEL NEXT,SEARCH,NEWPAGE,EXIT ; 00738600
LABEL QUITL,PARSCAN,NEXT1 ; 00738700
LABEL MOREID ; 00738800
LABEL DEFOK ; 00738801
LABEL LA1; 00738900
LABEL PATSCAN,MOREPAT,MORECODE,MORE ; 00739000
INTEGER NUMVALUE,NEXTAVAILBIT,NEXTAVAILCOL,WORD,CHAR ; 00739100
SWITCH FORMAT BOXFORM ~ 00739200
(10("-----")) , 00739300
(":",10(" "),10("1"),10("2"),10("3"),8("4"),":") , 00739400
(":",4("0123456789"),"01234567:"), 00739500
(10("-----")) ; 00739600
FORMAT FCONTENTS(X30,"TABLE OF CONTENTS") ; 00739700
COMMENT DOCUMENT* 31 * * * * * * * * * * * * * * * * * * * * * * * * ; 00739800
STREAM PROCEDURE BLANKMARGINS(S,LBLANKS,RBLANKS) ; 00739900
COMMENT RETURNS WIDTH OF LEFT (LBLANKS) AND RT (RBLANKS) MARGINS ; 00740000
BEGIN 00740100
LOCAL T ; 00740200
LABEL L,LL ; 00740300
SI ~ S ; DI ~ T ; 00740400
9(8(IF SC ! " " THEN JUMP OUT 2 TO L ; 00740500
SI ~ SI + 1 ; DI ~ DI + 8 ;)) ; 00740600
L: T ~ DI ; DI ~ LBLANKS ; SI ~ LOC T ; DS ~ 1 WDS ; 00740700
TALLY ~ 0 ; T ~ TALLY ; 00740800
SI ~ S ; 9(SI ~ SI + 8) ; SI ~ SI - 1 ; DI ~ T ; 00740900
9(8(IF SC ! " " THEN JUMP OUT 2 TO LL ; 00741000
SI ~ SI - 1 ; DI ~ DI + 8 ;)) ; 00741100
LL: T ~ DI ; DI ~ RBLANKS ; SI ~ LOC T ; DS ~ 1 WDS ; 00741200
END BLANKMARGINS ; 00741300
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * ; 00741400
STREAM PROCEDURE SETDOTS(D,N) ; 00741500
VALUE N ; 00741600
COMMENT USED IN INDEX ENTRIES ; 00741700
BEGIN 00741800
DI ~ D ; N(DS ~ 8 LIT ". . . . " ) ; 00741900
END SETDOTS ; 00742000
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * ; 00742100
STREAM PROCEDURE COUNTABPOS(S,SPOS,NCHAR,LBLANKS,RBLANKS) ; 00742200
VALUE SPOS ; 00742300
COMMENT KEEPS TRACK OF POSITION IN HANDLING TAB CONTROL ; 00742400
BEGIN 00742500
LABEL L1,L2 ; 00742600
LABEL L3; 00742700
LOCAL T1,T2 ; 00742800
SI ~ S ; SI ~ SI + SPOS ; DI ~ T1; 00742900
9(8( IF SC ! " " THEN JUMP OUT 2 TO L1 ; 00743000
SI ~ SI + 1 ; DI ~ DI + 8 )) ; 00743100
L1: T2 ~ SI ; T1 ~ DI ; DI ~ LBLANKS ; SI ~ LOC T1 ; DS~1 WDS;00743200
TALLY ~ 0 ; T1 ~ TALLY ; 00743300
SI ~ T2 ; DI ~ T1 ; 00743400
9(8(IF SC = "/" THEN JUMP OUT 2 TO L2 ; 00743500
SI ~ SI + 1 ; DI ~ DI + 8 )) ; 00743600
L2: T2~SI; 00743700
T1~DI; DI~NCHAR; SI~LOC T1; DS ~WDS; 00743800
TALLY ~0; SI~ T2; 9(8(SI ~SI-1; IF SC ! " " THEN 00743900
JUMP OUT 2 TO L3; TALLY ~TALLY +1;)); 00744000
L3: IF SC = "/" THEN TALLY ~ TALLY + 1; 00744100
T1 ~ TALLY ; SI ~ LOC T1; DI~ RBLANKS; DS ~ WDS; 00744200
END COUNTABPOS ; 00744300
DEFINE FINDASTERCONTROL = ASTERTOG ~ FALSE ; 00744400
DO READATAPE UNTIL ASTERTOG ; GO TO NEXT1 # ; 00744500
INTEGER GLYNMON ; 00744501
COMMENT ; 00744503
COMMENT 00744505
MONITOR LINE (CODECOUNTOG,CODELINECOUNT,MORECODE, 00744507
DOCOK,DEFOK, 00744509
CODETOG,STARTCODEFLAG,SEARCH,DOCLISTFLAG,DOCLISTOG, 00744511
PERCENTOG,NEXT1,NEXT) ; 00744513
IF MONITOG THEN WRITE(PRINT,MONITFORM,"PRINTD","OCUMEN") ;00744600
IF FINALDOCTOG THEN IF NOT LEAVETOG THEN PATCHLETTER~" "; 00744700
STARTCODEFLAG ~ TRUE ; FIRSTCODELINE ~ FALSE ; 00744800
TITLEFULL ~ FALSE ; 00744900
NDOCDEFS ~ 0 ; 00745000
GLOBALDEFINETOG ~ FALSE ; 00745001
MORE: NOTFIRSTDOCPAGE ~ FALSE ; 00745100
VOLUME ~VOLUME+1; 00745200
PAGEQUAL ~ 0; 00745300
DECIMALSTOG ~ FALSE; 00745400
TITLECHANGE ~ FALSE ; 00745500
CLEAR( DOCTITLE,14) ; CLEAR(DOCBUFF,14) ; 00745600
CONTIND ~ PAGEN ~ NLINES ~ 0 ; 00745700
TUNDERTOG ~ FALSE ; 00745800
MAXLINES ~ ZLCOUNTMAX; 00745900
ZSPERM ~ IF DOUBLEONLY THEN 2 ELSE 1; 00746000
PAGEID ~ " PAGE "; 00746100
CLEARTITLETOG ~ TRUE ; 00746200
IF NOT GLOBALDEFINETOG THEN 00746201
BEGIN 00746202
FOR IJUNK ~ 1 STEP 1 UNTIL NDOCDEFS DO 00746300
DOCDEFLINKS[IJUNK] ~ 0 ; NDOCDEFS ~ 0 ; 00746400
END ; 00746401
LOOKFORSTAR ~ FALSE; 00746500
SEARCH: 00746600
DOCLISTFLAG ~ FALSE ; 00746700
LOOKFORSTAR ~ FALSE; 00746800
DO SCAN UNTIL Q = "7COMME" ; 00746900
SCAN ; IF Q ! "8DOCUM" THEN GO TO SEARCH ; 00747000
IF DOCOK THEN GO TO DEFOK ; 00747001
IF NOT FINDCHAR(NCR,"*") THEN 00747002
IF NOT GLOBALDEFINETOG THEN 00747003
IF NOT (FINDCHAR(NCR,""") OR FINDCHAR(NCR,"%")) THEN 00747005
BEGIN 00747007
SCAN ; IF Q ="6DEFIN" OR Q = "7DEFIN" THEN 00747009
GLOBALDEFINETOG ~TRUE ; 00747011
GO TO DEFOK ; 00747013
END ; 00747015
IF DOCIDTOG AND FIRSTDOCIDTOG THEN 00747017
BEGIN 00747019
IF NOT FINDCHAR(NCR,""") THEN GO TO SEARCH ; 00747021
SCAN ; 00747023
IF NOT WORDEQUAL(FIRSTDOCID[1],ACCUM[1],9) THEN 00747025
GO TO SEARCH ; 00747027
FIRSTDOCIDTOG ~ FALSE ; 00747029
END ELSE 00747031
IF DOCIDTOG AND LASTDOCIDTOG THEN 00747033
BEGIN 00747035
IF FINDCHAR(NCR,""")THEN 00747037
BEGIN 00747039
SCAN ; 00747041
IF WORDEQUAL(LASTDOCID[1],ACCUM[1],9) THEN 00747043
LASTDOCIDTOG ~ FALSE ; 00747045
END ; 00747047
END ; 00747049
DEFOK: 00747090
DOCOK ~ TRUE ; 00747091
LOOKFORSTAR ~ TRUE; 00747100
DOCOUTPUT ~ FALSE; 00747200
IF DOCLISTOG THEN 00747300
IF ASMLTOG THEN 00747400
BEGIN 00747500
CLEAR(LISTBUFFER,14) ; 00747600
MOVEWORDS(ASMLBUFF[DEVICE,*],LISTBUFFER,10) ; 00747700
ZPL(0,2,LISTBUFFER) ; 00747800
END ELSE 00747900
BEGIN 00748000
CLEAR(LISTBUFFER,14) ; 00748100
MOVEWORDS(GLOBE,LISTBUFFER[2],9) ; 00748200
MOVEWORDS(SEQ,LISTBUFFER[11],1) ; 00748300
ZPL(0,2,LISTBUFFER) ; 00748400
END ; 00748500
DOCOUTPUT ~ TRUE ; 00748600
DOCUMENTFOUND ~ DOCLISTFLAG ~ TRUE ; 00748700
IF EXAMINE(NCR) = "*" THEN 00748800
BEGIN 00748900
ASTERTOG ~ TRUE ; ASTERCONTROLS ; GO TO NEXT1; 00749000
END ; 00749100
NEXT: READATAPE ; 00749200
NEXT1: ASTERTOG ~ FALSE ; 00749300
IF ENDTOG THEN 00749400
BEGIN 00749500
DOCLISTFLAG ~ FALSE ; GO TO SEARCH ; 00749600
END ; 00749700
IF CLEARTITLETOG THEN 00749800
BEGIN 00749900
TITLEFULL ~ FALSE ; 00750000
CLEAR(DOCTITLE,14) ; CLEARTITLETOG ~ FALSE ; 00750100
END ; 00750200
IF MISSTOG THEN 00750300
BEGIN 00750400
MISSTOG ~ FALSE ; GO TO NEXT ; 00750500
END ; 00750600
IF DOCNAMES THEN 00750602
BEGIN 00750604
SCAN; 00750606
WHILE DOCNAMES DO 00750608
BEGIN 00750610
IF DOCINDEXTOG THEN 00750612
IF RESULT ! 2 THEN 00750614
IF SORTSCRAMBLE THEN BUILDXREF; 00750616
SCAN; 00750618
END ; 00750620
GO TO NEXT1; 00750622
END ; 00750624
IF QUITOG THEN GO TO QUITL ; 00750700
IF (GLOSSTOG OR PARTOG OR PATTOG)THEN 00750800
CENTERTOG~TITLETOG~CODETOG~INDENTOG~ FALSE; 00750900
00751000
IF NOT NOTBLANK THEN GO TO NEXT ; 00751100
IF SYNTAXTOG OR BNFTOG THEN 00751200
BEGIN 00751300
IF NOT DOCSYNTAX THEN 00751400
DO READATAPE UNTIL DOCSYNTAX OR QUITOG ; 00751500
END ELSE IF DOCSYNTAXONLY THEN 00751600
BEGIN 00751700
FINDASTERCONTROL ; GO TO NEXT ; 00751800
END ; 00751900
IF BNFTOG THEN 00752000
BEGIN 00752100
LABEL MOREBNF ; 00752200
LABEL MORE ; 00752300
MOREBNF : 00752400
QUITOG ~ QUITOG ; 00752500
Q ~ Q ; 00752600
IF Q ! "1< " OR NOT ASTERTOG THEN 00752700
DO BEGIN 00752800
SCAN ; 00752900
IF ASTERTOG THEN GO TO NEXT1 ; 00753000
IF Q = "1< " THEN GO TO MORE ; 00753100
IF RESULT =1 THEN 00753200
IF SORTSCRAMBLE THEN BUILDXREF ; 00753300
IF Q = "1{ " AND NOT FINDCHAR(NCR,"/") THEN 00753400
DO SCAN UNTIL Q = "1} " OR ASTERTOG ; 00753500
IF ASTERTOG THEN GO TO NEXT1 ; 00753600
END UNTIL FALSE ; 00753700
MORE: 00753800
Q ~ Q ; 00753900
IF ASTERTOG THEN GO TO NEXT1 ; 00754000
IF NOT FINDCHAR(NCR,"/") THEN 00754100
BEGIN 00754200
CLEAR(BNFARRAY,14) ; 00754300
BUILDBNFID(NCR,NCR,COUNT,BNFARRAY) ; 00754400
IF COUNT > 62 THEN 00754500
BEGIN 00754600
DOCERROR(28) ; FINDASTERCONTROL ; 00754700
END ; 00754800
MOVECHARS(BNFARRAY,ACCUM[1],0,3,COUNT) ; 00754900
ACCUM[1].[12:6] ~ COUNT ; Q ~ ACCUM[1] ; 00755000
COUNT ~ COUNT ; NCR ~ NCR ; 00755100
IF NOT CHECKCHAR(ACCUM[1],2+COUNT,">") THEN 00755200
BEGIN 00755300
DOCERROR(29); FINDASTERCONTROL ; 00755400
END ; 00755500
IF SORTSCRAMBLE THEN BUILDXREF ; 00755600
END ; 00755700
GO TO MOREBNF ; 00755800
END ; 00755900
GLYNMON ~ 1 ; 00755910
DOCLISTFLAG ~ DOCLISTFLAG ; 00755912
DOCLISTOG ~ DOCLISTOG ; 00755914
CODECOUNTOG ~ CODECOUNTOG ; 00755916
CODELINECOUNT ~ CODELINECOUNT ; 00755918
CODETOG ~ CODETOG ; 00755920
STARTCODEFLAG ~ STARTCODEFLAG ; 00755922
PERCENTOG ~ PERCENTOG ; 00755924
GLYNMON ~ 2 ; 00755926
MORECODE: IF CODETOG AND STARTCODEFLAG THEN 00756000
BEGIN 00756100
PARTOG ~GLOSSTOG ~ FALSE ; 00756200
STARTCODEFLAG ~ FALSE ; FIRSTCODELINE ~ TRUE ; 00756300
MOVEWORDS(GLOBE,JUNKARRAY,10) ; CLEAR(GLOBE,8) ; 00756400
FILL GLOBE[*] WITH OCT6060606330256026, 00756500
OCT4643434666314527,OCT6023462425606263, 00756600
OCT2151636260216360,OCT6225506425452325, 00756700
OCT6045644422255160 ; 00756800
MOVEWORDS(SEQ,GLOBE[6],1) ; 00756900
IF NOCODESEQ THEN CLEAR(GLOBE,9) ; 00756910
END ; 00757000
IF CODECOUNTOG THEN CODELINECOUNT ~ CODELINECOUNT - 1 ; 00757100
IF CODELINECOUNT = 1 AND NOT DOCONLY THEN 00757200
DOCLISTFLAG ~ FALSE ; 00757300
IF (CODETOG AND ((CHECKCHAR(GLOBE,0,"%") OR 00757400
(CHECKCOMMENT(GLOBE,0) AND (NOT COMMENTOG) 00757500
AND ( NOT CODECOUNTOG))) 00757501
OR (CODECOUNTOG AND CODELINECOUNT = 0))) THEN 00757600
BEGIN 00757700
STARTCODEFLAG ~ TRUE ; 00757800
ENDCODETOG ~ TRUE ; 00757900
IF CODEPERCENTOG AND CHECKCHAR(GLOBE,0,"%") THEN 00757910
BEGIN 00757912
CODETOG ~ FALSE ; PERCENTOG ~ TRUE ; 00757914
GO TO NEXT1 ; 00757916
END ; 00757918
GO TO SEARCH ; 00758000
END ; 00758100
IF NOT NOTBLANK THEN GO TO NEXT ; 00758200
IF PERCENTOG THEN 00758300
BEGIN 00758400
IF CHECKCHAR(GLOBE,0,"%") THEN 00758500
BEGIN 00758600
CLEAR(DOCBUFF,14) ; 00758700
CLEARCHAR(GLOBE,0,1) ; MOVEWORDS(GLOBE,DOCBUFF,9) ; 00758800
END ELSE 00758900
BEGIN 00759000
PERCENTOG ~ FALSE ; GO TO SEARCH ; 00759100
END ; 00759200
END ; 00759300
IF WIDETOG THEN 00759302
BEGIN 00759304
CLEAR(DOCBUFF,14) ; 00759306
IF NOT CHECKCHAR(GLOBE[8],7,"%") THEN 00759308
MOVEWORDS(GLOBE,DOCBUFF,9) ; 00759310
READATAPE ; 00759312
MOVEWORDS(GLOBE,DOCBUFF[9],6) ; 00759314
END ELSE 00759316
IF CENTERTOG THEN 00759400
BEGIN 00759500
BLANKMARGINS(GLOBE,LBLANKS,RBLANKS) ; 00759600
CLEAR(DOCBUFF,14) ; 00759700
POINT ~ (LBLANKS + RBLANKS) DIV 2 ; 00759800
NCHARS ~ 72 - LBLANKS - RBLANKS ; 00759900
MOVECHARS(GLOBE[LBLANKS DIV 8],DOCBUFF[POINT DIV 8], 00760000
LBLANKS.[45:3],POINT.[45:3],NCHARS) ; 00760100
END ELSE 00760200
IF FORMTOG OR TABTOG THEN 00760300
BEGIN 00760400
CLEAR(DOCBUFF,14) ; 00760500
FORMP ~ 0 ; 00760600
SETCHAR(GLOBE[9],0,"/") ; 00760700
SETCHAR(GLOBE[9],1,"/") ; 00760800
FOR IJUNK ~ 1 STEP 1 UNTIL NFORMTABS DO 00760900
BEGIN 00761000
COUNTABPOS(GLOBE[FORMP DIV 8],FORMP.[45:3],NCHARS, 00761100
LBLANKS,RBLANKS) ; 00761200
FORMP ~FORMP +LBLANKS; 00761300
TABSIZE ~IF NCHARS =0 THEN 0 ELSE NCHARS - RBLANKS ; 00761400
COLPOS ~ FORMCOLS[IJUNK] - 1 ; 00761500
IF TABTOG THEN 00761600
IF TABSIZE > (ITEMP ~ FORMCOLS[IJUNK+1] - COLPOS) THEN 00761700
BEGIN 00761800
DOCERROR(36) ; 00761900
GO TO NEXT ; 00762000
END ; 00762100
IF FORMTOG THEN 00762200
BEGIN 00762300
IF IJUNK = 1 THEN PREVCOL ~ 0 ELSE 00762400
PREVCOL ~ FORMCOLS[IJUNK-1] ; 00762500
IF TABSIZE > (ITEMP ~ COLPOS - PREVCOL) THEN 00762600
BEGIN 00762700
DOCERROR(36); 00762800
GO TO NEXT ; 00762900
END ; 00763000
COLPOS ~ COLPOS - TABSIZE + 1 ; 00763100
END ; 00763200
IF COLPOS < 0 THEN 00763300
BEGIN 00763400
DOCERROR(17) ; 00763500
GO TO NEXT; 00763600
END ; 00763700
MOVECHARS(GLOBE[FORMP DIV 8],DOCBUFF[COLPOS DIV 8], 00763800
FORMP.[45:3],COLPOS.[45:3],TABSIZE) ; 00763900
FORMP ~ FORMP + NCHARS +1; 00764000
END ; 00764100
END ELSE 00764200
IF INDENTOG THEN 00764300
BEGIN 00764400
BLANKMARGINS(GLOBE,LBLANKS,RBLANKS) ; 00764500
CLEAR(DOCBUFF,14) ; 00764600
IF PERCENTOG THEN LBLANKS ~ 0 ; 00764700
NCHARS ~ 72 - LBLANKS - RBLANKS ; 00764800
IF (INDENTERR ~ INDENTVAL + NCHARS > 72 ) THEN 00764900
NCHARS ~ 72 - INDENTVAL ; 00765000
IF NOT INDEXONLYTOG THEN % DO WHAT YOU DID BEFORE. 00765010
MOVECHARS(GLOBE[LBLANKS DIV 8],DOCBUFF[INDENTVAL DIV 8], 00765100
LBLANKS.[45:3], INDENTVAL.[45:3], NCHARS ) 00765200
ELSE % DONT INDENT DOCUMENT. 00765210
MOVECHARS (GLOBE[LBLANKS DIV 8], DOCBUFF, 00765220
LBLANKS.[45:3], 0, NCHARS) ; 00765230
IF INDENTERR THEN DOCERROR(8) ; 00765300
END ; 00765400
IF TITLETOG THEN 00765500
BEGIN 00765600
CLEAR(DOCTITLE,14) ; 00765700
TITLEFULL ~ TRUE ; 00765800
IF NOT ( INDENTOG OR CENTERTOG ) THEN 00765900
MOVEWORDS(GLOBE,DOCTITLE,9) ELSE 00766000
MOVEWORDS(DOCBUFF,DOCTITLE,15) ; 00766100
TITLECHANGE~PATCHCARD OR ASTERPATCHED; 00766200
IF TUNDERTOG THEN FIXUNDERLINE(DOCTITLE,TUNDERBUFF); 00766300
END ; 00766400
NEWPAGE: IF PAGETOG AND NOT DOCXREFTOG THEN 00766500
BEGIN 00766600
NLINES ~ MAXLINES; ZPL(ZF,0,BLANKARRAY); 00766700
PAGETOG ~FALSE; 00766800
PAGEINC~SAVEPAGEINC; 00766900
END ; 00767000
IF INSERTOG THEN 00767100
BEGIN 00767200
PAGETOG~TRUE; 00767300
NLINES ~ MAXLINES; ZPL(ZF,0,BLANKARRAY); 00767400
INSERTOG~PAGETOG~FALSE; 00767500
END; 00767600
IF SKIPTOG AND NOT DOCXREFTOG THEN 00767700
BEGIN 00767800
SKIPTOG~ FALSE; 00767900
IF PUNCHPAGES THEN PUNCHAFTER ~ TRUE; 00768000
FOR I ~ 1 STEP 1 UNTIL SKIPVAL DO 00768100
BEGIN 00768200
ZPL(ZF,1,BLANKARRAY) ; 00768300
END; 00768400
IF PUNCHPAGES THEN 00768500
BEGIN 00768600
IF ZSPERM = 2 THEN 00768700
IF LASTLINE THEN IF NLINES = MAXLINES - 3 THEN 00768800
ZPL(ZF,1,BLANKARRAY); 00768900
IF PAGEFULL THEN 00769000
BEGIN 00769100
ZPL(ZF,ZSPERM,BLANKARRAY); 00769200
NLINES ~ NLINES - ZSPERM; 00769300
END ; 00769400
PUNCHAFTER ~ FALSE; 00769500
END; 00769600
END ; 00769700
IF PARTOG THEN 00769800
BEGIN 00769900
IF BBB THEN GO TO PARSCAN; 00770000
PINDEXT~INDEXTOG AND INDEXWORDS>0; 00770002
INDEXTOG~FALSE; 00770003
IF PAGEFULL THEN PUNCHAFTER ~ TRUE ; 00770100
PUNDERTOG ~ UNDERTOG ; PDOUBLETOG ~ DOUBLETOG ; 00770200
LASTNOSPACE ~ FALSE ; 00770300
CLEAR(DOCBUFF,14); 00770400
PARIDTOG ~ IF GLOSSTOG THEN FALSE ELSE SAVEPARIDTOG; 00770500
FIRSTEQUAL ~ IF GLOSSTOG THEN TRUE ELSE FALSE ; 00770600
FIRSTPARIDTOG ~FALSE ; 00770700
IF PARIDTOG THEN 00770800
BEGIN 00770900
PARP ~ 0 ; 00771000
MOREID: SCAN ; MOVECHARS(ACCUM[1],DOCBUFF[PARP DIV 8],3, 00771100
PARP.[45:3], COUNT); PARP ~ PARP + COUNT ; 00771200
IF EXAMINE(NCR) ! " " THEN GO TO MOREID ; 00771300
IF PARP > PARLOW + 5 THEN PARP ~ PARP + PARINDENT ELSE 00771400
PARP ~ PARLOW + PARINDENT - 1 ; 00771500
END ELSE 00771600
PARP ~ PARLOW + PARINDENT - 1 ; 00771700
IF GLOSSTOG THEN PARP ~ INDENTVAL ; 00771800
IF GLOSSTOG THEN PARINDENT ~6 ; 00771900
IF GLOSSTOG THEN PARINDENT ~ 0 ; 00772000
PAREMPTY ~ TRUE ; 00772100
BBB ~ TRUE; 00772200
PARSCAN: DOCSCAN ; 00772300
IF SEMICOLON AND NOT DOCONLY THEN 00772400
ASTERTOG ~ ENDTOG ~TRUE ; 00772500
IF Q = "1= " AND FIRSTEQUAL THEN 00772600
BEGIN 00772700
FIRSTEQUAL ~ FALSE; DOCSCAN ; 00772800
SVPARP~ 00772802
PARP ~ IF PARP < PARLOW - 1 OR ((PARP=PARLOW - 1) 00772900
AND CHECKCHAR(DOCBUFF[PARP DIV 8],PARP.[45:3]," ")) 00773000
THEN PARLOW ELSE PARP + 6; 00773100
LASTNOSPACE ~ TRUE; 00773200
END ELSE SVPARP~ PARLOW; 00773300
IF NOT LASTNOSPACE THEN PARP ~ PARP + 1 ; 00773400
IF PERIOD THEN IF EXAMINE(NCR) = " " THEN 00773500
BEGIN 00773600
SETCHAR (ACCUM[1],3+COUNT, " "); 00773700
COUNT ~ COUNT + 1; 00773800
END; 00773900
LASTNOSPACE~EXAMINE(NCR) ! " " OR Q="1% "; 00774000
IF COUNT + PARP > PARHIGH+3 AND NOT PERIOD THEN 00774100
BEGIN 00774200
IF NOT FIRSTPARIDTOG THEN 00774300
PARJUSTIFY(DOCBUFF,PARHIGH+3,SVPARP) ELSE 00774400
FIRSTPARIDTOG ~ FALSE ; 00774500
END ; 00774600
SVPARP~PARLOW; 00774602
IF ASTERTOG OR (COUNT + PARP > PARHIGH+3) THEN 00774700
IF NOT PAREMPTY THEN 00774800
IF NOT PERIOD THEN 00774900
BEGIN 00775000
IF PUNCHPAGES THEN 00775100
BEGIN 00775200
IF PAGEFULL THEN 00775300
IF NOT PUNCHAFTER THEN 00775400
BEGIN 00775500
IF NOT (PAGETOG OR INSERTOG) THEN 00775600
BEGIN 00775700
IF SAVESEQ = 0 THEN DOCERROR(33); 00775800
IF INSTOG THEN 00775900
BEGIN 00776000
IF NOT INSERTROW THEN SAVEPAGEN ~ PAGEN; 00776100
TEMP~ PAGEN +INSINC; 00776200
INSERTROW~ TRUE; 00776300
OCTTODEC(TEMP,BLOCKBUFFER[3]); 00776400
PAGEINC ~INSINC; 00776500
END; 00776600
IJUNK ~ SAVESEQ +1; COMMENT 00776700
IJUNK~IF SAVESEQ{ISEQ-3 THEN SAVESEQ+1 ELSE SAVESEQ; 00776800
OCTTODEC(IJUNK,BLOCKBUFFER[9]); 00776900
IJUNK ~ SAVESEQ +2; COMMENT 00777000
IJUNK~ IF SAVESEQ{ISEQ-3 THEN SAVESEQ+2 ELSE SAVESEQ; 00777100
CLEAR(OLDBUF[0],14); CLEAR(NEWBUF[0],14); 00777200
OCTTODEC(SAVESEQ,OLDBUF[9]); 00777300
OCTTODEC(IJUNK,NEWBUF[9]); 00777400
I ~ DELTANCR(WORDBUF[10],WORDBUF[11]); J ~ 72-I; 00777500
MOVECHARS(WORDBUF[0],OLDBUF[0],0,0,J); 00777600
MOVECHARS(WORDBUF[J DIV 8],NEWBUF[J DIV 8],J.[45:3], 00777700
J.[45:3],I); 00777800
IF PUNCHTOG THEN 00777900
BEGIN 00778000
IF BLANKTEST(OLDBUF[0],9) THEN 00778100
WRITE (PUNCH,10,OLDBUF[*]); 00778200
WRITE(PUNCH,10,BLOCKBUFFER[*]); 00778300
IF BLANKTEST (NEWBUF[0],9) THEN 00778400
WRITE(PUNCH,10,NEWBUF[*]); 00778500
END ELSE 00778600
BEGIN 00778700
IF BLANKTEST(OLDBUF[0],9) THEN 00778800
WRITE(LINE,15,OLDBUF[*]); 00778900
WRITE(LINE,15,BLOCKBUFFER[*]); 00779000
IF BLANKTEST (NEWBUF[0],9) THEN 00779100
WRITE(LINE,15,NEWBUF[*]); 00779200
END; 00779300
END; 00779400
END ELSE 00779500
IF ASTERTOG THEN 00779600
ASAVESEQ ~ OLDASEQ ; 00779700
IF ASTERTOG THEN IF LASTLINE THEN PUNCHAFTER~ TRUE; 00779800
END; 00779900
IF NOT REMOTETOG THEN 00780000
BEGIN 00780100
IF NOT FINALDOCTOG THEN 00780200
MOVEWORDS(SEQ,DOCBUFF[14],1) ; 00780300
IF PATCHEDLINE THEN 00780400
BEGIN 00780500
IF LEAVETOG THEN SETCHAR(DOCBUFF[9],4,PATCHLETTER) ELSE 00780600
SETCHAR(DOCBUFF[10],0,PATCHLETTER); 00780700
PATCHINBUFF ~ TRUE; 00780800
END ELSE 00780900
IF ASTERPATCHED THEN PATCHINBUFF~TRUE; 00781000
END ; 00781100
IF NOT DOCXREFTOG THEN 00781200
BEGIN 00781300
IF PAGETOG THEN 00781400
BEGIN 00781500
PAGETOG ~ FALSE ; 00781600
TEMPPAGETOG ~ TRUE ; 00781700
END ; 00781800
IF PINDEXT THEN 00781802
BEGIN 00781804
INTEGER J; 00781806
CONTIND~CONTIND +1; 00781808
CLEAR(DOCONTENTS[CONTIND,0],14); 00781810
SETDOTS(DOCONTENTS[CONTIND,0],9); 00781812
SETCHAR(DOCBUFF[13],7,"%"); 00781814
INDEXBLANKS(DOCBUFF,DOCONTENTS[CONTIND,0],INDEXWORDS); 00781816
SETCHAR(DOCBUFF[13],7," "); 00781818
MOVECHARS(PAGENUM[7],DOCONTENTS[CONTIND,7], 00781820
10-PAGECHAR,10-PAGECHAR, IF DECIMALSTOG THEN 00781822
PAGECHAR+7 ELSE PAGECHAR+6); 00781824
IF NOT FINALDOCTOG THEN MOVEWORDS(SEQ, 00781826
DOCONTENTS[CONTIND,14],1); 00781828
PINDEXT~ FALSE; 00781830
END ; 00781832
IF PUNDERTOG THEN 00781900
FIXUNDERLINE(DOCBUFF,UNDERBUFF) ; 00782000
IF PUNDERTOG OR NOT PDOUBLETOG THEN 00782100
ZPL(ZF,1,DOCBUFF) ELSE 00782200
ZPL(ZF,2,DOCBUFF) ; 00782300
IF PUNDERTOG THEN ZNOSKIP ~ TRUE; 00782400
IF PUNDERTOG THEN IF PDOUBLETOG THEN 00782500
ZPL(ZF,2,UNDERBUFF) ELSE 00782600
ZPL(ZF,1,UNDERBUFF); 00782700
PATCHEDLINE ~ FALSE; 00782800
ZNOSKIP ~ FALSE; 00782900
CLEAR(DOCBUFF,14) ; 00783000
PAGETOG ~ TEMPPAGETOG ; 00783100
TEMPPAGETOG ~ FALSE ; 00783200
END ; 00783300
PAREMPTY ~ TRUE ; PARP ~ PARLOW ; 00783400
GO TO LA1; 00783500
END; 00783600
IF PUNCHPAGES THEN IF LASTLINE THEN 00783700
IF NEWCARD THEN 00783800
BEGIN 00783900
NEWCARD ~ FALSE; 00784000
MOVEWORDS(GLOBE[0],WORDBUF[0],9); 00784100
MOVEWORDS(NCR,WORDBUF[10],1); 00784200
MOVEWORDS(LCR,WORDBUF[11],1); 00784300
MOVEWORDS(NCR,WORDBUF[12],1); 00784400
SAVESEQ~ISEQ; 00784500
END ELSE 00784600
BEGIN 00784700
MOVEWORDS(NCR,WORDBUF[10],1); 00784800
END; 00784900
LA1: 00785000
IF ASTERTOG THEN GO TO NEXT1; 00785100
MOVECHARS(ACCUM[1],DOCBUFF[PARP DIV 8],3,PARP.[45:3], 00785200
COUNT) ; PARP ~ PARP + COUNT ; PAREMPTY ~ FALSE ; 00785300
PATCHEDLINE ~ PATCHEDLINE OR PATCHCARD; 00785400
GO TO PARSCAN ; 00785500
END ; 00785600
IF PATTOG THEN 00785700
BEGIN 00785800
LASTNOSPACE ~ FALSE ; CLEAR(DOCBUFF,14) ; 00785900
PDOUBLETOG ~ DOUBLETOG ; 00785910
NEXTAVAILBIT ~ 0 ; NEXTAVAILCOL ~ 1 ; 00786000
BBB~TRUE; 00786100
MOREPAT: PARP ~ IF PATBOXTOG THEN NEXTAVAILCOL ELSE 1 ; 00786200
LASTNOSPACE ~ TRUE ; 00786300
FIRSTEQUAL ~ TRUE ; PAREMPTY ~ TRUE ; 00786400
SCAN ; IF PERCENT THEN GO TO MOREPAT ; 00786500
IF RESULT ! 3 THEN 00786600
BEGIN 00786700
DOCERROR(9) ; 00786800
FINDASTERCONTROL ; 00786900
END ; 00787000
DTOCT(ACCUM[1],3,FIRSTBIT,COUNT) ; 00787100
FIELDSIZE ~ 1 ; 00787200
SCAN ; IF NOT COLON THEN 00787300
BEGIN 00787400
DOCERROR(13) ; 00787500
FINDASTERCONTROL ; 00787600
END ; 00787700
SCAN ; IF RESULT !3 THEN 00787800
BEGIN 00787900
DOCERROR(10) ; 00788000
FINDASTERCONTROL ; 00788100
END ; 00788200
IF FIRSTBIT < NEXTAVAILBIT THEN 00788300
BEGIN 00788400
DOCERROR(14) ; 00788500
FINDASTERCONTROL ; 00788600
END ; 00788700
IF FIRSTBIT > NEXTAVAILBIT AND PATBOXTOG THEN 00788800
PARP ~ FIRSTBIT + 1 ; 00788900
DTOCT(ACCUM[1],3,FIELDSIZE,COUNT) ; 00789000
LASTBIT ~ FIRSTBIT + FIELDSIZE - 1 ; 00789100
IF LASTBIT > 47 THEN 00789200
BEGIN 00789300
DOCERROR(15) ; 00789400
FINDASTERCONTROL ; 00789500
END ; 00789600
NEXTAVAILBIT ~ LASTBIT + 1 ; NUMVALUE ~ 0 ; 00789700
IF PATBOXTOG THEN 00789800
NEXTAVAILCOL ~ NEXTAVAILBIT + 1 ; 00789900
PATSCAN: 00790000
SCAN ; 00790100
IF PERCENT THEN GO TO PATSCAN ; 00790200
IF NUMSIGN THEN 00790300
BEGIN 00790400
SCAN ; 00790500
IF COMMA THEN NUMVALUE ~ 1 ELSE 00790600
IF PERIOD THEN NUMVALUE ~ 2 ELSE 00790700
BEGIN 00790800
DOCERROR(11) ; 00790900
FINDASTERCONTROL ; 00791000
END ; 00791100
END ; 00791200
IF FIRSTEQUAL THEN 00791300
BEGIN 00791400
FIRSTEQUAL ~ FALSE ; 00791500
BITFIELDCONVERT(FIRSTBIT,FIELDSIZE,DOCBUFF[PARP DIV 8], 00791600
PARP.[45:3]) ; PARP ~ PARP + 10 ; 00791700
PARLOW ~ IF PATBOXTOG THEN NEXTAVAILCOL + 1 ELSE PARP+1 ; 00791800
END ; 00791900
IF Q ="1= " THEN 00792000
BEGIN 00792100
IF NOT PATBOXTOG THEN PARLOW ~ PARP + 4 ; 00792101
PARP ~ PARP + 3 ; GO TO PATSCAN ; 00792200
END ; 00792300
IF NOT (RTPAREN OR RTBRACK 00792400
OR LASTNOSPACE) THEN PARP ~ PARP + 1 ; 00792500
LASTNOSPACE ~ LFPAREN OR LFBRACK OR 00792600
EXAMINE(NCR) ! " " OR 00792700
PERCENT OR LESSTHAN ; 00792800
IF ( ASTERTOG OR (NUMVALUE ! 0 ) OR 00792900
(((COUNT+PARP) > PARHIGH) AND 00793000
(((COUNT DIV 2 ) + PARP) > PARHIGH))) 00793100
AND NOT PAREMPTY THEN 00793200
IF(NOT (PERIOD OR COMMA OR RTPAREN OR RTBRACK OR 00793300
MINUS OR SLASH OR COLON OR GREATERTHAN)) OR 00793400
(NUMVALUE ! 0 ) THEN 00793500
BEGIN 00793600
INTEGER BLOCKEXTENDER ; 00793700
IF NOT REMOTETOG THEN 00793800
BEGIN 00793900
IF NOT FINALDOCTOG THEN 00794000
MOVEWORDS(SEQ,DOCBUFF[14],1) ; 00794100
IF PATCHCARD THEN 00794200
BEGIN 00794300
IF LEAVETOG THEN SETCHAR(DOCBUFF[9],4,PATCHLETTER) ELSE 00794400
SETCHAR(DOCBUFF[10],0,PATCHLETTER); 00794500
PATCHINBUFF ~ TRUE; 00794600
END ELSE 00794700
IF ASTERPATCHED THEN PATCHINBUFF~TRUE; 00794800
END ; 00794900
IF NOT DOCXREFTOG THEN 00795000
BEGIN 00795100
IF NOT PATBOXTOG AND PDOUBLETOG THEN 00795200
ZPL(ZF,2,DOCBUFF) ELSE ZPL(ZF,1,DOCBUFF); 00795300
IF PATBOXTOG THEN 00795400
BEGIN 00795500
WORD ~ (FIRSTBIT+1) DIV 8 ; 00795600
CHAR ~ (FIRSTBIT + 1).[45:3] ; 00795700
CLEARCHAR(DOCBUFF[WORD],CHAR,8-CHAR) ; 00795800
CLEAR(DOCBUFF[WORD+1],14-WORD-1) ; 00795900
SETCHAR (DOCBUFF[(FIRSTBIT+1) DIV 8],(FIRSTBIT+1). 00796000
[45:3],":") ; 00796100
SETCHAR (DOCBUFF[( LASTBIT+1) DIV 8],( LASTBIT+1). 00796200
[45:3],":") ; 00796300
ZPL(ZF,ZSP,DOCBUFF); 00796400
END ELSE CLEAR(DOCBUFF,14) ; 00796500
END ; 00796600
PAREMPTY ~ TRUE ; PARP ~ PARLOW ; 00796700
END ; 00796800
IF NUMVALUE = 1 THEN GO TO MOREPAT ; 00796900
IF NUMVALUE = 2 THEN 00797000
BEGIN 00797100
IF PATBOXTOG THEN 00797200
BEGIN 00797300
IF NOT DOCXREFTOG THEN 00797400
BEGIN 00797500
ZNOSKIP~TRUE; 00797600
FOR I ~ 0,1,2,3 DO 00797700
BEGIN 00797800
WRITE(ZAR[*],BOXFORM[I]) ; 00797900
ZPL(ZF,1,ZAR); 00798000
END ; 00798100
ZNOSKIP~FALSE; 00798200
ZPL (ZF,1, BLANKARRAY); 00798300
END ; 00798400
END ; 00798500
FINDASTERCONTROL ; 00798600
END ; 00798700
MOVECHARS(ACCUM[1],DOCBUFF[PARP DIV 8],3,PARP.[45:3], 00798800
COUNT) ; PARP ~ PARP + COUNT ; PAREMPTY ~ FALSE ; 00798900
GO TO PATSCAN ; 00799000
END ; 00799100
IF NOT ( PARTOG OR PATTOG OR INDENTOG OR PERCENTOG OR 00799200
WIDETOG OR 00799202
FORMTOG OR TABTOG OR CENTERTOG) THEN 00799300
BEGIN 00799400
CLEAR(DOCBUFF[0],14); 00799500
MOVEWORDS(GLOBE,DOCBUFF,9); 00799600
END; 00799700
IF INDEXTOG AND NOT FIRSTCODELINE THEN 00799800
BEGIN 00799900
IF ( NINDEXLINES ~ NINDEXLINES - 1) { 0 THEN 00800000
INDEXTOG ~FALSE ; 00800100
CONTIND ~ CONTIND + 1 ; 00800200
CLEAR(DOCONTENTS[CONTIND, 0],14) ; 00800300
SETDOTS(DOCONTENTS[CONTIND,0],9 ) ; 00800400
BLANKMARGINS(DOCBUFF,LBLANKS,RBLANKS) ; 00800500
IF INDEXFIXTOG THEN 00800600
MOVECHARS(DOCBUFF[LBLANKS DIV 8],DOCONTENTS[CONTIND,0], 00800700
LBLANKS.[45:3],0,72-RBLANKS-LBLANKS) ELSE 00800800
IF INDEXONLYTOG THEN % INDENT THE INDEX. 00800810
BEGIN 00800820
CLEARCHAR (DOCONTENTS[CONTIND, 0], 0, INDENTVAL); 00800830
MOVECHARS (DOCBUFF, DOCONTENTS[CONTIND, INDENTVAL 00800840
DIV 8], 0, INDENTVAL.[45:3], 72- RBLANKS ) 00800850
END 00800860
ELSE % DO WHAT YOU DID BEFORE. 00800870
MOVECHARS(DOCBUFF,DOCONTENTS[CONTIND,0],0,0,72-RBLANKS) ; 00800900
IF DECIMALSTOG THEN 00801000
MOVECHARS (PAGENUM[7], DOCONTENTS[CONTIND,7], 00801100
10-PAGECHAR,10-PAGECHAR, PAGECHAR+7) ELSE 00801200
MOVECHARS(PAGENUM[7],DOCONTENTS[CONTIND,7], 00801300
10-PAGECHAR,10-PAGECHAR,PAGECHAR + 6) ; 00801400
IF NOT FINALDOCTOG THEN 00801500
MOVEWORDS(SEQ,DOCONTENTS[CONTIND,14],1) ; 00801600
END ; 00801700
IF UNDERTOG THEN 00801800
FIXUNDERLINE(DOCBUFF,UNDERBUFF) ; 00801900
IF CONSTTAB THEN 00802000
BEGIN 00802100
THL~ THL+1; 00802200
CLEAR(TABARR[THPOS,0],14); 00802300
MOVEWORDS(DOCBUFF[0],TABARR[THPOS,0],9); 00802400
THPOS ~ THPOS+ 1; 00802500
IF THL = THLINES THEN 00802600
BEGIN 00802700
CONSTTAB ~ FALSE; 00802800
IF UNDERTOG THEN 00802900
BEGIN 00803000
IF THPOS > 5 THEN 00803100
BEGIN 00803200
DOCERROR(35); 00803300
THPOS ~5; 00803400
END; 00803500
THUNDTOG~ TRUE; 00803600
CLEAR (TABARR[THPOS,0],14); 00803700
MOVEWORDS(UNDERBUFF[0],TABARR[THPOS,0],9); 00803800
THPOS~THPOS+1; 00803900
END; 00804000
END; 00804100
END; 00804200
IF TITLETOG THEN TITLETOG ~ FALSE ELSE 00804300
BEGIN 00804400
IF WIDETOG THEN 00804402
BEGIN 00804404
IF PATCHCARD OR ASTERPATCHED THEN PATCHINBUFF ~TRUE ;00804406
END ELSE 00804408
IF NOT REMOTETOG THEN 00804500
BEGIN 00804600
IF NOT FINALDOCTOG THEN 00804700
MOVEWORDS(SEQ,DOCBUFF[14],1) ; 00804800
IF PATCHCARD THEN 00804900
BEGIN 00805000
IF LEAVETOG THEN SETCHAR(DOCBUFF[9],4,PATCHLETTER) ELSE 00805100
SETCHAR(DOCBUFF[10],0,PATCHLETTER); 00805200
PATCHINBUFF ~ TRUE; 00805300
END ELSE 00805400
IF ASTERPATCHED THEN PATCHINBUFF~TRUE; 00805500
END ; 00805600
IF NOT DOCXREFTOG THEN 00805700
BEGIN 00805800
IF PUNCHPAGES THEN IF LASTLINE THEN 00805900
BEGIN 00806000
PUNCHAFTER ~ TRUE; 00806100
ASAVESEQ~ISEQ; 00806200
END; 00806300
IF UNDERTOG OR NOT DOUBLETOG THEN 00806400
ZPL(ZF,1,DOCBUFF) ELSE 00806500
ZPL(ZF,2,DOCBUFF) ; 00806600
IF UNDERTOG THEN ZNOSKIP ~ TRUE; 00806700
IF UNDERTOG THEN IF DOUBLETOG THEN 00806800
ZPL(ZF,2,UNDERBUFF) ELSE 00806900
ZPL(ZF,1,UNDERBUFF); 00807000
ZNOSKIP ~ FALSE; 00807100
IF UNDERTOG THEN 00807200
UNDERTOG ~ (NUNDERLINES ~ NUNDERLINES - 1) !0 ; 00807300
END ; 00807400
END ; 00807500
IF FIRSTCODELINE THEN 00807600
BEGIN 00807700
FIRSTCODELINE ~FALSE ; 00807800
MOVEWORDS(JUNKARRAY,GLOBE,10) ; 00807900
GO TO MORECODE ; 00808000
END ; 00808100
IF ENDTOG THEN GO TO SEARCH ; 00808200
QUITL: 00808300
IF QUITOG THEN 00808400
BEGIN 00808500
INTEGER BLOCKEXTENDER ; 00808600
DOCLISTFLAG ~ FALSE ; 00808700
DOCOK ~ FALSE ; 00808701
IF NOT FINALDOCTOG THEN 00808800
PATCHLETTER ~ "*" ; 00808900
IF CONTIND = 0 OR DOCXREFTOG THEN 00809000
IF FINITOG THEN 00809100
BEGIN 00809102
IF DOCIDTOG AND (NOT FIRSTDOCIDTOG) 00809104
AND (NOT LASTDOCIDTOG) THEN 00809106
GO TO EXIT ; 00809108
GO TO MORE ; 00809110
END ELSE GO TO EXIT ; 00809112
IF CONTOG THEN ZF ~ ZZF; 00809200
PAGETOG ~ TRUE; 00809300
ZPG(ZF); 00809400
IF NOT DATOG THEN 00809500
NOPAGETOG ~ TRUE; 00809600
NEWDOCPAGE; 00809700
NOPAGETOG ~ FALSE; 00809800
PAGEQUAL ~ 2; 00809900
WRITE(ZAR[*],FCONTENTS) ; ZPL(ZF,2,ZAR) ; 00810000
FOR I ~ 1 STEP 1 UNTIL CONTIND DO 00810100
BEGIN 00810200
IF DOUBLETOG THEN ZPL(ZF,2,DOCONTENTS[I,*]) ELSE 00810300
ZPL(ZF,1,DOCONTENTS[I,*]) ; 00810400
END; 00810500
NEWVOL ~ TRUE; 00810600
ZPG(ZF); 00810700
IF CONTOG THEN ZF ~ -1; 00810800
IF FINITOG THEN 00810900
BEGIN 00810902
IF DOCIDTOG AND (NOT FIRSTDOCIDTOG) 00810904
AND (NOT LASTDOCIDTOG) THEN 00810906
BEGIN 00810908
QUITOG ~ TRUE ; GO TO EXIT ; 00810910
END ; 00810912
GO TO MORE ; 00810914
END ; 00810916
GO TO EXIT ; 00811000
END ; 00811100
GO TO NEXT ; 00811200
EXIT: 00811300
GO TO EOFCARD ; 00811400
END PRINTDOCUMENT ; 00811500
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00811600
PROCEDURE ASTERCONTROLS ; 00811700
COMMENT SETS UP * CONTROLS FOR USE BY PRINTDOCUMENT ; 00811800
BEGIN 00811900
LABEL L1,MORE,NEXT,RET,L2,L3 ; 00812000
LABEL MOREFORM,MOREIN ; 00812100
LABEL MOREIN1 ; 00812200
DEFINE SCANN = SCAN ; IF ENDCARD THEN GO TO RET # ; 00812300
DEFINE DXREF = IF NOT DEFUSETOG THEN 00812400
IF SORTSCRAMBLE THEN BUILDXREF # ; 00812500
INTEGER PPP ; 00812600
BOOLEAN DEFUSETOG ; 00812700
IF MONITOG THEN WRITE(PRINT,MONITFORM,"ASTERC","ONTROL") ;00812800
IF WATCHOUT THEN 00812900
BEGIN 00813000
HOLDASTER ~ TRUE ; 00813100
GO TO RET ; 00813200
END ; 00813300
SCAN ; SCAN ; 00813400
IF Q = "7INVAL" THEN 00813500
BEGIN 00813600
INVTOG ~ TRUE ; 00813700
FOR IJUNK ~ 0 STEP 1 UNTIL 10 DO INVCH[IJUNK] ~ 0 ; 00813800
SCAN ; IF Q = "3ALL " THEN 00813900
INVALLTOG ~TRUE ELSE GO TO MOREIN1 ; 00814000
MOREIN: SCAN ; IF ENDCARD THEN GO TO RET ; 00814100
MOREIN1: 00814200
IF RESULT ! 3 THEN GO TO MOREIN ; 00814300
IJUNK ~ INVCH[0] ~ INVCH[0] + 1 ; 00814400
DTOCT(ACCUM[1],3,INVCH[IJUNK],COUNT) ; 00814500
INVCH[IJUNK] ~ INVCH[IJUNK] - 1 ; GO TO MOREIN; 00814600
END ELSE 00814700
IF Q = "4OVER " THEN 00814800
BEGIN 00814900
SCAN; 00815000
ASTERTOG ~ TRUE; 00815100
SKIPTOG ~ FALSE; 00815200
IF Q ! "4PAGE " AND Q ! "#INSER" THEN 00815300
DO SCAN UNTIL ENDCARD; 00815400
OVERTOG ~ TRUE; 00815500
GO TO NEXT; 00815600
END ELSE 00815700
BEGIN 00815800
ASTERTOG ~ TRUE ; 00815900
BBB ~ FALSE; 00816000
CENTERTOG ~ SKIPTOG ~ PAGETOG ~ QUITOG ~ INDENTOG ~ 00816100
INDEXONLYTOG ~ % SET TO FALSE INITIALLY. 00816110
CODECOUNTOG ~ FORMTOG ~ TABTOG ~ FALSE ; 00816200
WIDETOG ~ FALSE ; 00816202
DOCNAMES~FALSE; 00816204
CODEPERCENTOG ~ FALSE ; 00816205
INDEXFIXTOG ~ TRUE ; 00816300
DOCSYNTAX ~ DOCSYNTAXONLY ~ FALSE ; 00816400
UNDERTOG ~ FALSE ; DOUBLETOG ~ DOUBLEONLY ; 00816500
TITLETOG ~ INDEXTOG ~ ENDTOG ~ FALSE ; 00816600
PERCENTOG ~ FALSE ; ASTERTOG ~TRUE ; 00816700
INSERTOG ~ FALSE ; 00816800
INVALLTOG ~ FALSE ; 00816900
INVTOG ~ DEFUSETOG ~ LABELUSE ~FALSE ; 00817000
PATTOG ~ PATBOXTOG ~FALSE ; 00817100
PARTOG ~ FINITOG ~ FREETOG ~FIXEDTOG ~ FALSE ; 00817200
GLOSSTOG ~ CODETOG ~ FALSE ; 00817300
END ; 00817400
IF RESULT !3 THEN GO TO NEXT ; 00817500
DTOCT(ACCUM[1],3,DOCDEFIND,COUNT) ; 00817600
FOR IJUNK ~ 1 STEP 1 UNTIL NDOCDEFS DO 00817700
IF DOCDEFLINKS[IJUNK] = DOCDEFIND THEN 00817800
BEGIN 00817900
DOCDEFIND ~ IJUNK ; GO TO L3 ; 00818000
END ; 00818100
DOCERROR(4) ; 00818200
DO SCAN UNTIL ENDCARD ; GO TO RET ; 00818300
L3: MOVEWORDS(DOCDEFINES[DOCDEFIND,1],GLOBE[0],9) ; 00818400
DEFUSETOG ~ TRUE ; 00818500
IF NOT DOCINDEXTOG THEN 00818502
IF SORTSCRAMBLE THEN BUILDXREF ; 00818600
IF DOCLISTOG AND DOCLISTFLAG THEN 00818700
BEGIN 00818800
IF REMOTETOG THEN MOVEWORDS(GLOBE[0],LISTBUFFER[0],9)ELSE 00818900
MOVEWORDS(GLOBE[0],LISTBUFFER[2],9) ; 00819000
IF REMOTETOG THEN MOVEWORDS(SEQ,LISTBUFFER[9],1) ELSE 00819100
MOVEWORDS(SEQ,LISTBUFFER[11],1) ; 00819200
ZPL(0,2,LISTBUFFER) ; 00819300
END ; 00819400
LCR ~ MKABS(GLOBE[W]) ; NCR ~ LCR - W ; 00819500
MORE: SCAN ; 00819600
NEXT: 00819700
IF NOT DOCINDEXTOG THEN 00819702
IF RESULT =1 THEN DXREF ; 00819800
IF ASTERISK THEN GO TO MORE ; 00819900
IF ENDCARD THEN GO TO RET ; 00820000
IF Q = "6SYNTA" THEN 00820100
BEGIN 00820200
DOCSYNTAX ~ TRUE ; 00820300
SCAN ; IF Q ! "4ONLY " THEN GO TO NEXT ; 00820400
DOCSYNTAXONLY ~ TRUE ; GO TO MORE ; 00820500
END ; 00820600
IF Q = "4VOID " THEN 00820700
BEGIN 00820800
DOCERROR(24) ; GO TO MORE ; 00820900
END ; 00821000
IF Q = "4WIDE " THEN WIDETOG ~ TRUE ; 00821002
IF Q = "6FORMA" OR Q = "4FORM " OR 00821100
Q = "3TAB " OR Q = "8TABUL" THEN 00821200
BEGIN 00821300
PARTOG ~ PATTOG ~ CENTERTOG ~ INDENTOG ~FALSE ; 00821400
FORMTOG ~ TABTOG ~ FALSE ; 00821500
IF Q="6FORMA" OR Q="4FORM " THEN FORMTOG ~ TRUE ELSE 00821600
TABTOG ~ TRUE ; NFORMTABS ~ 0 ; 00821700
FOR IJUNK ~ 0 STEP 1 UNTIL 50 DO FORMCOLS[IJUNK] ~ 0 ; 00821800
MOREFORM: SCAN ; 00821900
IF ENDCARD THEN 00822000
BEGIN 00822100
FORMCOLS[NFORMTABS+1] ~ 73 ; GO TO RET ; 00822200
END ; 00822300
IF RESULT =1 THEN 00822400
BEGIN 00822500
IF REMOTETOG THEN FORMCOLS[NFORMTABS +1] ~73 ELSE 00822600
FORMCOLS[NFORMTABS+1] ~ 76 ; GO TO NEXT ; 00822700
END ; 00822800
IF RESULT !3 THEN GO TO MOREFORM ; 00822900
NFORMTABS ~ NFORMTABS + 1 ; 00823000
DTOCT(ACCUM[1],3,FORMCOLS[NFORMTABS],COUNT) ; 00823100
IF FORMCOLS[NFORMTABS] > 72 THEN 00823200
BEGIN 00823300
DOCERROR(6) ; FORMCOLS[NFORMTABS] ~ 72 ; 00823400
GO TO MOREFORM ; 00823500
END ; 00823600
IF NFORMTABS > 1 AND FORMCOLS[NFORMTABS] { FORMCOLS 00823700
[NFORMTABS-1] THEN 00823800
BEGIN 00823900
DOCERROR(7) ; 00824000
FORMCOLS[NFORMTABS] ~ FORMCOLS[NFORMTABS-1] + 1 ; 00824100
GO TO MOREFORM ; 00824200
END ; 00824300
GO TO MOREFORM ; 00824400
END ; 00824500
IF Q = "3REV " THEN 00824600
BEGIN 00824700
SCAN ; IF COUNT ! 1 OR RESULT !1 THEN 00824800
IF Q ! "1* " THEN 00824900
BEGIN 00825000
DOCERROR(23) ; GO TO NEXT ; 00825100
END ; 00825200
MOVECHARS(ACCUM[1],PATCHLETTER,3,7,1) ; 00825300
SCAN; IF Q ! "5LEAVE" THEN GO TO NEXT; 00825400
LEAVETOG ~ TRUE; 00825500
GO TO MORE ; 00825600
END ; 00825700
IF Q = "4MISS " THEN MISSTOG ~ TRUE ELSE 00825800
IF Q="5NAMES" THEN DOCNAMES~ TRUE ELSE 00825802
IF Q = "7PERCE" THEN PERCENTOG ~ TRUE ; 00825900
IF Q = "9UNDER"THEN 00826000
BEGIN 00826100
UNDERTOG ~ TRUE ; NUNDERLINES ~ 1 ; SCAN ; 00826200
IF RESULT !3 THEN GO TO NEXT ; 00826300
DTOCT(ACCUM[1],3,NUNDERLINES,COUNT) ; 00826400
GO TO MORE ; 00826500
END ; 00826600
IF Q = "6SINGL" THEN 00826700
BEGIN 00826800
DOUBLETOG~ FALSE; 00826900
ZSP~ZSPERM~1; 00827000
END; 00827100
IF Q = "6DOUBL" THEN 00827200
BEGIN 00827300
DOUBLETOG~ TRUE; 00827400
ZSP~ZSPERM~2; 00827500
END; 00827600
IF Q = "4DATE " THEN 00827700
BEGIN 00827800
DATETOG~ TRUE ; SCAN ; IF Q !"5CLEAR" THEN GO TO NEXT ; 00827900
DATETOG ~ FALSE ; GO TO MORE ; 00828000
END ; 00828100
IF Q = "4CODE " OR Q = "@CODEP" THEN 00828200
BEGIN 00828300
IF Q = "@CODEP"THEN CODEPERCENTOG ~ TRUE ; 00828301
CODETOG ~ TRUE ; SCAN ; IF RESULT ! 3 THEN GO TO NEXT ; 00828400
DTOCT(ACCUM[1],3,CODELINECOUNT,COUNT) ; 00828500
CODELINECOUNT ~CODELINECOUNT + 2 ; 00828600
CODECOUNTOG ~TRUE ; GO TO MORE ; 00828700
END ; 00828800
IF Q = "9NOCOD" THEN NOCODESEQ ~ TRUE ; % NOCODESEQ 00828810
IF Q ="7CODES" THEN NOCODESEQ ~ FALSE ; % CODESEQ 00828811
IF Q = "7PATTE" THEN 00828900
BEGIN 00829000
PATTOG ~ PATBOXTOG ~TRUE ; 00829100
NBLBOXES ~ 0 ; 00829200
SCAN ; IF Q = "4GLOS " THEN 00829300
BEGIN 00829400
PATBOXTOG ~ FALSE ; GO TO MORE ; 00829500
END ; 00829600
GO TO NEXT ; 00829700
END ; 00829800
IF Q = "6DEFIN" THEN 00829900
BEGIN 00830000
SCAN ; IF RESULT ! 3 THEN 00830100
BEGIN 00830200
DOCERROR(2) ; 00830300
DO SCAN UNTIL ENDCARD ; GO TO RET ; 00830400
END ; 00830500
LABELUSE ~ TRUE ; 00830600
IF NOT DOCINDEXTOG THEN 00830602
IF SORTSCRAMBLE THEN BUILDXREF ; 00830700
DTOCT(ACCUM[1],3,DOCDEFIND,COUNT) ; 00830800
FOR IJUNK ~ 1 STEP 1 UNTIL NDOCDEFS DO 00830900
IF DOCDEFLINKS[IJUNK] = DOCDEFIND THEN 00831000
BEGIN 00831100
DOCDEFIND ~ IJUNK ; GO TO L2 ; 00831200
END ; 00831300
IF (NDOCDEFS ~ NDOCDEFS + 1 ) > 100 THEN 00831400
BEGIN 00831500
DOCERROR(3) ; 00831600
DO SCAN UNTIL ENDCARD ; GO TO RET ; 00831700
END ELSE 00831800
BEGIN 00831900
DOCDEFLINKS[NDOCDEFS] ~ DOCDEFIND ; 00832000
DOCDEFIND ~ NDOCDEFS ; 00832100
END ; 00832200
L2: SCAN ; IF Q ! "1= " THEN 00832300
BEGIN 00832400
DOCERROR(5) ; 00832500
DO SCAN UNTIL ENDCARD ; GO TO RET ; 00832600
END ; 00832700
CLEAR(DOCDEFINES[DOCDEFIND,1],8) ; 00832800
SETCHAR(DOCDEFINES[DOCDEFIND,1],0,"*") ; 00832900
DOCDEFINES[DOCDEFIND,0] ~ 1 ; PPP ~ 2 ; 00833000
WHILE Q ! "1* " AND NOT ENDCARD DO 00833100
BEGIN 00833200
SCAN ; 00833300
IF NOT DOCINDEXTOG THEN 00833302
IF RESULT = 1 THEN DXREF ; 00833400
MOVECHARS(ACCUM[1],DOCDEFINES[DOCDEFIND,(PPP DIV 8)+1], 00833500
3,PPP.[45:3],COUNT); 00833600
PPP ~PPP + COUNT + 1 ; 00833700
END ; 00833800
IF ENDCARD THEN DOCERROR(18) ; 00833900
IF NOT ENDCARD THEN DO SCAN UNTIL ENDCARD ; GO TO RET ; 00834000
END ; 00834100
IF Q = "3END " THEN 00834200
BEGIN 00834300
ENDTOG ~ TRUE ; DOCLISTFLAG ~ FALSE ; 00834400
END ; 00834500
IF Q = "7PAGEI" THEN 00834600
BEGIN 00834700
SAVEPAGEINC ~ PAGEINC ~1 ; 00834800
SCAN ; IF ENDCARD OR RESULT !3 THEN GO TO NEXT ; 00834900
DTOCT(ACCUM[1],3,PAGEINC,COUNT); 00835000
SAVEPAGEINC~ PAGEINC ; GO TO MORE ; 00835100
END ; 00835200
IF Q = "6PAGEI" THEN 00835300
BEGIN 00835400
INSERTROW ~FALSE; 00835500
LFPAGEID ~ TRUE ; PAGEN ~ 0 ; PAGEID ~ " " ; 00835600
SCAN ; IF ENDCARD OR RESULT !3 THEN GO TO NEXT ; 00835700
DTOCT(ACCUM[1],3,PAGEN,COUNT) ; 00835800
PAGEN ~PAGEN-PAGEINC; 00835900
SCAN ; IF ENDCARD OR Q ! "1, " THEN GO TO NEXT ; 00836000
SCAN ; IF ENDCARD THEN GO TO NEXT ; 00836100
IF Q = "1+ " THEN 00836200
BEGIN 00836300
LFPAGEID ~ FALSE ; SCAN ; IF ENDCARD THEN GO TO NEXT ; 00836400
END ; 00836500
IF RESULT = 5 THEN 00836600
BEGIN 00836700
IJUNK ~ IF COUNT > 7 THEN 6 ELSE COUNT - 2 ; 00836800
MOVECHARS(ACCUM[1],PAGEID,4,2,IJUNK) ; SCAN ; 00836900
END ; 00837000
GO TO NEXT ; 00837100
END ; 00837200
IF Q = "7ENDPA"THEN % ENDPAGE 00837300
BEGIN 00837400
SCAN; IF RESULT ! 3 THEN GO TO NEXT ; 00837402
DTOCT(ACCUM[1],3,IJUNK,COUNT); 00837404
IF MAXLINES-NLINES { IJUNK THEN 00837406
BEGIN 00837408
PAGETOG ~TRUE ; PAGEINC ~ SAVEPAGEINC ; 00837500
END ; 00837600
GO TO MORE ; 00837601
END ; 00837700
IF Q = "4PAGE " THEN 00837800
BEGIN 00837900
IF INSERTROW THEN PAGEN ~ SAVEPAGEN; 00838000
INSERTROW ~FALSE; 00838100
PAGETOG~TRUE; PAGEINC~SAVEPAGEINC; SCAN; 00838200
NOPAGETOG ~ FALSE ; 00838300
IF Q = "2NO " THEN 00838400
BEGIN 00838500
NOPAGETOG ~ TRUE ; GO TO MORE ; 00838600
END ; 00838700
IF RESULT ! 3 THEN GO TO NEXT ; 00838800
DTOCT(ACCUM[1],3,PAGEINC,COUNT) ; GO TO MORE ; 00838900
END ELSE 00839000
IF Q = "#INSER" THEN 00839100
BEGIN 00839200
IF PAGETOG THEN DOCERROR(30) ELSE 00839300
BEGIN 00839400
LABEL L; 00839500
INSERTOG ~TRUE; 00839600
IF NOT INSERTROW THEN SAVEPAGEN ~ PAGEN; 00839700
INSERTROW ~TRUE; 00839800
PAGEINC ~1; 00839900
SCAN; IF RESULT ! 3 THEN GO TO L; 00840000
DTOCT (ACCUM [1],3,PAGEN,COUNT); 00840100
SCAN; IF COMMA THEN SCAN; IF RESULT !3 THEN GO TO L; 00840200
DTOCT (ACCUM [1],3,PAGEINC,COUNT); 00840300
L: PAGEN~PAGEN -PAGEINC; GO TO NEXT; 00840400
END; 00840500
END ELSE 00840600
IF Q = "8DECIM" THEN 00840700
BEGIN 00840800
DECIMALSTOG ~TRUE; 00840900
SUPPRESSTOG ~ FALSE; 00841000
PLACES ~2; 00841100
SCAN; IF Q = "2NO " THEN 00841200
BEGIN 00841300
DECIMALSTOG ~ FALSE; 00841400
GO TO MORE; 00841500
END ELSE 00841600
IF RESULT = 3 THEN 00841700
BEGIN 00841800
DTOCT (ACCUM[1],3,PLACES,COUNT); 00841900
SCAN; 00842000
END; 00842100
IF Q ! "8SUPPR" THEN GO TO NEXT; 00842200
SUPPRESSTOG ~ TRUE; 00842300
GO TO MORE; 00842400
END ELSE 00842500
IF Q = "8REVIS" THEN 00842600
BEGIN 00842700
REVTOG ~ TRUE; 00842800
DOCREV~ 1; 00842900
SCAN; IF Q = "5CLEAR" THEN 00843000
BEGIN 00843100
REVTOG~ FALSE; SCAN; 00843200
END; 00843300
IF RESULT = 3 THEN 00843400
BEGIN 00843500
DTOCT(ACCUM[1],3,DOCREV,COUNT); 00843600
IF DOCREV > 100 THEN ERROR(29); 00843700
SCAN; 00843800
END; 00843900
FILL REVB[*] WITH OCT6060512565606060; 00844000
MOVECHARS (REVISIONS [DOCREV],REVB[0],6,6,2); 00844100
GO TO NEXT; 00844200
END; 00844300
IF Q="6CENTR" OR Q="6CENTE" THEN CENTERTOG ~ TRUE ELSE 00844400
IF Q = "4QUIT " THEN 00844500
BEGIN 00844600
QUITOG ~TRUE ; GO TO RET ; 00844700
END ELSE 00844800
IF Q = "6FINIS" THEN 00844900
BEGIN 00845000
QUITOG ~ FINITOG ~ TRUE ; GO TO RET ; 00845100
END ELSE 00845200
IF Q = "5INDEX" THEN 00845300
BEGIN 00845400
NINDEXLINES ~ 1 ; INDEXTOG ~TRUE ; 00845500
IF CENTERTOG OR INDENTOG OR CODETOG THEN 00845600
INDEXFIXTOG ~ FALSE ; 00845700
SCAN; IF RESULT =3 THEN 00845800
BEGIN 00845802
DTOCT(ACCUM[1],3,NINDEXLINES,COUNT); 00845900
SCAN; 00845902
END ; 00845904
IF Q ! "5WORDS" THEN 00845906
BEGIN 00845908
INDEXWORDS~0; 00845910
GO TO NEXT ; 00845912
END ; 00845914
SCAN; IF RESULT ! 3 THEN INDEXWORDS~1 ELSE 00845916
BEGIN 00845918
DTOCT(ACCUM[1],3,INDEXWORDS,COUNT); 00845920
END ; 00845922
IF INDEXWORDS>63 THEN INDEXWORDS~63; 00845924
GO TO NEXT ; 00845926
END ; 00846000
IF Q ="7TABHE" THEN 00846100
BEGIN 00846200
THUNDTOG ~ FALSE; 00846300
SCAN; IF Q = "5CLEAR" THEN 00846400
BEGIN 00846500
SCAN ; IF RESULT ! 3 THEN 00846502
BEGIN 00846503
TABHEAD~FALSE; 00846600
FOR IJUNK~0 STEP 1 UNTIL 5 DO 00846700
CLEAR(TABARR[IJUNK,0],14); 00846701
GO TO NEXT 00846800
END ; 00846802
DTOCT(ACCUM[1],3,IJUNK,COUNT); 00846804
THPOS ~ IJUNK-1; 00846806
FOR IJUNK~IJUNK-1 STEP 1 UNTIL 5 DO 00846808
CLEAR(TABARR[IJUNK,0],14); 00846810
GO TO MORE ; 00846812
END; 00846900
TABHEAD~CONSTTAB~TRUE; 00847000
THL~0; THLINES~1; 00847100
THPOS ~ 0; 00847200
IF RESULT ! 3 THEN GO TO NEXT; 00847300
DTOCT(ACCUM[1],3,THLINES,COUNT); 00847400
IF THLINES > 6 THEN 00847500
BEGIN 00847600
DOCERROR(35); 00847700
THLINES ~ 6; 00847800
END; 00847900
SCAN; IF Q ! "1, " THEN GO TO NEXT; 00848000
SCAN; IF RESULT ! 3 THEN GO TO NEXT; 00848100
DTOCT(ACCUM[1],3,THPOS,COUNT); 00848200
IF THPOS < 1 THEN 00848202
BEGIN 00848204
DOCERROR(16); 00848206
THPOS ~ 1; 00848208
END ; 00848210
THPOS ~ THPOS -1; 00848212
IF THPOS+THLINES > 6 THEN 00848300
BEGIN 00848400
IF THPOS } 5 THEN CONSTTAB ~ FALSE 00848500
ELSE THLINES ~ 6-THPOS ; 00848501
DOCERROR(35); 00848600
END; 00848700
GO TO MORE; 00848800
END; 00848900
IF Q = "5TITLE" THEN 00849000
BEGIN 00849100
TUNDERTOG ~ UNDERTOG ; 00849200
TITLETOG ~ TRUE ; CLEARTITLETOG ~ FALSE ; SCANN ; 00849300
IF Q = "5CLEAR" THEN 00849400
BEGIN 00849500
TUNDERTOG ~ FALSE ; 00849600
TITLECHANGE ~ FALSE ; 00849700
CLEARTITLETOG ~ TRUE ; TITLETOG ~ FALSE ; GO TO MORE ; 00849800
END ; 00849900
IF RESULT ! 3 THEN GO TO NEXT ; 00850000
INDENTOG ~TRUE ; 00850100
DTOCT(ACCUM[1],3,INDENTVAL,COUNT) ; GO TO MORE ; 00850200
END ; 00850300
IF Q = "3PAR " THEN 00850400
BEGIN 00850500
PARIDTOG ~ SAVEPARIDTOG ; 00850600
PARINDENT ~ SAVEPARINDENT ; 00850700
PARTOG ~ TRUE ; PARLOW ~ PLSAVE ; PARHIGH ~ PHSAVE ; 00850800
END ELSE 00850900
IF Q = "9PARAG" THEN 00851000
BEGIN 00851100
PARIDTOG ~ SAVEPARIDTOG ~ FALSE ; 00851200
PARINDENT ~ SAVEPARINDENT ~ 6 ; 00851300
PLSAVE ~ PARLOW ~ 0 ; PHSAVE ~ PARHIGH ~ 71 ; 00851400
PARTOG ~ TRUE ; SCAN ; 00851500
IF MINUS THEN 00851600
BEGIN 00851700
PARIDTOG ~ SAVEPARIDTOG ~ TRUE ; SCAN ; 00851800
END ; 00851900
IF RESULT ! 3 THEN GO TO NEXT ; 00852000
DTOCT(ACCUM[1],3,PARLOW,COUNT) ; SCAN ; 00852100
PLSAVE ~ PARLOW ~ PARLOW - 1 ; 00852200
IF Q ! "1, " THEN GO TO NEXT ; SCAN ; 00852300
IF RESULT ! 3 THEN GO TO NEXT ; 00852400
DTOCT(ACCUM[1],3,PARHIGH,COUNT) ; 00852500
PHSAVE ~ PARHIGH ~ PARHIGH - 1 ; 00852600
IF PARHIGH > 72 OR PARHIGH { PARLOW THEN 00852700
BEGIN 00852800
DOCERROR( 1) ; PHSAVE ~ PARHIGH ~ 72 ; 00852900
END ; 00853000
SCAN ; IF Q ! "1, " THEN GO TO NEXT ; SCAN ; 00853100
IF RESULT !3 THEN GO TO NEXT ; 00853200
DTOCT(ACCUM[1],3,PARINDENT,COUNT) ; 00853300
SAVEPARINDENT ~ PARINDENT ; 00853400
GO TO MORE ; 00853500
END ; 00853600
IF Q = "4GLOS " THEN 00853700
BEGIN 00853800
PARTOG ~ GLOSSTOG ~ TRUE ; INDENTVAL ~ GINDSAVE ; 00853900
PARLOW ~ GLSAVE ; PARHIGH ~ GHSAVE ; 00854000
END ELSE 00854100
IF Q = "8GLOSS" THEN 00854200
BEGIN 00854300
GINDSAVE ~ INDENTVAL ~ 0 ; GLSAVE ~ PARLOW ~ 0 ; 00854400
GHSAVE ~ PARHIGH ~ 72 ; 00854500
PARTOG ~ GLOSSTOG ~ TRUE ; SCAN ; 00854600
IF RESULT ! 3 THEN 00854700
BEGIN 00854800
GLOSSTOG ~ FALSE ; GO TO NEXT ; 00854900
END ; 00855000
DTOCT(ACCUM[1],3,INDENTVAL,COUNT) ; SCAN ; 00855100
GINDSAVE ~ INDENTVAL ~ INDENTVAL - 1 ; 00855200
IF NOT COMMA THEN GO TO NEXT ; SCAN ; 00855300
IF RESULT ! 3 THEN GO TO NEXT ; 00855400
DTOCT(ACCUM[1],3,PARLOW,COUNT); SCAN ; 00855500
GLSAVE ~ PARLOW ~ PARLOW - 1 ; 00855600
IF NOT COMMA THEN GO TO NEXT ; SCAN ; 00855700
IF RESULT ! 3 THEN GO TO NEXT ; 00855800
DTOCT(ACCUM[1],3,PARHIGH,COUNT) ; 00855900
GHSAVE ~ PARHIGH ; 00856000
IF PARHIGH > 72 OR PARHIGH { PARLOW THEN 00856100
BEGIN 00856200
DOCERROR( 1) ; GHSAVE ~ PARHIGH ~ 72 ; 00856300
END ; 00856400
GO TO MORE ; 00856500
END ; 00856600
IF Q = "4SKIP " THEN 00856700
BEGIN 00856800
SKIPVAL ~ 1 ; 00856900
SKIPTOG ~TRUE ; SCAN ; IF RESULT ! 3 THEN GO TO NEXT ; 00857000
DTOCT(ACCUM[1],3,SKIPVAL,COUNT) ; GO TO MORE ; 00857100
END ELSE 00857200
IF Q = "6INDEN" THEN 00857300
BEGIN 00857400
INDENTVAL ~0 ; 00857500
INDENTOG ~ TRUE ; SCAN ; IF RESULT ! 3 THEN GO TO NEXT ; 00857600
DTOCT(ACCUM[1],3,INDENTVAL,COUNT) ; GO TO MORE ; 00857700
END ; 00857800
IF Q = "4ONLY " AND INDEXTOG AND NOT INDEXFIXTOG THEN 00857810
INDEXONLYTOG ~ TRUE ; % "INDENT INDEX ONLY" SEEN. 00857820
GO TO MORE ; 00857900
RET: END ASTERCONTROLS ; 00858000
COMMENT DOCUMENT* 5 * * * * * * * * * * * * * * * * * * * * * * * * * 00858100
J. CONTROL PROCEDURES. 00858200
* END; 00858300
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * ; 00858400
PROCEDURE COPY ; 00858500
COMMENT COPIES TAPES OR CAST FILES ; 00858600
BEGIN 00858700
LABEL EOFC,EOFT,EOFCA ; 00858800
INTEGER I ; 00858900
DO READ(CARDS)[EOFC] UNTIL FALSE ; 00859000
EOFC: CLOSE(CARDS,RELEASE) ; 00859100
CLEAR(TBUFF,14) ; CLEAR(CASTBUFF,56) ; 00859200
IF TAPETOG THEN 00859300
BEGIN 00859400
DO BEGIN 00859500
READ(SWIN,10,TBUFF[*])[EOFT] ; 00859600
WRITE(SWOUT,10,TBUFF[*]) ; 00859700
IF LISTOG THEN ZPL(0,2,TBUFF) ; 00859800
END UNTIL FALSE ; 00859900
EOFT: REWIND(SWOUT) ; 00860000
LOCK(SWOUT,RELEASE) ; 00860100
END ELSE 00860200
BEGIN 00860300
DO BEGIN 00860400
READ(CASTSW[CASTINDEX],56,CASTBUFF[*])[EOFCA]; 00860500
WRITE(CASTOUT[CASTINDEX],56,CASTBUFF[*]) ; 00860600
IF LISTOG THEN 00860700
FOR I ~ 1 STEP 11 UNTIL 45 DO 00860800
BEGIN 00860900
MOVEWORDS(CASTBUFF[I],TBUFF,10) ; 00861000
ZPL(0,2,TBUFF); 00861100
END ; 00861200
END UNTIL FALSE ; 00861300
EOFCA: END ; 00861400
IF TAPETOG THEN CLOSE(SWOUT,RELEASE) ELSE 00861500
CLOSE(CASTOUT[CASTINDEX],RELEASE); 00861600
GO TO EOPROG ; 00861700
END COPY ; 00861800
COMMENT DOCUMENT* 21 * * * * * * * * * * * * * * * * * * * * * * * * *; 00861900
PROCEDURE SETUPCONTROLS ; 00862000
COMMENT SETS UP CONTROLS BASED ON READING DOLLAR CONTROL CARDS ; 00862100
BEGIN 00862200
LABEL L2,L4,RETURN,EOFERR,L5 ; 00862300
LABEL L3 ; 00862400
LABEL L6,L7,L8; 00862500
LABEL SL1,SL2; 00862600
LABEL SL3 ; 00862700
LABEL LOUT; 00862800
BOOLEAN SCANFLAG ; 00862900
BOOLEAN TEMPTOG; 00863000
DEFINE SCEN = BEGIN SCAN ; IF PERCENT OR ENDCARD THEN 00863001
GO TO RETURN ; END # ; 00863002
IF MONITOG THEN WRITE(PRINT,MONITFORM,"SETUPC","ONTROL") ;00863100
SCANFLAG ~ FALSE ; 00863200
IF LOOKFORDOLLAR THEN 00863300
BEGIN 00863400
MOVEWORDS(GLOBE[0],SAVEBUF[0],10); 00863500
FOR I ~ 8 STEP - 1 UNTIL 0 DO 00863600
IF BLANKTEST (SAVEBUF[I],1) THEN 00863700
BEGIN 00863800
SETCHAR(SAVEBUF[I+1],0,"~"); 00863900
GO TO LOUT; 00864000
END; 00864100
LOUT: 00864200
WRITE(SPOOUT,10,SAVEBUF[*]); 00864300
LOOKFORDOLLAR ~ FALSE ; FIRSTDOLLAR ~ TRUE ; 00864400
END ELSE 00864500
BEGIN 00864600
TEMPTOG ~ FIRSTDOLLAR; 00864700
FIRSTDOLLAR ~ FALSE ; 00864800
SCAN ; SCAN ; 00864900
IF Q = "4VOID " THEN 00865000
BEGIN 00865100
IF TEMPTOG THEN IF NOT BLANKTEST(GLOBE[9],1) OR 00865200
(ISEQ = 0) THEN ERROR(34); 00865300
VOIDTOG ~ TRUE ; SCAN ; 00865400
IF LISTOG OR LISTTOBACKUPTOG OR (DOCLISTOG AND 00865500
BLOCKTOG) OR ( DOCLISTOG AND DOCLISTFLAG) THEN 00865600
ZPG(ZLB) ; 00865700
IF RESULT ! 3 OR ENDTOG THEN ERROR(15) ; 00865800
DTOCT(ACCUM[1],3,JUNK ,COUNT) ; 00865900
OCTTODEC(JUNK,VOIDSEQ) ; 00866000
IF JUNK = 99999999 THEN GO TO EOFCARD ; 00866100
WHILE VOIDTOG DO READATAPE; 00866200
GO TO RETURN; 00866300
END ELSE 00866400
BEGIN 00866500
CLEAR(LISTBUFFER,14) ; 00866600
MOVEWORDS(GLOBE,LISTBUFFER,9) ; 00866700
WRITE(PRINT[DBL],15,LISTBUFFER[*]) ; 00866800
CLEAR(LISTBUFFER,14) ; 00866900
IF NOT ENDCARD THEN READATAPE ; 00867000
SCAN ; GO TO RETURN ; 00867100
END ; 00867200
TEMPTOG ~ FALSE; 00867300
END ; 00867400
SCAN ; SCAN ; 00867500
IF Q = "4VOID " THEN IF CHECKCHAR(GLOBE[9],7," ") THEN 00867600
ERROR(34) ELSE ERROR(33); 00867700
IF Q = "4COPY "THEN 00867800
BEGIN 00867900
SETCHAR(GLOBE[8],0,"$") ; 00868000
COPYTOG ~ TRUE ; SCAN ; 00868100
IF Q = "4TAPE " THEN 00868200
BEGIN 00868300
TAPETOG ~ TRUE ; SWFININD ~ 0 ; SWFOUTIND ~ 0 ; 00868400
SCAN ; IF Q="4DISK " OR Q="4DISC " THEN SWFOUTIND~1 00868500
ELSE IF Q="4LIST " THEN LISTOG ~ TRUE ; 00868600
END ELSE 00868700
IF Q = "4DISK " OR Q = "4DISC " THEN 00868800
BEGIN 00868900
TAPETOG ~ TRUE ; SWFININD ~ 1 ; SWFOUTIND ~ 0 ; 00869000
END ELSE 00869100
IF Q = "4CAST "THEN 00869200
BEGIN 00869300
SCAN ; IF Q = "1A " OR Q = "1B " OR Q = "1C " 00869400
THEN CASTINDEX ~ Q.[18:6] - 17 ELSE ERROR(2) ; 00869500
END ELSE ERROR(19) ; 00869600
SCAN ; IF Q = "4LIST " THEN LISTOG ~ TRUE ; 00869700
GO TO RETURN ; 00869800
END ; 00869900
IF NOT(Q = "4CAST " OR Q = "4CARD " OR Q = "4TAPE " OR 00870000
Q = "5MERGE" OR 00870100
Q = "7MAKEM" OR Q = "9MAKEM" OR 00870200
Q = "9PATCH" OR 00870300
Q = "4DISK " OR Q = "4DISC " OR 00870400
Q = "6BACKU" OR Q = "5LOGIC" ) THEN ERROR(16) ; 00870500
ONLYTOG ~ FALSE; 00870600
IF Q = "4CAST " THEN GO TO L5 ; 00870700
IF Q = "5MERGE" THEN 00870800
BEGIN 00870900
INTEGER BLOCKEXTENDER; 00871000
LABEL L6,L7,L8; 00871100
MERGETOG ~ TRUE; HOLDOFFTOG ~ OLDONLYTOG~FALSE; 00871200
L6: 00871300
SCAN; 00871400
L7: 00871500
IF ENDCARD THEN GO TO RETURN; 00871600
IF Q = "6BACKU" THEN 00871700
BEGIN 00871800
IF PRINTALLTOG THEN 00871900
BEGIN 00872000
DOCERROR (31); 00872100
GO TO L6; 00872200
END; 00872300
BACKIND ~ 1; 00872400
SCAN; IF Q = "4DISK" THEN 00872500
BEGIN 00872600
SCAN; BACKIND ~ 0; 00872700
END; 00872800
BACKUPTOG ~ SAVEBACKUPTOG ~ TRUE; 00872900
GO TO L7; 00873000
END ELSE 00873100
IF Q = "5PRINT" THEN PRINTOG ~ TRUE ELSE 00873200
IF Q= "4DUMP " THEN DUMPFLAG ~ TRUE ELSE 00873300
IF Q= "4BUGS " THEN BUILDEBUG ~ TRUE ELSE 00873400
IF Q= "4LIST " THEN 00873500
BEGIN 00873600
WRITE ( ZAR[*],DATEFORM,DATELIST); 00873700
ZPL(0,2,ZAR); ZPL(0,2,GLOBE); ZPG(0); 00873800
END ELSE 00873900
IF Q = "5TITLE" THEN TITLETOG ~ TRUE ELSE 00874000
IF Q = "6SINGL" THEN DOUBLEONLY ~ FALSE ELSE 00874100
IF Q = "3SIX " THEN 00874200
BEGIN 00874300
DOUBLEONLY ~ FALSE; 00874400
ZLCOUNTMAX~56; 00874500
SIXLINES ~ TRUE; 00874600
SCAN; IF RESULT =3 THEN 00874700
BEGIN 00874702
DTOCT(ACCUM[1],3,IJUNK,COUNT); 00874704
IF IJUNK<66 THEN ZLCOUNTMAX~IJUNK ELSE DOCERROR(21); 00874706
SCAN; 00874708
END ; 00874710
IF Q = "6DOUBL" THEN DOUBLEONLY ~ TRUE; 00874800
GO TO L7; 00874900
END ELSE 00875000
IF Q ="5EIGHT" THEN 00875002
BEGIN 00875004
SCAN; 00875006
IF RESULT ! 3 THEN GO TO L7; 00875008
DTOCT(ACCUM[1],3,IJUNK,COUNT); 00875010
IF IJUNK<88 THEN ZLCOUNTMAX~IJUNK ELSE DOCERROR(21); 00875012
% RIDICULOUS LINE COUNT 00875014
END ELSE 00875016
IF Q = "8DOCDE" THEN DOCDEBUG ~ TRUE ELSE 00875100
IF Q = "5DEBUG" THEN DEBUG ~TRUE ELSE 00875200
IF Q = "7MONIT" THEN MONITOG ~ TRUE ELSE 00875300
IF Q = "9DIREC" THEN 00875400
BEGIN 00875500
DIRTOG ~ TRUE; 00875600
DIRONLYTOG ~ FALSE; 00875700
SCAN; 00875800
IF Q = "4ONLY " THEN 00875900
BEGIN 00876000
DIRONLYTOG ~ TRUE; 00876100
SCAN; 00876200
END; 00876300
GO TO L7; 00876400
END ELSE 00876500
IF Q = "8PRINT" THEN 00876600
BEGIN 00876700
IF BACKUPTOG THEN DOCERROR (31); 00876800
BACKUPTOG ~ SAVEBACKUPTOG ~ FALSE; 00876900
PRINTALLTOG ~ HOLDOFFTOG ~ TRUE; 00877000
SCAN; 00877100
IF Q = "4ONLY " THEN 00877200
BEGIN 00877300
OLDONLYTOG ~ TRUE; 00877400
BACKIND~ 3; 00877500
SCAN; 00877600
END ELSE BACKIND ~ 4; 00877700
GO TO L7; 00877800
END ELSE 00877900
IF Q = "@PRINT" THEN 00878000
BEGIN 00878100
PRINTSELECTOG ~ HOLDOFFTOG ~ TRUE; 00878200
L8: SCAN; IF Q = "1$ " THEN 00878300
BEGIN 00878400
CONTCARD ~ TRUE; READATAPE; SCAN; 00878500
IF Q ! "1$ " THEN ERROR(7); 00878600
END; 00878700
IF Q = "1, " THEN SCAN; 00878800
IF ENDCARD THEN GO TO RETURN; 00878900
IF Q ="1* " THEN 00879000
BEGIN 00879100
SCAN; IF Q = "4ONLY " THEN 00879200
BEGIN 00879300
OLDONLYTOG ~ TRUE; 00879400
SCAN; 00879500
END; 00879600
GO TO L7; 00879700
END; 00879800
IF RESULT ! 3 THEN 00879900
BEGIN 00880000
DOCERROR (32); 00880100
GO TO L8; 00880200
END; 00880300
DTOCT (ACCUM[1],3,IJUNK,COUNT); 00880400
PAGEPOINT ~ PAGEPOINT + 1; 00880500
PAGES [PAGEPOINT] ~ IJUNK; 00880600
GO TO L8; 00880700
END; 00880800
IF Q = "8DEBEA" THEN DEBEATLETOG ~ TRUE; 00880900
IF Q = "2DA " THEN DATOG ~ TRUE; 00881000
GO TO L6; 00881100
END ELSE 00881200
IF Q = "7MAKEM" OR Q = "9MAKEM" THEN 00881300
BEGIN 00881400
INTEGER BLOCKEXTENDER; 00881500
LABEL L9; 00881600
DEFINE CHECKEND = IF FINDCHAR(NCR,"%") THEN GO TO RETURN#; 00881700
MAKEMULTOG~ TRUE; 00881800
ALLONE ~ FALSE; 00881900
SCAN; 00882000
IF Q = "4DISK " OR Q = "4DISC " THEN DISKOUTOG~ TRUE ELSE 00882100
IF Q = "4TAPE " THEN DISKOUTOG ~ FALSE ELSE 00882200
ERROR(30); 00882300
IF ENDCARD THEN GO TO RETURN; 00882400
CHECKEND; 00882500
SCAN; IF Q = "4DISK " OR Q = "4DISC " OR 00882600
Q = "4TAPE " THEN 00882700
BEGIN 00882800
ALLONE ~ TRUE; 00882900
IF Q = "4TAPE " THEN DISKINTOG ~FALSE ELSE DISKINTOG~TRUE; 00883000
CHECKEND; 00883100
SCAN; 00883200
END; 00883300
L9: 00883400
IF ENDCARD THEN GO TO RETURN; 00883500
IF Q = "4LIST " THEN 00883600
BEGIN 00883700
LISTOG ~ TRUE; 00883800
WRITE(ZAR[*],DATEFORM,DATELIST); 00883900
ZPL(0,2,ZAR);ZPL(0,2,GLOBE); ZPG(0); 00884000
CHECKEND; 00884100
SCAN; 00884200
IF Q = "4ONLY " THEN 00884300
BEGIN 00884400
LISTONLYTOG ~ TRUE; 00884500
CHECKEND; 00884600
SCAN; 00884700
END; 00884800
END; 00884900
IF Q= "9DIREC" THEN 00885000
BEGIN 00885100
DIRTOG ~ TRUE; 00885200
CHECKEND; 00885300
SCAN; 00885400
END; 00885500
IF Q = "5PUNCH" THEN 00885600
BEGIN 00885700
PUNCHTOG ~ TRUE; 00885800
CHECKEND; 00885900
SCAN; 00886000
END; 00886100
GO TO L9; 00886200
END; 00886300
IF Q = "6BACKU" THEN 00886400
BEGIN 00886500
BACKIND ~ 5; 00886600
SCAN; IF Q = "4DISK " OR Q = "4DISC " THEN 00886700
BEGIN 00886800
BACKIND ~2; 00886900
SCAN; 00887000
END; 00887100
PBACKONLY ~TRUE; 00887200
IF RESULT !3 THEN NOBACKUPRINTS ~ 1 ELSE 00887300
DTOCT(ACCUM[1],3,NOBACKUPRINTS,COUNT) ; 00887400
DO READATAPE UNTIL FALSE ; 00887500
END ; 00887600
IF Q = "4TAPE " THEN 00887700
BEGIN 00887800
TAPETOG ~ TRUE ; SWFININD ~ 0 ; SWFOUTIND ~ 0 ; 00887900
END ELSE 00888000
IF Q = "4DISK " OR Q = "4DISC " THEN 00888100
BEGIN 00888200
TAPETOG ~ TRUE ; SWFININD ~ 1 ; SWFOUTIND ~ 0 ; 00888300
END ELSE 00888400
IF Q = "9PATCH" THEN % "PATCHTAPE" 00888500
BEGIN 00888600
TAPETOG ~ TRUE; 00888700
SWFININD ~4; SWFOUTIND ~0; 00888800
END; 00888900
IF NOT (Q="4TAPE " OR Q = "4DISK " OR Q = "4DISC " OR 00889000
Q = "9PATCH" ) THEN GO TO L4; 00889100
CLEAR (LTSEQ,1); 00889200
READ (SWIN,10,TBUFF[*]) [EOFERR]; 00889300
TAPETOG ~ TRUE ; 00889400
IF MONITOG THEN WRITE(PRINT,15,TBUFF[*]) ; 00889500
GO TO L2; 00889600
EOFERR: 00889700
L2: IF ENDCARD THEN GO TO RETURN; 00889800
SCAN; 00889900
L4: IF ENDCARD THEN GO TO RETURN ; 00890000
CONTCARD ~ FALSE ; 00890100
IF Q = "1% " THEN GO TO RETURN ; 00890200
IF Q = "4CARD " THEN PATCHLETTER ~ " " ; 00890300
IF Q = "4TAPE " THEN 00890400
BEGIN 00890500
TAPETOG ~ TRUE ; SWFININD ~ 0 ; SWFOUTIND ~ 0 ; 00890600
END ELSE 00890700
IF Q = "4DISK " OR Q = "4DISC " THEN 00890800
BEGIN 00890900
TAPETOG ~ TRUE ; SWFININD ~ 1 ; SWFOUTIND ~ 0 ; 00891000
END ; 00891100
IF Q = "5DEBUG" THEN DEBUG ~ TRUE ; 00891200
IF Q = "6REMOT" THEN REMOTETOG ~TRUE ; 00891300
IF Q = "2OP " OR Q = "3OPS " THEN B35OPTOG ~ TRUE; 00891400
IF Q = "4GLYN " THEN GLYNTOG ~ TRUE ; 00891500
IF Q = "7DEBLA" THEN DEBLANKTOG ~ TRUE ; 00891600
IF Q = "4ONLY " THEN ONLYTOG ~ TRUE ; 00891700
IF Q = "9PROCP" THEN PROCPUNCH ~TRUE ELSE 00891800
IF Q = "7DOCON" THEN DOCONLY ~ TRUE ; 00891900
IF Q = "8DOCDE" THEN DOCDEBUG ~TRUE ; 00892000
IF Q="8DOCIN" THEN DOCINDEXTOG~TRUE; 00892002
IF Q = "@TAPEP" THEN % "TAPEPATCHES" 00892100
BEGIN 00892200
IF SWFININD =4 THEN ERROR(38); 00892300
TAPEPATCHES ~ TRUE; 00892400
PATCHIND ~ 1; 00892500
END; 00892600
IF Q = "5PATCH" AND TAPETOG THEN 00892700
BEGIN 00892800
IF SELECTIVEXREF THEN ERROR(32); 00892900
SELECTIVEXREF ~ TRUE; 00893000
PATCHTOG ~ TRUE; 00893100
END; 00893200
IF Q = "6ASSIG" THEN ASSIGNTOG ~ TRUE ; 00893300
IF Q = "4MAKE " THEN 00893400
BEGIN 00893500
MAKETOG ~ TRUE ; SCAN ; 00893600
IF Q = "6IRFIL" THEN MAKEIRTOG ~ TRUE 00893700
ELSE GO TO L4 ; 00893800
GO TO L2 ; 00893900
END ; 00894000
IF Q = "3BNF " THEN 00894100
BEGIN 00894200
IF SELECTIVEXREF THEN ERROR(32); 00894300
SELECTIVEXREF ~ TRUE; 00894400
BNFTOG ~ DOCTOG ~ TRUE ; 00894500
END ; 00894600
IF Q = "6SIMUL" THEN 00894601
BEGIN 00894603
SIMULATOG ~TRUE ; FILLALGOL ; 00894605
END ; 00894607
IF Q = "3BPL " THEN 00894700
BEGIN 00894800
BPLTOG ~ TRUE ; 00894900
FILLBPL; 00895000
END ; 00895100
IF Q = "7FORTR" THEN 00895200
BEGIN 00895300
FORTRTOG ~ TRUE ; 00895400
FILLFORTRAN; 00895500
END ; 00895600
IF Q = "3HOL " THEN HOLTOG ~ TRUE; 00895700
IF Q = "5ESPOL" THEN 00895800
BEGIN 00895900
ESPOLTOG ~ TRUE ; 00896000
FILLESPOL; 00896100
END; 00896200
IF Q = "5TRANS" THEN 00896300
BEGIN 00896400
TRANSTOG ~ TRUE; 00896500
DATATABLE ~ ESCAPETOG ~ FALSE; 00896600
ESIND ~ 0; 00896700
ASMLTOG ~ TRUE; 00896800
ALLSEGS ~ TRUE; 00896900
SL3: 00897000
SCAN; 00897100
IF Q = "4DATA " THEN 00897200
BEGIN 00897300
DATATABLE ~ TRUE; 00897400
SCAN; 00897500
END ; 00897600
IF Q = "6ESCAP" THEN 00897700
BEGIN 00897800
ESCAPETOG ~ TRUE; 00897900
SCAN; IF RESULT = 3 THEN 00898000
BEGIN 00898100
DTOCT(ACCUM[1],3,TEMP,COUNT); 00898200
IF TEMP > 5 THEN 00898300
BEGIN 00898400
DOCERROR(12) ; 00898500
TEMP ~ 5; 00898600
END ; 00898700
TEMP ~ TEMP -1 ; 00898800
FOR I ~ 0 STEP 1 UNTIL TEMP DO 00898900
BEGIN 00899000
SCAN; ESTABLE[I] ~ Q; 00899100
END ; 00899200
ESIND ~ TEMP ; 00899300
END ELSE 00899400
BEGIN 00899500
ESTABLE[0] ~ Q; 00899600
ESIND ~ 0; 00899700
END ; 00899800
SCAN; 00899900
END ; 00900000
IF Q = "4DATA " OR Q = "6ESCAP" THEN GO TO SL3; 00900100
IF Q ! "4SEGS " THEN GO TO L4; 00900200
ALLSEGS ~ FALSE; 00900300
SEGCOUNT ~ -1; 00900400
SCAN; 00900500
SL1: 00900600
IF Q = "1* " THEN GO TO SL2; 00900700
IF Q = "1$ " THEN 00900800
BEGIN 00900900
CONTCARD ~ TRUE; READATAPE; 00901000
SCAN; IF Q ! "1$ " THEN ERROR(7); 00901100
END; 00901200
IF ENDCARD THEN ERROR(39); 00901300
IF Q = "1, " THEN SCAN; 00901400
IF RESULT = 3 THEN 00901500
BEGIN 00901600
DTOCT(ACCUM[1],3,CHOOSEG[(SEGCOUNT ~SEGCOUNT +1)], 00901700
COUNT); 00901800
SCAN; 00901900
IF Q = "1- " THEN 00902000
BEGIN 00902100
SCAN; IF RESULT ! 3 THEN ERROR(37); 00902200
DTOCT(ACCUM[1],3,TEMP,COUNT); 00902300
IF (KJUNK ~ TEMP - (IJUNK~CHOOSEG[SEGCOUNT])) < 0 THEN 00902400
ERROR(37); 00902500
IF KJUNK + SEGCOUNT > 500 THEN ERROR(35); 00902600
FOR K ~ 1 STEP 1 UNTIL KJUNK DO 00902700
CHOOSEG[(SEGCOUNT ~SEGCOUNT +1)] ~ IJUNK + K; 00902800
SCAN; 00902900
END; 00903000
END; 00903100
GO TO SL1; 00903200
SL2: 00903300
IF SEGCOUNT < 0 THEN ERROR (36); 00903400
MAXSEG ~ SEGCOUNT; SEGCOUNT ~ 0; 00903500
GO TO L4; 00903600
END; 00903700
IF Q = "8DEBEA" THEN DEBEATLETOG ~ TRUE; 00903800
IF Q = "4FLOW " OR Q = "7ASMFL" OR Q = "5QFLOW" THEN 00903900
BEGIN 00904000
IF LISTTOBACKUPTOG THEN ERROR(25) ; 00904100
IF SELECTIVEXREF THEN ERROR(32); 00904200
SELECTIVEXREF ~ TRUE; 00904300
IF Q = "7ASMFL" THEN ASMFLOWTOG~TRUE; 00904400
IF Q = "5QFLOW" THEN QFLOWTOG ~ TRUE; 00904500
DOCLISTOG~LISTOG; 00904600
LISTOG~ FALSE; 00904700
IF BPLTOG THEN BPLFLOWTOG ~ TRUE ; 00904800
FLOWBOXTOG ~ TRUE ; 00904900
FLOWTOG ~ TRUE ; 00905000
SCAN ; IF Q = "5NOBOX" THEN FLOWBOXTOG ~ FALSE ELSE 00905100
IF Q = "6SYNTA" THEN FSYNTAXTOG~ TRUE ELSE GO TO L4; 00905200
GO TO L2 ; 00905300
END ; 00905400
IF Q = "#LISTB"THEN 00905500
BEGIN 00905600
LISTTOBACKUPTOG ~ TRUE ; 00905700
SAVEBACKUPTOG ~ BACKUPTOG ~ TRUE ; 00905800
END ; 00905900
IF Q = "4LIST "THEN 00906000
BEGIN 00906100
WRITE(ZAR[*],DATEFORM,DATELIST); 00906200
ZLB ~ IF LISTTOBACKUPTOG THEN 2 ELSE 0 ; 00906300
ZPL(0,2,ZAR); ZPL(0,2,GLOBE); ZPG(0) ; 00906400
LISTOG ~TRUE ; 00906500
SCAN ; IF CASTOG AND Q = "3DIR " THEN 00906600
BEGIN 00906700
ZF ~0 ; PRINTCASTDIRECTORY ; GO TO L2 ; 00906800
END ; 00906900
IF Q !"4ONLY " THEN GO TO L4 ; 00907000
LISTONLYTOG ~ TRUE ; GO TO L2 ; 00907100
END ; 00907200
IF Q = "6SINGL" THEN DOUBLEONLY ~ FALSE ; 00907300
IF Q = "3SIX " THEN 00907400
BEGIN 00907500
DOUBLEONLY ~ FALSE ; 00907600
ZLCOUNTMAX~56; 00907700
SIXLINES~TRUE; SCAN; 00907800
IF RESULT=3 THEN 00907802
BEGIN 00907804
DTOCT(ACCUM[1],3,IJUNK,COUNT); 00907806
SCAN; 00907808
IF IJUNK<66 THEN ZLCOUNTMAX~IJUNK ELSE DOCERROR(21); 00907810
END ; 00907812
IF Q = "6DOUBL" THEN DOUBLEONLY ~ TRUE ELSE 00907900
GO TO L4 ; GO TO L2 ; 00908000
END ELSE 00908100
IF Q="5EIGHT" THEN 00908102
BEGIN 00908104
SCAN; IF RESULT! 3 THEN GO TO L4; 00908106
DTOCT(ACCUM[1],3,IJUNK,COUNT); 00908108
IF IJUNK<88 THEN ZLCOUNTMAX~IJUNK ELSE DOCERROR(21); 00908110
END ; 00908112
IF Q = "6PPAGE" THEN 00908200
BEGIN 00908300
PUNCHPAGES ~ TRUE; 00908400
CLEAR(BLOCKBUFFER[0],14); 00908500
FILL BLOCKBUFFER [*] WITH "* OVER ","PAGE "; 00908600
SCAN; IF Q = "#INSER" THEN 00908700
BEGIN 00908800
FILL BLOCKBUFFER [*] WITH "* OVER ","INSERTPA", 00908900
"GE "; 00909000
INSTOG~TRUE; 00909100
SCAN; 00909200
IF RESULT = 3 THEN 00909300
BEGIN 00909400
DTOCT(ACCUM[1],3,INSINC,COUNT); 00909500
SCAN; 00909600
END ELSE INSINC ~0; 00909700
END; 00909800
IF Q = "5PUNCH" THEN 00909900
BEGIN 00910000
PUNCHTOG ~ TRUE; 00910100
SCAN; 00910200
END ELSE PUNCHTOG ~ FALSE; 00910300
GO TO L4; 00910400
END; 00910500
IF Q = "5BUILD" THEN 00910600
BEGIN 00910700
BUILDTOG ~ TRUE ; BUILDPUNCHTOG ~ FALSE ; 00910800
SCAN ; IF Q ! "5PUNCH" THEN GO TO L4 ; 00910900
BUILDPUNCHTOG ~ TRUE ; GO TO L2 ; 00911000
END ; 00911100
IF Q = "8RESER" THEN RESERVEDTOG ~ TRUE ; 00911200
IF Q = "6UPDAT" THEN 00911300
BEGIN 00911400
UPDATETOG~ TRUE; 00911500
CLEAR (CONTBUF,14); 00911600
FILL CONTID[*] WITH OCT2346456331456421, 00911700
OCT6331464560606060; 00911800
MOVECHARS (CONTID[0],CONTBUF[7],0,1,16); 00911900
END; 00912000
IF Q = "8REVIS" THEN 00912100
BEGIN 00912200
REVTOG ~ TRUE; 00912300
DOCREV~ 1; 00912400
SCAN; IF Q = "5CLEAR" THEN 00912500
BEGIN 00912600
REVTOG~ FALSE; SCAN; 00912700
END; 00912800
IF RESULT = 3 THEN 00912900
BEGIN 00913000
DTOCT(ACCUM[1],3,DOCREV,COUNT); 00913100
IF DOCREV > 100 THEN ERROR(29); 00913200
SCAN; 00913300
END; 00913400
FILL REVB[*] WITH OCT6060512565606060; 00913500
MOVECHARS (REVISIONS [DOCREV],REVB[0],6,6,2); 00913600
GO TO L4; 00913700
END; 00913800
IF Q = "9NOJUS"THEN DONTJUSTIFY ~ TRUE ; 00913900
IF Q = "5LARGE" THEN 00914000
BEGIN 00914100
BIGTOG ~TRUE ; 00914200
SCAN ; IF PERCENT OR ENDCARD THEN GO TO RETURN ; 00914300
IF RESULT ! 3 THEN GO TO L4 ; 00914400
DTOCT(ACCUM[1],3,CORESIZE,COUNT) ; 00914500
GO TO L2 ; 00914600
END ; 00914700
IF Q = "7SHUFF" THEN 00914800
BEGIN 00914900
IF SELECTIVEXREF THEN ERROR(32); 00915000
SELECTIVEXREF ~ TRUE; 00915100
00915200
IF NOT FINDCHAR(NCR,"%") THEN 00915300
BEGIN 00915400
SCAN; IF Q = "3NEW " THEN 00915500
IF NOT FINDCHAR (NCR,"%") THEN 00915600
BEGIN 00915700
SCAN; 00915800
NEWTOG ~ TRUE; 00915900
IF Q = "5PUNCH" THEN 00916000
BEGIN 00916100
PUNCHSW ~ 0;PUNCHTOG ~TRUE; 00916200
END ELSE 00916300
IF Q = "4TAPE " THEN SWFOUTIND ~ 0 ELSE 00916400
IF Q = "4DISK " OR Q = "4DISC " THEN SWFOUTIND ~1 ELSE 00916500
NEWTOG ~ FALSE ; 00916600
END ; 00916700
END ; 00916800
SHUFFLETOG ~ TRUE ; GO TO EOFCARD ; 00916900
END ; 00917000
IF Q = "4BUGS " THEN BUILDEBUG ~ TRUE ; 00917100
IF Q = "7COMME"THEN COMMENTOG ~ TRUE ; 00917200
IF Q = "6STRIN" THEN 00917300
BEGIN 00917400
STRINGTOG ~ TRUE ; STLENGTH ~ 8 ; SCAN ; 00917500
IF RESULT ! 3 THEN GO TO L4 ; 00917600
DTOCT(ACCUM[1],3,STLENGTH,COUNT) ; 00917700
END ; 00917800
IF Q = "4DUMP " THEN DUMPFLAG ~ TRUE ; 00917900
IF Q = "4SORT " THEN 00918000
BEGIN 00918100
IF SELECTIVEXREF THEN ERROR(32); 00918200
SELECTIVEXREF ~ TRUE; 00918300
SORTOG ~ TRUE; 00918400
END; 00918500
IF Q = "5ALPHA" THEN ALPHATOG ~TRUE ; 00918600
IF Q = "5LOGIC" THEN 00918700
BEGIN 00918800
LOGICTOG ~TRUE ; FIRSTCHAR ~ 0 ; LASTCHAR ~ 63 ; 00918900
END ; 00919000
IF Q = "3SEQ " THEN SEQTOG ~ TRUE ; 00919100
IF Q = "2DA " THEN DATOG ~ TRUE ; 00919200
IF Q = "5CHECK" THEN SEQTOG ~ TRUE ; 00919300
IF Q = "4VOID " THEN 00919400
BEGIN 00919500
VOIDTOG ~ TRUE ; SCAN ; 00919600
IF RESULT ! 3 OR ENDTOG THEN ERROR(15) ; 00919700
DTOCT(ACCUM[1],3,JUNK,COUNT) ; 00919800
OCTTODEC(JUNK,VOIDSEQ); 00919900
GO TO L2 ; 00920000
END ; 00920100
IF Q = "9PROCE" THEN 00920200
BEGIN 00920300
IF SELECTIVEXREF THEN ERROR(32); 00920400
SELECTIVEXREF ~ TRUE; 00920500
PROCTOG ~ TRUE ; BEGINTOG ~ FALSE ; 00920600
END ; 00920700
IF Q = "5COUNT" OR Q.[18:30] = "IDENT" THEN 00920800
BEGIN 00920900
IF SELECTIVEXREF THEN ERROR(32); 00921000
SELECTIVEXREF ~ TRUE; 00921100
COUNTOG ~ TRUE; 00921200
END; 00921300
IF Q = "8DOCUM" THEN 00921400
BEGIN 00921500
IF LISTTOBACKUPTOG THEN ERROR(26) ; 00921600
IF SELECTIVEXREF THEN ERROR(32); 00921700
SELECTIVEXREF ~ TRUE; 00921800
DOCLISTOG~LISTOG; 00921900
LISTOG ~ FALSE; 00922000
DOCTOG ~ TRUE ; 00922100
00922102
IF FINDCHAR(NCR,""") THEN 00922104
BEGIN 00922106
LABEL OK ; 00922108
SCEN ; IF RESULT ! 5 THEN GO TO OK ; 00922110
MOVEWORDS(ACCUM[1],FIRSTDOCID[1],9); 00922112
FIRSTDOCIDTOG ~ TRUE ; DOCIDTOG ~ TRUE ; 00922114
SCEN ; IF Q ! "2TO " THEN GO TO OK ; 00922116
SCEN ; IF RESULT ! 5 THEN GO TO OK ; 00922118
MOVEWORDS(ACCUM[1], LASTDOCID[1],9); 00922120
LASTDOCIDTOG ~ TRUE ; 00922122
SCEN ; 00922124
OK: 00922126
END ELSE 00922128
SCAN ; IF ( FINALDOCTOG ~ Q = "5FINAL") THEN GO TO L2 00922200
; IF (CONTOG ~ Q = "8CONTE" ) THEN 00922300
BEGIN 00922400
DOCTOG ~ FALSE ; SCAN; 00922500
IF Q = "4ONLY " THEN GO TO L2 ELSE GO TO L4; 00922600
END; 00922700
IF Q = "6SYNTA" THEN 00922800
BEGIN 00922900
SYNTAXTOG ~ TRUE ; SCAN ; 00923000
IF Q ! "5FINAL" THEN GO TO L4 ; 00923100
FINALDOCTOG ~ TRUE ; GO TO L2 ; 00923200
END ; 00923300
GO TO L4 ; 00923400
END ; 00923500
IF Q = "5BLOCK" THEN 00923600
BEGIN 00923700
IF LISTTOBACKUPTOG THEN ERROR(27) ; 00923800
IF SELECTIVEXREF THEN ERROR(32); 00923900
SELECTIVEXREF ~ TRUE; 00924000
BLOCKTOG ~TRUE ; CLEAR(BLOCKBUFFER,14) ; 00924100
SCAN ; IF RESULT ! 3 THEN GO TO L4 ELSE 00924200
BEGIN 00924300
DTOCT(ACCUM[1],3,BINDENT,COUNT) ; GO TO L2 ; 00924400
END ; 00924500
END ; 00924600
IF RESULT = 5 THEN 00924700
BEGIN 00924800
IF (HEADPOINT + COUNT + 1 ) < 72 THEN 00924900
BEGIN 00925000
MOVECHARS(ACCUM[1],HEADING[HEADPOINT DIV 8] , 3, 00925100
HEADPOINT.[45:3],COUNT); 00925200
HEADPOINT ~ HEADPOINT + COUNT +1 ; 00925300
END ; 00925400
GO TO L2 ; 00925500
END ; 00925600
IF Q = "7MONIT" THEN MONITOG ~ TRUE ; 00925700
IF Q = "9NAMEP" THEN 00925800
BEGIN 00925900
NAMEPUNCH ~ TRUE ; SCAN ; 00926000
IF Q ! "5BLANK" THEN GO TO L4 ; 00926100
BLANKNAMEPUNCH ~ TRUE ; GO TO L2 ; 00926200
END ; 00926300
IF Q = "5NAMES" THEN 00926400
BEGIN 00926500
BEGINTOG ~ FALSE ; 00926600
RESERVEDTOG ~ TRUE ; 00926700
IF XREFTOG THEN ERROR(11) ; 00926800
IF PROCTOG THEN ERROR(12) ; 00926900
IF SELECTIVEXREF THEN ERROR(32); 00927000
SELECTIVEXREF ~ TRUE; 00927100
L3: SCAN ; IF Q = "1$ " THEN 00927200
BEGIN 00927300
CONTCARD ~ TRUE ; READATAPE ; SCAN ; 00927400
IF Q! "1$ " THEN ERROR(7) ; 00927500
END ; 00927600
IF Q = "1* "THEN 00927700
BEGIN 00927800
NAMETOG ~ TRUE; GO TO L2; 00927900
END ; 00928000
IF COBOLTOG THEN 00928100
BEGIN 00928200
IF IDENTIFIER OR RESULT = 3 THEN 00928300
IF IDENTIFIER OR RESULT = 3 THEN 00928400
BEGIN 00928500
BUILDCOBID ; 00928600
IF SORTSCRAMBLE THEN Q ~Q; 00928700
END ; 00928800
GO TO L3 ; 00928900
END ; 00929000
00929100
00929200
IF FORTRTOG THEN IF RESULT = 3 THEN 00929300
IF SORTSCRAMBLE THEN Q~Q; 00929400
IF RESULT = 1 THEN IF SORTSCRAMBLE THEN Q ~ Q ; GO TO L3 ;00929500
END ; 00929600
L5: IF Q = "4CAST " THEN 00929700
BEGIN 00929800
INTEGER BLOCKEXTENDER; 00929900
SCAN ; CASTOG ~ TRUE ; TAPETOG ~ TRUE ; 00930000
IF Q.[18:6]="A" OR Q.[18:6] ="B" OR Q.[18:6] = "C" THEN 00930100
IF COUNT = 1 THEN CASTINDEX ~ Q.[18:6] - 17 ELSE ERROR(1) 00930200
ELSE ERROR(2) ; 00930300
FILLCASTLINKS ; 00930400
SCAN ; 00930500
IF Q = "3ALL " THEN 00930600
BEGIN 00930700
ALLTOG ~ TRUE ; SCAN ; 00930800
IF Q = "4FROM "THEN 00930900
BEGIN 00931000
FROMTOG ~ TRUE ; SCAN ; 00931100
MOVECHARS(ACCUM[1],FIRSTCASTID[1],3,0,COUNT) ; 00931200
FIRSTCASTID[0] ~ COUNT ; 00931300
SCAN ; IF Q ! "2TO " THEN ERROR(4) ; 00931400
SCAN ; IF Q ! "3END " THEN 00931500
BEGIN 00931600
MOVECHARS(ACCUM[1], LASTCASTID[1],3,0,COUNT) ; 00931700
LASTCASTID[0] ~ COUNT ; 00931800
END ELSE 00931900
BEGIN 00932000
TOENDTOG ~TRUE ; 00932100
LASTCASTID[0] ~ CASTLINKS[CASTLINKS[0]-1].[24:6] ; 00932200
MOVECHARS(CASTDIR[CASTLINKS[CASTLINKS[0]-1].[6:6], 00932300
CASTLINKS[CASTLINKS[0]-1].[12:6]], 00932400
LASTCASTID[1],CASTLINKS[CASTLINKS[0]-1].[18:6],0,LASTCASTID[0]) ; 00932500
END ; 00932600
END ELSE 00932700
BEGIN 00932800
IF Q ! "2TO "THEN ERROR(18) ; 00932900
SCAN ; IF Q ! "3END " THEN ERROR(18) ; 00933000
MOVECHARS(CASTDIR[CASTLINKS[1].[6:6],CASTLINKS[1].[12:6]],00933100
FIRSTCASTID[1], 00933200
CASTLINKS[1].[18:6],0,CASTLINKS[1].[24:6]) ; 00933300
FIRSTCASTID[0] ~ CASTLINKS[1].[24:6] ; 00933400
LASTCASTID[0] ~ CASTLINKS[CASTLINKS[0]-1].[24:6] ; 00933500
MOVECHARS(CASTDIR[CASTLINKS[CASTLINKS[0]-1].[6:6], 00933600
CASTLINKS[CASTLINKS[0]-1].[12:6]], 00933700
LASTCASTID[1],CASTLINKS[CASTLINKS[0]-1].[18:6],0,LASTCASTID[0]) ; 00933800
SCANFLAG ~ TRUE ; 00933900
END ; 00934000
END ELSE 00934100
BEGIN 00934200
MOVECHARS(ACCUM[1],FIRSTCASTID[1],3,0,COUNT) ; 00934300
FIRSTCASTID[0] ~ COUNT ; 00934400
END ; 00934500
MULTNAME[2] ~ " " ; 00934600
JUNK ~ IF FIRSTCASTID[0] > 7 THEN 7 ELSE 00934700
FIRSTCASTID[0] ; 00934800
MOVECHARS(FIRSTCASTID[1],MULTNAME[2],0,1,JUNK) ; 00934900
IF (HEADPOINT + FIRSTCASTID[0] + 1 ) < 72 THEN 00935000
BEGIN 00935100
MOVECHARS(FIRSTCASTID[1],HEADING[HEADPOINT DIV 8],0, 00935200
HEADPOINT.[45:3],FIRSTCASTID[0]) ; 00935300
HEADPOINT ~ HEADPOINT + 1 + FIRSTCASTID[0] ; 00935400
END ; 00935500
FCASTINDEX ~ FINDCASTID(FIRSTCASTID) ; 00935600
IF ALLTOG THEN 00935700
LCASTINDEX ~ FINDCASTID(LASTCASTID) ; 00935800
FCASTSEQ ~ CASTLINKS[FCASTINDEX].[30:18] ; 00935900
T1 ~ (FCASTSEQ - 1) DIV 5 + 1 ; 00936000
CASTPOINT ~ ((FCASTSEQ - 1) MOD 5 ) | 11 + 1 ; 00936100
NCASTRECS ~ CASTLINKS[FCASTINDEX+1].[30:18] - FCASTSEQ ; 00936200
NCASTRECS ~ NCASTRECS - 1 ; 00936300
IF CASTINDEX = 0 THEN 00936400
BEGIN 00936500
CASTAINDEX ~ CASTAINDEX + T1 - 1 ; 00936600
READ SEEK(CASTSW[CASTINDEX][CASTAINDEX]) ; 00936700
READ(CASTSW[CASTINDEX],56,CASTBUFF[*]) ; 00936800
END ELSE 00936900
FOR I ~ 1 STEP 1 UNTIL T1 DO 00937000
READ(CASTSW[CASTINDEX],56,CASTBUFF[*]) ; 00937100
CLEAR(LTSEQ,1); READCAST; 00937200
IF SCANFLAG THEN GO TO L4 ; 00937300
GO TO L2 ; 00937400
END ; 00937500
IF Q = "4XREF " THEN 00937600
BEGIN 00937700
00937800
SELECTIVEXREF ~ TRUE; 00937900
IF DOCTOG THEN DOCXREFTOG ~TRUE ELSE 00938000
BEGIN 00938100
XREFTOG ~ TRUE ; BEGINTOG ~ FALSE ; 00938200
SCAN ; IF RESULT ! 1 OR COUNT ! 1 THEN ERROR(5) ; 00938300
FIRSTCHAR ~ Q.[18:6] ; 00938400
SCAN ; IF Q = "2TO " THEN 00938500
BEGIN 00938600
SCAN ; IF RESULT !1 OR COUNT ! 1 THEN ERROR(6) ; 00938700
LASTCHAR ~ Q.[18:6] ; 00938800
END ELSE 00938900
BEGIN 00939000
LASTCHAR ~ FIRSTCHAR ; GO TO L4 ; 00939100
END ; 00939200
END ; 00939300
END ; 00939400
IF Q = "1$ " THEN 00939500
BEGIN 00939600
CONTCARD ~ TRUE ; READATAPE ; 00939700
SCAN ; IF Q ! "1$ " THEN ERROR(7) ; 00939800
GO TO L2 ; 00939900
END ; 00940000
IF Q.[18:30] = "RESEQ" THEN 00940100
BEGIN 00940200
IF CASTOG AND ALLTOG THEN ERROR(8) ; 00940300
RESEQTOG ~ TRUE ; NEWSEQ ~0 ; 00940400
IF Q.[12:6] ! 5 THEN RESEQONLY ~TRUE ; 00940500
IF NEWPATCHTOG THEN 00940600
BEGIN 00940700
PATCHRESEQ~ TRUE; RESEQTOG ~ FALSE; 00940800
END; 00940900
SCAN; 00941000
IF Q = "3DOC " THEN 00941100
BEGIN 00941200
SCAN; REMOVEOVERTOG ~ TRUE; LOOKFORSTAR ~ TRUE; 00941300
END; 00941400
IF RESULT ! 3 THEN GO TO L4; 00941500
BEGIN 00941600
DTOCT(ACCUM[1],3,SEQINC,COUNT) ; 00941700
SCAN ; IF NOT COMMA THEN GO TO L4 ELSE 00941800
BEGIN 00941900
SCAN ; IF RESULT ! 3 THEN ERROR(17) ; 00942000
DTOCT(ACCUM[1],3,NEWSEQ,COUNT) ; 00942100
BLANKNEWSEQ ~ SEQINC = 0 AND NEWSEQ = 0 ; 00942200
NEWSEQ ~ NEWSEQ - SEQINC ; GO TO L2 ; 00942300
END ; 00942400
END ; 00942500
END ; 00942600
IF Q = "3NEW " THEN 00942700
BEGIN 00942800
IF CASTOG AND ALLTOG THEN 00942900
BEGIN 00943000
SCAN ; IF Q ! "9MULTI"THEN ERROR(24) ; 00943100
NEWTOG ~ TRUE ; SWFOUTIND ~ 0 ; 00943200
NEWMULTITOG ~ TRUE ; 00943300
SCAN ; IF RESULT ! 1 THEN ERROR(22) ; 00943400
IF COUNT } 8 THEN ERROR(23) ; 00943500
MULTNAME[1] ~ " " ; 00943600
MOVECHARS(ACCUM[1],MULTNAME[1],3,1,COUNT) ; 00943700
FILL NEWTAPE WITH MULTNAME[1],MULTNAME[2] ; 00943800
GO TO L2 ; 00943900
END ; 00944000
NEWTOG ~ TRUE ; SCAN ; SWFOUTIND ~ 0 ; 00944100
IF Q ! "4TAPE " THEN 00944200
IF Q = "4DISK " OR Q = "4DISC " THEN SWFOUTIND ~ 1 ELSE 00944300
IF Q = "5PUNCH" THEN 00944400
BEGIN 00944500
PUNCHSW ~0 ; PUNCHTOG ~ TRUE ; 00944600
SCAN ; IF Q ="4TAPE " THEN PUNCHSW ~ 1 ELSE GO TO L4 ; 00944700
END ELSE 00944800
IF Q = "9PATCH" THEN % "PATCHTAPE" 00944900
BEGIN 00945000
SWFOUTIND ~ 4; NEWPATCHTOG ~ TRUE; 00945100
PATCHRESEQ ~ RESEQTOG; RESEQTOG ~ FALSE; 00945200
SCAN; IF Q = "5PUNCH" THEN 00945300
BEGIN 00945400
PUNCHSW~0; PUNCHTOG ~ TRUE; SCAN; 00945500
END; 00945600
GO TO L4; 00945700
END ELSE GO TO L4; 00945800
END ; 00945900
IF Q = "7NODEB"THEN NODEBUGTOG ~ TRUE ; 00946000
IF Q = "5STUFF" THEN PATCHTOG ~ DEBUGSTUFF ~ TRUE ; 00946100
IF Q = "5B3500" THEN 00946200
BEGIN 00946300
ASMLTOG ~ TRUE ; 00946400
IF TAPETOG THEN ASMLEDIT(TBUFF,ASMLBUFF[2,*]) ; 00946500
END ; 00946600
IF Q = "5COBOL" THEN 00946700
BEGIN 00946800
COBOLTOG ~ TRUE ; 00946900
FILLCOBOL; 00947000
IF TAPETOG THEN COBOLEDIT(TBUFF,COBOLBUFF[2,*]) ; 00947100
END ; 00947200
IF Q = "5PRINT" THEN PRINTOG ~ TRUE ; 00947300
IF Q = "6BACKU" THEN 00947400
BEGIN 00947500
BACKIND ~1 ; 00947600
SAVEBACKUPTOG ~ TRUE ; 00947700
SCAN; IF Q = "4DISK " OR Q = "4DISC " THEN 00947800
BEGIN 00947900
BACKIND ~0; 00948000
SCAN; 00948100
END; 00948200
BACKUPTOG ~TRUE; 00948300
IF Q ! "6UPDAT" THEN GO TO L4 ; 00948400
BEGIN 00948500
LABEL RDB,EOFB ; 00948600
ARRAY T[0:15]; 00948700
RDB: CLEAR(T,14) ; 00948800
IF BACKIND = 0 THEN 00948900
READ (OLDBACKUP,15,T[*]) [EOFB] ELSE 00949000
READ(OLDBAC,15,T[*]) [EOFB] ; 00949100
WRITE(BACKUP,15,T[*]) ; 00949200
GO TO RDB ; 00949300
EOFB: IF BACKIND = 0 THEN 00949400
LOCK(OLDBACKUP,RELEASE) ELSE LOCK (OLDBAC,RELEASE) ; 00949500
END ; 00949600
END ; 00949700
GO TO L2 ; 00949800
RETURN: 00949900
IF TAPEPATCHES THEN CLOSE (CARD,RELEASE); 00950000
IF FIRSTDOLLAR THEN 00950100
BEGIN 00950200
ZSP ~ ZSPERM~ IF DOUBLEONLY THEN 2 ELSE 1; 00950300
FIRSTDOLLAR ~FALSE ; 00950400
IF DOCTOG AND NEWTOG THEN ERROR(9) ; 00950500
LISTOG ~ LISTOG OR DOCLISTOG ; 00950600
BMON ~ BLOCKTOG OR DOCTOG OR FLOWTOG ; 00950700
FLOWDOCBLOCKTOG ~ BMON ; 00950800
PRINTOG ~ PRINTOG OR NOT SAVEBACKUPTOG ; 00950900
BACKUPTOG ~ BACKUPTOG OR (LISTOG AND BMON) ; 00951000
ZLB ~ IF LISTOG AND LISTTOBACKUPTOG THEN 2 ELSE 00951100
IF LISTOG THEN 0 ELSE IF LISTTOBACKUPTOG THEN 1 ELSE -1 ; 00951200
ZF ~ IF LISTOG AND BMON THEN 1 ELSE 00951300
IF PRINTOG AND BACKUPTOG THEN 2 ELSE 00951400
IF PRINTOG THEN 0 ELSE IF BACKUPTOG THEN 1 ELSE -1 ; 00951500
IF BMON AND LISTOG THEN 00951600
BEGIN 00951700
LISTOG ~FALSE ; DOCLISTOG ~ TRUE ; 00951800
END ; 00951900
AUTOPRINT ~ DOCLISTOG AND PRINTOG; 00952000
IF UPDATETOG THEN BACKIND ~0; 00952100
IF BACKUPTOG AND (DOCTOG OR FLOWTOG) THEN 00952200
BEGIN 00952300
WRITE (BACKUP,15,BLANKARRAY[*]); 00952400
BKRCRDCOUNT ~BKRCRDCOUNT+1; 00952500
END; 00952600
IF CONTOG THEN 00952700
BEGIN 00952800
DOCTOG ~ TRUE; ZZF ~ZF; ZF ~-1; 00952900
END; 00953000
END ; 00953100
WHILE VOIDTOG DO READATAPE; 00953200
IF COPYTOG THEN COPY ; 00953300
END SETUPCONTROLS ; 00953400
COMMENT DOCUMENT* 23 * * * * * * * * * * * * * * * * * * * * * * * ; 00953500
PROCEDURE READATAPE ; 00953600
COMMENT RESPONSIBLE FOR READING SOURCE FILES AND PATCH CARDS,SELECTING 00953700
RECORDS BY SEQUENCE NUMBER, AND FOR DOING SOURCE FILE 00953800
MAINTENANCE (EXCEPT "COPY") AND LISTING ; 00953900
BEGIN 00954000
LABEL RETURN,L,LL,ENDREAD ; 00954100
LABEL MORE1,MORE2 ; 00954200
LABEL EOF,EOFOVER; 00954300
LABEL START ; 00954400
LABEL AROUND ; 00954500
LABEL LISTCARDS; 00954600
INTEGER TEMP ; 00954700
BOOLEAN TEMPTOG; 00954800
IF MONITOG THEN WRITE(PRINT,MONITFORM,"READAT","APE ") ;00954900
TEMPTOG ~ DOCOUTPUT; DOCOUTPUT ~ FALSE; 00955000
START: 00955100
NEWCARD ~ TRUE; 00955200
IF DEVICE = 1 THEN 00955300
BEGIN 00955400
IF LOOKFORDOLLAR THEN 00955500
BEGIN 00955600
L: READ(CARDS,10,CBUFF[*]) ; 00955700
IF CHECKDOLLAR(CBUFF[0]) THEN 00955800
BEGIN 00955900
IF CHECKDOLLAR(CARD(0))AND 00956000
WORDEQUAL(CBUFF[9],CARDS(9),1) THEN GO TO L ; 00956010
END ELSE 00956100
BEGIN 00956200
LISTOG ~ TRUE ; ZLB ~ 0 ; ZF ~ - 1 ; 00956300
LISTCARDTOG ~ TRUE ; 00956400
LOOKFORDOLLAR ~ FALSE ; 00956500
GO TO LISTCARDS; 00956600
END ; 00956700
END ELSE 00956800
BEGIN 00956900
LL: READ(CARDS,10,CBUFF[*])[EOFCARD] ; 00957000
END ; 00957100
IF NOT CHECKDOLLAR(CBUFF[0]) THEN 00957200
IF ASMLTOG THEN ASMLEDIT(CBUFF,ASMLBUFF[1,*]) ; 00957300
IF NOT CHECKDOLLAR(CBUFF[0]) THEN 00957400
IF COBOLTOG THEN COBOLEDIT(CBUFF,COBOLBUFF[1,*]) ; 00957500
IF SEQTOG THEN IF SEQCOMP(CBUFF[9],LCSEQ)! 1 THEN 00957600
DOCERROR(19) ; 00957700
MOVEWORDS (CBUFF[9],LCSEQ,1); 00957800
END ELSE 00957900
BEGIN 00958000
MORE1: 00958100
IF CASTOG THEN READCAST ELSE 00958200
READ(SWIN,10,TBUFF[*])[EOF] ; 00958300
IF ASMLTOG THEN ASMLEDIT(TBUFF,ASMLBUFF[2,*]) ; 00958400
IF COBOLTOG THEN COBOLEDIT(TBUFF,COBOLBUFF[2,*]) ; 00958500
IF NOT NEWPATCHTOG THEN 00958600
IF CHECKCHAR(TBUFF,0,"$") THEN GO TO MORE1 ; 00958700
IF SEQTOG THEN IF SEQCOMP(TBUFF[9],LTSEQ) ! 1 THEN 00958800
DOCERROR(20) ; 00958900
MOVEWORDS (TBUFF[9],LTSEQ,1); 00959000
END ; 00959100
GO TO EOFOVER; 00959200
EOF: 00959300
MOVEWORDS (NINES,TBUFF[9],1); 00959400
EOFOVER: 00959500
IF SEQCOMP(CBUFF[9],TBUFF[9]) ! 1 OR 00959600
NOT TAPETOG AND NOT ALLTOG THEN 00959700
BEGIN 00959800
DEVICE ~ 1 ; MOVEWORDS(CBUFF[0],GLOBE[0],10) ; 00959900
PATCHCARD ~ TRUE ; 00960000
SETCHAR(LISTBUFFER[12],3,PATCHLETTER) ; 00960100
PATCHFLAG ~FALSE ; 00960200
IF TAPETOG THEN IF SEQCOMP(CBUFF[9],TBUFF[9]) =2 THEN 00960300
IF NOT (SEQCOMP(TBUFF[9],NINES) =2 ) THEN 00960400
BEGIN 00960500
IF PATCHTOG THEN 00960600
BEGIN 00960700
MOVEWORDS(TBUFF[0],GLOBE[0],10) ; PATCHFLAG ~TRUE ; 00960800
IF DEBUGSTUFF THEN 00960900
BEGIN 00961000
SETCHAR(GLOBE[8],5,"%") ; 00961100
SETCHAR(GLOBE[8],6,"%") ; 00961200
END ; 00961300
WRITE(PUNCH,10,GLOBE[*]) ; 00961400
END ELSE PATCHFLAG ~FALSE ; 00961500
MORE2: 00961600
IF CASTOG THEN READCAST ELSE 00961700
READ(SWIN,10,TBUFF[*])[EOF] ; 00961800
IF ASMLTOG THEN ASMLEDIT(TBUFF,ASMLBUFF[2,*]) ; 00961900
IF COBOLTOG THEN COBOLEDIT(TBUFF,COBOLBUFF[2,*]) ; 00962000
IF NOT NEWPATCHTOG THEN 00962100
IF CHECKCHAR(TBUFF,0,"$") THEN GO TO MORE2 ; 00962200
IF SEQTOG THEN IF SEQCOMP(TBUFF[9],LTSEQ) =0 THEN 00962300
DOCERROR(20) ; 00962400
MOVEWORDS (TBUFF[9],LTSEQ,1); 00962500
END ; 00962600
END ELSE 00962700
BEGIN 00962800
DEVICE ~ 2 ; MOVEWORDS(TBUFF[0],GLOBE[0],10) ; 00962900
PATCHCARD ~FALSE ; 00963000
CLEAR(LISTBUFFER[12],0) ; 00963100
END ; 00963200
IF BPLFLOWTOG THEN 00963300
BEGIN 00963400
IF DEBUGREC(GLOBE[0],0) THEN 00963500
CLEARCHAR(GLOBE[0],0,2) ELSE CLEAR(GLOBE[0],8) ; 00963600
END ; 00963700
IF LISTCARDTOG THEN 00963800
BEGIN 00963900
LISTCARDS: 00964000
CLEAR(LISTBUFFER,14) ; 00964100
READ (CARDS,10,LISTBUFFER[*] ) [EOFCARD]; 00964200
IF SEQCOMP(LISTBUFFER[9],LCSEQ) ! 1 THEN 00964300
FOR I ~ 0 STEP 1 UNTIL 7 DO 00964400
SETCHAR(LISTBUFFER[11],I,"*") ; 00964500
MOVEWORDS(LISTBUFFER[9],LCSEQ,1); 00964600
WRITE(PRINT[DBL],15,LISTBUFFER[*]) ; 00964700
GO TO LISTCARDS; 00964800
END ; 00964900
MOVEWORDS(GLOBE[9],SEQ,1) ; 00965000
LASTSEQ ~ ISEQ; 00965100
DECTOOCT(SEQ,ISEQ); 00965200
IF VOIDTOG THEN IF SEQCOMP(SEQ,VOIDSEQ) } 1 THEN 00965300
VOIDTOG ~ FALSE ELSE GO TO RETURN; 00965400
DECTOOCT(GLOBE[9],TEMP) ; 00965500
NOTLAST ~ ( TEMP MOD 1000000) ! 999999 ; 00965600
LCR ~ MKABS(GLOBE[W]) ; NCR ~ LCR - W ; 00965700
DOLLARFLAG ~ EXAMINE (NCR) = "$" AND NOT NEWPATCHTOG; 00965800
IF PATCHTOG AND NOT PATCHCARD THEN GO TO START ; 00965900
IF DOCTOG OR REMOVEOVERTOG THEN 00966000
ASTERFLAG ~ EXAMINE(NCR) = "*" AND LOOKFORSTAR ; 00966100
IF ASTERFLAG THEN ASTERPATCHED~ 00966200
DEVICE=1 AND TAPETOG; 00966300
IF NOT DOLLARFLAG THEN CARDTALLY ~ CARDTALLY + 1 ; 00966400
IF ASMLTOG THEN 00966500
NOTBLANK~BLANKTEST(ASMLBUFF[DEVICE,1],9) OR 00966600
NOT CHECKCHAR(ASMLBUFF[DEVICE,0],7," ") ELSE 00966700
IF COBOLTOG THEN 00966800
NOTBLANK~ BLANKTEST(COBOLBUFF[DEVICE,1],9) OR 00966900
NOT CHECKCHAR(COBOLBUFF[DEVICE,0],6," ") OR 00967000
NOT CHECKCHAR(COBOLBUFF[DEVICE,0],7," ") ELSE 00967100
IF NEWPATCHTOG THEN NOTBLANK ~ TRUE ELSE 00967200
NOTBLANK ~ BLANKTEST(GLOBE,9) ; 00967300
IF FORTRTOG THEN 00967400
IF HOLTOG THEN 00967500
BEGIN 00967600
MOVEWORDS(GLOBE[0],COBACCUM[0],9); 00967700
HOLCONVERT(COBACCUM,GLOBE); 00967800
END ; 00967900
IF DEBLANKTOG AND NOT NOTBLANK THEN GO TO START ; 00968000
IF NODEBUGTOG AND DEBUGREC(GLOBE[8],5) THEN 00968100
NOTBLANK ~FALSE ; 00968200
IF REMOVEOVERTOG THEN 00968300
IF ASTERFLAG THEN 00968400
BEGIN 00968500
FIXCOL73(LCR); 00968600
SCAN; IF FINDCHAR(NCR,"%") THEN GO TO AROUND ; 00968700
SCAN ; IF Q = "4OVER " THEN GO TO START ELSE 00968800
DO BEGIN 00968900
IF Q ! "#INSER" THEN IF FINDCHAR(NCR,"%") THEN 00969000
GO TO AROUND ; 00969100
IF Q = "#INSER" THEN 00969200
BEGIN 00969300
REPLACEIT; GO TO AROUND; 00969400
END ; 00969500
SCAN ; 00969600
END UNTIL FALSE ; 00969700
AROUND: 00969800
END ; 00969900
IF RESEQTOG AND NOT DOLLARFLAG AND NOTBLANK THEN 00970000
IF NOTLAST THEN 00970100
BEGIN 00970200
MOVEWORDS(GLOBE[9],OLDSEQ,1) ; 00970300
IF NOT VOIDTOG THEN NEWSEQ ~ NEWSEQ + SEQINC ; 00970400
IF BLANKNEWSEQ THEN CLEAR(GLOBE[9],0) ELSE 00970500
OCTTODEC(NEWSEQ,GLOBE[9]) ; 00970600
MOVEWORDS(GLOBE[9],SEQ,1) ; 00970700
END ; 00970800
IF PATCHRESEQ THEN 00970900
BEGIN 00971000
MOVEWORDS(GLOBE[9],OLDSEQ,1); 00971100
IF LASTSEQ > ISEQ AND ISEQ = 0 THEN 00971200
BEGIN 00971300
NEWSEQ ~ FIRSTSEQ ~LASTSEQ; 00971400
NEWSEQ~NEWSEQ+SEQINC; 00971500
OCTTODEC(NEWSEQ,GLOBE[9]); 00971600
END ELSE 00971700
IF ISEQ = 0 AND LASTSEQ = 0 THEN 00971800
BEGIN 00971900
NEWSEQ~NEWSEQ+SEQINC; 00972000
OCTTODEC(NEWSEQ,GLOBE[9]); 00972100
END ELSE 00972200
IF LASTSEQ = 0 AND ISEQ =FIRSTSEQ THEN 00972300
BEGIN 00972400
NEWSEQ~NEWSEQ+SEQINC; 00972500
OCTTODEC(NEWSEQ,GLOBE[9]); 00972600
END; 00972700
MOVEWORDS(GLOBE[9],SEQ,1); 00972800
END; 00972900
IF NOT BLANKTEST(GLOBE[9],1) AND NOT DOLLARFLAG AND NOTBLANK 00973000
THEN 00973100
BEGIN 00973200
XREFSEQ ~ XREFSEQ + SEQINC ; 00973300
SEQBLANKTOG ~ TRUE ; 00973400
END ; 00973500
IF (LISTOG OR LISTTOBACKUPTOG OR 00973600
(DOCLISTOG AND BLOCKTOG) OR 00973700
(DOCLISTOG AND DOCLISTFLAG)) AND NOT 00973800
DOLLARFLAG AND NOT VOIDTOG AND NOT CONTCARD THEN 00973900
BEGIN 00974000
MOVEWORDS(GLOBE[0],LISTBUFFER[2],10) ; 00974100
IF (RESEQTOG AND NOTBLANK) OR PATCHRESEQ THEN 00974200
IF COBOLTOG OR ASMLTOG THEN 00974300
MOVECHARS(OLDSEQ,LISTBUFFER[13],2,2,6) 00974400
ELSE 00974500
MOVEWORDS(OLDSEQ,LISTBUFFER[13],1) ; 00974600
IF NOT (RESEQTOG OR PATCHRESEQ) AND NOT LISTONLYTOG 00974700
AND SEQBLANKTOG THEN 00974800
OCTTODEC(XREFSEQ,LISTBUFFER[11]) ; 00974900
IF REMOTETOG THEN 00975000
BEGIN 00975100
CLEAR(LISTBUFFER,14) ; 00975200
MOVEWORDS(GLOBE,LISTBUFFER,10) ; 00975300
END ; 00975400
IF ASMLTOG THEN 00975500
BEGIN 00975600
IF RESEQTOG THEN CLEAR(LISTBUFFER[0],11) ELSE 00975700
CLEAR(LISTBUFFER,14) ; 00975800
MOVEWORDS(ASMLBUFF[DEVICE,*],LISTBUFFER[2],10) ; 00975900
IF RESEQTOG THEN 00976000
MOVECHARS(GLOBE[9],LISTBUFFER[0],2,1,6); 00976100
END ; 00976200
IF COBOLTOG THEN 00976300
BEGIN 00976400
CLEAR(LISTBUFFER,14) ; 00976500
MOVEWORDS(COBOLBUFF[DEVICE,*],LISTBUFFER,10); 00976600
IF RESEQTOG THEN 00976700
MOVECHARS(GLOBE[9],LISTBUFFER[0],2,0,6); 00976800
END ; 00976900
IF RESEQTOG AND NOTBLANK OR NOT RESEQTOG THEN 00977000
IF DOUBLEONLY THEN ZPL(ZLB,2,LISTBUFFER) ELSE 00977100
ZPL(ZLB,1,LISTBUFFER); 00977200
END ; 00977300
IF ASTERFLAG AND DOCTOG THEN 00977400
BEGIN 00977500
OLDASEQ~ASAVESEQ ; 00977600
ASAVESEQ~ ISEQ; 00977700
IF SEQBLANKTOG THEN 00977800
BEGIN 00977900
OCTTODEC(XREFSEQ,SEQ) ; SEQBLANKTOG ~ FALSE ; 00978000
END ; 00978100
FIXCOL73(LCR) ; ASTERCONTROLS ; GO TO ENDREAD ; 00978200
END ; 00978300
IF DOLLARFLAG THEN 00978400
BEGIN 00978500
FIXCOL73(LCR) ; 00978600
SETUPCONTROLS ; GO TO ENDREAD ; 00978700
END ; 00978800
IF TRANSTOG THEN 00978900
MOVEWORDS(ASMLBUFF[DEVICE,0],GLOBE[0],10); 00979000
IF NEWTOG AND NOT VOIDTOG THEN 00979100
IF NOTLAST THEN 00979200
IF (RESEQTOG AND NOTBLANK) OR NOT RESEQTOG THEN 00979300
BEGIN 00979400
IF RESEQTOG THEN 00979500
IF COBOLTOG THEN 00979600
MOVECHARS(GLOBE[9],COBOLBUFF[DEVICE,0],2,0,6) ELSE 00979700
IF ASMLTOG THEN 00979800
MOVECHARS(GLOBE[9],ASMLBUFF[DEVICE,0],2,1,6); 00979900
IF NOT PUNCHTOG THEN 00980000
IF ASMLTOG THEN 00980100
WRITE(SWOUT,10,ASMLBUFF[DEVICE,*]) ELSE 00980200
IF COBOLTOG THEN 00980300
WRITE(SWOUT,10,COBOLBUFF[DEVICE,*]) ELSE 00980400
WRITE(SWOUT,10,GLOBE[*]) ; 00980500
IF PUNCHTOG THEN 00980600
IF ASMLTOG THEN 00980700
WRITE(NEWPUNCH[PUNCHSW],10,ASMLBUFF[DEVICE,*]) ELSE 00980800
IF COBOLTOG THEN 00980900
WRITE(NEWPUNCH[PUNCHSW],10,COBOLBUFF[DEVICE,*]) ELSE 00981000
WRITE(NEWPUNCH[PUNCHSW],10,GLOBE[*]); 00981100
END ; 00981200
IF NEWTOG THEN NEWTAPEOPENED ~ TRUE ; 00981300
IF INVTOG THEN 00981400
BEGIN 00981500
FOR IJUNK ~ 1 STEP 1 UNTIL INVCH[0] DO 00981600
SETCHAR(GLOBE[INVCH[IJUNK] DIV 8] , INVCH[IJUNK].[45:3], 00981700
12) ; IF NOT INVALLTOG THEN INVTOG ~FALSE ; 00981800
Q.[18:6] ~ "%" ; 00981900
END ; 00982000
ENDREAD: 00982100
IF SEQBLANKTOG THEN 00982200
BEGIN 00982300
SEQBLANKTOG ~ FALSE ; OCTTODEC(XREFSEQ,SEQ) ; 00982400
END ; 00982500
RETURN: 00982600
IF NOT TRANSTOG THEN 00982700
FIXCOL73(LCR) ; 00982800
IF ONLYTOG AND NOT VOIDTOG THEN GO TO START ; 00982900
IF FORTRTOG THEN 00983000
BEGIN 00983100
IF CHECKCHAR(GLOBE[0],0,"C") THEN GO TO START; 00983200
IF CHECKCHAR(GLOBE[0],0,"*") THEN GO TO START; 00983300
END ; 00983400
IF NEWMULTITOG THEN GO TO START ; 00983500
IF NOTLAST THEN 00983600
IF NOT TRANSTOG THEN 00983700
IF NOT NOTBLANK THEN GO TO START; 00983800
IF NOT VOIDTOG THEN 00983900
IF LISTONLYTOG OR RESEQONLY THEN GO TO START ; 00984000
DOCOUTPUT ~ TEMPTOG; 00984100
END READATAPE ; 00984200
COMMENT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ; 00984300
COMMENT DOCUMENT* PAGE INDEX SKIP 2 * * * * * * * * * * * * * * * * 00984400
3. FIRST EXECUTABLE STATEMENT. 00984500
* SKIP 2 CODE 1* * * * * * * * * * * * * * * * * * * * * * * * * * * ; 00984600
DATE ~ "5 OC68" ; % % % % 00984700
DISCMCP ~TRUE ; DOCONLY ~ FALSE ; 00984800
NOSPOTOG ~ REMOTETOG ~ FALSE ; 00984900
STARTIME ~ TIME(1) ; 00985000
PROCTIME ~ TIME(2) ; 00985100
ZLCOUNTMAX~78; 00985200
PROGID~ "JONES "; 00985300
WRITE(SPOOUT,STARTJOB,PROGID,DATE); 00985400
CORESIZE ~ 6000 ; 00985500
IF DOCONLY THEN DOCTOG ~TRUE ; 00985600
BEGIN 00985700
COMMENT BLOCK TO COMPUTE CURRENT DATE ETC ; 00985800
ARRAY MONTHS[0:12] ; 00985900
COMMENT DOCUMENT* 35 * * * * * * * * * * * * * * * * * * * * * * * * ; 00986000
PROCEDURE DATECONVERT(YEAR,MONTH,DAY,HOUR,MINUTE,SECOND, 00986100
TIME0,TIME1) ; 00986200
VALUE TIME0,TIME1 ; 00986300
REAL TIME0,TIME1 ; 00986400
INTEGER YEAR,MONTH,DAY,HOUR,MINUTE,SECOND ; 00986500
COMMENT ASKS MCP FOR TIME AND CONVERTS ANSWER ; 00986600
BEGIN 00986700
INTEGER I,DAYS ; 00986800
REAL TEMP ; 00986900
LABEL GOOD,CONT ; 00987000
ARRAY MONDAYS[0:15] ; 00987100
FILL MONDAYS[*]WITH 0, 00987200
31,59,90,120,151,181,212,243,273,304,334,365 ; 00987300
COMMENT CHECK FOR LEAP YEAR AND FIX IT UP; 00987400
00987500
00987600
00987700
TEMP ~ TIME0 ; 00987800
DTOCT(TEMP,3,YEAR,2) ; DTOCT(TEMP,5,DAYS,3) ; 00987900
IF YEAR MOD 4 = 0 AND YEAR MOD 100 ! 0 THEN 00987910
FOR I ~ 2 STEP 1 UNTIL 12 DO 00987911
MONDAYS[I]~ MONDAYS[I] + 1 ; 00987912
FOR I ~ 1 STEP 1 UNTIL 12 DO 00988000
BEGIN 00988100
IF DAYS { MONDAYS[I] THEN GO TO GOOD ; 00988200
END ; 00988300
MONTH ~ 12 ; DAY ~ 31 ; GO TO CONT ; 00988400
GOOD: MONTH ~ I ; DAY ~ DAYS - MONDAYS[I-1] ; 00988500
CONT: TEMP ~ TIME1 ; 00988600
HOUR ~ TEMP DIV 216000.0 ; 00988700
MINUTE ~ (TEMP DIV 3600) MOD 60 ; 00988800
SECOND ~(TEMP DIV 60 ) MOD 60 ; 00988900
END DATECONVERT ; 00989000
COMMENT DOCUMENT* 31 * * * * * * * * * * * * * * * * * * * * * * * * ; 00989100
STREAM PROCEDURE FILLDATEBUFF(DAY,MONTHA,YEAR,DATEBUFF) ; 00989200
COMMENT SETS UP DATEBUFF WITH RESULT OF DATECONVERT AND TABLES ; 00989300
BEGIN 00989400
DI ~ DATEBUFF ; DS ~ 16 LIT " " ; 00989500
SI ~ DAY ; DI ~ DATEBUFF ; DS ~ 2 DEC ; 00989600
SI ~ MONTHA ; SI ~SI + 5 ; DI ~ DI + 1 ; DS ~ 3 CHR ; 00989700
SI ~ YEAR ; DI ~ DI + 1 ; DS ~ 2 DEC ; 00989800
SI ~ DATEBUFF ; IF SC ="0" THEN 00989900
BEGIN 00990000
SI ~SI + 9 ; DI ~ DATEBUFF ; DS ~ 1 LIT " " ; 00990100
END ; 00990200
END FILL DATEBUFF ; 00990300
FILL MONTHS[*] WITH 0,"JAN","FEB","MAR","APR","MAY", 00990400
"JUN","JUL","AUG","SEP","OCT","NOV","DEC" ; 00990500
DATECONVERT(YEAR,MONTH,DAY,HOUR,MINUTE,SECOND, 00990600
TIME(0),TIME(1)) ; 00990700
MONTHA ~ MONTHS[MONTH] ; 00990800
FILLDATEBUFF(DAY,MONTHA,YEAR,DATEBUFF) ; 00990900
END ; 00991000
MAXCOLS ~ IF REMOTETOG THEN 68 ELSE 118 ; 00991100
TEMP ~ 99999999; OCTTODEC (TEMP,NINES); 00991200
FILL SPOMESS[1,*] WITH "NO DOCUM","ENT FOUN","D ~ "; 00991300
FILL SPOMESS[2,*] WITH "DOCUMENT"," FOUND ~"; 00991400
FILL SPOMESS [3,*] WITH "FLOWCHAR","T FOUND ","~ "; 00991500
FILL SPOMESS[4,*] WITH "NO FLOWC","HART FOU","ND ~ "; 00991600
FILL REVISIONS [*] WITH " ", 00991700
" AA"," AB"," AC"," AD"," AE", 00991800
" AF"," AG"," AH"," AJ"," AK", 00991900
" AL"," AM"," AN"," AP"," AR", 00992000
" AS"," AT"," AU"," AV"," AW", 00992100
" AX"," AY"," AZ"," BA"," BB", 00992200
" BC"," BD"," BE"," BF"," BG", 00992300
" BH"," BJ"," BK"," BL"," BM", 00992400
" BN"," BP"," BR"," BS"," BT", 00992500
" BU"," BV"," BW"," BX"," BY", 00992600
" BZ"," CA"," CB"," CC"," CD", 00992700
" CE"," CF"," CG"," CH"," CJ", 00992800
" CK"," CL"," CM"," CN"," CP", 00992900
" CR"," CS"," CT"," CU"," CV", 00993000
" CW"," CX"," CY"," CZ"," DA", 00993100
" DB"," DC"," DD"," DE"," DF", 00993200
" DG"," DH"," DJ"," DK"," DL", 00993300
" DM"," DN"," DP"," DR"," DS", 00993400
" DT"," DU"," DV"," DW"," DX", 00993500
" DY"," DZ"," EA"," EB"," EC", 00993600
" ED"," EE"," EF"," EG"," EH"; 00993700
BEGIN 00993800
INTEGER BLOCKEXTENDER; 00993900
ZNOSKIP ~ FALSE; 00994000
PATCHPAGE ~ FALSE; 00994100
BACKIND ~0; 00994200
DOCOUTPUT ~ FALSE; 00994300
TTAPEOPENED ~ FALSE ; 00994400
LISTCARDTOG ~ FALSE ; 00994500
PROCFLAG ~ PROCTOG ~ XREFTOG ~ FALSE ; 00994600
DUMPFLAG ~ CASTOG ~VOIDTOG ~ LISTOG ~ FALSE ; 00994700
BUILDTOG ~ RESERVEDTOG ~ FALSE ; 00994800
LFPAGEID ~ TRUE ; PAGEID ~ " " ; 00994900
SAVEPAGEINC ~ PAGEINC ~ 1 ; 00995000
BUILDEBUG~ RESEQTOG ~ SEQTOG ~ NEWTOG ~ PRINTOG ~ FALSE ; 00995100
DOCDEBUG ~ FALSE ; 00995200
CLEARTITLETOG ~ FALSE ; 00995300
BACKUPTOG ~ PUNCHTOG ~ DEBUG ~ DOCLISTOG ~FALSE ; 00995400
BLANKNEWSEQ ~ PBACKONLY ~ FALSE ; 00995500
RESEQONLY ~ FALSE ; 00995600
DOUBLEONLY ~ TRUE ; SIXLINES ~ FALSE ; 00995700
PATCHLETTER ~ "*" ; 00995800
SNEWSEQ ~ 0 ; 00995900
DOCER ~ 0 ; 00996000
BEGINTOG ~ TRUE ; 00996100
FLOWTOG ~ SYNTAXTOG ~ FALSE ; 00996200
FSYNTAXTOG~FALSE; 00996300
MAKEIRTOG ~ MAKETOG ~ FALSE ; 00996400
LISTONLYTOG ~ FALSE ; 00996500
NAMEPUNCH ~ FALSE ; 00996600
BIGTOG ~ SHUFFLETOG ~FALSE ; 00996700
COUNTOG ~ CONTCARD ~ FALSE ; 00996800
BACKUPUSED ~ FALSE ; 00996900
CARDSOPEN ~ TRUE ; 00997000
BACKIND ~0 ; 00997100
ALLTOG ~ FROMTOG ~ TOENDTOG ~ FALSE ; 00997200
PUNCHTOG ~ ALPHATOG ~ FALSE ; 00997300
PATCHTOG ~PATCHFLAG ~FALSE ; 00997400
DOCXREFTOG ~ FALSE ; 00997500
ZPAGEN ~ZCONTPAGEN ~ 0; 00997600
PAGEPOINT ~0; 00997700
DECIMALSTOG~ FALSE; 00997800
MOVEWORDS (NINES,CTSEQ,1);CLEAR(LCSEQ,1); 00997900
HEADPOINT ~ 0 ; CLEAR(HEADING,14) ; 00998000
CLEAR(BLANKARRAY,14) ; 00998100
DATETOG ~ FIRSTDOLLAR ~ FALSE ; 00998200
TAPETOG ~ RESEQTOG ~ NOTLAST ~ FALSE ; 00998300
DEVICE ~ 1 ; COMMENT READ CARDS ; 00998400
FIRSTCHAR ~ 0 ; LASTCHAR ~""" ; 00998500
BINDENT ~ 2 ; 00998600
LOOKFORDOLLAR ~ TRUE ; 00998700
NWPR ~ 10 ; W ~ NWPR - 1 ; 00998800
CLEAR(GLOBE,14) ; 00998900
BLOCKTOG ~ FALSE; 00999000
LOGICTOG ~ FALSE ; 00999100
ONLYTOG ~ TRUE; 00999200
END; 00999300
MORECAST: 00999400
BEGIN 00999500
INTEGER BLOCKEXTENDER; 00999600
BKRCRDCOUNT ~ BKDIRCOUNT ~VOLUME~0; 00999700
NIDENT ~ PP ~ 0 ; RR ~ 1 ; 00999800
PLSAVE ~ GLSAVE ~ 1 ; GINDSAVE ~ 0 ; 00999900
PHSAVE ~ GHSAVE ~ 72 ; 01000000
NOPROC ~ PARLOW ~ 0 ; PARHIGH ~ 71 ; 01000100
BPOINT ~ 12 ; 01000200
IF NOT ONLYTOG THEN 01000300
FOR I ~ 0 STEP 1 UNTIL 125 DO STACK[I] ~ 0 ; 01000400
QUOTETOG ~ SEQBLANKTOG ~ FALSE ; 01000500
PRINTCLOSED ~ BACKUPCLOSED ~TRUE ; 01000600
DOCUMENTFOUND ~ FALSE ; 01000700
NAMETOG ~ PROCXREFLAG ~ PROCBLKFLAG ~ FALSE ; 01000800
STREAMTOG ~ COMMENTOG ~ FALSE ; 01000900
NENDS ~ CURBEG ~ BEGINDEX ~ 0 ; 01001000
CLEAR(GLOBE,14) ; 01001100
CLEAR(LISTBUFFER,14) ; CLEAR(OLDSEQ,0); 01001200
CARDTALLY ~ 0 ; 01001300
IF NOT ONLYTOG THEN 01001400
FOR I ~ 0 STEP 1 UNTIL 63 DO TALLIES[I] ~ 0 ; 01001500
NEWSEQ ~ 0 ; SEQINC ~ 1000 ; XREFSEQ ~ 99000000 ; 01001600
LASTCURSEQ ~ LASTSEQLINK ~ 0 ; 01001700
TOTAL ~ 0 ; 01001800
READATAPE ; 01001900
END; 01002000
COMMENT DOCUMENT* PAGE INDEX SKIP 2 * * * * * * * * * * * * * * * * * 01002100
4. MAJOR SUB-BLOCKS OF PROGRAM. 01002200
* SKIP PARAGRAPH 5,67,0 01002300
THESE ARE INCLUDED BECAUSE OF THEIR SIMILAR FUNCTION TO THAT OF 01002400
THE PROCEDURE PRINTDOCUMENT.; 01002500
IF TRANSTOG THEN 01002600
BEGIN 01002700
COMMENT DOCUMENT* INDEX INDENT 1 SKIP 3 UNDERLINE * * * * * * * * * * 01002800
BLOCK TO TRANSLATE ASSEMBLY LANGUAGE TO FLOW LANGUAGE. 01002900
* SKIP 01003000
THIS BLOCK TRANSLATES B3500 ASSEMBLY LANGUAGE INTO FLOWCHART 01003100
LANGUAGE. THE BASIC SCHEME IS TO USE REMARKS ("REMK" OR BLANK 01003200
OPCODES, COLS 63-80 ON OTHER CARDS) FOR BASIC BOXES AND TO 01003300
USE TEST, BRANCH, AND COMPARE INSTRUCTIONS FOR TEST BOXES AND 01003400
BRANCHES. CERTAIN OTHER INSTRUCTIONS, SUCH AS I/O COMMANDS, 01003500
CAUSE SPECIAL BOX TYPES. 01003600
* END ; 01003700
LABEL EOFF,RDD; 01003800
LABEL RDOVER; 01003900
INTEGER RBLANKS; 01004000
INTEGER RELAPOS; 01004100
INTEGER COUNTER,TYPE,NLINES,TCOUNTER,SVCOUNT; 01004200
INTEGER ASMSEQ; 01004300
INTEGER LEVEL,TEMP,SEGINDEX; 01004400
INTEGER RECORDS; 01004500
INTEGER TEMPSWIND ; 01004600
INTEGER LINECOUNT ; 01004700
LABEL NOTRELATION; 01004800
LABEL RD,EOF; 01004900
LABEL REMKSTAR; 01005000
BOOLEAN BOOL; 01005100
LABEL START ; 01005200
BOOLEAN ETOG,BTOG,CTOG,TOGTOG; 01005300
BOOLEAN ATOG; 01005400
BOOLEAN BOXCLOSED; 01005500
BOOLEAN ESKIP; 01005600
BOOLEAN FIRSTLINE,DATAFLAG ; 01005700
BOOLEAN BCTOG; 01005800
BOOLEAN SVNEWTOG; 01005900
ALPHA REL; 01006000
ALPHA OPCODE; 01006100
ALPHA ANUM ; 01006200
ARRAY FLOWBUF,TEMPBUF[0:20]; 01006300
ARRAY TEMPBUF2[0:15]; 01006400
ARRAY BUF[0:15]; 01006500
ARRAY INFO[0:25]; 01006600
ARRAY TEST, ENTER, T, F, QUIT, EQUALS, INR, IS, GOTO, 01006700
ENDR, BEGINR[0:0]; 01006800
ARRAY WITHR [0:0] ; 01006900
SAVE ARRAY BOX[0:0]; 01007000
ARRAY SINGLEWORDS [0:40] ; 01007100
ARRAY COMMENTR, SE [0:1]; 01007200
ARRAY DIF,AT[0:2]; 01007300
ARRAY SEQ, SLS, SGR [0:3]; 01007400
ARRAY SZ, S1, SD, SNQ, OFL, BOT, BZT [0:4]; 01007500
FORMAT IFORM1 (I6); 01007600
FORMAT AFORM(A6); 01007700
FORMAT SEGHEAD (" * BEGIN HEADING SEGMENT NUMBER", I5, " *"); 01007800
FORMAT TABLEFORM2 ( "%%") ; 01007900
DEFINE A =[12:18]#,B= [30:18]#,C=[1:1]#,D =[2:1]#; 01008000
DEFINE E = [3:1]#, G = [4:1] #; 01008100
COMMENT INFO[LEVEL].E TELLS IF DATAFLAG FOR THIS SEG, 01008200
INFO[LEVEL].G TELLS IF FIRSTLINE FOR THIS SEG; 01008300
DEFINE MASK = BUF[0] #; 01008400
COMMENT DOCUMENT* 35 * * * * * * * * * * * * * * * * * * * * * * * * *; 01008500
PROCEDURE WRITEDISK(A,COUNTER,CLEARTOG); 01008600
VALUE CLEARTOG; 01008700
BOOLEAN CLEARTOG; 01008800
INTEGER COUNTER; 01008900
ARRAY A[0]; 01009000
COMMENT WRITES BUFFERS IN DISK AND COUNTS RECORDS ; 01009100
BEGIN 01009200
IF MONITOG THEN WRITE(LINE,MONITFORM,"WRITED","ISK "); 01009300
IF DEBEATLETOG THEN WRITE(LINE,15,A[*]); 01009400
WRITE(SWOUT,10,A[*]); 01009500
RECORDS ~ RECORDS + 1; 01009600
IF CLEARTOG THEN CLEAR(A[0],14); 01009700
COUNTER ~ 0; 01009800
END WRITEDISK; 01009900
DEFINE CLOSEBOX = 01010000
BEGIN 01010100
BOXCLOSED ~ TRUE; 01010200
LINECOUNT ~ 0; 01010300
COUNTER ~ COUNTER + 1; 01010400
SETCHAR(FLOWBUF[COUNTER DIV 8],COUNTER.[45:3],"*"); 01010500
END#; 01010600
DEFINE MOVETEXT = 01010700
IF COUNTER + COUNT } 71 THEN 01010800
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01010900
IF COUNT > 72 THEN COUNT ~ 72; 01011000
IF COUNT > 63 THEN 01011100
BEGIN 01011200
MOVECHARS(BUF[0],FLOWBUF[COUNTER DIV 8],0, 01011300
COUNTER.[45:3],63); 01011400
COUNT ~ COUNT -63; 01011500
COUNTER ~ COUNTER + 63; 01011600
MOVECHARS(BUF[7],FLOWBUF[COUNTER DIV 8], 7, 01011700
COUNTER.[45:3],COUNT); 01011800
END ELSE 01011900
MOVECHARS(BUF[0],FLOWBUF[COUNTER DIV 8],0, 01012000
COUNTER.[45:3],COUNT); 01012100
COUNTER ~ COUNTER +COUNT; 01012200
IF COUNTER } 71 THEN 01012300
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01012400
#; 01012500
DEFINE GETOP = 01012600
TYPE ~ 1; 01012700
OPCODE ~ 0; 01012800
IF CHECKCHAR (GLOBE[0],16," ") THEN 01012900
MOVECHARS (GLOBE[0],OPCODE,13,5,3) ELSE 01013000
MOVECHARS(GLOBE[0],OPCODE,13,4,4) #; 01013100
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * *; 01013200
BOOLEAN STREAM PROCEDURE VARCONST(FIELD,SOURCE,DEST,DPOS); 01013300
VALUE FIELD,DPOS; 01013400
COMMENT PICKS OFF VARIANT FIELD AND ADDS TO IDENTIFIER ; 01013500
BEGIN 01013600
DI ~ DEST; DI ~ DI + DPOS; 01013700
SI ~ SOURCE; SI ~ SI + FIELD; 01013800
IF SC ! " " THEN BEGIN DS ~ 1 LIT "."; 01013900
SI ~ SI-1; IF SC! " " THEN DS~ 1 CHR ELSE SI~SI+1; 01014000
DS ~ 1 CHR; TALLY ~ 1 END 01014100
ELSE TALLY ~ 0; 01014200
DS ~ 1 LIT " "; 01014300
VARCONST ~ TALLY; 01014400
END; 01014500
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * *; 01014600
INTEGER STREAM PROCEDURE WORDCONST(FIELD,SOURCE,DEST,DPOS); 01014700
VALUE FIELD,DPOS; 01014800
COMMENT BUILDS AN ID USING INFO IN ADDRESS FIELD, INX, & TYPE; 01014900
BEGIN 01015000
DI ~ DEST; DI ~ DI + DPOS; 01015100
SI ~ SOURCE; SI ~ SI + FIELD; 01015200
IF SC = "*" THEN BEGIN DS ~ 4 LIT "SELF"; 01015300
SI~SI+6; TALLY ~4;END ELSE 01015400
6(IF SC ! " " THEN BEGIN DS ~ 1 CHR; 01015500
TALLY ~ TALLY + 1 END 01015600
ELSE SI ~ SI +1); 01015700
DS ~ 1 LIT "."; 01015800
IF SC ! "-" THEN DS ~ 1 LIT "+" ELSE DS ~ 1 LIT "-"; 01015900
IF SC = " " THEN SI ~ SI +1 ELSE IF SC = "+" 01016000
THEN SI ~ SI+1 ELSE IF SC ="-" THEN SI ~ SI + 1 ELSE 01016100
BEGIN DS ~ 1 CHR; TALLY ~ TALLY + 1; END; 01016200
IF SC = " " THEN SI ~ SI +1 ELSE BEGIN DS ~ 1 CHR; 01016300
TALLY ~ TALLY +1 END; 01016400
IF SC = " " THEN BEGIN SI ~ SI+1; DI ~DI-2; 01016500
DS~ 2 LIT " "; DI ~DI-2 END ELSE 01016600
BEGIN DS ~ 1 CHR; 01016700
TALLY ~ TALLY +3 END; 01016800
IF SC = "1" THEN BEGIN DS ~ 4 LIT ".IX1"; 01016900
TALLY ~ TALLY +4; END ELSE 01017000
IF SC = "2" THEN BEGIN DS ~ 4 LIT ".IX2"; 01017100
TALLY ~ TALLY +4 END ELSE 01017200
IF SC = "3" THEN BEGIN DS ~ 4 LIT ".IX3"; 01017300
TALLY ~ TALLY +4 END; 01017400
SI ~ SI +1; IF SC ! " " THEN BEGIN DS ~ 1 LIT "."; 01017500
DS ~ 2CHR; TALLY ~ TALLY + 3 END; 01017600
WORDCONST ~ TALLY; 01017700
END; 01017800
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * *; 01017900
BOOLEAN STREAM PROCEDURE LITCONST(SOURCE,FIELD,DEST,DPOS,NCHARS); 01018000
VALUE FIELD,DPOS,NCHARS; 01018100
COMMENT BUILDS LITERALS FROM ADDRESS FIELDS ; 01018200
BEGIN 01018300
LABEL L; 01018400
SI~SOURCE; SI~SI+FIELD; SI~ SI+10; 01018500
DI~ DEST; DI~ DI+DPOS; 01018600
IF SC= "N" THEN BEGIN SI ~ SI-10; DS~ NCHARS CHR; 01018700
GO TO L; END; 01018800
IF SC = "S" THEN BEGIN SI~SI-10; DS ~ NCHARS CHR; 01018900
DS ~ CHR ; 01019000
GO TO L END; 01019100
IF SC = "A" THEN BEGIN DS ~ 1 LIT """; TALLY ~1; 01019200
SI ~ SI-10; 01019300
DS ~ NCHARS CHR; DS ~ 1 LIT """; GO TO L END; 01019400
IF SC = "L" THEN BEGIN DS ~ 1 LIT "["; TALLY ~ 1; 01019500
SI ~ SI-10; 01019600
DS ~ NCHARS CHR; DS ~ 1 LIT "]"; GO TO L END; 01019700
L: LITCONST ~ TALLY; 01019800
END; 01019900
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * *; 01020000
BOOLEAN STREAM PROCEDURE LITTEST(SOURCE,FIELD); 01020100
VALUE FIELD; 01020200
COMMENT TRUE IF ADDRESS FIELD IS A LITERAL ; 01020300
BEGIN 01020400
SI~SOURCE; SI~ SI+ FIELD; 01020500
IF SC = "L" THEN TALLY ~1 ELSE TALLY ~ 0; 01020600
LITTEST ~ TALLY; 01020700
END; 01020800
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * *; 01020900
STREAM PROCEDURE REMKEDIT(S,D,SPOS,DPOS,NCHARS,COUNT); 01021000
VALUE SPOS,DPOS,NCHARS; 01021100
COMMENT FIXES REMARK FIELD TO BE LEGAL FLOW INPUT ; 01021200
BEGIN 01021300
LABEL L1,L2,L3; 01021400
LABEL L4; 01021500
LOCAL T1; 01021600
SI~S; SI~SI+ SPOS; DI~ D; DI~DI+DPOS; 01021700
NCHARS(IF SC! " " THEN JUMP OUT 1 TO L1; SI~SI+1;); 01021800
GO TO L2; 01021900
L1: NCHARS (L3: IF SC = "%" THEN JUMP OUT 1 TO L2; 01022000
IF SC = " " THEN BEGIN DS ~ 1 CHR; 01022100
NCHARS ( IF SC ! " " THEN JUMP OUT 1 TO L3; 01022200
SI~SI+ 1;);END; IF SC = "." 01022300
THEN BEGIN DS ~ 1 CHR; DS ~ 1 LIT "#" END ELSE IF SC = 01022400
"*" THEN BEGIN DS ~ 1 LIT """; DS ~ 1 CHR; 01022500
DS ~ 1 LIT """ ; END ELSE IF SC = ";" THEN BEGIN 01022600
DS ~ 1 LIT """; DS ~ 1 CHR; DS~ 1 LIT """ END ELSE 01022700
DS ~ 1 CHR;); 01022800
L2: 01022900
DS ~3 LIT ". %"; DI ~ T1; SI ~ D;SI~SI+DPOS; 01023000
L4: IF SC ! "%" THEN BEGIN DI~DI+8; SI~SI+1; GO TO L4; END; 01023100
SI ~LOC T1; T1 ~ DI; DI~ COUNT; DS ~ WDS; 01023200
END REMKEDIT; 01023300
COMMENT DOCUMENT* 33* * * * * * * * * * * * * * * * * * * * * * * * * ; 01023400
BOOLEAN PROCEDURE CHARSNOTBLANK (S,SPOS,N); 01023500
VALUE SPOS,N ; 01023600
REAL S; INTEGER SPOS,N; 01023700
COMMENT TRUE IF FIELD BLANK OR HEADED BY ESCAPE CHR; 01023800
BEGIN 01023900
LABEL F; 01024000
COMMENT DOCUMENT* 32* * * * * * * * * * * * * * * * * * * * * * * * * ; 01024100
REAL STREAM PROCEDURE CHRABS(A,POS) ; 01024200
VALUE POS ; 01024300
COMMENT GIVES ABSOLUTE ADDRESS OF A +POS; 01024400
BEGIN 01024500
DI ~A ; DI ~ DI+POS; CHRABS ~ DI; 01024600
END ; 01024700
IF CNBLANK (S,SPOS,N) THEN IF ESCAPETOG THEN 01024800
BEGIN 01024900
ESKIP ~ TRUE; 01025000
NCR ~ CHRABS(S,SPOS); 01025100
SCAN; 01025200
FOR I ~ 0 STEP 1 UNTIL ESIND DO 01025300
IF Q = ESTABLE[I] THEN 01025400
BEGIN 01025500
ESKIP ~ FALSE; GO TO F; 01025600
END ; 01025700
END ELSE 01025800
CHARSNOTBLANK ~ TRUE ELSE 01025900
F: CHARSNOTBLANK ~ FALSE; 01026000
END CHARSNOTBLANK ; 01026100
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * *; 01026200
INTEGER STREAM PROCEDURE MOVELABEL(S,D,SPOS,DPOS,MAXNO); 01026300
VALUE SPOS,DPOS,MAXNO; 01026400
COMMENT MOVES UP TO MAXNO CHRS AND ADDS COLON ; 01026500
BEGIN 01026600
SI~S; SI~SI+SPOS; DI~D; DI~DI+DPOS; 01026700
MAXNO(IF SC = " " THEN SI~ SI+ 1 ELSE BEGIN DS ~ 1 CHR; 01026800
TALLY ~ TALLY + 1 END); 01026900
DS ~ 2 LIT ": "; TALLY ~ TALLY +2; 01027000
MOVELABEL ~ TALLY ; 01027100
END; 01027200
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * *; 01027300
STREAM PROCEDURE NARRATE (D,DPOS,S,COUNT); 01027400
VALUE DPOS; 01027500
COMMENT MOVES TEXT FROM S TO SPOS, PUTS NP. CHRS IN COUNT ; 01027600
BEGIN 01027700
LOCAL T; 01027800
SI ~ S; DI~ LOC T; DI ~ DI + 7; DS ~ CHR; 01027900
DI ~ D; DI~ DI + DPOS; DS ~ 1 LIT " "; 01028000
DS ~ T CHR; DS ~ 1 LIT " "; 01028100
TALLY ~ T ; TALLY ~ TALLY +2; T ~ TALLY; 01028200
SI~ LOC T; DI ~ COUNT; DS ~ WDS; 01028300
END; 01028400
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * *; 01028500
BOOLEAN STREAM PROCEDURE NEXTCHAR(S,SPOS,CHAR); 01028600
VALUE SPOS,CHAR; 01028700
COMMENT TRUE IF NEXT CHR FROM S + SPOS IS CHAR ; 01028800
BEGIN 01028900
LABEL L; 01029000
SI~S; SI~ SI+ SPOS; DI~ LOC CHAR; DI ~ DI +7; 01029100
10(8(IF SC ! " " THEN JUMP OUT 2 TO L; SI ~SI+1;)); 01029200
L: IF SC = DC THEN TALLY ~ 1 ELSE TALLY ~ 0; 01029300
NEXTCHAR ~ TALLY; 01029400
END; 01029500
COMMENT DOCUMENT* 33 * * * * * * * * * * * * * * * * * * * * * * * * *; 01029600
PROCEDURE CONSTRUCT(FIELD); 01029700
VALUE FIELD; 01029800
INTEGER FIELD; 01029900
COMMENT BUILDS A BPL-LIKE IDENTIFIER FROM ASSEMBLY LANGUAGE ; 01030000
BEGIN 01030100
INTEGER ABCFIELD,ABF; 01030200
IF FIELD = 1 OR FIELD = 4 THEN 01030300
BEGIN 01030400
ABCFIELD ~ 21; ABF ~ 18; 01030500
END ELSE 01030600
IF FIELD = 2 THEN 01030700
BEGIN 01030800
ABCFIELD ~ 33; ABF ~ 20; 01030900
END ELSE ABCFIELD ~45; 01031000
IF FIELD = 1 OR FIELD = 2 THEN 01031100
BEGIN 01031200
IF LITTEST (GLOBE[0],ABCFIELD+11) THEN 01031300
BEGIN 01031400
DTOCT(GLOBE[0],ABF,COUNT,1); 01031500
IF COUNT > 6 THEN 01031600
BEGIN 01031700
WRITE(LINE,IFORM1,COUNT); 01031800
COUNT ~ 6; 01031900
END; 01032000
IF COUNT = 0 THEN COUNT ~ 6; 01032100
IF LITCONST(GLOBE[0],ABCFIELD,BUF,0,COUNT) THEN 01032200
COUNT ~ COUNT +2; 01032300
END ELSE 01032400
BEGIN 01032500
COUNT ~ WORDCONST (ABCFIELD,GLOBE[0],BUF[0],0); 01032600
IF VARCONST(ABF,GLOBE[0],BUF[0],COUNT) THEN 01032700
COUNT ~ COUNT + 3; 01032800
END; 01032900
END ELSE 01033000
COUNT ~ WORDCONST(ABCFIELD,GLOBE[0],BUF[0],0); 01033100
END CONSTRUCT; 01033200
COMMENT DOCUMENT* 32 * * * * * * * * * * * * * * * * * * * * * * * * ; 01033300
PROCEDURE UNLINK (TERMINAL); 01033400
VALUE TERMINAL; BOOLEAN TERMINAL; 01033500
COMMENT COLLECTS ALL RECORDS FROM EACH SEG TOGETHER ; 01033600
BEGIN 01033700
LABEL RD,NEXTSEG,EOF; 01033800
INTEGER I; 01033900
IF ALLSEGS THEN MAXSEG ~ SEGINDEX; 01034000
IF NOT TERMINAL THEN 01034100
REWIND (SWOUT); 01034200
FOR I ~ 0 STEP 1 UNTIL MAXSEG DO 01034300
BEGIN 01034400
READ SEEK(SWIN[CHOOSEG[I].A]); 01034500
RD: 01034600
READ (SWIN,10,BUF[*]) [EOF]; 01034700
IF CHECKCHAR(BUF[0],0,"%") THEN 01034800
IF CHECKCHAR (BUF[0],1,"0") THEN 01034900
IF TERMINAL OR BOOLEAN(CHOOSEG[I].C) THEN 01035000
BEGIN 01035100
CHOOSEG[I].D ~1; 01035200
IF (TEMP ~ BUF[1]) = 0 THEN GO TO NEXTSEG; 01035300
READ SEEK (SWIN[TEMP]); 01035400
GO TO RD; 01035500
END; 01035600
OCTTODEC(ASMSEQ,BUF[9]); 01035700
ASMSEQ ~ ASMSEQ +1000; 01035800
WRITE(SWOUT,10,BUF[*]); 01035900
GO TO RD; 01036000
NEXTSEG: 01036100
END; 01036200
EOF: 01036300
IF NOT TERMINAL THEN 01036400
BEGIN 01036500
FOR I ~ 0 STEP 1 UNTIL MAXSEG DO 01036600
IF BOOLEAN(CHOOSEG[I].D) THEN 01036700
BEGIN 01036800
FOR K ~ I+ 1 STEP 1 UNTIL MAXSEG DO 01036900
CHOOSEG [K-1] ~ CHOOSEG[K]; 01037000
MAXSEG ~ MAXSEG -1; 01037100
END; 01037200
SEGINDEX ~ MAXSEG; 01037300
END; 01037400
END UNLINK; 01037500
SWFOUTIND ~3; 01037600
IF ASMFLOWTOG OR NOT NEWTOG THEN SCRATCHTOG ~ TRUE; 01037700
SVNEWTOG~NEWTOG ; 01037800
NEWTOG~ FALSE; 01037900
DOCLISTFLAG ~ TRUE; 01038000
DOCLISTOG ~ LISTOG OR DOCLISTOG; LISTOG ~ FALSE; 01038100
BMON ~ FALSE; 01038200
GETOP ; 01038300
IF OPCODE = "0000" THEN READATAPE ; 01038400
IF DOCLISTOG THEN 01038500
BEGIN 01038600
CLEAR(LISTBUFFER[0],14); 01038700
MOVEWORDS (ASMLBUFF[DEVICE,*],LISTBUFFER [2],10); 01038800
IF DOUBLEONLY THEN ZPL(ZLB,2,LISTBUFFER) ELSE 01038900
ZPL(ZLB,1,LISTBUFFER); 01039000
END; 01039100
FILL SINGLEWORDS [*] WITH 01039200
"4OPEN ", "5CLOSE ", "5WRITE ", "4READ ", 01039300
"7OVERLAY", "8POSITIO", "N ", "4CALL ", 01039400
"4SEEK ", "6ZIP TO ", "DIOCU - ", "GET CH +", 01039500
" UNIT ", ":BOXONLY", " HALT ", "4DATE ", 01039600
"4EXIT ", "4PAGE ", "6ACCEPT ", "7DISPLAY", 01039700
":BOXONLY", " STOP ", "}ACCEPT/", "DISPLAY ", 01039800
":INITIAT", "E I/O ", "4DUMP ", "5TRACE ", 01039900
"BSET MOD", "E FLIP-F", "LOP ", "9READY I" , 01040000
"/O " ; 01040100
FILL TEST [*] WITH "4TEST ";FILL T[*] WITH "4TRUE "; 01040200
FILL BOX [*] WITH "3BOX ";FILL F[*] WITH "5FALSE "; 01040300
FILL QUIT[*] WITH "4QUIT ";FILL IS [*] WITH "2IS "; 01040400
FILL ENTER [*] WITH "5ENTER "; 01040500
FILL INR [*] WITH "2IN "; 01040600
FILL GOTO [*] WITH "5GO TO "; 01040700
FILL BEGINR [*] WITH "5BEGIN "; 01040800
FILL ENDR [*] WITH "3END "; 01040900
FILL EQUALS [*] WITH "6EQUALS "; 01041000
FILL COMMENTR [*] WITH ":COMMENT", " FLOW "; 01041100
FILL SE [*] WITH "}IF ONE ", "WAS THEN"; 01041200
FILL DIF [*] WITH "AIS DIFF", "ERENT FR", "OM "; 01041300
FILL AT [*] WITH "AIS RESU", "LT 0 Y", "ES "; 01041400
FILL SEQ [*] WITH "IIF ANY ", "BUT FIRS", "T WAS TH", 01041500
"EN "; 01041600
FILL SLS [*] WITH ".IF FIRS", "T CHR OF", " B WAS T", 01041700
"HEN "; 01041800
FILL SGR[*] WITH "HIF NONE", " OF CHRS", " WAS THE", 01041900
"N "; 01042000
FILL SNQ [*] WITH "KIF FIRS", "T CHR OF", " B OR NO", 01042100
"NE WAS T", "HEN "; 01042200
FILL SZ [*] WITH "OTEST SC", "AN UNTIL", " A DELIM", 01042300
"ITER ZON","E OF A, "; 01042400
FILL S1 [*] WITH "JONE OF ", "THE DELI", "MITERS G", 01042500
"IVEN IN ", "B, "; 01042600
FILL SD [*] WITH "JTEST SC", "AN UNTIL", " A DELIM", 01042700
"ITER OF ", "A, "; 01042800
FILL OFL [*] WITH "LIF LAST", " OPERATI", "ON SET O", 01042900
"VERFLOW ","THEN "; 01043000
FILL WITHR [*] WITH "4WITH "; 01043100
FILL BOT[*] WITH "ATEST BI","T ONE TE","ST "; 01043200
FILL BZT[*] WITH "BTEST BI","T ZERO T","EST "; 01043300
CLEAR (FLOWBUF[0],14); 01043400
CLEAR(TEMPBUF[0],14); 01043500
IF ALLSEGS THEN INFO[0].C ~ 1; 01043600
BOXCLOSED ~ TRUE; 01043700
SEGCOUNT ~ 0; 01043800
DATAFLAG ~ TRUE; 01043900
INFO[LEVEL].E ~ 1; 01044000
FIRSTLINE ~ TRUE ; 01044100
INFO[LEVEL].G ~ 1; 01044200
IF NOT ALLSEGS THEN 01044300
BEGIN 01044400
FOR I~ 0 STEP 1 UNTIL MAXSEG DO 01044500
IF SEGCOUNT =CHOOSEG[I] THEN GO TO RDOVER ; 01044600
DOCLISTFLAG ~ FALSE ; 01044700
DO BEGIN 01044800
READATAPE; IF NOT NOTLAST THEN GO TO EOF; 01044900
GETOP; 01045000
END UNTIL OPCODE = "SEGM" OR OPCODE = "ENSG"; 01045100
INFO[LEVEL].C ~ 0; 01045200
IF DOCLISTOG THEN 01045300
BEGIN 01045400
MOVEWORDS(GLOBE[0],LISTBUFFER[2],10); 01045500
IF DOUBLEONLY THEN ZPL(ZLB,2,LISTBUFFER) ELSE 01045600
ZPL(ZLB,1,LISTBUFFER); 01045700
END ; 01045800
END ; 01045900
GO TO RDOVER; 01046000
RD: READATAPE; 01046100
RDOVER: 01046200
IF DEBEATLETOG THEN WRITE(LINE,15,GLOBE[*]); 01046300
IF NOT NOTLAST THEN GO TO EOF; 01046400
IF BCTOG THEN 01046500
BEGIN 01046600
BCTOG ~ FALSE; 01046700
GO TO RD; 01046800
END ; 01046900
SETCHAR(GLOBE[10],0,"%"); 01047000
GETOP; 01047100
IF OPCODE = "CPA" OR OPCODE = "BZT" OR 01047200
OPCODE = "CPN" OR OPCODE = "BOT" THEN TYPE ~ 2 ELSE 01047300
IF OPCODE = " " THEN TYPE ~ 5 ELSE 01047400
IF OPCODE = "REMK" THEN TYPE ~5 ELSE 01047500
IF OPCODE = "SPEC" OR OPCODE = "LIST" 01047600
OR OPCODE = "NOLI" OR OPCODE = "FILE" OR OPCODE = "ENDF" 01047700
OR OPCODE = "CODE" OR OPCODE = 01047800
"NOCD" OR OPCODE = "RECD" OR OPCODE = "ENDR" 01047900
OR OPCODE = "SYNC" 01048000
OR OPCODE = "TIME" OR OPCODE = "EQIV" THEN TYPE ~ 0 ELSE 01048100
IF OPCODE = "DOCU" THEN TYPE ~ 0 ELSE 01048200
IF OPCODE = "SPAC" THEN TYPE ~ IF (GLOBE[2].[30:18] 01048300
= "PAG") THEN 27 ELSE 0 ELSE 01048400
IF OPCODE = "DATA" THEN TYPE ~ IF DATAFLAG THEN 7 01048500
ELSE 0 ELSE IF OPCODE = "CNST" OR OPCODE = "ACON" 01048600
THEN TYPE ~ IF DATAFLAG THEN 7 ELSE 0 ELSE %%%MAY CNG 01048700
IF OPCODE = "BCT" THEN TYPE ~ 9 ELSE 01048800
IF OPCODE = "OPEN" THEN TYPE ~10 ELSE 01048900
IF OPCODE = "CLOS" THEN TYPE ~ 11 ELSE 01049000
IF OPCODE = "WRIT" THEN TYPE ~ 12 ELSE 01049100
IF OPCODE = "READ" THEN TYPE ~ 13 ELSE 01049200
IF OPCODE = "OVLY" THEN TYPE~ 14 ELSE 01049300
IF OPCODE = "POSN" THEN TYPE ~ 15 ELSE 01049400
IF OPCODE = "LIBR" OR OPCODE = "NTR" THEN TYPE ~ 17 ELSE 01049500
IF OPCODE = "SEEK" THEN TYPE ~18 ELSE 01049600
IF OPCODE = "SMF" THEN TYPE ~ 38 ELSE 01049700
IF OPCODE = "INIT" THEN TYPE ~ 34 ELSE 01049800
IF OPCODE = "REDY" THEN TYPE ~ 41 ELSE 01049900
IF OPCODE = "IOCU" THEN TYPE ~ 20 ELSE 01050000
IF OPCODE = "DUMP" THEN TYPE ~ 36 ELSE 01050100
IF OPCODE = "TRAC" THEN TYPE ~ 37 ELSE 01050200
IF OPCODE="HBR" OR OPCODE="HBK" THEN TYPE~23 ELSE 01050300
IF OPCODE = "DATE" THEN TYPE ~ 25 ELSE 01050400
IF OPCODE = "EXT" THEN TYPE ~ 26 ELSE 01050500
IF OPCODE = "ZIPP" THEN TYPE ~ 19 ELSE 01050600
IF OPCODE = "ACPT" THEN TYPE ~ 28 ELSE 01050700
IF OPCODE = "DISP" THEN TYPE ~ 29 ELSE 01050800
IF OPCODE = "STOP" THEN TYPE ~ 30 ELSE 01050900
IF OPCODE = "SZE" OR OPCODE = "SDE" OR 01051000
OPCODE = "SDU" OR OPCODE = "SZU" THEN TYPE ~4 ELSE 01051100
IF OPCODE = "GEQ" OR OPCODE = "LEQ" OR OPCODE= "NEQ" OR 01051200
OPCODE = "EQL" OR OPCODE = "LSS" OR OPCODE = "GTR" OR 01051300
OPCODE = "BUN" OR OPCODE = "OFL" THEN TYPE ~ 3 ELSE 01051400
TYPE ~ 1; 01051500
START: 01051600
IF OPCODE = "SEGM" THEN 01051700
BEGIN 01051800
INTEGER BLOCKEXTENDER; 01051900
LABEL STOP; 01052000
IF ALLSEGS THEN 01052100
IF (SEGINDEX ~ SEGINDEX +1) } 500 THEN 01052200
BEGIN 01052300
TEMPSWIND ~ SWFININD ; 01052400
SWFININD ~ SWFOUTIND; 01052500
SWFOUTIND ~ IF SWFININD = 2 THEN 3 ELSE 2; 01052600
UNLINK(FALSE); 01052700
CLOSE (SWIN,PURGE) ; 01052800
SWFININD ~ TEMPSWIND ; 01052900
END; 01053000
IF NOT BOXCLOSED THEN 01053100
BEGIN 01053200
CLOSEBOX; COUNTER ~ COUNTER +2; 01053300
END; 01053400
IF COUNTER > 0 THEN WRITEDISK(FLOWBUF,COUNTER,TRUE); 01053500
IF BOOLEAN (INFO[LEVEL].C) THEN 01053600
BEGIN 01053700
INFO [LEVEL].A ~ RECORDS; 01053800
WRITEDISK(BLANKARRAY,IJUNK,FALSE); 01053900
END; 01054000
LEVEL ~ LEVEL +1; SEGCOUNT ~ SEGCOUNT+1; 01054100
IF ALLSEGS THEN 01054200
BEGIN 01054300
INFO[LEVEL].B ~ SEGINDEX; 01054400
GO TO STOP; 01054500
END; 01054600
FOR I ~ 0 STEP 1 UNTIL MAXSEG DO 01054700
IF SEGCOUNT = CHOOSEG[I] THEN 01054800
BEGIN 01054900
INFO [LEVEL].B ~ SEGINDEX ~ I; 01055000
GO TO STOP; 01055100
END; 01055200
DOCLISTFLAG ~ FALSE; 01055300
DO BEGIN 01055400
READATAPE; IF NOT NOTLAST THEN GO TO EOF; 01055500
GETOP; 01055600
END UNTIL OPCODE = "SEGM" OR OPCODE = "ENSG"; 01055700
INFO [LEVEL].C ~0; 01055800
IF DOCLISTOG THEN 01055900
BEGIN 01056000
MOVEWORDS(GLOBE[0],LISTBUFFER[2],10); 01056100
IF DOUBLEONLY THEN ZPL(ZLB,2,LISTBUFFER) ELSE 01056200
ZPL(ZLB,1,LISTBUFFER); 01056300
END; 01056400
GO TO START; 01056500
STOP: 01056600
DOCLISTFLAG ~ TRUE; 01056700
DATAFLAG ~ TRUE; INFO[LEVEL].E ~ 1; 01056800
FIRSTLINE ~ TRUE; INFO[LEVEL].G ~ 1; 01056900
INFO[LEVEL].C ~ 1; 01057000
CHOOSEG[SEGINDEX].A ~ RECORDS; 01057100
WRITE(BUF[*],SEGHEAD,SEGCOUNT); 01057200
WRITEDISK(BUF,IJUNK,FALSE); 01057300
TYPE ~ 1; 01057400
END; 01057500
IF OPCODE = "ENSG" THEN 01057600
BEGIN 01057700
INTEGER BLOCKEXTENDER; 01057800
IF INFO [LEVEL].C = 1 THEN 01057900
BEGIN 01058000
IF NOT BOXCLOSED THEN 01058100
BEGIN 01058200
CLOSEBOX; COUNTER ~ COUNTER + 2; 01058300
END; 01058400
IF CHARSNOTBLANK (GLOBE[0],7,6) THEN 01058500
BEGIN 01058600
IF NOT BOXCLOSED THEN 01058700
BEGIN 01058800
CLOSEBOX;COUNTER ~COUNTER +2; 01058900
END; 01059000
COUNT ~ MOVELABEL(GLOBE[0],BUF[0],7,0,6); 01059100
MOVETEXT; 01059200
END; 01059300
IF DATATABLE THEN IF DATAFLAG THEN 01059400
IF NOT FIRSTLINE THEN 01059500
BEGIN 01059600
WRITE(FLOWBUF[*],TABLEFORM2); 01059700
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01059800
END ; 01059900
NARRATE (BUF[0], 0, ENDR, COUNT); 01060000
MOVETEXT; 01060100
CLOSEBOX; 01060200
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01060300
BUF[0] ~ 0 ; 01060400
SETCHAR(BUF[0],0,"%"); 01060500
BUF[1] ~0; 01060600
WRITEDISK(BUF,IJUNK,FALSE); 01060700
CHOOSEG [INFO[LEVEL].B] .C~1; 01060800
END; 01060900
IF INFO[(LEVEL~LEVEL-1)].C = 1 THEN 01061000
BEGIN 01061100
DOCLISTFLAG ~ TRUE; 01061200
DATAFLAG ~ BOOLEAN(INFO[LEVEL].E); 01061300
FIRSTLINE ~ BOOLEAN(INFO[LEVEL].G) ; 01061400
BUF[0] ~ 0 ; 01061500
SETCHAR(BUF[0],0,"%"); 01061600
BUF[1] ~ RECORDS; 01061700
WRITE(SWOUT[INFO[LEVEL].A],10,BUF[*]); 01061800
READ SEEK (SWOUT[RECORDS]); 01061900
GO TO RD; 01062000
END; 01062100
DOCLISTFLAG ~ FALSE; 01062200
DO BEGIN 01062300
READATAPE; IF NOT NOTLAST THEN GO TO EOF; 01062400
GETOP; 01062500
END UNTIL OPCODE ="SEGM" OR OPCODE="ENSG"; 01062600
IF DOCLISTOG THEN 01062700
BEGIN 01062800
MOVEWORDS (GLOBE[0],LISTBUFFER[2],10); 01062900
IF DOUBLEONLY THEN ZPL(ZLB,2,LISTBUFFER) ELSE 01063000
ZPL(ZLB,1,LISTBUFFER); 01063100
END; 01063200
GO TO START; 01063300
END; 01063400
IF TYPE = 0 THEN GO TO RD; 01063500
IF TYPE = 7 AND NOT DATATABLE THEN GO TO RD; 01063600
IF DATATABLE THEN IF DATAFLAG THEN 01063700
IF TYPE ! 7 AND OPCODE ! "DATE" AND OPCODE ! "SPAC" AND 01063800
OPCODE ! "SEGM" AND OPCODE ! "ENSG" AND 01063900
OPCODE ! "BUN" AND 01064000
TYPE ! 5 THEN 01064100
BEGIN 01064200
DATAFLAG ~ FALSE; 01064300
INFO[LEVEL].E ~ 0; 01064400
IF NOT FIRSTLINE THEN 01064500
BEGIN 01064600
WRITE (FLOWBUF[*],TABLEFORM2); 01064700
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01064800
END ; 01064900
END ELSE 01065000
BEGIN 01065100
LABEL THISLAB,NEWLAB,READ2; 01065200
FORMAT TABLEFORM1 (" * TABLE" ); 01065300
IF TYPE = 5 THEN 01065400
BEGIN 01065500
IF FIRSTLINE THEN 01065600
BEGIN 01065700
IF NEXTCHAR(GLOBE[0],17,"*") THEN GO TO REMKSTAR; 01065800
FIRSTLINE ~ FALSE; 01065900
INFO[LEVEL] .G~ 0; 01066000
IF COUNTER > 0 THEN WRITEDISK(FLOWBUF,COUNTER,TRUE); 01066100
WRITE(FLOWBUF[*],TABLEFORM1); 01066200
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01066300
END ; 01066400
CLEAR( FLOWBUF,14); 01066500
MOVECHARS (GLOBE[0],FLOWBUF[0],7,0,6); 01066600
MOVECHARS (GLOBE[2],FLOWBUF[1],2,0,59); 01066700
WRITEDISK (FLOWBUF,COUNTER,TRUE); 01066800
GO TO RD ; 01066900
END ; 01067000
IF NOT CNBLANK(GLOBE[0],7,6 ) THEN GO TO RD; 01067100
NEWLAB: 01067200
IF TYPE ! 7 THEN GO TO RD; 01067300
IF NOT CHARSNOTBLANK(GLOBE[0],57,22) THEN GO TO RD ; 01067400
IF FIRSTLINE THEN 01067500
BEGIN 01067600
FIRSTLINE ~ FALSE; 01067700
INFO[LEVEL].G ~ 0; 01067800
IF COUNTER > 0 THEN WRITEDISK(FLOWBUF,COUNTER,TRUE); 01067900
WRITE(FLOWBUF[*],TABLEFORM1); 01068000
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01068100
END ; 01068200
MOVECHARS (GLOBE[0],FLOWBUF[0],7,0,6); 01068300
MOVECHARS (GLOBE[0],FLOWBUF[0],13,7,4); 01068400
THISLAB: 01068500
MOVECHARS(GLOBE[0],FLOWBUF[2],57,0,22); 01068600
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01068700
READ2: 01068800
READATAPE; IF NOT NOTLAST THEN GO TO EOF; 01068900
GETOP; 01069000
IF OPCODE = " " OR OPCODE = "REMK" THEN 01069100
BEGIN 01069200
MOVECHARS (GLOBE[0],FLOWBUF[0],7,0,6); 01069300
MOVECHARS (GLOBE[2],FLOWBUF[1],2,0,59); 01069400
WRITEDISK (FLOWBUF,COUNTER,TRUE); 01069500
GO TO READ2 ; 01069600
END ; 01069700
IF OPCODE = "ACON" OR OPCODE = "CNST" OR OPCODE = 01069800
"DATA" THEN TYPE ~ 7 ELSE GO TO RDOVER; 01069900
IF CNBLANK (GLOBE[0],7,6) THEN GO TO NEWLAB; 01070000
IF CHARSNOTBLANK(GLOBE[0],57,22) THEN GO TO THISLAB; 01070100
GO TO READ2 01070200
END ; 01070300
IF CNBLANK (GLOBE[0],7,6) THEN 01070400
BEGIN 01070500
IF NOT BOXCLOSED THEN 01070600
BEGIN 01070700
CLOSEBOX; 01070800
COUNTER ~ COUNTER +2; 01070900
END; 01071000
COUNT ~ MOVELABEL(GLOBE[0],BUF[0],7,0,6); 01071100
MOVETEXT; 01071200
END; 01071300
IF TYPE = 1 THEN 01071400
BEGIN 01071500
INTEGER BLOCKEXTENDER; 01071600
IF OPCODE="INC" OR OPCODE ="ADD" OR OPCODE ="DEC" 01071700
OR OPCODE="SUB" OR OPCODE ="MPY" 01071800
OR OPCODE="DIV" OR OPCODE = "FAD" OR OPCODE="FSU" 01071900
OR OPCODE ="FMP"OR OPCODE ="FDV" THEN ATOG ~TRUE; 01072000
IF CHARSNOTBLANK(GLOBE[0],57,22) THEN 01072100
BEGIN 01072200
IF BOXCLOSED THEN 01072300
BEGIN 01072400
NARRATE (BUF[0], 0, BOX, COUNT); 01072500
MOVETEXT; 01072600
BOXCLOSED ~ FALSE; 01072700
END; 01072800
CLEAR(BUF[0],8); 01072900
REMKEDIT(GLOBE[0],BUF[0],57,0,23,COUNT); 01073000
MOVETEXT; 01073100
LINECOUNT ~ LINECOUNT +1; 01073200
NLINES~0; 01073300
END; 01073400
GO TO RD; 01073500
END; 01073600
IF TYPE = 2 OR TYPE = 4 THEN 01073700
BEGIN 01073800
INTEGER BLOCKEXTENDER; 01073900
IF NOT BOXCLOSED THEN 01074000
BEGIN 01074100
CLOSEBOX; COUNTER ~ COUNTER +2; 01074200
END; 01074300
NLINES ~ 0; 01074400
CLEAR(TEMPBUF[0],14); 01074500
IF CHARSNOTBLANK(GLOBE[0],57,22) THEN 01074600
BEGIN 01074700
NARRATE (BUF[0], 0, BOX, COUNT); 01074800
MOVETEXT; 01074900
CLEAR(BUF[0],8); 01075000
REMKEDIT(GLOBE[0],BUF[0],57,0,23,COUNT); 01075100
MOVETEXT; 01075200
LINECOUNT ~LINECOUNT +1; 01075300
NLINES ~ 1; 01075400
BOXCLOSED ~ FALSE; 01075500
END; 01075600
IF TYPE = 4 THEN 01075700
BEGIN 01075800
CLEAR(TEMPBUF[0],14); CLEAR(TEMPBUF2[0],14); 01075900
IF OPCODE = "SZU" OR OPCODE = "SZE" THEN 01076000
NARRATE (TEMPBUF[0],0,SZ,TCOUNTER) ELSE 01076100
NARRATE (TEMPBUF[0],0,SD,TCOUNTER); 01076200
CONSTRUCT(1); 01076300
MOVECHARS(BUF[0],TEMPBUF[TCOUNTER DIV 8],0, 01076400
TCOUNTER.[45:3],COUNT); 01076500
TCOUNTER ~ TCOUNTER + COUNT; 01076600
SETCHAR(TEMPBUF[TCOUNTER DIV 8],TCOUNTER.[45:3],","); 01076700
TCOUNTER ~ TCOUNTER + 2; 01076800
IF OPCODE = "SZE" OR OPCODE = "SDE" THEN 01076900
NARRATE (TEMPBUF[TCOUNTER DIV 8], TCOUNTER.[45:3], 01077000
EQUALS, COUNT) ELSE 01077100
NARRATE (TEMPBUF[TCOUNTER DIV 8], TCOUNTER.[45:3], 01077200
DIF, COUNT); 01077300
NARRATE (TEMPBUF2[0], 0, S1, TCOUNTER); 01077400
CONSTRUCT (2); 01077500
MOVECHARS(BUF[0],TEMPBUF2[TCOUNTER DIV 8],0, 01077600
TCOUNTER.[45:3],COUNT); 01077700
TCOUNTER ~ TCOUNTER + COUNT; 01077800
SETCHAR(TEMPBUF2[TCOUNTER DIV 8],TCOUNTER.[45:3],"."); 01077900
TCOUNTER ~ TCOUNTER + 2; 01078000
ETOG ~ TRUE; BTOG ~ CTOG ~ FALSE; 01078100
ATOG~FALSE; 01078200
GO TO RD; 01078300
END; 01078400
IF OPCODE = "BZT" OR OPCODE = "BOT" THEN 01078500
BEGIN 01078600
IF OPCODE = "BZT" THEN NARRATE(TEMPBUF[0],0,BZT,TCOUNTER) 01078700
ELSE NARRATE(TEMPBUF[0],0,BOT,TCOUNTER); 01078800
SETCHAR (MASK,0,"""); 01078900
MOVECHARS(GLOBE[0],MASK,19,1,2); 01079000
SETCHAR(MASK,3,"""); 01079100
MOVECHARS(MASK,TEMPBUF[TCOUNTER DIV 8],0, 01079200
TCOUNTER.[45:3],4); 01079300
TCOUNTER ~ TCOUNTER + 4; 01079400
NARRATE (BUF[0],0,WITHR,COUNT); 01079500
MOVECHARS(BUF[0],TEMPBUF[TCOUNTER DIV 8],0, 01079600
TCOUNTER.[45:3],COUNT); 01079700
TCOUNTER ~ TCOUNTER + COUNT; 01079800
CONSTRUCT (1); 01079900
MOVECHARS(BUF[0],TEMPBUF[TCOUNTER DIV 8],0, 01080000
TCOUNTER.[45:3],COUNT); 01080100
TCOUNTER ~ TCOUNTER + COUNT; 01080200
BTOG~ TRUE; CTOG ~ ETOG ~ FALSE; 01080300
ATOG~FALSE; 01080400
END ELSE 01080500
IF OPCODE = "CPA" OR OPCODE = "CPN" THEN 01080600
BEGIN 01080700
NARRATE (TEMPBUF[0], 0, IS, TCOUNTER); 01080800
CONSTRUCT (2); 01080900
MOVECHARS(BUF[0],TEMPBUF[0],0,TCOUNTER,COUNT); 01081000
TCOUNTER ~ TCOUNTER + COUNT; 01081100
RELAPOS ~ TCOUNTER +2; 01081200
TCOUNTER ~ RELAPOS +2; 01081300
CONSTRUCT(1); 01081400
MOVECHARS (BUF[0],TEMPBUF[0],0,TCOUNTER,COUNT); 01081500
TCOUNTER ~ TCOUNTER + COUNT; 01081600
ATOG~FALSE; 01081700
CTOG ~ TRUE; BTOG ~ ETOG ~ FALSE; 01081800
END; 01081900
GO TO RD; 01082000
END; 01082100
IF TYPE = 3 THEN 01082200
BEGIN 01082300
INTEGER BLOCKEXTENDER; 01082400
LABEL NOTRELATION; 01082500
IF OPCODE = "BUN" OR OPCODE = "OFL" THEN 01082600
GO TO NOTRELATION; 01082700
IF CHARSNOTBLANK(GLOBE[0],57,22) THEN 01082800
BEGIN 01082900
IF NLINES = 0 THEN 01083000
BEGIN 01083100
IF NOT BOXCLOSED THEN 01083200
BEGIN 01083300
CLOSEBOX; COUNTER ~ COUNTER +2; 01083400
END; 01083500
NARRATE (BUF[0], 0, BOX, COUNT); 01083600
MOVETEXT; 01083700
END; 01083800
CLEAR(BUF[0],8); 01083900
REMKEDIT(GLOBE[0],BUF[0],57,0,23,COUNT); 01084000
MOVETEXT; 01084100
CLOSEBOX; COUNTER ~ COUNTER + 2; 01084200
NLINES ~ 0; 01084300
END ELSE 01084400
IF NOT BOXCLOSED THEN CLOSEBOX; 01084500
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01084600
IF ATOG THEN 01084700
BEGIN 01084800
IF OPCODE = "LSS" THEN REL~"<" ELSE 01084900
IF OPCODE = "GTR" THEN REL ~ ">" ELSE 01085000
IF OPCODE = "EQL" THEN REL~ "=" ELSE 01085100
IF OPCODE = "NEQ" THEN REL ~ "!" ELSE 01085200
IF OPCODE = "GEQ" THEN REL~"}" ELSE 01085300
REL~ "{"; 01085400
NARRATE (FLOWBUF[0], 0, AT, COUNTER); 01085500
SETCHAR(FLOWBUF[0],11,REL); 01085600
GO TO NOTRELATION; 01085700
END; 01085800
IF BTOG OR CTOG THEN 01085900
BEGIN 01086000
IF BTOG THEN TOGTOG ~ OPCODE ="GEQ" OR OPCODE="EQL" OR 01086100
OPCODE="LEQ"; 01086200
IF CTOG THEN 01086300
BEGIN 01086400
IF OPCODE = "LSS" THEN REL ~">" ELSE 01086500
IF OPCODE = "GTR" THEN REL~"<" ELSE 01086600
IF OPCODE = "LEQ" THEN REL ~ "}" ELSE 01086700
IF OPCODE = "GEQ" THEN REL~"{" ELSE 01086800
REL~"="; 01086900
SETCHAR(TEMPBUF[0],RELAPOS,REL); 01087000
TOGTOG ~ OPCODE !"NEQ" ; 01087100
END; 01087200
IF TOGTOG THEN NARRATE (FLOWBUF[0],0,T,COUNTER) ELSE 01087300
NARRATE (FLOWBUF[0],0,F,COUNTER) ; 01087400
WRITEDISK(TEMPBUF,IJUNK,FALSE); 01087500
END; 01087600
IF ETOG THEN 01087700
BEGIN 01087800
IF OPCODE = "EQL" THEN NARRATE (BUF[0],0,SEQ,COUNT) ELSE 01087900
IF OPCODE = "LEQ" THEN NARRATE (BUF[0],0,SE, COUNT) ELSE 01088000
IF OPCODE = "LSS" THEN NARRATE (BUF[0],0,SLS,COUNT) ELSE 01088100
IF OPCODE = "GTR" THEN NARRATE (BUF[0],0,SGR,COUNT) ELSE 01088200
IF OPCODE = "NEQ" THEN NARRATE (BUF[0],0, SNQ,COUNT) ELSE 01088300
GO TO NOTRELATION; 01088400
MOVETEXT ; 01088500
WRITEDISK(TEMPBUF,IJUNK,FALSE); 01088600
WRITEDISK(TEMPBUF2,IJUNK,FALSE); 01088700
END; 01088800
NOTRELATION: 01088900
IF OPCODE = "BUN" THEN IF NOT BOXCLOSED THEN 01089000
BEGIN 01089100
CLOSEBOX; 01089200
COUNTER ~ COUNTER + 2; 01089300
END; 01089400
IF OPCODE = "OFL" THEN 01089500
BEGIN 01089600
IF NOT BOXCLOSED THEN 01089700
BEGIN 01089800
CLOSEBOX; COUNTER ~ COUNTER +2; 01089900
END; 01090000
IF CHARSNOTBLANK(GLOBE[0],57,22) THEN 01090100
BEGIN 01090200
NARRATE (BUF[0], 0, BOX, COUNT); 01090300
MOVETEXT; 01090400
CLEAR(BUF[0],8); 01090500
REMKEDIT(GLOBE[0],BUF[0],57,0,23,COUNT); 01090600
MOVETEXT; 01090700
CLOSEBOX; COUNTER ~COUNTER +2; 01090800
END; 01090900
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01091000
NARRATE (FLOWBUF [0], 0, OFL, COUNT); 01091100
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01091200
END; 01091300
NARRATE (BUF[0],0, GOTO, COUNT); 01091400
MOVETEXT; 01091500
CONSTRUCT (1); 01091600
MOVETEXT; 01091700
CLOSEBOX; COUNTER ~ COUNTER + 2; 01091800
GO TO RD; 01091900
END; 01092000
IF TYPE = 9 THEN 01092100
BEGIN 01092200
INTEGER BLOCKEXTENDER; 01092300
BCTOG ~ TRUE; 01092400
ANUM ~ 0; 01092500
MOVECHARS(GLOBE[2],ANUM,1,4,4); 01092600
IF ANUM = "114" THEN TYPE ~ 13 ELSE %% READ 01092700
IF ANUM = "234" THEN TYPE ~ 12 ELSE %% WRITE 01092800
IF ANUM = "134" THEN TYPE ~ 10 ELSE %% OPEN 01092900
IF ANUM = "154" THEN TYPE ~ 11 ELSE %% CLOSE 01093000
IF ANUM = "394" THEN TYPE ~ 15 ELSE %% POSITION 01093100
IF ANUM = "274" THEN TYPE ~ 19 ELSE %% ZIP 01093200
IF ANUM = "194" THEN TYPE ~ 30 ELSE %% STOP 01093300
IF ANUM = "334" THEN TYPE ~ 37 ELSE %% TRACE 01093400
IF ANUM = "254" THEN TYPE ~ 32 ELSE %% ACCEPT/DISPLAY 01093500
IF ANUM = "500" THEN TYPE ~ 34 ELSE %% INIT 01093600
IF ANUM = "512" THEN TYPE ~ 30 ELSE %% STOP - BCP 01093700
IF ANUM = "506" THEN TYPE ~ 41 ELSE %% REDY 01093800
IF ANUM = "518" THEN TYPE ~ 20 ELSE %% IOCU 01093900
IF ANUM = "524" THEN TYPE ~ 36 ELSE %% DUMP - BCP 01094000
IF ANUM = "530" THEN TYPE ~ 37 ELSE %% TRACE - BCP 01094100
IF ANUM = "314" THEN TYPE ~ 18 ELSE %% SEEK 01094200
GO TO RD; 01094300
IF TYPE = 30 THEN BCTOG ~ FALSE ; 01094400
END ; 01094500
IF TYPE } 10 THEN 01094600
BEGIN 01094700
INTEGER BLOCKEXTENDER; 01094800
IF NOT BOXCLOSED THEN 01094900
BEGIN 01095000
CLOSEBOX; COUNTER ~ COUNTER + 2; 01095100
END; 01095200
NARRATE (BUF[0],0,SINGLEWORDS[TYPE- 10],COUNT); 01095300
MOVETEXT; 01095400
IF TYPE } 20 THEN 01095500
BEGIN 01095600
CLOSEBOX; COUNTER ~ COUNTER +2; 01095700
GO TO RD; 01095800
END; 01095900
IF NOT BCTOG THEN 01096000
BEGIN 01096100
CONSTRUCT(4); 01096200
MOVETEXT; 01096300
CLEAR(BUF [0],0); 01096400
SETCHAR(BUF [0],0,"."); 01096500
COUNT ~ 2; MOVETEXT ; 01096600
COUNTER ~ COUNTER +2; 01096700
END ; 01096800
IF CHARSNOTBLANK(GLOBE[0],57,22) THEN 01096900
BEGIN 01097000
CLEAR(BUF[0],8); 01097100
REMKEDIT(GLOBE[0],BUF[0],57,0,23,COUNT); 01097200
MOVETEXT; 01097300
LINECOUNT ~ LINECOUNT +1; 01097400
END; 01097500
CLOSEBOX; COUNTER ~ COUNTER + 2; 01097600
GO TO RD; 01097700
END; 01097800
REMKSTAR: 01097900
IF OPCODE = " " OR OPCODE = "REMK" THEN 01098000
BEGIN 01098100
INTEGER BLOCKEXTENDER; 01098200
IF NEXTCHAR(GLOBE[0],17,"*") THEN 01098300
BEGIN 01098400
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01098500
MOVECHARS(GLOBE[0],FLOWBUF[0],17,0,63); 01098600
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01098700
END ELSE 01098800
IF CHARSNOTBLANK(GLOBE[0],17,63) OR ESKIP THEN 01098900
BEGIN 01099000
IF BOXCLOSED THEN 01099100
BEGIN 01099200
NARRATE (BUF[0],0, BOX, COUNT); 01099300
MOVETEXT; 01099400
END ELSE 01099500
IF LINECOUNT } 20 THEN 01099600
BEGIN 01099700
CLOSEBOX; COUNTER ~ COUNTER + 2; 01099800
END ; 01099900
CLEAR(BUF[0],9) ; 01100000
REMKEDIT(GLOBE[0],BUF[0],17,0,63,COUNT); 01100100
LINECOUNT ~ LINECOUNT +1; 01100200
MOVETEXT; 01100300
BOXCLOSED ~ FALSE; 01100400
END; 01100500
GO TO RD; 01100600
END; 01100700
GO TO RD; 01100800
EOF: 01100900
CLOSE (SWIN,RELEASE); 01101000
IF COUNTER ! 0 THEN WRITEDISK(FLOWBUF,COUNTER ,TRUE); 01101100
IF DATATABLE THEN IF DATAFLAG THEN 01101200
IF NOT FIRSTLINE THEN 01101300
BEGIN 01101400
WRITE(FLOWBUF[*],TABLEFORM2); 01101500
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01101600
END ; 01101700
BUF[0] ~ 0; 01101800
SETCHAR(BUF[0],0,"%"); 01101900
BUF [1] ~ 0; 01102000
WRITEDISK(BUF,IJUNK,FALSE); 01102100
IF DEBEATLETOG THEN 01102200
BEGIN 01102300
WRITE(LINE[DBL]); 01102400
CLEAR(GLOBE[0],14); 01102500
REWIND(SWOUT); 01102600
RDD: 01102700
READ(SWOUT,10,GLOBE[*]) [EOFF]; 01102800
WRITE(LINE,15,GLOBE[*]); 01102900
GO TO RDD; 01103000
EOFF: 01103100
END; 01103200
SWFININD ~ SWFOUTIND; 01103300
SWFOUTIND ~ IF NOT SCRATCHTOG THEN 1 ELSE 01103400
IF SWFOUTIND =2 THEN 3 ELSE 2; 01103500
REWIND(SWOUT); 01103600
NARRATE (FLOWBUF[0], 0, COMMENTR, COUNTER); 01103700
ASMSEQ ~ 1000; 01103800
OCTTODEC (ASMSEQ,FLOWBUF[9]); 01103900
ASMSEQ ~ ASMSEQ + 1000; 01104000
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01104100
UNLINK(TRUE); 01104200
CLOSEBOX; COUNTER ~ COUNTER + 2; 01104300
NARRATE (BUF[0], 0, QUIT, COUNT); 01104400
MOVETEXT; 01104500
WRITEDISK(FLOWBUF,COUNTER,TRUE); 01104600
IF DEBEATLETOG THEN 01104700
BEGIN 01104800
LABEL RD3,EOF3; 01104900
WRITE(LINE[DBL]); 01105000
CLEAR(GLOBE[0],14); 01105100
REWIND(SWOUT); 01105200
RD3: READ(SWOUT,10,GLOBE[*]) [EOF3]; 01105300
WRITE(LINE,10,GLOBE[*]); 01105400
GO TO RD3; 01105500
EOF3: END ; 01105600
CLOSE(SWIN); 01105700
TRANSTOG ~ FALSE; 01105800
IF ASMFLOWTOG THEN 01105900
BEGIN 01106000
REWIND (SWOUT); 01106100
SWFININD ~ SWFOUTIND; 01106200
SWFOUTIND~1; 01106300
REWIND(SWOUT); 01106400
BMON ~ TRUE; 01106500
TAPETOG ~ TRUE; 01106600
MOVEWORDS(NINES,CBUFF[9],1); 01106700
DOCLISTOG~LISTOG; LISTOG~FALSE ; 01106800
DEVICE~ 2; 01106900
01107000
ASMLTOG ~ FALSE; 01107100
CLEAR(GLOBE,14); 01107200
FIXCOL73(LCR); 01107300
CLEAR( LISTBUFFER,14); 01107400
IF DOCLISTOG THEN ZPG(ZLB) ; 01107500
END ELSE 01107600
BEGIN 01107700
NEWTOG~SVNEWTOG ; 01107800
GO TO EOFCARD ; 01107900
END ; 01108000
END; 01108100
IF FLOWTOG THEN 01108200
BEGIN 01108300
COMMENT DOCUMENT* 7 * * * * * * * * * * * * * * * * * * * * * * * * * 01108400
BLOCK TO PRINT FLOW CHARTS. 01108500
* SKIP 01108600
THIS BLOCK EXAMINES FLOW CONTROLS AND DRAWS FLOWCHARTS. 01108700
* END; 01108800
DEFINE SCEN = SCAN; IF PERCENT THEN 01108900
BEGIN 01109000
SCAN; PATCHPAGE ~ PATCHPAGE OR PATCHCARD; 01109100
END# ; 01109200
DEFINE PROGPOINTLAB = 01109300
IF PERIOD OR PLUS OR MINUS THEN 01109400
BEGIN 01109500
LABPOINT ~ Q.[18:6] ; SCEN ; 01109600
END ELSE 01109700
LABPOINT ~ " " # ; 01109800
BOOLEAN CONB,COLTOG; 01109900
BOOLEAN IMAGEUSED ; 01110000
BOOLEAN LEFTJUST; 01110100
BOOLEAN PUNCHFLOWTOG,FLOWWIDETOG ; 01110110
BOOLEAN BOXTYPE,CODETOG,TABLETOG ; 01110200
BOOLEAN TEMPTOG ; 01110300
LABEL MOREFLOW, MAINSTART; 01110400
ARRAY GENLAB[0:50]; INTEGER G, GENER; 01110500
ARRAY STBOX[0:50,0:4] , IMAGE[0:75,0:15] , TIM[0:40,0:15] ; 01110600
ARRAY PBUFF[0:15] ; 01110610
ARRAY TYPEIND[0:10] ; 01110700
ARRAY HEADBUFF[0:15],AJUNK[0:7]; 01110800
ALPHA RBRANCH,LBRANCH ; 01110900
INTEGER MAXTIM,NLINES,LINTIM,COL,PARP,TEMP,I,MAXCOL; 01111000
ALPHA LABPOINT ; 01111100
INTEGER BEGINCOUNT,PAGELINES; 01111200
INTEGER PFSEQ ; 01111210
INTEGER TABLECOUNT ; 01111300
FORMAT FCONTENTS (X30, "TABLE OF CONTENTS"); 01111400
DEFINE FINDSEMI = DO SCAN UNTIL Q="1; " OR Q="1* " # , 01111500
SB = STBOX # , 01111600
SEMI = Q="1; " OR Q="1* " # ; 01111700
DEFINE PRINTINDEX = 01111800
PAGEQUAL ~ 2; 01111900
IF FLOWIND ! 0 THEN 01112000
BEGIN 01112100
WRITE (ZAR [*],FCONTENTS); ZPL (ZF,2,ZAR); 01112200
FOR I ~ 1 STEP 1 UNTIL FLOWIND DO 01112300
ZPL(ZF,2,FLOWINDEX[I,*]); 01112400
END#; 01112500
COMMENT DOCUMENT* 31* * * * * * * * * * * * * * * * * * * * * * * * *; 01112600
PROCEDURE GENSYM; 01112700
COMMENT CREATES GENERATED LABELS FOR IF STATEMENTS, ETC ; 01112800
BEGIN 01112900
GENER~ GENER+1; G~G+1; OCTTODEC(GENER, GENLAB[G]); 01113000
GENLAB[G].[12:12] ~ "5G"; 01113100
END GENSYM; 01113200
STREAM PROCEDURE SQUASH(S,D,SEQ) ; 01113210
BEGIN 01113212
SI ~ S ; DI ~ D ; SI ~ SI + 2 ; 01113214
DS ~ 36 CHR ; SI ~ SI + 1 ; DS ~ 1 CHR ; 01113216
SI ~ SI + 1 ; DS ~ 35 CHR ; 01113218
SI ~ SEQ ; DS ~ 8 DEC ; 01113220
END SQUASH ; 01113222
COMMENT DOCUMENT* 31* * * * * * * * * * * * * * * * * * * * * * * * *; 01113300
PROCEDURE PAGECONNECT ; 01113400
COMMENT DRAWS PAGE-CONNECTING FLOW LINES ; 01113500
BEGIN 01113600
LABEL RETURN ; 01113700
IF IMAGEUSED AND CONB THEN 01113800
BEGIN 01113900
TEMP ~ (COL-1) | 5 + 2 ; 01114000
FOR I ~ NLINES STEP 1 UNTIL PAGELINES + 1 DO 01114100
SETCHAR(IMAGE[I,TEMP],4,".") ; 01114200
TEMP ~ (COL-1) | 40 + 20 ; 01114300
FOR I ~20 STEP 1 UNTIL TEMP DO 01114400
SETCHAR(IMAGE[PAGELINES+1,I DIV 8],I.[45:3],".") ; 01114500
SETCHAR(IMAGE[PAGELINES+2,2],4,":") ; 01114600
SETCHAR(IMAGE[PAGELINES+3,2],4,"V") ; 01114700
PAGELINES ~ PAGELINES + 3 ; 01114800
END ; 01114900
RETURN: 01115000
END PAGECONNECT ; 01115100
COMMENT DOCUMENT* 31* * * * * * * * * * * * * * * * * * * * * * * * *; 01115200
PROCEDURE PRINTPAGE ; 01115300
COMMENT PRINTS A PAGE WHEN IMAGE HAS BEEN FILLED ; 01115400
BEGIN 01115500
LABEL RETURN,CONT ; 01115600
IF MONITOG THEN WRITE(LINE,MONITFORM,"PRINTP","AGE "); 01115700
IF NOT IMAGEUSED THEN GO TO RETURN ; 01115800
IF FSYNTAXTOG THEN 01115900
BEGIN 01116000
ZPG(-1); 01116100
NEWDOCPAGE; 01116200
GO TO CONT; 01116300
END; 01116400
IF PUNCHPAGES THEN 01116500
IF NOT PAGETOG THEN 01116600
BEGIN 01116700
IF CANTPAGEHERE THEN 01116800
BEGIN 01116900
FLOWERROR(36); 01117000
PUNCHPAGES ~ FALSE; 01117100
END; 01117200
IF INSTOG THEN 01117300
BEGIN 01117400
IF NOT INSERTROW THEN SAVEPAGEN ~PAGEN; 01117500
TEMP~PAGEN + INSINC; 01117600
OCTTODEC(TEMP,BLOCKBUFFER[3]); 01117700
PAGEINC ~ INSINC; 01117800
END; 01117900
CLEAR(OLDBUF[0],14); CLEAR(NEWBUF[0],14); 01118000
I ~ DELTANCR (WORDBUF[10],WORDBUF[11]) ;J~72-I; 01118100
MOVECHARS(WORDBUF[J DIV 8],NEWBUF[J DIV 8],J.[45:3], 01118200
J.[45:3],I); 01118300
IF NOT COLTOG THEN 01118400
BEGIN 01118500
MOVECHARS(WORDBUF[0],OLDBUF[0],0,0,J); 01118600
OCTTODEC(SAVESEQ,OLDBUF[9]); 01118700
IJUNK ~ SAVESEQ + 1; 01118800
SAVESEQ ~ SAVESEQ + 2; 01118900
END ELSE 01119000
BEGIN 01119100
I ~DELTANCR(SAVEBUF[10],SAVEBUF[11]) ; J~72-I; 01119200
MOVECHARS(SAVEBUF[0],OLDBUF[0],0,0, J); 01119300
OCTTODEC(SAVEBUF[12],OLDBUF[9]); 01119400
IJUNK ~ SAVEBUF[12] +1; 01119500
IF SAVEBUF[12] = SAVESEQ THEN SAVESEQ ~ SAVESEQ + 2; 01119600
END; 01119700
OCTTODEC(IJUNK,BLOCKBUFFER[9]); 01119800
OCTTODEC(SAVESEQ,NEWBUF[9]); 01119900
IF PUNCHTOG THEN 01120000
BEGIN 01120100
IF BLANKTEST(OLDBUF[0],9) OR COLTOG THEN 01120200
WRITE (PUNCH,10,OLDBUF[*]); 01120300
WRITE(PUNCH,10,BLOCKBUFFER[*]); 01120400
IF BLANKTEST(NEWBUF[0],9) OR COLTOG THEN 01120500
WRITE(PUNCH,10,NEWBUF[*]); 01120600
END ELSE 01120700
BEGIN 01120800
IF BLANKTEST(OLDBUF[0],9) OR COLTOG THEN 01120900
WRITE(LINE,15,OLDBUF[*]); 01121000
WRITE(LINE,15,BLOCKBUFFER[*]); 01121100
IF BLANKTEST(NEWBUF[0],9) OR COLTOG THEN 01121200
WRITE(LINE,15,NEWBUF[*]); 01121300
END; 01121400
END; 01121500
ZPL (ZF,1,PAGENUM); 01121600
IF PUNCHFLOWTOG THEN 01121610
BEGIN 01121612
IF TIGHTFULL THEN 01121614
BEGIN 01121616
MOVEWORDS(TITLEBUFF,PBUFF,9) ; 01121618
OCTTODEC(PFSEQ,PBUFF[9]); 01121620
PFSEQ ~ PFSEQ + 10 ; 01121622
WRITE(PNCH,10,PBUFF[*]) ; 01121624
END ; 01121626
IF HEADFULL THEN 01121628
BEGIN 01121630
MOVEWORDS(HEADBUFF,PBUFF,9) ; 01121632
OCTTODEC(PFSEQ,PBUFF[9]); 01121634
PFSEQ ~ PFSEQ + 10 ; 01121636
WRITE(PNCH,10,PBUFF[*]) ; 01121638
END ; 01121640
END ; 01121642
IF TIGHTFULL THEN IF HEADFULL THEN 01121700
ZPL (ZF,1,TITLEBUFF[*]) ELSE ZPL(ZF,2,TITLEBUFF[*]); 01121800
IF HEADFULL THEN ZPL (ZF,2,HEADBUFF[*]); 01121900
FOR I ~ 4 STEP 1 UNTIL PAGELINES DO 01122000
BEGIN 01122009
IF PUNCHFLOWTOG THEN 01122010
BEGIN 01122012
SQUASH(IMAGE[I,0],PBUFF,PFSEQ) ; 01122014
WRITE(PNCH,10,PBUFF[*]) ; 01122016
PFSEQ ~ PFSEQ + 10 ; 01122018
END ; 01122020
BEGIN 01122100
ZPL(ZF,1,IMAGE[I,*]); 01122200
CLEAR(IMAGE[I,0],14) ; 01122300
END ; 01122400
END ; 01122401
ZPG(ZF); 01122500
PATCHPAGE ~ PATCHPAGE OR TITLECHANGE OR HEADCHANGE; 01122600
NEWDOCPAGE; 01122700
CONT: IF DOCLISTOG THEN 01122800
BEGIN 01122900
FOR I ~ 0 STEP 1 UNTIL 15 DO SETCHAR(PAGENUM[3],I,"*") ; 01123000
DOCOUTPUT ~ FALSE; 01123100
ZPL(0,2,PAGENUM[*]); 01123200
DOCOUTPUT ~ TRUE; 01123300
FOR I ~0 STEP 1 UNTIL 15 DO SETCHAR (PAGENUM[3],I," "); 01123400
END ; 01123500
NLINES ~ 4 ; COL ~1 ; PAGELINES ~ 0 ; 01123600
RETURN: 01123700
PAGETOG ~ FALSE; 01123800
IMAGEUSED ~FALSE ; 01123900
END PRINTPAGE ; 01124000
COMMENT DOCUMENT* 32* * * * * * * * * * * * * * * * * * * * * * * * *; 01124100
PROCEDURE BUILDTITLE(A); 01124200
ARRAY A[*] ; 01124300
COMMENT PUTS TITLE FROM SOURCE FILE IN A AND ENTERS IN INDEX; 01124400
BEGIN 01124500
LABEL MORE,NEXT,RETURN; 01124600
IF MONITOG THEN 01124700
WRITE (PRINT,MONITFORM, "BUILDT","ITLE "); 01124800
PARP ~ 0 ;CLEAR(A,14) ; 01124900
SCAN; IF SEMI THEN TITLEFULL ~ FALSE ELSE 01125000
BEGIN 01125100
GO TO NEXT; 01125200
MORE: SCEN ; IF SEMI THEN GO TO RETURN; 01125300
NEXT: 01125400
IF PERCENT THEN GO TO MORE ; 01125500
IF PARP + COUNT > 70 THEN 01125600
BEGIN 01125700
FINDSEMI ; FLOWERROR(13) ; GO TO RETURN ; 01125800
END ; 01125900
MOVECHARS(ACCUM[1],A[PARP DIV 8],3,PARP.[45:3],COUNT) ; 01126000
PARP ~ PARP + COUNT ; 01126100
IF EXAMINE(NCR) = " " THEN PARP ~ PARP + 1 ; 01126200
GO TO MORE ; 01126300
RETURN: 01126400
TEMPTOG ~ PATCHCARD ; 01126500
IF FLOWIND < 200 THEN 01126600
BEGIN 01126700
FLOWIND ~ FLOWIND + 1 ; 01126800
CLEAR(FLOWINDEX[FLOWIND,*],14) ; 01126900
MOVEWORDS(A,FLOWINDEX[FLOWIND,2],13) ; 01127000
MOVECHARS (PAGENUM[7],FLOWINDEX[FLOWIND,0],4,0,12); 01127100
END ; 01127200
END; 01127300
END BUILDTITLE ; 01127400
COMMENT DOCUMENT* 31 * * * * * * * * * * * * * * * * * * * * * * * * *; 01127500
PROCEDURE BUILDHYPH; 01127600
COMMENT USED WHEN FLOW LABELS MAY HAVE SPECIAL CHARACTERS ; 01127700
BEGIN 01127800
LABEL L1,L2; 01127900
INTEGER FIDCOUNT; 01128000
IF MONITOG THEN WRITE(LINE,MONITFORM,"BUILDH","YPH "); 01128100
MOVEWORDS(ACCUM,COBACCUM,10); 01128200
FIDCOUNT ~ 3; 01128300
L1: 01128400
IF Q = "1* " OR Q = "1: " THEN GO TO L2; 01128500
IF Q = "1% " THEN GO TO L2; 01128600
IF Q = "1. " AND (EXAMINE(NCR) =" " OR 01128700
EXAMINE(NCR) ="#") THEN GO TO L2; 01128800
MOVECHARS(ACCUM[1],COBACCUM[1],3,FIDCOUNT,COUNT); 01128900
FIDCOUNT ~ FIDCOUNT + COUNT; 01129000
IF EXAMINE(NCR) = " " THEN GO TO L2; 01129100
IF FINDCHAR(NCR,":") THEN GO TO L2; 01129200
IF FINDCHAR (NCR,"(") THEN GO TO L2; 01129300
IF FINDCHAR (NCR,",") THEN GO TO L2; 01129400
IF FINDCHAR(NCR,"*") THEN GO TO L2; 01129500
SCAN; 01129600
GO TO L1; 01129700
L2: 01129800
FIDCOUNT ~ FIDCOUNT - 3; 01129900
COBACCUM[1].[12:6] ~ FIDCOUNT.[42:6]; 01130000
MOVEWORDS(COBACCUM,ACCUM,10); 01130100
Q ~ ACCUM[1]; 01130200
COUNT ~ FIDCOUNT; 01130300
END BUILDHYPH; 01130400
COMMENT DOCUMENT* 33 * * * * * * * * * * * * * * * * * * * * * * * * *; 01130500
PROCEDURE BUILDBOX(TYPE) ; 01130600
VALUE TYPE ; 01130700
INTEGER TYPE ; 01130800
COMMENT MAKES VARIOUS KINDS OF BOXES,DEPENDING ON TYPE; 01130900
BEGIN 01131000
LABEL MORE,RETURN,CONTINUE ; 01131100
BOOLEAN SKIPLINE ; 01131200
COMMENT TYPE 0 BOX , TYPE 1 TEST , TYPE 2 SWITCH ; 01131300
COMMENT TYPE 3 NOTE ; 01131400
DEFINE CENTERIT = 01131500
IF TYPE ! 3 AND NOT LEFTJUST THEN 01131600
IF (35-PARP) > 1 THEN 01131700
BEGIN 01131800
TEMP ~ ((35-PARP) DIV 2 ) + 1 ; CLEAR(AJUNK,6) ; 01131900
MOVECHARS(TIM[LINTIM,0],AJUNK[TEMP DIV 8],5,TEMP.[45:3], 01132000
PARP-5) ; 01132100
MOVECHARS(AJUNK[0],TIM[LINTIM,0],0,5,34) ; 01132200
END # ; 01132300
LINTIM ~ 0 ; 01132400
IF CONB THEN MOVEWORDS(STBOX[33,*],TIM[LINTIM,*],5) 01132500
ELSE CLEAR(TIM[LINTIM,0],4) ; LINTIM ~ LINTIM + 1 ; 01132600
IF TYPE = 1 THEN 01132700
BEGIN 01132800
MOVEWORDS(STBOX[35,*],TIM[LINTIM,*],5) ; 01132900
LINTIM ~ LINTIM + 1 ; 01133000
COMMENT 01133100
MOVEWORDS(STBOX[36,*],TIM[LINTIM,*],5) ; 01133200
COMMENT 01133300
LINTIM ~ LINTIM + 1 ; 01133400
END ; 01133500
CLEAR(TIM[LINTIM,0],4) ; 01133600
IF FLOWBOXTOG OR TYPE=1 OR TYPE=3 THEN 01133700
MOVEWORDS(STBOX[TYPEIND[TYPE],*],TIM[LINTIM,*],5) ELSE 01133800
IF CONB THEN 01133900
MOVEWORDS(STBOX[33,*],TIM[LINTIM,*],5) ; 01134000
PARP ~5 + COUNT + 1 ; 01134100
IF NOT (FLOWBOXTOG OR TYPE=1 OR TYPE=3) THEN 01134200
IF NOT BOXTYPE THEN CENTERIT ELSE 01134300
IF CONB THEN MOVEWORDS(STBOX[33,*],TIM[LINTIM,*],5) ; 01134400
LINTIM ~ LINTIM + 1 ; 01134500
PARP ~ 5; CLEAR(TIM[LINTIM,*],4) ; 01134600
GO TO CONTINUE ; 01134700
MORE: 01134800
IF QFLOWTOG THEN 01134900
BEGIN 01135000
DOCSCAN; 01135100
PATCHPAGE~PATCHPAGE OR PATCHCARD; 01135200
END ELSE SCEN ; 01135300
IF ASMFLOWTOG THEN IF TYPE = 1 THEN IF RESULT = 1 01135400
AND EXAMINE(NCR) ! "." THEN BUILDHYPH ; 01135500
SKIPLINE ~ FALSE ; 01135600
CONTINUE: IF SEMI OR 01135700
(TYPE = 1 AND Q = "3YES ") OR 01135800
(TYPE = 1 AND Q = "2NO ") OR 01135900
(TYPE = 1 AND Q = "4TRUE ") OR 01136000
(TYPE = 1 AND Q = "5FALSE") OR 01136100
(TYPE =1 AND Q = "4THEN ") OR 01136200
(TYPE = 2 AND Q = "2GO ") THEN GO TO RETURN ; 01136300
IF PERCENT THEN GO TO MORE ; 01136400
IF Q="1. " AND EXAMINE(NCR) =" " THEN 01136500
BEGIN 01136600
CENTERIT ; SKIPLINE ~ TRUE ; PARP ~ 35 ; 01136700
END ; 01136800
IF PARP + COUNT > 34 THEN 01136900
BEGIN 01137000
IF (FLOWBOXTOG OR TYPE = 1) AND TYPE ! 3 THEN 01137100
BEGIN 01137200
CENTERIT ; 01137300
SETCHAR(TIM[LINTIM,0],4,":") ; 01137400
SETCHAR(TIM[LINTIM,4],3,":") ; 01137500
END ELSE CENTERIT ; 01137600
LINTIM ~ LINTIM + 1; PARP ~ 5; 01137700
CLEAR(TIM[LINTIM,0],4) ; 01137800
IF LINTIM > MAXTIM THEN 01137900
BEGIN 01138000
FLOWERROR(14); FINDSEMI ; GO TO RETURN ; 01138100
END ; 01138200
END ; 01138300
IF SKIPLINE THEN GO TO MORE ; 01138400
IF COUNT > 28 THEN 01138500
BEGIN 01138600
FLOWERROR(26) ; GO TO MORE ; 01138700
END ; 01138800
MOVECHARS(ACCUM[1],TIM[LINTIM,PARP DIV 8],3, 01138900
PARP.[45:3],COUNT) ; 01139000
IF EXAMINE(NCR) = " " THEN PARP ~ PARP + 1 ; 01139100
PARP ~ PARP + COUNT ; 01139200
IF Q = "1. " AND EXAMINE (NCR) = "#" THEN 01139300
BEGIN 01139400
SCEN; PARP ~ PARP +1; 01139500
END; 01139600
GO TO MORE ; 01139700
RETURN: IF PARP ! 5 THEN 01139800
BEGIN 01139900
IF (FLOWBOXTOG OR TYPE = 1) AND TYPE ! 3 THEN 01140000
BEGIN 01140100
CENTERIT ; 01140200
SETCHAR(TIM[LINTIM,0],4,":") ; 01140300
SETCHAR(TIM[LINTIM,4],3,":") ; 01140400
END ELSE CENTERIT ; 01140500
LINTIM ~ LINTIM + 1 ; 01140600
END ; 01140700
IF FLOWBOXTOG OR TYPE=1 OR TYPE=3 THEN 01140800
BEGIN 01140900
MOVEWORDS(STBOX[TYPEIND[TYPE],*],TIM[LINTIM,*],5) ; 01141000
LINTIM ~ LINTIM + 1 ; 01141100
END ; 01141200
IF TYPE = 1 THEN 01141300
BEGIN 01141400
MOVEWORDS(STBOX[35,*],TIM[LINTIM,*],5) ; 01141500
LINTIM ~ LINTIM + 1 ; 01141600
END ; 01141700
END BUILDBOX ; 01141800
COMMENT DOCUMENT* 31* * * * * * * * * * * * * * * * * * * * * * * * *; 01141900
PROCEDURE EMIT ; 01142000
COMMENT MOVES BOX INTO IMAGE, CHECKING LINE COUNT ; 01142100
BEGIN 01142200
LABEL RETURN ; 01142300
IF MONITOG THEN WRITE(LINE,MONITFORM,"EMIT "," "); 01142400
IF ((NLINES + LINTIM) > MAXLINES ) OR COLTOG THEN 01142500
BEGIN 01142600
IF COL = MAXCOL THEN 01142700
BEGIN 01142800
PAGECONNECT ; PRINTPAGE ; 01142900
END ELSE 01143000
BEGIN 01143100
IF CONB THEN 01143200
BEGIN 01143300
TEMP ~ (COL-1) | 5 ; 01143400
MOVEWORDS(STBOX[8,0],IMAGE[NLINES,TEMP],5) ; 01143500
NLINES ~ NLINES + 1; 01143600
MOVEWORDS(STBOX[9,0],IMAGE[NLINES,TEMP],5) ; 01143700
TEMP ~ ((COL-1)|5) + 4 ; 01143800
FOR I ~ 4 STEP 1 UNTIL NLINES DO 01143900
SETCHAR(IMAGE[I,TEMP],7,".") ; 01144000
IF NLINES > PAGELINES THEN PAGELINES ~ NLINES ; 01144100
COL ~COL + 1 ; 01144200
NLINES ~ 4 ; TEMP ~ (COL-1)|5; 01144300
MOVEWORDS(STBOX[6,0],IMAGE[NLINES,TEMP],5) ; 01144400
NLINES ~ NLINES + 1 ; 01144500
MOVEWORDS(STBOX[7,0],IMAGE[NLINES,TEMP],5) ; 01144600
NLINES ~ NLINES + 1 ; 01144700
END ELSE 01144800
BEGIN 01144900
COL ~ COL + 1 ; 01145000
IF NLINES > PAGELINES THEN PAGELINES ~ NLINES ; 01145100
NLINES ~4 ; 01145200
END ; 01145300
END ; 01145400
END ; 01145500
IF COLTOG THEN GO TO RETURN ; 01145600
TEMP ~ (COL-1)|5 ; 01145700
FOR I ~ 0 STEP 1 UNTIL LINTIM - 1 DO 01145800
MOVEWORDS(TIM[I,0],IMAGE[NLINES+I,TEMP],5) ; 01145900
NLINES ~ NLINES+LINTIM ; LINTIM ~ 0 ; 01146000
RETURN: 01146100
IF NLINES > PAGELINES THEN PAGELINES ~ NLINES ; 01146200
IMAGEUSED ~ TRUE ; 01146300
END EMIT ; 01146400
COMMENT DOCUMENT* 31* * * * * * * * * * * * * * * * * * * * * * * * *; 01146500
PROCEDURE PRINTFLOW ; 01146600
COMMENT DOES ANALYSIS OF INPUT AND CALLS THE SUITABLE ROUTINES; 01146700
BEGIN 01146800
LABEL MORE, FINDHEAD, MORELAB, GOL1, LABLER, KI; 01146900
LABEL STARTL,FINISHL,QUITL,BEGINL,ENDL,BOXL,COMMENTL, 01147000
PAGEINCL, MAXCOLL , DATEL , 01147100
LEFTL, 01147200
NOTEL,BOXLL,TABLEL,CODEL,BOXONLYL,PTABLE, 01147300
HEADL,TITLEL,YESL,NOL,TOL,GOL,IFL,SWITCHL,ENTERL, 01147400
EXITL,PAGEL,LABELL,TERML,PAGEIDL,COLL,NOGOODL ; 01147500
SWITCH BOXSW ~ 01147600
STARTL,FINISHL,QUITL,BEGINL,ENDL,BOXL,COMMENTL, 01147700
HEADL,TITLEL,YESL,NOL,TOL,GOL,IFL,NOGOODL, 01147800
SWITCHL,ENTERL, 01147900
EXITL, PAGEL,NOGOODL, TERML,PAGEIDL,COLL,PAGEINCL, 01148000
MAXCOLL, DATEL, 01148100
NOTEL,TABLEL,CODEL,BOXONLYL, 01148200
YESL,NOL,IFL,NOGOODL ; 01148300
BOOLEAN GEN, GENS; INTEGER PARENCOUNT; 01148400
IF MONITOG THEN 01148500
WRITE (PRINT,MONITFORM, "PRINTF","LOW "); 01148600
MORE: 01148700
IF PUNCHPAGES THEN 01148800
IF SEMI OR Q = "1: " OR Q ="1) " 01148900
OR Q = "1( " THEN 01149000
BEGIN 01149100
MOVEWORDS(GLOBE[0],WORDBUF[0],9); 01149200
MOVEWORDS(NCR,WORDBUF[10],1); 01149300
MOVEWORDS(LCR,WORDBUF[11],1); 01149400
SAVESEQ ~ ISEQ; 01149500
END; 01149600
SCEN; 01149700
IF Q="1) " THEN 01149800
BEGIN IF (PARENCOUNT~PARENCOUNT-1) < 0 THEN GO TO KI 01149900
ELSE GO TO MORE; 01150000
END ELSE 01150100
IF Q="1( " THEN PARENCOUNT~PARENCOUNT+1 ELSE 01150200
PROGPOINTLAB; 01150300
IF RESULT ! 1 THEN GO TO MORE ; 01150400
IF Q = "4ELSE " THEN 01150500
BEGIN 01150600
FLOWERROR(33); 01150700
GO TO MORE; 01150800
END; 01150900
IF ASMFLOWTOG THEN IF NOT (EXAMINE(NCR)=" " OR 01151000
EXAMINE(NCR) = ":") THEN BUILDHYPH; 01151100
IF RESULT = 1 AND FINDCHAR(NCR,":") 01151200
THEN GO TO LABELL ; 01151300
IF Q = "7NOTEB" THEN GO TO NOTEL; 01151400
IF Q = "8LEFTJ" THEN GO TO LEFTL; 01151500
IF Q = "9SWITC" THEN GO TO SWITCHL ; 01151600
IF Q = "5PUNCH" THEN 01151610
BEGIN 01151612
PUNCHFLOWTOG ~ TRUE ; GO TO MORE ; 01151614
END ; 01151616
IF Q = "4WIDE " THEN 01151618
BEGIN 01151620
FLOWWIDETOG ~ TRUE ; GO TO MORE ; 01151622
END ; 01151624
IF SEARCHRESERVED THEN GO TO BOXSW[RESTYPE]; 01151700
GO TO BOXLL ; 01151800
STARTL: GO TO MORE ; 01151900
FINISHL: IF BEGINCOUNT ! 0 THEN 01152000
FLOWERROR(2) ; 01152100
PAGETOG ~ TRUE; 01152200
PRINTPAGE ; 01152300
PRINTINDEX ; 01152400
GO TO MOREFLOW ; 01152500
QUITL: QUITOG~ TRUE; 01152600
IF BEGINCOUNT !0 THEN 01152700
BEGIN 01152800
PAGETOG ~ TRUE; 01152900
PRINTPAGE ; 01153000
FLOWERROR(2) ; GO TO EOFCARD ; 01153100
END ; 01153200
PAGETOG ~ TRUE; 01153300
PRINTPAGE ; 01153400
PRINTINDEX ; 01153500
GO TO EOFCARD ; 01153600
BEGINL: IF BEGINCOUNT ! 0 THEN 01153700
BEGIN 01153800
FLOWERROR(3) ; FINDSEMI ; GO TO MORE ; 01153900
END ; 01154000
BEGINCOUNT ~1 ; 01154100
PAGETOG ~ TRUE; 01154200
PRINTPAGE; 01154300
PAGETOG ~ FALSE; 01154400
GO TO MORE; 01154500
ENDL : IF BEGINCOUNT ! 1 THEN 01154600
FLOWERROR(4) ; 01154700
BEGINCOUNT ~ 0 ; 01154800
PAGETOG ~ TRUE; 01154900
PRINTPAGE ; 01155000
DO SCAN UNTIL Q="5BEGIN" OR Q="6FINIS" OR Q="4QUIT "; 01155100
IF Q = "5BEGIN" THEN GO TO BEGINL ; 01155200
IF Q = "6FINIS" THEN GO TO FINISHL ; 01155300
IF Q = "4QUIT " THEN GO TO QUITL ; 01155400
BOXLL: BOXTYPE ~ TRUE ; BUILDBOX(0) ; BOXTYPE ~ FALSE ; 01155500
EMIT ; GO TO MORE ; 01155600
BOXL: IF Q = "3BOX " THEN 01155700
BEGIN 01155800
SCEN ; GO TO BOXLL ; 01155900
END ; 01156000
BUILDBOX(0) ; 01156100
EMIT ; GO TO MORE ; 01156200
COMMENTL: FINDSEMI ; GO TO MORE ; 01156300
NOTEL: 01156400
IF Q = "7NOTEB" THEN SCEN; 01156500
BOXTYPE ~TRUE; BUILDBOX(3); BOXTYPE ~ FALSE; 01156600
EMIT ; GO TO MORE ; 01156700
HEADL: 01156800
HEADFULL ~ TITLEFULL ~ TRUE; 01156900
BUILDTITLE (HEADBUFF); 01157000
HEADCHANGE ~ TEMPTOG ; 01157100
HEADFULL~TITLEFULL; 01157200
TITLEFULL ~FALSE; 01157300
GO TO MORE; 01157400
TITLEL: 01157500
TIGHTFULL ~TITLEFULL~ TRUE; 01157600
BUILDTITLE (TITLEBUFF); 01157700
TIGHTFULL~TITLEFULL; 01157800
TITLECHANGE ~ TEMPTOG ; 01157900
TITLEFULL ~FALSE; 01158000
GO TO MORE; 01158100
YESL: FLOWERROR(7) ; FINDSEMI ; GO TO MORE ; 01158200
NOL: FLOWERROR(8) ; FINDSEMI ; GO TO MORE ; 01158300
TOL: FLOWERROR(9) ; FINDSEMI ; GO TO MORE ; 01158400
GOL: SCEN ; IF Q = "2TO " THEN SCEN ; 01158500
PROGPOINTLAB ; 01158600
IF RESULT !1 THEN 01158700
BEGIN 01158800
FLOWERROR(10) ; FINDSEMI ; GO TO MORE ; 01158900
END ; 01159000
IF ASMFLOWTOG THEN BUILDHYPH; 01159100
GOL1: CONB ~ TRUE; 01159200
IF Q = "6GENSY" THEN 01159300
BEGIN 01159400
IF G = 0 THEN 01159500
BEGIN 01159600
FLOWERROR (32); 01159700
GO TO MORE; 01159800
END; 01159900
Q~ ACCUM[1] ~ GENLAB[G~G-1]; 01160000
GENLAB[G] ~ GENLAB[G+1]; 01160100
COUNT ~ 5; 01160200
END; 01160300
FOR I ~ 0,1,2,3 DO 01160400
MOVEWORDS(STBOX[16+I,0],TIM[LINTIM+I,0],5) ; 01160500
LINTIM ~ LINTIM + 4 ; 01160600
IF SORTSCRAMBLE THEN BUILDXREF ; 01160700
IF COUNT > 11 THEN COUNT ~ 11 ; 01160800
MOVECHARS(ACCUM[1],TIM[LINTIM-2,3],3,3,COUNT) ; 01160900
MOVECHARS(LABPOINT,TIM[LINTIM-2,3],7,2,1) ; 01161000
EMIT; CONB ~ FALSE ; 01161100
IF PAGETOG THEN 01161200
BEGIN 01161300
PAGECONNECT ; 01161400
PRINTPAGE; PAGETOG ~ FALSE ; 01161500
END ; 01161600
IF GEN THEN GO TO LABLER ; GO TO MORE ; 01161700
IFL: 01161800
BEGIN 01161900
INTEGER BLOCKEXTENDER; 01162000
IF Q = "4TEST " THEN SCEN; 01162100
BUILDBOX (1); 01162200
IF NOT ( Q= "3YES " OR Q = "4TRUE " OR Q = "2NO " 01162300
OR Q = "5FALSE" OR Q = "4THEN ") THEN 01162400
BEGIN 01162500
FLOWERROR(34); 01162600
IF FINDCHAR(NCR,")") THEN SCEN; 01162700
GO TO MORE; 01162800
END; 01162900
LBRANCH~IF (Q="3YES " OR Q="4TRUE " OR Q="4THEN ") THEN 01163000
"NO " ELSE "YES" ; 01163100
RBRANCH ~ IF LBRANCH = "YES" THEN "NO " ELSE "YES" ; 01163200
SCEN; IF Q="1( " THEN 01163300
BEGIN 01163400
LABPOINT ~" "; GEN ~ TRUE; GENSYM; 01163500
Q~ACCUM[1] ~ GENLAB[G]; COUNT ~ 5; 01163600
RBRANCH~IF (LBRANCH~RBRANCH)="NO " THEN "YES" ELSE "NO "; 01163700
END 01163800
ELSE 01163900
BEGIN 01164000
IF Q = "2GO " THEN SCEN; 01164100
IF Q = "2TO " THEN SCEN ; 01164200
PROGPOINTLAB ; 01164300
IF RESULT ! 1 THEN 01164400
BEGIN 01164500
FLOWERROR(15) ; FINDSEMI ; GO TO MORE ; 01164600
END ; 01164700
END; 01164800
IF ASMFLOWTOG THEN IF NOT GEN THEN BUILDHYPH; 01164900
FOR I ~ 0,1,2,3,4 DO 01165000
MOVEWORDS(STBOX[28+I,0],TIM[LINTIM+I,0],5) ; 01165100
LINTIM ~ LINTIM + 5 ; 01165200
IF SORTSCRAMBLE THEN BUILDXREF ; 01165300
IF COUNT > 11 THEN COUNT ~ 11 ; 01165400
MOVECHARS(ACCUM[1],TIM[LINTIM-3,3],3,3,COUNT) ; 01165500
MOVECHARS(LABPOINT,TIM[LINTIM-3,3],7,2,1) ; 01165600
MOVECHARS(LBRANCH,TIM[LINTIM-4,1],5,7,3) ; 01165700
MOVECHARS(RBRANCH,TIM[LINTIM-4,2],5,5,3) ; 01165800
IF GEN THEN 01165900
BEGIN 01166000
EMIT; 01166100
Q ~ "1( "; 01166200
PRINTFLOW; 01166300
END; 01166400
END; SCEN; IF SEMI AND GEN THEN 01166500
LABLER: BEGIN 01166600
Q ~ ACCUM[1] ~ GENLAB[G]; G~G-1; COUNT~5; GO TO LABELL;01166700
END; 01166800
IF Q = "1. " THEN SCEN; 01166900
IF SEMI THEN 01167000
BEGIN 01167100
EMIT ; GO TO MORE ; 01167200
END ; 01167300
IF Q = "4ELSE " THEN 01167400
BEGIN 01167500
IF GEN THEN IF PUNCHPAGES THEN 01167600
BEGIN 01167700
MOVEWORDS(GLOBE [0],WORDBUF[0],9); 01167800
MOVEWORDS(NCR,WORDBUF[10],1); 01167900
MOVEWORDS(LCR,WORDBUF[11],1); 01168000
SAVESEQ ~ ISEQ; 01168100
END ; 01168200
SCEN ; 01168300
END ; 01168400
IF Q = "2GO " AND NOT GEN THEN GO TO GOL; 01168500
IF GEN THEN IF SEMI THEN 01168600
BEGIN 01168700
SCEN ; IF Q ! "4PAGE " THEN 01168800
BEGIN 01168900
FLOWERROR(16); GO TO MORE ; 01169000
END ; 01169100
PAGETOG ~ TRUE ; 01169200
SCEN ; IF SEMI THEN SCEN ; 01169300
END ; 01169400
IF Q = "1( " AND GEN THEN 01169500
BEGIN 01169600
GENSYM; Q ~ ACCUM[1]~GENLAB[G]; GENLAB[G]~GENLAB[G-1]; 01169700
GENLAB[G-1]~ Q; COUNT~5; GENS~TRUE; GO TO GOL1; 01169800
END; 01169900
FLOWERROR(16) ; FINDSEMI ; GO TO MORE ; 01170000
SWITCHL: 01170100
IF Q = "9SWITC" THEN SCEN ; 01170200
BUILDBOX(2) ; 01170300
IF Q ! "2GO " THEN 01170400
BEGIN 01170500
FLOWERROR(23); GO TO MORE ; 01170600
END ; 01170700
IF Q = "2GO " THEN SCEN ; 01170800
IF Q = "2TO " THEN SCEN ; 01170900
PROGPOINTLAB ; 01171000
MORELAB: 01171100
IF ASMFLOWTOG THEN BUILDHYPH; 01171200
FOR I ~ 0,1,2,3 DO 01171300
MOVEWORDS(STBOX[12+I,0],TIM[LINTIM+I,0],5) ; 01171400
LINTIM ~ LINTIM + 4 ; 01171500
IF SORTSCRAMBLE THEN BUILDXREF ; 01171600
IF COUNT > 11 THEN COUNT ~ 11 ; 01171700
MOVECHARS(ACCUM[1],TIM[LINTIM-2,3],3,3,COUNT) ; 01171800
MOVECHARS(LABPOINT,TIM[LINTIM-2,3],7,2,1) ; 01171900
SCEN ; IF Q = "1( " THEN 01172000
BEGIN 01172100
SCEN ; IF RESULT !3 OR COUNT > 3 THEN 01172200
BEGIN 01172300
IF RESULT !3 THEN FLOWERROR(29) ELSE FLOWERROR(30) ; 01172400
CANTPAGEHERE ~ FALSE; 01172500
FINDSEMI ; GO TO MORE ; 01172600
END ; 01172700
MOVECHARS(ACCUM[1],TIM[LINTIM-2,2],3,6,COUNT) ; 01172800
SCEN ; IF Q ! "1) " THEN 01172900
BEGIN 01173000
FLOWERROR(31) ; % MISSING ) 01173100
CANTPAGEHERE ~ FALSE; 01173200
FINDSEMI ; GO TO MORE ; 01173300
END ; 01173400
SCEN ; 01173500
END ; 01173600
IF Q = "1, " THEN 01173700
BEGIN 01173800
EMIT ; 01173900
CANTPAGEHERE ~ TRUE; 01174000
SCEN ; PROGPOINTLAB ; GO TO MORELAB ; 01174100
END ; 01174200
CONB ~ FALSE ; 01174300
IF SEMI THEN 01174400
BEGIN 01174500
SETCHAR(TIM[LINTIM-1,2],4," ") ; 01174600
EMIT; 01174700
CANTPAGEHERE ~ FALSE; 01174800
GO TO MORE; 01174900
END ; 01175000
CANTPAGEHERE ~ FALSE; 01175100
FLOWERROR(17) ; FINDSEMI ; GO TO MORE ; 01175200
ENTERL: FOR I ~ 0 STEP 1 UNTIL 2 DO 01175300
MOVEWORDS(STBOX[1+I,0],TIM[LINTIM+I,0],5) ; 01175400
LINTIM ~ LINTIM + 3 ; EMIT ; 01175500
CONB ~ TRUE ; GO TO MORE ; 01175600
EXITL: MOVEWORDS(STBOX[12,0],TIM[LINTIM,0],6) ; 01175700
LINTIM ~ LINTIM +1 ; 01175800
FOR I ~ 0 STEP 1 UNTIL 2 DO 01175900
MOVEWORDS(STBOX[3+I,0],TIM[LINTIM+I,0],5) ; 01176000
LINTIM ~ LINTIM + 3 ; EMIT ; 01176100
CONB ~ FALSE ; GO TO MORE ; 01176200
DATEL: DATETOG ~ TRUE ; SCEN ; 01176300
IF Q = "5CLEAR" THEN DATETOG ~ FALSE ; 01176400
IF SEMI THEN GO TO MORE ; FINDSEMI ; GO TO MORE ; 01176500
PAGEL: SCEN ; IF RESULT = 3 THEN 01176600
DTOCT(ACCUM[1],3,PAGEINC,COUNT) ELSE PAGEINC~SAVEPAGEINC; 01176700
PAGETOG ~ TRUE; 01176800
IF Q = "2NO " THEN NOPAGETOG ~ TRUE ELSE 01176900
IF SEMI THEN 01177000
BEGIN 01177100
IF INSERTROW THEN PAGEN ~ SAVEPAGEN; 01177200
INSERTROW ~ FALSE; 01177300
END ELSE 01177400
IF Q = "#INSER" THEN 01177500
BEGIN 01177600
LABEL L; 01177700
INSERTOG ~TRUE; 01177800
IF NOT INSERTROW THEN SAVEPAGEN ~ PAGEN; 01177900
INSERTROW ~TRUE; 01178000
PAGEINC ~1; 01178100
SCEN; IF RESULT ! 3 THEN GO TO L; 01178200
DTOCT (ACCUM [1],3,PAGEN,COUNT); 01178300
SCEN; IF COMMA THEN SCAN; IF RESULT !3 THEN GO TO L; 01178400
DTOCT (ACCUM [1],3,PAGEINC,COUNT); 01178500
L: PAGEN~PAGEN -PAGEINC; 01178600
END; 01178700
PAGECONNECT; PRINTPAGE; 01178800
PAGETOG ~ FALSE; 01178900
IF SEMI THEN GO TO MORE; 01179000
FINDSEMI ; GO TO MORE ; 01179100
LABELL: IF CONB THEN TEMP ~ 20 ELSE TEMP ~ 24 ; 01179200
IF Q = "6GENSY" THEN 01179300
BEGIN 01179400
GENSYM; COUNT ~5; Q ~ ACCUM[1] ~ GENLAB[G]; 01179500
END; 01179600
FOR I ~ 0,1,2,3 DO 01179700
MOVEWORDS(STBOX[TEMP+I,0],TIM[LINTIM+I,0],5) ; 01179800
LINTIM ~ LINTIM + 4 ; 01179900
LABELUSE ~ TRUE ; 01180000
IF SORTSCRAMBLE THEN BUILDXREF ; 01180100
LABELUSE ~FALSE ; 01180200
IF COUNT > 11 THEN COUNT ~ 11 ; 01180300
MOVECHARS(ACCUM[1],TIM[LINTIM-2,0],3,2,COUNT) ; 01180400
MOVECHARS(LABPOINT,TIM[LINTIM-2,0],7,1,1) ; 01180500
EMIT; CONB ~ TRUE; IF Q="6GENSY" THEN GO TO MORE; 01180600
IF PUNCHPAGES THEN 01180700
BEGIN 01180800
MOVEWORDS(GLOBE[0],WORDBUF[0],9) ; 01180900
MOVEWORDS(NCR,WORDBUF[10],1); 01181000
MOVEWORDS(LCR,WORDBUF[11],1); 01181100
SAVESEQ ~ ISEQ ; 01181200
END ; 01181300
IF GENS THEN 01181400
BEGIN 01181500
GENS ~ FALSE; PRINTFLOW; GO TO LABLER; 01181600
END; 01181700
IF GEN THEN 01181800
BEGIN 01181900
GEN ~ FALSE; GO TO MORE; 01182000
END; 01182100
SCEN; IF Q ! "1: " THEN 01182200
BEGIN 01182300
FLOWERROR(11) ; FINDSEMI ; GO TO MORE ; 01182400
END ; 01182500
GO TO MORE ; 01182600
BOXONLYL: SCEN ; 01182700
TERML: BUILDBOX(0) ; EMIT ; 01182800
CONB ~ FALSE ; GO TO MORE ; 01182900
TABLEL: SCAN;IF RESULT = 3 THEN 01183000
DTOCT(ACCUM[1],3,TABLECOUNT,COUNT) ELSE 01183100
TABLECOUNT ~ 5000 ; 01183200
PAGETOG ~ TRUE; 01183300
PAGECONNECT ; PRINTPAGE ; 01183400
FLOWTABTOG ~ TABLETOG ~ TRUE ; 01183500
GO TO PTABLE ; 01183600
CODEL: SCAN; IF RESULT = 3 THEN 01183700
DTOCT(ACCUM[1],3,TABLECOUNT,COUNT) ELSE 01183800
TABLECOUNT ~ 5000 ; 01183900
PAGETOG ~ TRUE; 01184000
PAGECONNECT ; PRINTPAGE ; 01184100
FLOWTABTOG ~ TRUE ; CODETOG ~ TRUE ; 01184200
GO TO PTABLE ; 01184300
PTABLE: 01184400
IF PERCENT THEN SCAN ELSE READATAPE; 01184500
TABLECOUNT ~ TABLECOUNT - 1 ; 01184600
IF ASMLTOG THEN 01184700
BEGIN 01184800
IF CODETOG THEN 01184900
MOVEWORDS(ASMLBUFF[DEVICE,*],IMAGE[NLINES,*],10) ; 01185000
IF TABLETOG THEN 01185100
MOVEWORDS(GLOBE[0],IMAGE[NLINES,1],8) ; 01185200
END ELSE 01185300
IF CHECKCHAR(GLOBE[0],0,"%") THEN TABLECOUNT ~0 ELSE 01185400
MOVEWORDS(GLOBE,IMAGE[NLINES,0],9) ; 01185500
NLINES ~ NLINES + 1 ; 01185600
IMAGEUSED ~ TRUE ; 01185700
PAGELINES ~ NLINES ; 01185800
IF NLINES } MAXLINES THEN PRINTPAGE ; 01185900
IF TABLECOUNT !0 THEN GO TO PTABLE ; 01186000
PAGELINES ~ NLINES ; 01186100
IF NLINES ! 4 THEN PRINTPAGE ; 01186200
FLOWTABTOG ~ CODETOG ~ TABLETOG ~ FALSE ; 01186300
GO TO MORE ; 01186400
PAGEIDL: 01186500
BEGIN 01186600
INTEGER BLOCKEXTENDER; 01186700
INSERTROW ~ FALSE; 01186800
LFPAGEID~TRUE; PAGEN ~0; PAGEID~" "; 01186900
SCEN ; IF RESULT ! 3 THEN 01187000
BEGIN 01187100
FLOWERROR(18) ; FINDSEMI ; GO TO MORE ; 01187200
END ; 01187300
DTOCT(ACCUM[1],3,PAGEN,COUNT) ; 01187400
SCEN ; IF Q ! "1, " THEN 01187500
BEGIN 01187600
FLOWERROR(19); FINDSEMI ; GO TO MORE ; 01187700
END ; 01187800
SCEN ; IF Q = "1+ " THEN 01187900
BEGIN 01188000
LFPAGEID ~FALSE ; SCEN ; 01188100
END ; 01188200
IF RESULT = 5 THEN 01188300
BEGIN 01188400
IJUNK ~ IF COUNT > 7 THEN 6 ELSE COUNT - 2 ; 01188500
MOVECHARS(ACCUM[1],PAGEID,4,2,IJUNK) ; 01188600
END ELSE FLOWERROR(20) ; 01188700
IF IMAGEUSED THEN PAGEN ~PAGEN -PAGEINC ELSE NEWDOCPAGE; 01188800
SCEN; IF SEMI THEN GO TO MORE; 01188900
IF Q = "8DECIM" THEN 01189000
BEGIN 01189100
DECIMALSTOG ~TRUE; 01189200
PLACES ~2; 01189300
SCEN; IF Q = "2NO " THEN 01189400
BEGIN 01189500
DECIMALSTOG ~ FALSE; 01189600
FINDSEMI; 01189700
IF NOT IMAGEUSED THEN NEWDOCPAGE; 01189800
GO TO MORE; 01189900
END ELSE 01190000
IF RESULT = 3 THEN 01190100
DTOCT (ACCUM[1],3,PLACES,COUNT); 01190200
IF NOT IMAGEUSED THEN NEWDOCPAGE; 01190300
END; 01190400
FINDSEMI ; GO TO MORE ; 01190500
END; 01190600
MAXCOLL: SCEN ; IF RESULT = 3 THEN 01190700
BEGIN 01190800
DTOCT(ACCUM[1],3,MAXCOL,COUNT) ; 01190900
IF MAXCOL < 1 OR MAXCOL >3 THEN 01191000
BEGIN 01191100
MAXCOL ~ 3 ; FLOWERROR(21) ; 01191200
END ; 01191300
END ; 01191400
FINDSEMI ; GO TO MORE ; 01191500
PAGEINCL: SCEN ; IF RESULT ! 3 THEN PAGEINC ~ 1 ELSE 01191600
DTOCT(ACCUM[1],3,PAGEINC,COUNT) ; 01191700
SAVEPAGEINC ~PAGEINC ; GO TO MORE ; 01191800
LEFTL: 01191900
LEFTJUST ~ TRUE; 01192000
SCAN; IF SEMI THEN GO TO MORE; 01192100
IF Q = "2NO " THEN LEFTJUST ~ FALSE; 01192200
FINDSEMI; GO TO MORE; 01192300
NOGOODL: FLOWERROR(12); FINDSEMI ; GO TO MORE ; 01192400
COLL: 01192500
BEGIN 01192600
INTEGER BLOCKEXTENDER; 01192700
COLTOG ~ TRUE; 01192800
IF PUNCHPAGES THEN 01192900
BEGIN 01193000
FINDSEMI; 01193100
MOVEWORDS(WORDBUF[0],SAVEBUF[0],12); 01193200
SAVEBUF[12] ~ SAVESEQ; 01193300
MOVEWORDS(GLOBE[0],WORDBUF[0],9); 01193400
MOVEWORDS(NCR,WORDBUF[10],1); 01193500
MOVEWORDS(LCR,WORDBUF[11],1); 01193600
SAVESEQ ~ ISEQ; 01193700
END; 01193800
EMIT; 01193900
COLTOG ~ FALSE; 01194000
GO TO MORE; 01194100
END; 01194200
KI: END PRINTFLOW; 01194300
COMMENT RESTYPE-RESERVED FILL FOR FLOW 01194400
1 START 2 FINISH 3 QUIT 4 BEGIN 5 END 6 BOX 01194500
7 COMMENT 8 HEAD HEADING 9 TITLE 10 TRUE 01194600
11 FALSE 12 TO 13 GO 14 IF 16 SWITCH 17 ENTER 01194700
18 EXIT 19 PAGE 01194800
21 TERM TERMINATE 22 PAGEID 23 COL COLUMN 24 PAGEINC 25 MAXCOL 26 DATE 01194900
27 NOTE 33 DOES IS WAS 28 TABLE 29 CODE 30 BOXONLY 01195000
31 YES 01195100
32 NO 01195200
33 TEST ; 01195300
CONB ~ COLTOG ~ IMAGEUSED ~ LEFTJUST ~ BOXTYPE~ 01195400
CODETOG ~ TABLETOG ~ FALSE; 01195500
PUNCHFLOWTOG ~ FLOWWIDETOG ~ FALSE ; 01195510
MAXTIM~ NLINES ~LINTIM ~ COL ~ PARP ~ TEMP ~ I~MAXCOL~ 01195600
BEGINCOUNT ~ PAGELINES ~ TABLECOUNT ~ 0; 01195700
PFSEQ ~ 10 ; 01195710
FILLFLOW; 01195800
VOLUME ~ 0; 01195900
FILL SB[01,*]WITH" "," "," -------"," "," ";01196000
FILL SB[02,*]WITH" "," "," :ENTER:"," "," ";01196100
FILL SB[03,*]WITH" "," "," -------"," "," ";01196200
FILL SB[04,*]WITH" "," "," :EXIT :"," "," ";01196300
FILL SB[05,*]WITH" "," "," -------"," "," ";01196400
FILL SB[06,*]WITH"........","........","..... "," "," ";01196500
FILL SB[07,*]WITH" "," "," : "," "," ";01196600
FILL SB[08,*]WITH" "," "," : "," "," .";01196700
FILL SB[09,*]WITH" "," "," :...","........","........";01196800
FILL SB[10,*]WITH" ----","--------","--------","--------","---- ";01196900
FILL SB[11,*]WITH" * "," "," "," "," * ";01197000
FILL SB[11,*]WITH" * "," "," "," "," * ";01197100
FILL SB[12,*]WITH" "," "," : "," "," ";01197200
FILL SB[13,*]WITH" "," "," : "," "," ";01197300
FILL SB[14,*]WITH" "," "," :...","... "," ";01197400
FILL SB[15,*]WITH" "," "," : "," "," ";01197500
FILL SB[16,*]WITH" "," "," : "," "," ";01197600
FILL SB[17,*]WITH" "," "," : "," "," ";01197700
FILL SB[18,*]WITH" "," "," :...","... "," ";01197800
FILL SB[19,*]WITH" "," "," "," "," ";01197900
FILL SB[20,*]WITH" "," "," : "," "," ";01198000
FILL SB[21,*]WITH" "," "," : "," "," ";01198100
FILL SB[22,*]WITH" ......","........","..... "," "," ";01198200
FILL SB[23,*]WITH" "," "," : "," "," ";01198300
FILL SB[24,*]WITH" "," "," "," "," ";01198400
FILL SB[25,*]WITH" "," "," "," "," ";01198500
FILL SB[26,*]WITH" ......","........","..... "," "," ";01198600
FILL SB[27,*]WITH" "," "," : "," "," ";01198700
FILL SB[28,*]WITH" "," ",": : "," "," ";01198800
FILL SB[29,*]WITH" "," ",". . "," "," ";01198900
FILL SB[30,*]WITH" "," ",". ..","... "," ";01199000
FILL SB[31,*]WITH" "," ","..... "," "," ";01199100
FILL SB[32,*]WITH" "," "," : "," "," ";01199200
FILL SB[33,*]WITH" "," "," : "," "," ";01199300
FILL SB[34,*]WITH" * * ","* * * * ","* * : * ","* * * * ","* * ";01199400
FILL SB[35,*]WITH" **","********","********","********","** ";01199500
FILL SB[36,*]WITH" * "," "," "," "," * ";01199600
IF PUNCHPAGES THEN 01199700
IF INSTOG THEN FILL BLOCKBUFFER [*] WITH 01199800
"* PAGE ","INSERTPA","GE ",0,"* " ELSE 01199900
FILL BLOCKBUFFER[*] WITH 01200000
"* PAGE *"," ", " "; 01200100
MOREFLOW: 01200200
NLINES ~ 0; 01200300
PAGETOG ~ TRUE; 01200400
ZNOSKIP ~ FALSE; 01200500
PRINTXREF; 01200600
ZNOSKIP ~ TRUE; 01200700
FLOWTOG ~ TRUE; 01200800
TITLECHANGE ~ HEADCHANGE ~ FALSE; 01200900
FOR I ~ 0 STEP 1 UNTIL 125 DO STACK[I] ~0; 01201000
TOTAL ~ 0; 01201100
CLEAR(TITLEBUFF,14) ; CLEAR(HEADBUFF,14) ; 01201200
PAGEN ~0; 01201300
FLOWIND ~0 ; 01201400
GENER ~ G ~ 0; 01201500
FILL TYPEIND[*] WITH 10,11,10,34 ; 01201600
IF REMOTETOG THEN MAXCOL ~ 1 ELSE 01201700
MAXCOL ~ 3 ; COL ~ 1 ; 01201800
IF SIXLINES THEN MAXLINES ~ 54 ELSE 01201900
MAXLINES ~ 70 ; MAXTIM ~ 39 ; 01202000
FOR I ~ 0 STEP 1 UNTIL 75 DO CLEAR(IMAGE[I,*],14) ; 01202100
NLINES ~ 4 ; LINTIM ~0 ; 01202200
DOCOUTPUT~TRUE; 01202300
PAGETOG ~ TRUE; 01202400
ZNOSKIP~TRUE; 01202500
NEWVOL ~ TRUE; 01202600
ZPG(ZF); 01202700
PAGEQUAL ~ 0 ; 01202800
PAGETOG ~ FALSE; 01202900
NEWDOCPAGE; 01203000
FLOWFOUND ~ FALSE; 01203100
MAINSTART: DOCLISTFLAG ~ FALSE; 01203200
WHILE Q! "7COMME" DO SCAN ; 01203300
SCAN; IF Q.[18:24] ! "FLOW" THEN GO TO MAINSTART; 01203400
FLOWFOUND ~ TRUE; 01203500
IF DOCLISTOG THEN 01203600
IF ASMLTOG THEN 01203700
BEGIN 01203800
CLEAR(LISTBUFFER,14); 01203900
MOVEWORDS(ASMLBUFF[DEVICE,*],LISTBUFFER,10) ; 01204000
ZPL (0,2,LISTBUFFER); 01204100
END ELSE 01204200
BEGIN 01204300
CLEAR(LISTBUFFER,14) ; 01204400
MOVEWORDS(GLOBE,LISTBUFFER[2],9) ; 01204500
MOVEWORDS(SEQ,LISTBUFFER[11],1) ; 01204600
ZPL (0,2,LISTBUFFER); 01204700
END; 01204800
VOLUME ~ VOLUME + 1 ; 01204900
DOCLISTFLAG ~ TRUE; 01205000
PRINTFLOW ; 01205100
COMMENT ARRIVAL HERE MEANS NO QUIT OR FINISH CARD; 01205200
FLOWERROR(35); 01205300
PRINTPAGE; 01205400
PAGETOG ~ TRUE; 01205500
GO TO EOFCARD; 01205600
END BLOCK PRINTFLOW; 01205700
IF MERGETOG THEN 01205800
BEGIN 01205900
COMMENT DOCUMENT* 7 * * * * * * * * * * * * * * * * * * * * * * * * * 01206000
BLOCK TO MERGE OLD AND NEW DOCUMENTS. 01206100
* SKIP 01206200
COMPARES A NEW DOCUMENT WITH A PREVIOUS ONE TO DETERMINE WHICH 01206300
PAGES HAVE BEEN CHANGED. COMPARISON IS THROUGH DIRECTORIES 01206400
WHICH HAVE BEEN WRITTEN AT THE END OF THE TWO DOCUMENTS. 01206500
* END; 01206600
INTEGER LOCA; 01206700
INTEGER I,J,POINTER,LASTOLD,LASTNEW,DOCREV; 01206800
INTEGER TEMP; 01206900
INTEGER INXPOINT,CHGPOINT,K,VOL1; 01207000
INTEGER KJUNK; 01207100
BOOLEAN PAGEONE,DIFFERENT; 01207200
ALPHA ATEMP; 01207300
LABEL MORE,EOF,FINISHUP,NEWVOL; 01207400
LABEL PRINTPLACE; 01207500
LABEL STOPSHORT; 01207600
LABEL TCASE, TOVER; 01207700
LABEL FINI2; 01207800
FORMAT ZFORM(8I8); 01207900
FORMAT FORM1(3I8); 01208000
FORMAT FORM2(2I8); 01208100
FORMAT PAGEMARKER ("XXXXXXXX"); 01208200
FORMAT CHGHEAD (X26,"CHANGE INDEX"), 01208300
INXHEAD (X15," CURRENT REVISION INDEX",X15,A6); 01208400
FORMAT CHGTAB(X6,"PAGE",X8, "CONT PAGE",X8,"REVISION", 01208500
X6, "ACTION"), 01208600
INXTAB (X6,"PAGE",X13,"PRESENT REVISION", 01208700
X7, "NO. OF CONT. PAGES"); 01208800
ARRAY INDEX,RVCONT,ODR,NDR[0:1022,0:15]; 01208900
ARRAY ACTIONS [0:3]; 01209000
DEFINE ERRORCONDITION = 01209100
BEGIN 01209200
FORMAT GOOF ( X10,"ERROR CONDITION"); 01209300
WRITE(LINE,GOOF); 01209400
J~J+1; GO TO MORE; 01209500
END# ; 01209600
DEFINE ADDPAGE = 01209700
BEGIN 01209800
PAGEONE~FALSE; 01209900
ENTERCHANGE (NEWBUF[*],1); 01210000
ENTERINDEX; 01210100
IF NOT HOLDOFFTOG THEN 01210200
PRINTOUTP; 01210300
END#; 01210400
DEFINE CHANGEPAGE = 01210500
BEGIN 01210600
COMPARE; IF NOT DIFFERENT THEN NDR[J,0]~0 ELSE 01210700
BEGIN 01210800
ENTERCHANGE(NEWBUF[*],2); 01210900
IF NOT HOLDOFFTOG THEN 01211000
PRINTOUTP; 01211100
END; 01211200
END#; 01211300
DEFINE DELETEPAGE = ENTERCHANGE(ODR[I,*],3)#; 01211400
DEFINE PRINTCHANGES = 01211500
IF CHGPOINT > 0 THEN 01211600
BEGIN 01211700
ZLCOUNTMAX ~ IF SIXLINES THEN 56 ELSE 78; 01211800
IF DATOG THEN 01211900
BEGIN 01212000
DECIMALSTOG ~ TRUE ; PLACES~2; 01212100
PAGEN ~ 15; PAGEINC~1; 01212200
NEWDOCPAGE; 01212300
END ; 01212400
IF TITLETOG THEN ZPL(ZF,2,DOCTITLE ); 01212500
WRITE (WORDBUF[*],CHGHEAD); 01212600
ZPL(ZF,2 ,WORDBUF[*]); 01212700
WRITE (WORDBUF[*],CHGTAB); 01212800
ZPL(ZF,ZSP,WORDBUF[*]); 01212900
FOR K ~ 1 STEP 1 UNTIL CHGPOINT DO 01213000
BEGIN 01213100
IF ZLCOUNT } ZLCOUNTMAX THEN 01213200
BEGIN 01213300
ZPG(ZF); 01213400
IF DATOG THEN 01213500
BEGIN 01213600
PAGEN ~ PAGEN +1; 01213700
NEWDOCPAGE; 01213800
ZPL(ZF,2,DOCTITLE); 01213900
END ; 01214000
ZPL(ZF,ZSP,WORDBUF[*]) ; 01214100
END ; 01214200
ZPL(ZF,ZSP,INDEX[K,*]); 01214300
END ; 01214400
ZLCOUNTMAX ~ 100; 01214500
ZPG (ZF); 01214600
END #; 01214700
DEFINE WRINDEX = 01214800
IF INXPOINT > 0 THEN 01214900
BEGIN 01215000
ZLCOUNTMAX ~ IF SIXLINES THEN 56 ELSE 78; 01215100
IF DATOG THEN 01215200
BEGIN 01215300
PAGEN ~ 2 ; PAGEINC ~ 1; 01215400
DECIMALSTOG ~ TRUE; PLACES ~ 1; 01215500
NEWDOCPAGE; 01215600
END ; 01215700
IF TITLETOG THEN ZPL(ZF,2,DOCTITLE ); 01215800
MOVECHARS (REVISIONS [DOCREV],ATEMP,2,2,6); 01215900
WRITE (WORDBUF[*],INXHEAD,ATEMP); 01216000
ZPL(ZF,2 ,WORDBUF[*]); 01216100
WRITE (WORDBUF[*],INXTAB); 01216200
ZPL(ZF,ZSP,WORDBUF[*]); 01216300
FOR K~1 STEP 1 UNTIL INXPOINT DO 01216400
BEGIN 01216500
IF ZLCOUNT } ZLCOUNTMAX THEN 01216600
BEGIN 01216700
ZPG(ZF); 01216800
IF DATOG THEN 01216900
BEGIN 01217000
PAGEN ~ PAGEN +1; 01217100
NEWDOCPAGE; 01217200
ZPL(ZF,2,DOCTITLE); 01217300
END ; 01217400
ZPL(ZF,ZSP,WORDBUF[*]); 01217500
END ; 01217600
ZPL(ZF,ZSP,RVCONT[K,*]); 01217700
END ; 01217800
ZLCOUNTMAX ~ 100; 01217900
ZPG (ZF); 01218000
END #; 01218100
COMMENT DOCUMENT* 31* * * * * * * * * * * * * * * * * * * * * * * * *; 01218200
BOOLEAN PROCEDURE CANFIND; 01218300
COMMENT TRUE IF PAGE FROM NEWDOC IS FOUND IN OLDDOC DIRECTORY ; 01218400
BEGIN 01218500
INTEGER K; LABEL L; BOOLEAN B; 01218600
B~ FALSE; 01218700
IF NDR[J-1,0] ! 5 THEN 01218800
IF NDR[J-1,1] = NEWBUF [1] THEN GO TO L; 01218900
FOR K~ I+1 STEP 1 UNTIL LASTOLD DO 01219000
BEGIN 01219100
IF ODR[K,6] > VOL1 THEN GO TO L; 01219200
IF ODR[K,1] = NEWBUF[1] THEN 01219300
IF EQUAL(NEWBUF[8],ODR[K,8],24) THEN 01219400
BEGIN 01219500
POINTER ~ K; 01219600
B ~ TRUE; 01219700
GO TO L; 01219800
END; 01219900
END ; 01220000
L: 01220100
CANFIND~B; 01220200
END CANFIND; 01220300
PROCEDURE COMPARE; 01220400
BEGIN 01220500
COMMENT FOR FUTURE USE - COULD ADD A CHARACTER COMPARE ; 01220600
DIFFERENT ~TRUE; 01220700
END COMPARE; 01220800
COMMENT DOCUMENT* 31* * * * * * * * * * * * * * * * * * * * * * * * *; 01220900
PROCEDURE PRINTOUTP; 01221000
COMMENT PRINTS PAGE FROM NEWDOC GIVEN BY CURRENT DIRECTORY ENTRY ; 01221100
BEGIN 01221200
INTEGER K,KJUNK; 01221300
LABEL EOF; 01221400
KJUNK~ NEWBUF[4] -1; 01221500
K ~ NEWBUF[3]; 01221600
IF OLDONLYTOG THEN READ(OLDDOC[K],15,WORDBUF[*]) ELSE 01221700
READ (NEWDOC[K],15,WORDBUF[*]); 01221800
IF NEWBUF[7] = 1 THEN 01221900
IF NOT PRINTSELECTOG THEN 01222000
MOVECHARS (REVISIONS [DOCREV],WORDBUF[1],6,6,2); 01222100
ZPL (ZF,1,WORDBUF[*]); 01222200
IF OLDONLYTOG THEN READ(OLDDOC ,15,WORDBUF[*]) ELSE 01222300
READ (NEWDOC,15,WORDBUF[*]); 01222400
FOR K ~ K+ 1 STEP 1 UNTIL KJUNK DO 01222500
BEGIN 01222600
IF OLDONLYTOG THEN 01222700
READ(OLDDOC,15,WORDBUF[*])[EOF] ELSE 01222800
READ (NEWDOC,15,WORDBUF[*]) [EOF]; 01222900
ZPL (ZF,1,WORDBUF[*]); 01223000
END; 01223100
ZPG (ZF); 01223200
EOF: END PRINTOUTP; 01223300
COMMENT DOCUMENT* 33* * * * * * * * * * * * * * * * * * * * * * * * *; 01223400
PROCEDURE ENTERCHANGE (A,TYPE); 01223500
VALUE TYPE; 01223600
ARRAY A[*]; INTEGER TYPE; 01223700
COMMENT PUTS CHANGE IN CHANGE INDEX AND UPDATES PAGE REVISION ; 01223800
BEGIN 01223900
INTEGER K; 01224000
COMMENT TYPE 1 = ADDITION, 2= CHANGE, 3 = DELETION ; 01224100
CLEAR (WORDBUF[0],14); 01224200
IF TYPE = 3 THEN K~ OLDBUF [5] ELSE 01224300
NDR[J,5] ~ NEWBUF[5] ~ K~ DOCREV; 01224400
MOVEWORDS (A[10],WORDBUF[2],1); 01224500
MOVEWORDS ( REVISIONS[K],WORDBUF[4],1); 01224600
MOVEWORDS (A[8],WORDBUF[0],2); 01224700
MOVEWORDS (ACTIONS [TYPE],WORDBUF[6],1); 01224800
CHGPOINT ~ CHGPOINT +1; 01224900
WRITE (INDEX[CHGPOINT,*],15,WORDBUF[*]); 01225000
IF DEBEATLETOG THEN WRITE(LINE,15,WORDBUF[*]); 01225100
END ENTERCHANGE; 01225200
COMMENT DOCUMENT* 31 * * * * * * * * * * * * * * * * * * * * * * * * *; 01225300
PROCEDURE ENTERINDEX; 01225400
COMMENT ENTERS PAGE IN CURRENT REVISION INDEX ; 01225500
BEGIN 01225600
LABEL L; 01225700
IF J < LASTNEW THEN IF NEWBUF[6] = NDR[J+1,6] THEN 01225800
IF NEWBUF[1] = NDR [J+1,1] THEN GO TO L; 01225900
IF NEWBUF[5] ! DOCREV THEN NEWBUF[5] ~ OLDBUF[5]; 01226000
CLEAR (WORDBUF[0],14); 01226100
MOVEWORDS (NEWBUF[8],WORDBUF[0],2); 01226200
MOVEWORDS (NEWBUF[10],WORDBUF[6],1); 01226300
MOVEWORDS (REVISIONS [NEWBUF[5]],WORDBUF[3],1); 01226400
INXPOINT ~ INXPOINT +1; 01226500
WRITE ( RVCONT [INXPOINT,*],15,WORDBUF[*]); 01226600
IF DEBEATLETOG THEN WRITE(LINE,15,WORDBUF[*]); 01226700
IF PAGEONE THEN GO TO L; 01226800
FOR K ~ J STEP -1 WHILE NDR[K,1] = NEWBUF [1] DO 01226900
BEGIN 01227000
NDR [K,5] ~ NEWBUF [5]; 01227100
IF NEWBUF[7] = 1 THEN 01227200
BEGIN 01227300
READ (NEWDOC[NDR[K,3]],15,WORDBUF[*]); 01227400
MOVECHARS ( REVISIONS [NEWBUF[5]],WORDBUF[1],6,6,2); 01227500
WRITE (NEWDOC [NDR[K,3]],15,WORDBUF[*]); 01227600
END; 01227700
END; 01227800
L: END ENTERINDEX; 01227900
CLOSE(CARDS,RELEASE); 01228000
FILL ACTIONS[*] WITH 0, 01228100
" ADD "," CHANGE "," DELETE "; 01228200
IF DATOG THEN TITLETOG ~ TRUE; 01228300
READ (OLDDOC,FORM1,LOCA,LASTOLD,DOCREV); 01228400
IF DEBEATLETOG THEN WRITE(LINE,FORM1,LOCA,LASTOLD,DOCREV);01228500
READ (OLDDOC [LOCA +1],15,ODR[1,*]); 01228600
IF DEBEATLETOG THEN WRITE(LINE,15,ODR[1,*]); 01228700
READ (OLDDOC,15,WORDBUF[*]); 01228800
FOR I ~ 2 STEP 1 UNTIL LASTOLD DO 01228900
BEGIN 01229000
READ (OLDDOC,15,ODR [I,*]); 01229100
IF DEBEATLETOG THEN WRITE(LINE,15,ODR[I,*]); 01229200
END; 01229300
IF DIRTOG THEN 01229400
BEGIN 01229500
FORMAT DIRHEAD(X28,"DIRECTORY"); 01229600
SWITCH FORMAT DIRTAB ~ (/), 01229700
(X10," COLUMN 1 IS 1 IF PAGE IS PATCHED"), 01229800
(X10, " COLUMN 2 IS PAGE"), 01229900
(X10, " COLUMN 3 IS CONTINUATION PAGE"), 01230000
(X10, " COLUMN 4 IS RECORD NUMBER OF FIRST LINE"), 01230100
(X10, " COLUMN 5 IS RECORD NUMBER OF LAST LINE"), 01230200
(X10, " COLUMN 6 IS REVISION"), 01230300
(X10, " COLUMN 7 IS SECTION"), 01230400
(X5, " REST OF LINE IS FORMAT INFORMATION"); 01230500
WRITE (WORDBUF[*],DIRHEAD); 01230600
ZPL(ZF,2 ,WORDBUF[*]); 01230700
FOR I~2 STEP 1 UNTIL LASTOLD DO 01230800
BEGIN 01230900
WRITE (WORDBUF[*],ZFORM,FOR K~ 0 STEP 1 UNTIL 7 DO 01231000
ODR[I,K]); 01231100
MOVEWORDS (ODR[I,8],WORDBUF[8],3); 01231200
ZPL (ZF,1, WORDBUF[*]); 01231300
END; 01231400
FOR I ~ 0 STEP 1 UNTIL 8 DO 01231500
BEGIN 01231600
WRITE (WORDBUF[*],DIRTAB[I]); 01231700
ZPL (ZF,1,WORDBUF[*]); 01231800
END; 01231900
ZPG(ZF); 01232000
IF DIRONLYTOG THEN GO TO STOPSHORT; 01232100
END; 01232200
ZLCOUNTMAX ~ 100; 01232300
IF OLDONLYTOG THEN GO TO PRINTPLACE; 01232400
READ (NEWDOC,FORM1, LOCA, LASTNEW, TEMP); 01232500
DOCREV ~ IF TEMP > 1 THEN TEMP ELSE DOCREV +1; 01232600
IF DEBEATLETOG THEN WRITE(LINE,FORM2,LOCA,LASTNEW); 01232700
READ (NEWDOC[LOCA+1],15,NDR[1,*]); 01232800
READ(NEWDOC,15,WORDBUF[*]); 01232900
IF DEBEATLETOG THEN WRITE(LINE,15,NDR[1,*]); 01233000
FOR I~2 STEP 1 UNTIL LASTNEW DO 01233100
BEGIN 01233200
READ (NEWDOC,15,NDR[I,*]); 01233300
IF DEBEATLETOG THEN WRITE(LINE,15,NDR[I,*]); 01233400
END; 01233500
I~J~2; 01233600
VOL1~1; 01233700
PRINTOG~FALSE; 01233800
PAGEONE~TRUE; 01233900
INXPOINT ~ CHGPOINT ~ 0; 01234000
IJUNK ~I; KJUNK ~ J; 01234100
COMMENT ODR OR NDR[0] = 5 MEANS END OF SECTION; 01234200
WHILE ODR[IJUNK,0] ! 5 DO IJUNK ~ IJUNK +1; 01234300
WHILE NDR[KJUNK,0] ! 5 DO KJUNK ~ KJUNK +1; 01234400
DOCPATCHED ~ (NDR[KJUNK,1] = 1) ; 01234500
DOCREV ~ IF DOCPATCHED THEN ODR[IJUNK,2] +1 ELSE 01234600
ODR[IJUNK,2] ; 01234700
NDR[KJUNK,2] ~ DOCREV; 01234800
MORE : 01234900
IF J > LASTNEW THEN 01235000
BEGIN 01235100
IF I { LASTOLD THEN 01235200
FOR I ~ I STEP 1 UNTIL LASTOLD DO 01235300
IF ODR[I,0] { 1 THEN DELETEPAGE; 01235400
GO TO FINISHUP; 01235500
END; 01235600
IF I > LASTOLD THEN 01235700
BEGIN 01235800
FOR J~J STEP 1 UNTIL LASTNEW DO 01235900
BEGIN 01236000
MOVEWORDS (NDR[J,0],NEWBUF[0],15); 01236100
IF NEWBUF[6] ! VOL1 THEN GO TO NEWVOL; 01236200
IF NEWBUF[0] > 1 THEN GO TO TCASE; 01236300
ADDPAGE; 01236400
END; 01236500
GO TO FINISHUP; 01236600
END; 01236700
IF NDR[J,0] = 5 THEN 01236800
BEGIN 01236900
I ~ I+1; J~J+1; GO TO MORE; 01237000
END ; 01237100
COMMENT WHEN WE GET HERE BOTH DIRECTORIES STILL HAVE ENTRIES; 01237200
MOVEWORDS (ODR[I,0],OLDBUF[0],15); 01237300
MOVEWORDS (NDR[J,0],NEWBUF[0],15); 01237400
IF NEWBUF[6] ! VOL1 THEN GO TO NEWVOL; 01237500
COMMENT ARRAY WORD ONE IS PAGE NUMBER; 01237600
IF OLDBUF [1] ! NEWBUF[1] THEN 01237700
BEGIN 01237800
IF CANFIND THEN 01237900
BEGIN 01238000
FOR I ~ I STEP 1 UNTIL POINTER -1 DO 01238100
IF ODR[I,0] ! 3 THEN DELETEPAGE; 01238200
I~POINTER; 01238300
END ELSE 01238400
BEGIN 01238500
IF NEWBUF [0] ! 3 THEN ADDPAGE ; 01238600
J~J+1; 01238700
END; 01238800
GO TO MORE; 01238900
END; 01239000
COMMENT ARRAY WORD TWO HOLDS CONTIN PAGE NUMBER; 01239100
IF OLDBUF[2] ! NEWBUF[2] THEN ERRORCONDITION; 01239200
COMMENT ARRAY WORD 0 TELLS IF PATCHED PAGE; 01239300
IF NEWBUF[0] =1 THEN CHANGEPAGE ELSE 01239400
% TEST BLANK OUT CASE 01239500
IF NEWBUF[0] = 0 AND NEWBUF[4]- NEWBUF[3] ! OLDBUF[4]- 01239600
OLDBUF[3] THEN 01239700
BEGIN 01239800
CHANGEPAGE; 01239900
NEWBUF[0] ~ 1; 01240000
END ; 01240100
IF NEWBUF [0] { 1 THEN GO TO TOVER; 01240200
IF NEWBUF[0] = 3 THEN 01240300
BEGIN 01240400
COMMENT NEWBUF[0] = 3 MEANS DOCUMENT CONTROLS XREF; 01240500
PAGEONE ~ FALSE; 01240600
I~I+1; J~J+1; 01240700
GO TO MORE; 01240800
END; 01240900
IF NOT DOCPATCHED THEN GO TO TOVER ; 01241000
TCASE: 01241100
COMMENT NEWBUF[0] = 2 MEANS TABLE OF CONTENTS; 01241200
NDR[J,5] ~ NEWBUF[5] ~ K ~ DOCREV; 01241300
IF NOT HOLDOFFTOG THEN 01241400
PRINTOUTP; 01241500
TOVER: 01241600
ENTERINDEX; 01241700
PAGEONE~FALSE; 01241800
I~I+1; 01241900
J~J+1; 01242000
GO TO MORE; 01242100
NEWVOL: 01242200
PAGEONE~TRUE; 01242300
IF TITLETOG THEN 01242400
READ (NEWDOC[NDR[J-2,3] +1],15,DOCTITLE[*]) [EOF]; 01242500
PRINTCHANGES ; 01242600
WRINDEX ; 01242700
INXPOINT ~ CHGPOINT ~ 0; 01242800
IF NDR[J,0] = 5 THEN J~J+1; 01242900
IF ODR[I,0] = 5 THEN I~I+1; 01243000
01243100
01243200
VOL1 ~ NDR[J,6] ; 01243300
IJUNK ~I; KJUNK ~ J; 01243400
WHILE ODR[IJUNK,0] ! 5 DO IF IJUNK < LASTOLD THEN 01243500
IJUNK ~IJUNK + 1 ELSE GO TO FINI2; 01243600
WHILE NDR[KJUNK,0] ! 5 DO IF KJUNK < LASTNEW THEN 01243700
KJUNK ~ KJUNK +1 ELSE GO TO FINI2; 01243800
DOCPATCHED ~ (NDR[KJUNK,1] = 1) ; 01243900
DOCREV ~ IF DOCPATCHED THEN ODR[IJUNK,2] +1 ELSE 01244000
ODR[IJUNK,2] ; 01244100
NDR[KJUNK,2] ~ DOCREV; 01244200
GO TO MORE; 01244300
PRINTPLACE: 01244400
IF NOT PRINTALLTOG THEN 01244500
BEGIN 01244600
KJUNK ~ IF OLDONLYTOG THEN LASTOLD ELSE LASTNEW; 01244700
FOR I ~ 2 STEP 1 UNTIL KJUNK DO 01244800
BEGIN 01244900
IF OLDONLYTOG THEN MOVEWORDS(ODR[I,0],NEWBUF[0],15) ELSE 01245000
MOVEWORDS (NDR[I,0],NEWBUF[0],15); 01245100
FOR K ~ 1 STEP 1 UNTIL PAGEPOINT DO 01245200
IF PAGES[K] = NEWBUF[1] THEN PRINTOUTP; 01245300
END; 01245400
END; 01245500
IF OLDONLYTOG THEN GO TO STOPSHORT; 01245600
HOLDOFFTOG ~ FALSE; 01245700
EOF: 01245800
FINISHUP: 01245900
IF HOLDOFFTOG THEN GO TO PRINTPLACE; 01246000
ZLCOUNTMAX ~ IF SIXLINES THEN 60 ELSE 80; 01246100
IF TITLETOG THEN 01246200
READ (NEWDOC[NDR[J-2,3] +1],15,DOCTITLE[*]) [EOF] ; 01246300
PRINTCHANGES; 01246400
WRINDEX; 01246500
FINI2: 01246600
WRITE (NEWDOC[0],FORM1,LOCA,LASTNEW,DOCREV); 01246700
WRITE (NEWDOC[LOCA +1],15,NDR[1,*]); 01246800
FOR I ~ 2 STEP 1 UNTIL LASTNEW DO 01246900
WRITE (NEWDOC,15,NDR[I,*]); 01247000
REWIND (NEWDOC); 01247100
STOPSHORT: 01247200
IF PRINTALLTOG THEN PRINTBACKUP ; 01247300
REWIND (OLDDOC); 01247400
GO TO EOPROG; 01247500
END BLOCK MERGE ; 01247600
IF MAKEMULTOG THEN 01247700
BEGIN 01247800
COMMENT DOCUMENT* 7 * * * * * * * * * * * * * * * * * * * * * * * * * 01247900
BLOCK TO MAKE MULTIFILES. 01248000
* SKIP 01248100
THIS BLOCK CREATES MULTIFILE TAPE OR DISK FILES USING INPUT 01248200
FILES DESCRIBED BY DATA CARDS. 01248300
* END; 01248400
ARRAY A,B[0:15],AA[0:100,0:15] ; 01248500
ARRAY ZIPPER[0:15] ; 01248600
LABEL RD,EOF,RDD,EOFF ; 01248700
LABEL LDIF; 01248800
LABEL LOOP; 01248900
INTEGER I,J,K,N,SIND,SOUT,SEQ,COUNTLOC; 01249000
INTEGER TSIND; 01249100
SWITCH FILE SWIN~CARD,DISK,TAPE,TAP; 01249200
SWITCH FILE SWOUT ~ PUNCH,NEWDISK,NEWTAPE ; 01249300
FORMAT TEMPFORM ("FIRST FILE NAMES NOT THE SAME"); 01249400
FILE BACKUPDIR DISK SERIAL [20:50] "MULFILE" "DIRECT" 01249500
(1,10,150); 01249600
DEFINE SCON = SCAN; IF FINDCHAR(NCR,"%") THEN ENDCARDA ~ TRUE #; 01249700
COMMENT DOCUMENT* 31* * * * * * * * * * * * * * * * * * * * * * * * *; 01249800
PROCEDURE BUILDID; 01249900
COMMENT BUILDS ONE WORD OF FILE ID ; 01250000
BEGIN 01250100
LABEL LL1,LL2; 01250200
INTEGER FIDCOUNT; 01250300
CLEAR(COBACCUM[1],0); 01250400
SETCHAR(COBACCUM [1],0,"0"); 01250500
FIDCOUNT~ 0; 01250600
IF FINDCHAR(NCR,"%") THEN 01250700
BEGIN 01250800
ENDCARDA ~ TRUE; 01250900
GO TO LL2; 01251000
END; 01251100
SCON; 01251200
IF RESULT = 2 THEN ERROR(31); 01251300
IF COUNT > 7 THEN COUNT ~ 7; 01251400
MOVECHARS(ACCUM[1],COBACCUM[1],3,1,COUNT); 01251500
COMMENT COBACCUM IS ONLY TEMPORARY BUFFER; 01251600
FIDCOUNT ~ COUNT; 01251700
LL1: 01251800
IF ENDCARDA THEN GO TO LL2; 01251900
SCON; 01252000
IF Q = "1, " OR Q = "1/ " THEN 01252100
GO TO LL2; 01252200
IF FIDCOUNT < 7 THEN 01252300
BEGIN 01252400
IF COUNT > 7-FIDCOUNT THEN COUNT ~ 7 - FIDCOUNT; 01252500
MOVECHARS(ACCUM[1],COBACCUM[1],3,FIDCOUNT +1,COUNT); 01252600
FIDCOUNT ~ FIDCOUNT + COUNT; 01252700
END; 01252800
GO TO LL1; 01252900
LL2: 01253000
END BUILDID; 01253100
DEFINE BUILDFILEIDS = 01253200
BEGIN 01253300
BUILDID; IF Q = "1, " THEN 01253400
BEGIN 01253500
AA[I,0] ~ 0; 01253600
AA[I,1] ~ COBACCUM[1]; 01253700
END ELSE 01253800
IF Q = "1/ " THEN 01253900
BEGIN 01254000
AA [I,0] ~ COBACCUM[1]; 01254100
BUILDID; 01254200
IF Q ! "1, " THEN 01254300
BEGIN 01254400
ZPL(0,1,GLOBE[*]); 01254500
DOCERROR(39); 01254600
GO TO LOOP; 01254700
END; 01254800
AA [I,1] ~ COBACCUM[1]; 01254900
END ELSE 01255000
BEGIN 01255100
ZPL(0,1,GLOBE[*]); 01255200
DOCERROR(37); 01255300
GO TO LOOP; 01255400
END; 01255500
IF ENDCARDA THEN 01255600
BEGIN 01255700
ZPL(0,1,GLOBE[*]); 01255800
DOCERROR(37); GO TO LOOP; 01255900
END; 01256000
BUILDID; IF Q = "1, " OR ENDCARDA THEN 01256100
BEGIN 01256200
AA[I,2] ~ 0; 01256300
AA[I,3] ~ COBACCUM[1]; 01256400
END ELSE 01256500
BEGIN 01256600
AA [I,2] ~ COBACCUM[1]; 01256700
BUILDID; 01256800
AA[I,3] ~ COBACCUM[1]; 01256900
END; 01257000
END#; 01257100
IF DISKINTOG THEN SIND ~ 1 ELSE SIND ~ 2 ; 01257200
IF DISKOUTOG THEN SOUT ~1 ELSE SOUT ~ 2 ; 01257300
TSIND ~ 2 ; 01257400
FILL ZIPPER[*] WITH "CC REMOV","E ",0,0," ; END ."; 01257500
CLEAR(A,14) ; 01257600
I ~1; 01257700
IF DIRTOG THEN 01257800
BEGIN 01257900
CLEAR(AA[1,0],14); 01258000
FILL AA[1,*] WITH "MULFILE","DIRECT ","0000000","DIRECTO";01258100
AA[1,6] ~1; 01258200
ZIPPER[2] ~AA[1,0]; 01258300
ZIPPER[3] ~ AA[1,1]; 01258400
SETCHAR(ZIPPER[2],0," "); 01258500
SETCHAR(ZIPPER[3],0,"/"); 01258600
ZIP WITH ZIPPER[*]; 01258700
WRITE (BACKUPDIR,10,AA[1,*]); 01258800
I~2; 01258900
END; 01259000
LOOP: 01259100
CLEAR(B[0],14); 01259200
CLEAR(AA[I,0],14); 01259300
READ(CARD,10,GLOBE[*])[EOF]; 01259400
ENDCARDA ~ FALSE; 01259500
LCR ~ MKABS(GLOBE[W]); NCR ~ LCR-W; 01259600
FIXCOL73(LCR); 01259700
BUILDFILEIDS; 01259800
IF ALLONE THEN 01259900
BEGIN 01260000
IF DISKINTOG THEN AA[I,6] ~ 1 ELSE AA[I,6] ~2 ; 01260100
END ELSE 01260200
BEGIN 01260300
IF ENDCARDA THEN 01260400
BEGIN 01260500
ZPL(0,1,GLOBE[*]); 01260600
DOCERROR(38); 01260700
GO TO LOOP; 01260800
END; 01260900
SCAN; 01261000
IF Q ="4TAPE " THEN AA[I,6]~2 ELSE 01261100
IF Q ="4DISK " OR Q = "4DISC " THEN AA[I,6] ~1 ELSE 01261200
BEGIN 01261300
DOCERROR(38); 01261400
GO TO LOOP; 01261500
END; 01261600
END; 01261700
FOR K ~ 0,1,2,3 DO SETCHAR(AA[I,K],0,"0") ; 01261800
IF NOT DISKOUTOG THEN 01261900
IF (DIRTOG AND (AA[2,2] ! AA[I,2])) 01262000
OR (NOT DIRTOG AND (AA[1,2] ! AA [I,2])) THEN 01262100
BEGIN 01262200
ZPL(0,1,GLOBE[*]); 01262300
DOCERROR(40); 01262400
GO TO LOOP; 01262500
END; 01262600
IF DIRTOG THEN WRITE (BACKUPDIR,10,AA[I,*]); 01262700
I~I+1; 01262800
IF I { 100 THEN GO TO LOOP; 01262900
EOF: 01263000
IF DIRTOG THEN 01263100
BEGIN 01263200
AA[1,2]~AA[2,2]; %% REPLACE WITH MOVECHARS 01263300
WRITE (BACKUPDIR[0],10,AA[1,*]); 01263400
END; 01263500
N ~ I - 1 ; 01263600
LOCK (BACKUPDIR,SAVE); 01263700
CLOSE (CARD,RELEASE) ; 01263800
FOR I ~1 STEP 1 UNTIL N DO 01263900
BEGIN 01264000
IF AA[I,0] = 0 AND AA[I,1] =0 THEN J ~ 0 ELSE 01264100
BEGIN 01264200
IF DEBUG THEN WRITE(LINE[DBL],15,AA[I,*]); 01264300
IF SIND > 1 THEN CLOSE(SWIN[SIND],RELEASE) ; 01264400
SIND ~ IF AA[I,6] = 2 THEN TSIND ELSE 01264500
AA[I,6]; 01264600
J ~ SIND ; FILL SWIN[J] WITH AA[I,0],AA[I,1] ; 01264700
END ; 01264800
FILL SWOUT[SOUT] WITH AA[I,2],AA[I,3] ; 01264900
SEQ ~COUNT ~ 0 ; 01265000
IF DISKOUTOG THEN 01265100
BEGIN 01265200
ZIPPER[2] ~ AA[I,2] ; ZIPPER[3] ~ AA[I,3] ; 01265300
SETCHAR(ZIPPER[2],0," "); 01265400
SETCHAR(ZIPPER[3],0,"/"); 01265500
ZIP WITH ZIPPER[*] ; 01265600
END ; 01265700
IF LISTOG THEN WRITE(LINE[PAGE]); 01265800
DO BEGIN 01265900
READ(SWIN[J],10,A[*])[EOFF] ; 01266000
SEQ~ SEQ +1000; COUNTLOC ~ COUNTLOC +1; 01266100
IF J = 0 THEN OCTTODEC(SEQ,A[9]) ; 01266200
IF LISTOG THEN WRITE(LINE[DBL],15,A[*]) ; 01266300
WRITE(SWOUT[SOUT],10,A[*]); 01266400
END UNTIL FALSE ; 01266500
EOFF: 01266600
OCTTODEC(COUNTLOC,AA[I,5]); 01266700
IF PUNCHTOG THEN 01266800
BEGIN 01266900
CLEAR(B,14) ; 01267000
B[0] ~ AA[I,2] ; B[1] ~ AA[I,3] ; 01267100
B[2] ~ AA[I,2] ; B[3] ~ AA[I,3] ; 01267200
B[5] ~ AA[I,5] ; 01267300
WRITE(PUNCH,10,B[*]) ; 01267400
END ; 01267500
LDIF: 01267600
CLOSE(SWIN[J],*); 01267700
IF SIND >1 THEN 01267800
TSIND ~ IF SIND = 2 THEN 3 ELSE 2; 01267900
SIND ~ IF SIND = 2 THEN 3 ELSE 2 ; 01268000
IF SOUT = 1 THEN LOCK(NEWDISK,RELEASE) ELSE 01268100
CLOSE(NEWTAPE,*); 01268200
END ; 01268300
WRITE(LINE[PAGE]) ; 01268400
FOR I ~ 1 STEP 1 UNTIL N DO 01268500
BEGIN 01268600
FOR K ~ 0,1,2,3 DO SETCHAR(AA[I,K],0," ") ; 01268700
WRITE(LINE[DBL],15,AA[I,*]) ; 01268800
END ; 01268900
GO TO EOPROG; 01269000
END; 01269100
IF PROCPUNCH THEN 01269200
BEGIN 01269300
BOOLEAN STREAMTOG ; 01269400
LABEL MORE ; 01269500
MORE: SCAN ; 01269600
Q ~ Q ; 01269700
IF Q = "7COMME" THEN 01269800
BEGIN 01269900
DO SCAN UNTIL SEMICOLON ; GO TO MORE ; 01270000
END ; 01270100
IF Q = "6STREA" THEN 01270200
BEGIN 01270300
STREAMTOG ~TRUE ; GO TO MORE ; 01270400
END ; 01270500
IF Q = "9PROCE" THEN 01270600
BEGIN 01270700
ARRAY TEMP[0:15] ; 01270800
INTEGER I ; 01270900
FORMAT F1("$ TAPE LIST %") , F2("$ TAPE %") ; 01271000
IF STREAMTOG THEN 01271100
BEGIN 01271200
STREAMTOG ~ FALSE ; GO TO MORE ; 01271300
END ; 01271400
WRITE(TEMP[*],F1) ; 01271500
MOVEWORDS(GLOBE,TEMP[2],8) ; 01271600
I ~ ISEQ - 100 ; OCTTODEC(I,TEMP[9]) ; 01271700
WRITE(PNCH,10,TEMP[*]) ; 01271800
WRITE(TEMP[*],F2) ; 01271900
MOVEWORDS(GLOBE,TEMP[2],8) ; 01272000
I ~ ISEQ - 100 ; OCTTODEC(I,TEMP[9]) ; 01272100
WRITE(PNCH,10,TEMP[*]) ; 01272200
END ; 01272300
GO TO MORE ; 01272400
END ; 01272500
IF SORTOG THEN 01272600
BEGIN 01272700
LABEL ID,NBG ; 01272800
SWITCH SWRES ~ ID,NBG,NBG,NBG,NBG,NBG,NBG ; 01272900
NBG: SCAN ; 01273000
GO TO SWRES[RESULT] ; 01273100
ID: IF SORTSCRAMBLE THEN BUILDXREF ; 01273200
GO TO NBG ; 01273300
END ; 01273400
IF BUILDTOG THEN 01273500
BEGIN 01273600
RESTYPE ~ 0 ; 01273700
FOR IJUNK ~ 0 STEP 1 UNTIL 250 DO RESERVED[IJUNK] ~ 0 ; 01273800
FOR IJUNK ~ 0 STEP 1 UNTIL 63 DO RESTACK[IJUNK] ~ 0 ; 01273900
MOREBUILD: SCAN ; 01274000
IF RESULT = 3 THEN DTOCT(ACCUM[1],3,BRESTYPE,COUNT) ; 01274100
IF RESULT = 1 THEN 01274200
BEGIN 01274300
IF EXAMINE(NCR) ="-" THEN BUILDCOBID ; 01274400
IF NOT SEARCHRESERVED THEN BUILDRESERVED ; 01274500
END ; 01274600
GO TO MOREBUILD ; 01274700
END ; 01274800
IF NOT (COBOLTOG OR ASMLTOG OR ESPOLTOG OR BPLTOG ) 01274900
THEN IF NOT FORTRTOG 01275000
THEN IF NOT SIMULATOG 01275001
THEN FILLALGOL; 01275100
IF ASMLTOG THEN 01275200
DO BEGIN 01275300
LABC ~ GLOBE[6]; 01275400
FOR I ~ 1 STEP 1 UNTIL LABC DO 01275500
IF GLOBE[I].[12:36] ! " " THEN 01275600
BEGIN 01275700
MOVECHARS(GLOBE[I],ACCUM[1],2,3,6); 01275800
SETCHAR(ACCUM[1],2,"6") ; COUNT ~ 6 ; 01275900
Q ~ ACCUM[1]; 01276000
LABELUSE ~ GLOBE[I] < 0; 01276100
IF RESERVEDTOG OR NOT SEARCHRESERVED THEN 01276200
IF SORTSCRAMBLE THEN BUILDXREF ; 01276300
END ; 01276400
READATAPE ; 01276500
END UNTIL FALSE ; 01276600
IF COBOLTOG THEN 01276700
BEGIN 01276800
LABEL MORE ; 01276900
LABEL NEXT ; 01277000
DEFINE PICTURE = Q= "2PC " OR Q = "3PCT " OR Q = "7PICTU" #, 01277100
FINDELIM =SCAN; DO BEGIN IF Q.[18:6]="Z" THEN 01277200
SCAN; SCAN; IF Q ="2IS " THEN 01277300
SCAN ; IF Q .[18:6] = "Z" THEN 01277400
BEGIN SCAN; SCAN; END; 01277500
END UNTIL Q = "1. " OR EXAMINE(NCR)=" "; #; 01277600
BOOLEAN DATADIVFLAG ; 01277700
DO BEGIN 01277800
DATADIVFLAG ~ FALSE ; 01277900
MORE: SCAN ; 01278000
NEXT: 01278100
IF NOT IDENTIFIER THEN IF RESULT ! 3 THEN GO TO MORE 01278200
ELSE IF DATADIVFLAG THEN 01278300
IF NOTCOBIDPART(NCR) THEN GO TO MORE ; 01278400
BUILDCOBID ; 01278500
IF RESERVEDTOG OR NOT SEARCHRESERVED THEN 01278600
IF SORTSCRAMBLE THEN BUILDXREF ; 01278700
IF PICTURE THEN 01278800
BEGIN 01278900
FINDELIM ; 01279000
GO TO MORE ; 01279100
END ; 01279200
IF Q = "9PROCE" THEN 01279300
BEGIN 01279400
SCAN ; 01279500
IF Q = "8DIVIS" THEN DATADIVFLAG ~ FALSE ; 01279600
GO TO NEXT ; 01279700
END ; 01279800
IF Q = "4DATA " THEN 01279900
BEGIN 01280000
SCAN ; 01280100
IF Q = "8DIVIS" THEN DATADIVFLAG ~ TRUE; 01280200
GO TO NEXT ; 01280300
END ; 01280400
GO TO MORE ; 01280500
END UNTIL FALSE ; 01280600
END ; 01280700
IF LOGICTOG THEN 01280800
BEGIN 01280900
LABEL EOF ; 01281000
DO 01281100
BEGIN 01281200
READ(BUSTED,19,GLOBE[*])[EOF] ; 01281300
BSTICKFLAG ~ GLOBE[2].[42:6] = "B" ; 01281400
MOVECHARS(GLOBE[17],ACCUM[1],5,3,3) ; 01281500
MOVECHARS(GLOBE[18],ACCUM[1],2,6,6) ; 01281600
COUNT ~ 9 ; OCTTODEC(GLOBE[0],SEQ) ; Q ~ ACCUM[1] ; 01281700
ACCUM[1].[12:6] ~ COUNT ; 01281800
IF SORTSCRAMBLE THEN BUILDXREF ; 01281900
END UNTIL FALSE ; 01282000
EOF: REWIND(BUSTED) ; PRINTNAMES ; PRINTXREF ; 01282100
GO TO EOPROG ; 01282200
END ; 01282300
IF DOCTOG THEN 01282400
BEGIN 01282500
PRINTDOCUMENT ; 01282600
DO READ(CARDS,10,GLOBE[*])[EOFCARD] UNTIL FALSE ; 01282700
END ; 01282800
BEGIN 01282900
INTEGER BLOCKEXTENDER ; 01283000
LABEL RESCAN,NEXT,IDENTL,MOREFILL,SCRAML,MORCOM,SPCHARL,STRINGL;01283100
LABEL SCRAMLOVER; 01283200
RESCAN: NEWCARD ~ FALSE; 01283300
SCAN; 01283400
NEXT: 01283500
IF RESULT = 1 THEN GO TO IDENTL; 01283600
IF RESULT = 5 THEN 01283700
BEGIN 01283800
IF STRINGTOG THEN IF COUNT { STLENGTH THEN 01283900
IF SORTSCRAMBLE THEN BUILDXREF; GO TO RESCAN; 01284000
END; 01284100
IF RESULT = 3 THEN TALLIES[Q.[18:6]]~TALLIES[Q.[18:6]]+1; 01284200
IF PERCENT THEN IF FORTRTOG THEN 01284300
BEGIN 01284400
SCAN; IF RESULT ! 3 THEN GO TO NEXT ; 01284500
IF CNBLANK(GLOBE[0],0,5) THEN 01284600
BEGIN 01284700
LABELUSE ~ TRUE; 01284800
IF SORTSCRAMBLE THEN BUILDXREF; 01284900
LABELUSE ~ FALSE; 01285000
GO TO RESCAN; 01285100
END ; 01285200
TALLIES [Q.[18:6]]~TALLIES[Q.[18:6]] +1; 01285300
END ; 01285400
GO TO RESCAN ; 01285500
IDENTL: 01285600
IF NOT (RESFLAG ~ SEARCHRESERVED) THEN GO TO SCRAML; 01285700
IF RESTYPE = PROCEDUREV THEN GO TO SCRAML; 01285800
IF RESTYPE = COMMENTV THEN 01285900
BEGIN COMMENT SET QUOTETOG TO SHOW SCAN NOT TO JUMP OUT ON 01285902
PERCENT ; 01285904
QUOTETOG~TRUE; 01285906
IF NOT COMMENTOG THEN 01285908
BEGIN 01286000
FINDSEMICOLON ; GO TO RESCAN ; 01286100
END ; 01286200
END ; 01286202
IF FORTRTOG THEN 01286300
BEGIN 01286400
IF RESERVEDTOG THEN IF SORTSCRAMBLE THEN BUILDXREF; 01286500
IF RESTYPE = GOTOV OR RESTYPE = ASSIGNV THEN 01286600
BEGIN 01286700
NEWCARD ~ FALSE; SCAN ; 01286800
IF Q = "2TO " THEN IF NOT RESERVEDTOG THEN SCAN ; 01286900
WHILE NOT NEWCARD DO 01287000
BEGIN 01287100
IF RESULT = 1 OR RESULT = 3 THEN 01287200
IF SORTSCRAMBLE THEN BUILDXREF; 01287300
SCAN ; 01287400
END ; 01287500
GO TO NEXT ; 01287600
END ; 01287700
IF RESTYPE = DOV THEN 01287800
BEGIN 01287900
NEWCARD ~ FALSE ; SCAN ; 01288000
IF RESULT = 3 THEN IF SORTSCRAMBLE THEN BUILDXREF ; 01288100
GO TO RESCAN ; 01288200
END ; 01288300
IF RESTYPE = IFV THEN 01288400
BEGIN 01288500
DO BEGIN 01288600
NEWCARD ~ FALSE ; SCAN ; 01288700
IF RESULT = 1 THEN IF SORTSCRAMBLE THEN BUILDXREF ; 01288800
IF RESULT = 5 THEN IF STRINGTOG THEN 01288900
IF COUNT{STLENGTH THEN IF SORTSCRAMBLE THEN BUILDXREF; 01289000
END UNTIL Q = "1) "; 01289100
NEWCARD ~ FALSE; SCAN ; 01289200
IF RESULT ! 3 THEN GO TO NEXT ; 01289300
WHILE NOT NEWCARD DO 01289400
BEGIN 01289500
IF RESULT = 3 THEN IF SORTSCRAMBLE THEN BUILDXREF; 01289600
SCAN; 01289700
END ; 01289800
END ; 01289900
GO TO RESCAN ; 01290000
END ; 01290100
IF Q = "4WITH " THEN 01290200
BEGIN 01290300
DO 01290400
BEGIN 01290500
MOREFILL: 01290600
SCAN ; IF RESULT = 5 THEN GO TO MOREFILL ; 01290700
IF Q = "7COMME" THEN 01290800
IF (RESFLAG ~ SEARCHRESERVED) THEN 01290900
IF RESTYPE = COMMENTV THEN 01291000
BEGIN 01291100
QUOTETOG~TRUE; 01291102
FINDSEMICOLON ; GO TO MOREFILL ; 01291200
END ; 01291300
END UNTIL SEMICOLON OR Q = "3END " OR Q = "5UNTIL" OR 01291400
(SIMULATOG AND(Q="4WHEN " OR Q="9OTHER")) OR 01291401
Q = "4ELSE " ; 01291500
IF SEMICOLON THEN GO TO RESCAN ; 01291600
END ; 01291700
IF STREAMBODY THEN GO TO SCRAMLOVER; 01291800
IF RESTYPE < 900 THEN GO TO SCRAMLOVER; 01291900
SCRAML: 01292000
IF SORTSCRAMBLE THEN BUILDXREF; 01292100
SCRAMLOVER: 01292200
IF RESTYPE = STREAMV THEN 01292300
BEGIN 01292400
STREAMTOG ~ STREAMBODY ~TRUE ; 01292500
STREAMBEGCOUNT ~ BEGINDEX ; 01292600
END ; 01292700
IF Q = "5BEGIN" THEN IF LISTOG THEN BEGINCOUNT 01292800
ELSE BEGINDEX ~ BEGINDEX +1; 01292900
IF NOT FORTRTOG THEN 01293000
IF Q = "3END " THEN IF LISTOG THEN ENDCOUNT ELSE 01293100
BEGIN 01293200
BEGINDEX~BEGINDEX-1; 01293300
IF BEGINDEX = STREAMBEGCOUNT THEN STREAMBODY ~ FALSE; 01293400
END; 01293500
IF BLOCKTOG THEN 01293600
BEGIN 01293700
IF Q = "5BEGIN" THEN 01293800
BEGIN 01293900
BPOINT ~ BPOINT + BINDENT ; 01294000
IJUNK ~ BPOINT MOD 8 ; 01294100
MOVECHARS(ACCUM[1],BLOCKBUFFER[BPOINT DIV 8] , 01294200
3,IJUNK,5) ; 01294300
MOVEWORDS(SEQ,BLOCKBUFFER[0],1) ; 01294400
ZPL(ZF,1,BLOCKBUFFER) ; 01294500
CLEARCHAR(BLOCKBUFFER[BPOINT DIV 8],IJUNK,5) ; 01294600
SETCHAR(BLOCKBUFFER[BPOINT DIV 8],IJUNK,".") ; 01294700
CLEAR(BLOCKBUFFER,0) ; 01294800
ZPL(ZF,1,BLOCKBUFFER) ; 01294900
END ELSE 01295000
IF Q = "3END " THEN 01295100
BEGIN 01295200
IJUNK ~ BPOINT MOD 8 ; 01295300
MOVECHARS(ACCUM[1],BLOCKBUFFER[BPOINT DIV 8], 01295400
3,IJUNK,3) ; 01295500
MOVEWORDS(SEQ,BLOCKBUFFER[0],1) ; 01295600
ZPL(ZF,1,BLOCKBUFFER) ; 01295700
CLEARCHAR(BLOCKBUFFER[BPOINT DIV 8],IJUNK,3) ; 01295800
CLEAR(BLOCKBUFFER,0) ; 01295900
ZPL(ZF,1,BLOCKBUFFER) ; 01296000
BPOINT ~ BPOINT - BINDENT ; 01296100
END ELSE 01296200
IF PROCBLKFLAG THEN 01296300
BEGIN 01296400
ARRAY PROCEDURENAME[0:1] ; 01296500
INTEGER T1,T2 ; 01296600
FILL PROCEDURENAME[*] WITH OCT6263512521446047 , 01296700
OCT5146232524645125 ; 01296800
PROCBLKFLAG ~ FALSE ; 01296900
IJUNK ~ (BPOINT + BINDENT) MOD 8 ; 01297000
IF STREAMTOG THEN 01297100
BEGIN 01297200
T1 ~ 0 ; T2 ~ 16 ; STREAMTOG ~ FALSE ; 01297300
END ELSE 01297400
BEGIN 01297500
T1 ~ 7 ; T2 ~ 9 ; 01297600
END ; 01297700
MOVECHARS(PROCEDURENAME,BLOCKBUFFER[(BPOINT + BINDENT) 01297800
DIV 8],T1,IJUNK,T2) ; 01297900
IJUNK ~ (BPOINT + T2 + BINDENT + 2) MOD 8 ; 01298000
MOVECHARS(ACCUM[1],BLOCKBUFFER[(BPOINT + T2 + BINDENT+2) 01298100
DIV 8],3,IJUNK,COUNT) ; 01298200
MOVEWORDS(SEQ,BLOCKBUFFER[0],1) ; 01298300
ZPL(ZF,1,BLOCKBUFFER) ; 01298400
CLEARCHAR(BLOCKBUFFER[(BPOINT+T2+BINDENT+2) DIV 8], 01298500
IJUNK,COUNT) ; 01298600
IJUNK ~ (BPOINT + BINDENT) MOD 8 ; 01298700
CLEARCHAR(BLOCKBUFFER[(BPOINT+BINDENT ) DIV 8],IJUNK,T2) ;01298800
CLEAR(BLOCKBUFFER,0) ; 01298900
ZPL(ZF,1,BLOCKBUFFER) ; 01299000
END ; 01299100
END ; 01299200
IF NOT FORTRTOG THEN 01299300
IF Q = "3END "THEN 01299400
BEGIN 01299500
MORCOM: 01299600
SCAN ; IF SEMICOLON THEN GO TO RESCAN ; 01299700
IF COMMENTOG OR BNFTOG OR RESERVEDTOG OR SORTOG 01299800
THEN GO TO NEXT ; 01299900
IF Q = "3END " OR Q = "4ELSE " OR Q = "5UNTIL" OR 01300000
(SIMULATOG AND(Q="4WHEN " OR Q="9OTHER")) OR 01300001
Q = "1# " THEN 01300100
GO TO NEXT ELSE GO TO MORCOM ; 01300200
END ; 01300300
GO TO RESCAN ; 01300400
END ; 01300500
EOF: 01300600
EOFCARD: 01300700
TABLEUPPERBOUND ~ PP ; 01300800
IF SHUFFLETOG THEN 01300900
BEGIN 01301000
COMMENT DOCUMENT* SKIP 10 INDEX UNDERLINE INDENT 1 * * * * * * * * * 01301100
BLOCK TO SHUFFLE FILES. 01301200
THIS BLOCK READS DATA CARDS AND MOVES THE REQUESTED SECTIONS 01301300
FROM THE SOURCE FILE TO THE NEW SOURCE FILE. 01301400
* END ; 01301500
COMMENT DOCUMENT* SKIP CODE 2 * * * * * * * * * * * * * * * * * * * * ; 01301600
COMMENT DATA CARDS ARE OF THE FORM OLD START,OLD FINISH, NEW START, 01301700
INCREMENT ; 01301800
INTEGER MIN,MAX,NEW,SEQ,INC,POSSEQ ; 01301900
BOOLEAN NORESEQ ; 01302000
LABEL EOF,EOFT1,EOFT2,RD,MORE,RDD,CONT ; 01302100
ARRAY A[0:15] ; 01302200
LIST LDATA(MIN,MAX,NEWSEQ+SEQINC,SEQINC) ; 01302300
LIST LLDATA(MIN,MAX,NEW,INC) ; 01302400
FORMAT FDATA(10("*****")/ 01302500
"MIN",I8," MAX",I8," NEW",I8," INC",I8 , 01302600
/10("*****")/) ; 01302700
DEFINE OUTPUT = 01302800
NEWSEQ ~ NEWSEQ + SEQINC ; 01302900
MOVEWORDS(A[9],A[12],1) ; 01303000
OCTTODEC(NEWSEQ,A[9]) ; 01303100
IF BLANKNEWSEQ THEN CLEAR(A[9],0) ; 01303200
IF NORESEQ THEN 01303300
BEGIN 01303400
MOVEWORDS(A[12],A[9],1); 01303500
CLEAR(A[12],0) ; 01303600
END ; 01303700
IF LISTOG THEN WRITE(LINE[DBL],15,A[*]) ; 01303800
IF NOT PUNCHTOG THEN 01303900
IF NEWTOG THEN WRITE(SWOUT ,10,A[*]) ; 01304000
IF PUNCHTOG THEN WRITE(PNCH,10,A[*]) # ; 01304100
CLEAR(A,14) ; 01304200
RDD: POSSEQ ~ 0 ; REWIND(SWIN) ; 01304300
RD: READ(CARD[NO],10,A[*])[EOF] ; 01304400
IF NOT BLANKTEST(A,9) THEN 01304500
BEGIN 01304600
READ(CARD,10,A[*]) ; GO TO RD ; 01304700
END ; 01304800
IF CHECKDOLLAR(A) THEN 01304900
BEGIN 01305000
IF BLANKNEWSEQ THEN OUTPUT ELSE 01305100
BEGIN 01305200
BLANKNEWSEQ ~ TRUE ; OUTPUT ; 01305300
BLANKNEWSEQ ~ FALSE ; 01305400
END ; 01305500
WRITE(LINE[DBL],15,A[*]) ; 01305600
READ(CARD,10,A[*]) ; 01305700
GO TO RD ; 01305800
END ; 01305900
READ(CARD,/,LLDATA) ; 01306000
IF MIN = 99999999 THEN GO TO EOPROG ; 01306100
NORESEQ ~ (NEW=0) AND (INC=0) AND 01306200
((NOT RESEQTOG)) ; 01306300
IF RESEQTOG THEN GO TO CONT ; 01306400
IF NEW { NEWSEQ THEN DOCERROR(26) ; 01306500
NEWSEQ ~ NEW - INC ; 01306600
SEQINC ~ INC ; 01306700
CONT: WRITE(LINE,FDATA,LDATA) ; 01306800
IF MIN < POSSEQ THEN 01306900
BEGIN 01307000
DO BEGIN 01307100
READ REVERSE(SWIN,10,A[*])[EOFT1] ; 01307200
DECTOOCT(A[9],POSSEQ) ; 01307300
END UNTIL POSSEQ { MIN ; 01307400
IF POSSEQ < MIN THEN 01307500
BEGIN 01307600
DOCERROR(25) ; GO TO RD ; 01307700
END ; 01307800
END ELSE 01307900
IF MIN > POSSEQ THEN 01308000
BEGIN 01308100
DO BEGIN 01308200
READ(SWIN,10,A[*])[EOFT1] ; 01308300
DECTOOCT(A[9],POSSEQ) ; 01308400
END UNTIL POSSEQ } MIN ; 01308500
IF POSSEQ > MIN THEN 01308600
BEGIN 01308700
DOCERROR(25) ; GO TO RD ; 01308800
END ; 01308900
OUTPUT ; 01309000
END ; 01309100
MORE: READ(SWIN,10,A[*]) [EOFT2] ; 01309200
DECTOOCT(A[9],POSSEQ) ; 01309300
IF POSSEQ > MAX THEN 01309400
BEGIN 01309500
DOCERROR(25) ; GO TO RD ; 01309600
END ; 01309700
OUTPUT ; 01309800
IF POSSEQ = MAX THEN GO TO RD ; 01309900
GO TO MORE ; 01310000
EOFT1: DOCERROR(25) ; GO TO RDD; 01310100
EOFT2: DOCERROR(25) ; GO TO RDD; 01310200
EOF: 01310300
CLOSE(SWIN,RELEASE) ; 01310400
LOCK(SWOUT,RELEASE) ; 01310500
GO TO EOPROG ; 01310600
END ; 01310700
CLOSE(CARDS,RELEASE) ; 01310800
CARDSOPEN ~ FALSE ; 01310900
IF TAPETOG THEN CLOSE(SWIN,RELEASE) ; 01311000
IF PUNCHTOG THEN CLOSE(NEWPUNCH[PUNCHSW],RELEASE) ; 01311100
IF BIGTOG THEN 01311200
BEGIN 01311300
REWIND(XREFILE) ; 01311400
SORTITONDISK(XREFILE,XREFSORT) ; 01311500
END ; 01311600
IF PBACKONLY THEN 01311700
BEGIN 01311800
FOR IJUNK ~ 1 STEP 1 UNTIL NOBACKUPRINTS DO 01311900
PRINTBACKUP ; GO TO EOPROG ; 01312000
END ; 01312100
IF BUILDTOG THEN 01312200
BEGIN 01312300
PUNCHRESERVEDEFINES ; 01312400
PUNCHRESERVEDFILLSTATEMENTS ; GO TO EOPROG ; 01312500
END ; 01312600
IF DOCTOG THEN 01312700
BEGIN 01312800
IF DOCUMENTFOUND THEN UJUNK~2 ELSE BEGIN UJUNK~ 1 ; 01312900
GO TO BMONJ; END; 01313000
IF CONTOG THEN GO TO BMONJ; 01313100
IF DOCER ! 0 THEN 01313200
BEGIN 01313300
WRITE(LINE[PAGE]); 01313400
DOCERROR(0); 01313500
END; 01313600
IF NOT QUITOG THEN ERROR (14); 01313700
IF BNFTOG THEN PRINTNAMES 01313800
ELSE BEGIN INTEGER BLOCKEXTENDER;END; 01313900
IF NOT FINALDOCTOG OR DOCINDEXTOG THEN PRINTXREF; 01314000
END; 01314100
IF FLOWTOG THEN 01314200
BEGIN 01314300
IF FLOWFOUND THEN UJUNK ~3 ELSE BEGIN UJUNK ~4; 01314400
GO TO BMONJ; END; 01314500
IF FERR ! 0 THEN FLOWERROR (20+FERR); 01314600
NLINES ~0; 01314700
ZNOSKIP ~ FALSE; 01314800
PAGETOG ~ TRUE; 01314900
PRINTXREF; 01315000
NEWVOL ~ TRUE ; 01315100
ZPG(ZF) ; 01315200
END; 01315300
IF BLOCKTOG THEN 01315400
BEGIN 01315500
PRINTPROCEDUREIDS; 01315600
PRINTXREF; 01315700
END; 01315800
IF NEWTOG THEN 01315900
IF NEWMULTITOG THEN CLOSE(SWOUT,*) ELSE LOCK(SWOUT, 01316000
RELEASE) ; 01316100
IF NEWMULTITOG THEN GO TO CONTINUE ; 01316200
IF BMON THEN GO TO BMONJ; 01316300
IF NOT SORTOG THEN 01316400
IF NOT NAMETOG THEN 01316500
IF (NOT COUNTOG) AND (NOPROC ! 0) THEN 01316600
PRINTPROCEDUREIDS ; 01316700
IF NOT COUNTOG THEN PRINTXREF; 01316800
PRINTNAMES; 01316900
BMONJ: 01317000
IF BMON AND UPDATETOG THEN 01317100
BEGIN 01317200
LABEL RD,EOF; 01317300
REWIND (BACKUPDIR); 01317400
WRITE (BACKUP,ENDMARKER); 01317500
IJUNK ~ BKDIRCOUNT; 01317600
RD: READ (BACKUPDIR,15,GLOBE[*]) [EOF]; 01317700
WRITE (BACKUP,15,GLOBE[*]); 01317800
IJUNK~ IJUNK-1; 01317900
IF IJUNK > 0 THEN GO TO RD; 01318000
EOF: REWIND (BACKUP); 01318100
WRITE (BACKUP,HEADFORM,BKRCRDCOUNT,BKDIRCOUNT,1); 01318200
END; 01318300
IF AUTOPRINT THEN PRINTBACKUP; 01318400
IF SAVEBACKUPTOG THEN LOCK (BACKUP,RELEASE) 01318500
ELSE CLOSE (BACKUP,PURGE); 01318600
IF FLOWTOG OR DOCTOG THEN 01318700
BEGIN 01318800
SPOMESS [UJUNK, 3] ~ " "; 01318900
IF CASTOG THEN 01319000
BEGIN 01319100
HEADPOINT ~ 0; 01319200
MOVECHARS (HEADING[0],SPOMESS [UJUNK,3],0,2,6); 01319300
END; 01319400
WRITE(SPOOUT,6,SPOMESS[UJUNK,*]); 01319500
END; 01319600
CONTINUE: 01319700
IF ALLTOG THEN 01319800
BEGIN 01319900
INTEGER BLOCKEXTENDER; 01320000
HEADPOINT ~ 0 ; CLEAR(HEADING,14) ; 01320100
FCASTINDEX ~ JUNK ~ FCASTINDEX + 1 ; 01320200
IF FCASTINDEX > LCASTINDEX THEN GO TO EOPROG ; 01320300
MOVECHARS(CASTDIR[CASTLINKS[JUNK].[6:6], 01320400
CASTLINKS[JUNK].[12:6]],HEADING[HEADPOINT DIV 8 ], 01320500
CASTLINKS[JUNK].[18:6],HEADPOINT.[45:3], 01320600
CASTLINKS[JUNK].[24:6]) ; 01320700
IF NEWMULTITOG THEN 01320800
BEGIN 01320900
CLEAR(JUNKARRAY,14) ; 01321000
MOVEWORDS(MULTNAME[1],MULTNAME[3],2) ; 01321100
MOVEWORDS(MULTNAME[1],JUNKARRAY[0],4) ; 01321200
WRITE(PUNCH,10,JUNKARRAY[*]) ; 01321300
MULTNAME[2] ~ " " ; 01321400
IF CASTLINKS[JUNK].[24:6] > 7 THEN 01321500
JUNK ~ 7 ELSE JUNK ~ CASTLINKS[JUNK].[24:6] ; 01321600
MOVECHARS(HEADING[HEADPOINT DIV 8],MULTNAME[2], 01321700
HEADPOINT.[45:3],1,JUNK) ; 01321800
FILL NEWTAPE WITH MULTNAME[1],MULTNAME[2] ; 01321900
END ; 01322000
NCASTRECS ~ CASTLINKS[FCASTINDEX+1].[30:18] - 01322100
CASTLINKS[FCASTINDEX].[30:18] ; 01322200
NCASTRECS ~ NCASTRECS - 1 ; 01322300
GO TO MORECAST ; 01322400
END ; 01322500
COMMENT DOCUMENT* QUIT ; 01322600
EOPROG: 01322700
IF CASTOG THEN REWIND(CASTSW[CASTINDEX]) ; 01322800
BEGIN 01322900
INTEGER BLOCKEXTENDER; 01323000
IF DUMPFLAG THEN DUMPARRAYS; 01323100
IF DOCER ! 0 THEN 01323200
WRITE(SPOOUT,BADRUN,PROGID,DATE,DOCER) ELSE 01323300
IF NOT (LISTOG OR PRINTOG) THEN 01323400
WRITE(SPOOUT,GOODRUN,PROGID,DATE) ; 01323500
IF LISTOG OR PRINTOG AND DOCER ! 0 THEN 01323600
BEGIN 01323700
ZPG(ZF); 01323800
WRITE(LINE[DBL],BADRUN,PROGID,DATE,DOCER) ; 01323900
END ; 01324000
END; 01324100
CLOSE(PRINT,RELEASE) ; 01324200
END . 01324300
99999999