.TITLE INDEX-FORTRAN CROSS REFERENCE AND FLOW CHART FOR VAX/VMS ;V2.06 .IDENT /V02.17/ ;V2.17 .ENABLE DEBUG ;**-1 ; GENERAL HISTORY ; ; The original INDEX-FORTRAN Cross Referencer was written ; in FORTRAN in 1966 by Harry M. Murphy Jr of the ; Air Force Weapons Laboratory ; Kirkland Air Force Base ; New Mexico ; ; This Fortran version was ported to run on the ; Naval Weapons Center, China lake, Ca ; UNIVAC 1100 series computer. ; ; In 1974, Michael N. LeVine of N.W.C. attemped ; to port the UNIVAC version to a PDP-11/20 running ; RT-11 but was unsucessfull. Useing as a target, the ; capabilities of the original, an assembly langauge ; version was written to run under RT-11. Between 1974 and ; 1983, the PDP-11 version was enhanced to a superset ; of the features of the original FORTRAN program. ; The final version (6.4) running under RT/RSX/IAS ; with many user selectable features such as looking ; for variables fitting selected conditions, and ; a full entry point cross reference in tabular ; and graphical format. See DECUS 11-229 in DECUS ; program Library ; ; This VAX/VMS version is a complete rewrite in ; VAX assembly language of the PDP-11 V6.4 INDEX. ; ; Michael N. LeVine ; Code 3514 ;V2.02 ; Naval Weapons Center ; China Lake ; Ca ; 93555 ; ; (619)939-2318 ; AVN 437-2318 ; ; ; History ; Version 1.0 ; Started May 1983, completed July 15,1983 ; ; Possable future enhacements ; Upgrade the input and parseing of command lines ; to be more in line with the format of the ; FORTRAN compiler. ; ; Change the messages to SYS$OUTPUT from the ; current method to useing the system message ; facility. ; ; Fix problem with INCLUDE files where comments ;V1.30 ; the INCLUDE. The line numbers for the lines in ;V1.30 ; the include file start with the line number ;V1.30 ; that follows the last consecutive comment line ;V1.30 ; that follows the INCLUDE statement. The only ;V1.30 ; way to make the line numbers correct is have ;V1.30 ; a new source line imediately follow the INCLUDE ;V1.30 ; forceing the processing of the INCLUDE file. ;V1.30 ; ; Expand flow chart represrentation for I/O ;V2.02 ; statements, add one each for input and output, ;V2.02 ; aux statements remain same symbol ;V2.02 ; ENCODE/DECODE treated as true I/O ;V2.02 ; ; Expand size of flow chart pixels to put in more ;V2.02 ; text inside ;V2.02 ; ; REVISION HISTORY ; 26-JULY-83 MNL ; FOUND THAT CONSTRUCTS OF THE FORM ; IF(A.EQ.B)IFREEP=ABC ; WERE NOT PROPERLY HANDLED. THE CONDITIONAL PART OF THE ; IF WAS FIRST GUESSED AS AN IF, BUT WHEN FOUND NOT TO ; FIT THE FORMAT- RETRYED AS AN ARITHMETIC. ERROR CAME IN ; AS THE CONDITIONAL PART DID NOT START AT THE BEGINNING ; OF THE LINE. THE RESET STARTED THE RETRY AT THE ; START OF THE LINE EVEN THOUGH IN THIS CASE THAT ; WAS NOT RIGHT. CHANGED "LINETYPE.MAR" ; ; 3-AUGUST-83 MNL ; LOGIC TO SAY THAT VARIABLES IN DATA STATEMNTS HAVE ; BEEN CHANGED (SET) IN VALUE INVERTED. CAUSED ; WRONG FLAGGING OF DATA,PARAMETER,EQUIVALENCE AND ; SAVE. CHANGED "EVAL.MAR" ; 15-AUGUST-83 MNL ;V1.3 ; ADDED SWITCHES AND SUPPORTING CODE -/COMMENT, ;V1.3 ; /EXPORT,/IMPORT. ;V1.3 ; /COMMENT=" " ALLOWS THE USER TO INSERT A COMMENT ;V1.3 ; INTO THE HEADER OF EACH PAGE. ;V1.3 ; /IMPORT GETS IMPORTED VARIABLES INTO ROUTINE ;V1.3 ; /EXPORT GETS EXPORTED VARIABLES FROM ROUTINE ;V1.3 ; CHANGED "OPENCLOSE,EVAL,OUTPUT,STORE" ;V1.3 ; 22-AUGUST-83 MNL ;V1.4 ; ADDED HOOKS FOR FLOW CHART GENERATION ;V1.4 ; PUT IN CODE TO IMPLIMENT STATISTICS OUTPUT ;V1.4 ; CHANGED "INDEX,OPENCLOSE,STORE,IOLINE,HEAP,OUTPUT ;V1.4 ; TABLE,SUPER,FLOW", ADDED ;V1.4 ; MODULE "STATS". ALSO CHANGED ;V1.4 ; COMMAND FILES "INDEX,INDEXCOPY,LINK" AND ;V1.4 ; "INDEX.RNO" ;V1.4 ; 26-AUGUST-83 MNL ;V1.5 ; FORGOT TO SET FLAG IN EVALUATEING INLINE FUNCTION ;V1.5 ; CALLS STATEING THAT THE ARGUMENTS ARE USED. ;V1.5 ; CANGED "INDEX,EVAL,IOLINE" ;V1.5 ; 12-SEPTEMBER-83 MNL ;V1.6 ; ADDITIONS TO MAKE SPOOLING OPTION WORK ;V1.6 ; ALSO ADDED /DELETE SWITCH ;V1.6 ; CHANGED "INDEX,IOLINE,OPENCLOSE" ;V1.6 ; 21-SEPTEMBER-83 MNL ;V1.7 ; ENCODE/DECODE ERROR-THE I/O STRING SPECIFICATION ;V1.7 ; DID NOT ALLOW FOR ARRAY OR CHR SUBSTRING SPECIFIATION ;V1.7 ; CHANGED MODULES "LINETYPE,INDEX,IOLINE" ;V1.7 ; 3-OCTOBER-83 MNL ;V1.8 ; ERROR IN HANDLEING "TYPE * STATEMENTS, CAUSED THE ;V1.8 ; PROGRAM TO BOMB IN "OUTPUT" DUE TO INVALID MENEMONIC ;V1.8 ; NUMBER LOADED INTO SYMBOL TABLE HOW USED ELEMENT. ;V1.8 ; CHANGED MODULES "EVAL,IOLINE,INDEX" ;V1.8 ; 17-OCTOBER-83 MNL ;V1.9 ; FOUND THAT THE NAME BLOCK AND ASSOCIATED STRINGS ;V1.9 ; HAVE TO BE RE INITIALIZE BEFORE REUSE.CAUSED THE ;V1.9 ; OUTPUT TO GO ALWAYS TO THE FIRST OUPUT SPECIFIED ;V1.9 ; EITHER IMPLICITLY OR EXPLICITLY ON SUBSEQUENT FILES ;V1.9 ; BEING CROSS REFENENCED ;V1.9 ; CHANGED MODULES "OPENCLOSE,IOLINE,INDEX" ;V1.9 ; VERSION 1.9 SUBMITTED TO FALL 83 (LAS VEGAS) VAX SIG TAPE ;V1.9A ; 7-NOVEMBER -83 MNL ;V1.10 ; MODIFY THE SYMBOL TABLE QUEUES AND ;V1.10 ; SUPER INDEX QUEUE TO USE THE SYSTEM SUPPLIED BALLANCED ;V1.10 ; TREE ROUTINES AND TO USE SYMBOLIC OFFSETS INSTEAD OF ;V1.10 ; THE HARD CODED IN ONES. ENTRY POINT XREF NOT MODIFIED ;V1.10 ; AS IT WOULD NOT HANDLE THAT MANY SYMBOLS AND THE ;V1.10 ; MODIFICATIONS WOULD BE MORE COMPLEX THAN ANY POSSABLE ;V1.10 ; GAINS IN SPEED TO MAKE IT WORTH IT. ;V1.10 ; CHANGED MODULES INDEX,IOLINE,STORE,OUTPUT,SUPER,FLOW, ;V1.10 ; TABLE ;V1.10 ; 8-NOVEMBER-83 MNL ;V1.11 ; ADD NEW SWITCH /COMMON, TO ALLOW THE USER TO SEE WHAT ;V1.11 ; COMMON BLOCKS ARE USED IN WHAT MODULES, AND WHICH ONES ;V1.11 ; ARE UNUSED. EXTENDED FLAG WORD FROM 4 TO 8 BYTES ;V1.11 ; CHANGED MODULES INDEX,OUTPUT,IOLINE,TABLE,OPENCLOSE ;V1.11 ; STORE,EVAL ;V1.11 ; 10-NOVEMBER-83 MNL ;V1.12 ; ADDED SWITCHES FOR ENTRY POINT DISPLAY ;V1.12 ; /SYMBOL= /DEPTH= /SAVE_ENTRY /NOENTRY_TABLE ;V1.12 ; CHANGED MODULES OPENCLOSE,TABLE,FLOW,INDEX,IOLINE ;V1.12 ; 14-NOVEMBER-83 MNL ;V1.13 ; ADDED WARNING MESSAGE WHEN ENTRY POINT NAME IS DEFINED ;V1.13 ; MORE THAN ONCE, AND SWITCH /TRANSFER_ENTRY THAT CAUSES ;V1.13 ; REFERENCES TO ENTRY POINTS DEFINED BY "ENTRY" STATEMENTS;V1.13 ; TO BE TRANSFERED TO THE MAIN MODULE NAME ;V1.13 ; CHANGED MODULES INDEX,OPENCLOSE,IOLINE,FLOW ;V1.13 ; 16-NOVEMBER-83 MNL ;V1.14 ; ENDLESS LOOP CONDITION FOUND AND FIXED. ALSO EXTENDED ;V1.14 ; THE /LOG SWITCH SO THAT THE COMMAND LINE IS SENT TO ;V1.14 ; SYS$OUTPUT WHEN IT IS READ. SUPER INDEX MODULE WAS ;V1.14 ; DOUBLE REMOVEING ELEMENTS ON CLEANUP AND AS A RESULT ;V1.14 ; GARBAGEING UP THE 64 BYTE HEAP QUEUE.CHANGED MODULES ;V1.14 ; INDEX,IOLINE,OPENCLOSE,HEAP,SUPER ;V1.14 ; 18-NOVEMBER-83 MNL ;V1.15 ; ADDED /PRINT SWITCH, SYNONYM FOR /SPOOL.CHANGED TEST ;V1.15 ; ON THE /EXPORT AND /IMPORT SWITCHES MAKEING THEIR ;V1.15 ; USE ON THE SAME COMMAND LINE AND ERROR. ;V1.15 ; MODIFIED HANDLEING OF EQUIVALENCED VARIABLES. BETWEEN ;V1.15 ; EQUIVALENCED VAR'S THE FOLLOWING FLAGS ARE SHARED- ;V1.15 ; GLOBAL,IN_BLANK_COMMON,IN_NAMED_COMMON,POINTER TO ;V1.15 ; COMMON NAME. ALSO PROPIGATE TO COMMON NAME THE STATUS ;V1.15 ; USED AND CHANGED ;V1.15 ; CHANGED MODULES INDEX,IOLINE,OPENCLOSE,HEAP,STORE,EVAL ;V1.15 ; OUTPUT ;V1.15 ; 22-NOVEMBER-83 MNL ;V1.16 ; FURTHER MODIFICATION TO HANDLEING OF EQUIVALENCED ;V1.16 ; VARIABLES-NOW ALSOW SHARE THE PROPERTIES CALLED_BY_ARG ;V1.16 ; CALLING_ARG AND FN_CALLING_ARG. CHANGED THE STATS SO ;V1.16 ; THAT THE TOTAL ASSIGN COUNTS FOR THE HEAP ARE NOT RESET ;V1.16 ; FOR EACH INDIVIDUAL RUN BUT ARE ACCUMULATED FOR THE ;V1.16 ; ENTIRE INDEX RUN SINCE INVOCATION.CLEANED UP THE RUN ;V1.16 ; LIBRARY ROUTINES TABLE.ADDED /TAG SWITCH TO APPEND A ;V1.16 ; TAG TO ALL SYMBOLS IN A GIVEN MODULE SAVED FOR SUPER ;V1.16 ; FOR OUTPUT DURING SUPER INDEX ;V1.16 ; CHANGED MODULES INDEX,IOLINE,STORE,STAT,TABLE,OPENCLOSE ;V1.16 ; OUTPUT,SUPER ;V1.16 ; 29-NOVEMBER-83 MNL ;V1.17 ; FOUND THAT THE HANDLEING OF BLANK COMMON NAME WAS NOT ;V1.17 ; PROPER IN THE CONDITIONAL TESTS. BROUGHT IN LINE WITH ;V1.17 ; THE HANDLEING OF NAMED COMMON NAME'S. ;V1.17 ; CHANGED MODULES INDEX,IOLINE,EVAL,OUTPUT ;V1.17 ; 30-NOVEMBER-83 MNL ;V1.18 ; ADDED NEW SWITCH "/REVERSE". APPLIES ONLY TO SUPER ;V1.18 ; INDEX OUTPUT. CAUSES MAJOR LISTING TO BE THE MODULE ;V1.18 ; NAME'S AND THE TABULAR LISTING PER MAJOR ITEM TO BE ;V1.18 ; THE VARIABLE/COMMON NAME (TAG POSITION STILL APPENDED ;V1.18 ; TO TABULAR ITEMS ;V1.18 ; CHANGED MODULES INDEX,IOLINE,SUPER,OPENCLOSE. ;V1.18 ; 1-DECEMBER-83 MNL ;V1.19 ; ADDED NEW SWITCH "/REORDER". APPLIES ONLY TO SUPER ;V1.19 ; INDEX OUTPUT. A MORE GENERAL FORM OF THE /REVERSE ;V1.19 ; SWITCH. LETS THE USER HAVE TOTAL CONTROL OF THE ORDER ;V1.19 ; OF PRESENTATION OF THE 3 ITEMS IN THE SUPER INDEX LIST ;V1.19 ; NAME,MODULE,TAG. CHANGED MODULES INDEX,IOLINE,TABLE ;V1.19 ; OPENCLOSE,SUPER. ;V1.19 ; 2-DECEMBER-83 MNL ;V1.20 ; ADDED NEW SWITCH "/NOINDEX" TO SUPPRESS PRINTING OF ;V1.20 ; INDEX OUTPUT. DATA STILL SAVED FOR SUPER INDEX. ;V1.20 ; CHANGED MODULES INDEX,IOLINE,OPENCLOSE ;V1.20 ; 9-JANUARY-1984 MNL ;V1.21 ; HAD PROBLEM WITH LARGE PROGRAM HAVEING MANY SOURCE ;V1.21 ; MODULES PER FILE AND NO EASY WAY OF BACK TRACKING ;V1.21 ; FROM SUBROUTINE/FUNCTION NAME TO THE FILE. ADDED TO ;V1.21 ; ENTRY POINT CROSS REFERENCE SWITCH "/FILE_NAME" THAT ;V1.21 ; CAUSES THE OUTPUT OF THE FILE NAME DURING THE SIMPLE ;V1.21 ; CALLS/CALLED BY TABULAR LISTING. CHANGED MODULES ;V1.21 ; OPENCLOSE,OUTPUT,INDEX,IOLINE,FLOW. ;V1.21 ; 11-JANUARY-1984 MNL ;V1.22 ; TWO PROBLEMS-PROBLEM WITH LINETYPE-SCANNING LABEL AND ;V1.22 ; FINDING A 'H','R','D','E','Q' FOLLOWING-THINKS ITS A ;V1.22 ; NUMBER OR HOLLARITH OR RAD50 NOT A LABEL. ;V1.22 ; PROBLEM WITH HEAP-CASE DOES NOT WORK AS ADVERTISED ;V1.22 ; SWITCH /APPEND IS SYNONYM FOR /MERGE ;V1.22 ; ALSO A LITTLE CLEAN UP ON ENTRY POINT PRINT OUT ;V1.22 ; AND MORE INFO IN STATISTICS ;V1.22 ; CHANGED INDEX,IOLINE,FLOW,HEAP,STAT,OPENCLOSE,TABLE ;V1.22 ; 17-JANUARY-1984 MNL ;V1.23 ; FOUND MISINTERPRITATION OF HOW CASE STATEMMENT WORKED ;V1.23 ; AND FIXED MISS USE'S EVEN THOUGH NO CURRENTS PROBLEMS ;V1.23 ; HAVE BEEN FOUND. CHANGED MODULES INDEX,IOLINE,EVAL ;V1.23 ; 8-FEBRUARY-1984 MNL ;V1.24 ; FOUND FURTHER PROBLEM THOUGHT FIXED WITH V1.22. ;V1.24 ; IN CHARACTER*N FORM WHERE FIRST CHR OF IDENT IS WRONG ;V1.24 ; CHARACTER, GET AN ERROR MESSAGE ;V1.24 ; CHANGED MODULES IOLINE,INDEX,LINETYPE ;V1.24 ; 27-FEBRUARY-1984 MNL ;V1.25 ; BUG FIX-ON THE ENTRY POINT CROSS REF WITH/FILE ;V1.25 ; SWITCH AND MULTIPLE FILES SPECIFIED ON SAME LINE ;V1.25 ; THE FILE BELOGS TO WAS THE NEXT FILE SPECIFIED FOR ;V1.25 ; THE LAST MODULE IN A GIVEN FILE.ALSO CHANGES STATISTICS ;V1.25 ; SO THAT THEY ARE ALWAYS ACCUMULATED BUT ARE NOT PRINTED ;V1.25 ; OUT UNLESS THE /STAT SWITCH IS USED. CHANGED ;V1.25 ; FILES INDEX,IOLINE,STAT,TABLE,OUTPUT. ;V1.25 ; 27-FEBRUARY-1984 MNL ;V1.26 ; CHANGED DEFAULT MODULE NAME FORM "MAIN" TO "$$MAIN$$" ;V1.26 ; ALSO CHANGED SECOND LINE OF PAGE HEADER TO INCLUDE ;V1.26 ; CURRENT MODULE NAME AND CURRENT FILE NAME ;V1.26 ; CHANGED MODULES INDEX,IOLINE,TABLE,EVAL ;V1.26 ; 29-FEBRUARY-1984 MNL ;V1.27 ; ADDED TO STATISTICS PER MODULE AND ACCUMULATED ;V1.27 ; LINES INPUT/OUTPUT AND PAGES OUTPUT. ;V1.27 ; ADJUSTED STAT FORMAT TO LOOK BETTER ;V1.27 ; CHANGED MODULES INDEX,IOLINE,STAT,TABLE ;V1.27 ; 21-MAR-1984 MNL ;V1.28 ; ERROR COUNTING CONTINUATION LINES USING TAB CONVENTION ;V1.28 ; CHANGED MODULES INDEX,IOLINE ;V1.28 ; 18-APR-84 MNL ;V1.29 ; ERROR IN IMPORT EXPORT LOGIC, LABELS CANNOT BE EITHER ;V1.29 ; AND SOME VARS ARE SHOWN AS BOTH ;V1.29 ; CHANGED MODULES INDEX,IOLINE,OUTPUT,STORE ;V1.29 ; 18-APR-84 MNL ;V1.30 ; REMOVED SWITCHES /NOSPOOL,/OPTIONS,/FLOWCHART ;V1.30 ; AS THEY ARE UNUSED AND ARE NOT LIKELY TO BE IN THE ;V1.30 ; NEAR FUTURE. CHANGED MODULES IOLINE,INDEX,OPENCLOSE ;V1.30 ; 30-APR-84 MNL ;V1.31 ; EXPANDED STATISTICS TO INCLUDE COUNT OF ALL LINE TYPES ;V1.31 ; USED IN MODULE AND ACCUMULATED. CHANGED MODULES ;V1.31 ; INDEX,TABLE,STAT,IOLINE,EVAL,OPENCLOSE. ;V1.31 ; 4-MAY-1984 MNL ;V1.32 ; ADDED SWITCH /SAVE_SUPER TO PREVENT THE ERASEURE ;V1.32 ; OF THE SUPER INDEX SCRATCH FILE SO THE DATA CAN BE ;V1.32 ; REUSED. CHANGED MODULES INDEX,IOLINE,OPENCLOSE,SUPER, ;V1.32 ; TABLE. ;V1.32 ; 25-JULY-1984 MNL ;V2.00 ; ADDED FLOW CHART CAPABILITY-SWITCHES /CHART AND ;V2.00 ; /FLOW_CHART. MOVED CODE FOR LOGGING COMPLETION OF ;V2.00 ; SOURCE MODULE IN A FILE FROM EVAL TO INDEX. ;V2.00 ; ADDED MODULE CHART.MAR AND CHANGED ;V2.00 ; MODULES EVAL.MAR,IOLINE.MAR,INDEX.MAR,OPENCLOSE.MAR, ;V2.00 ; STAT.MAR,TABLE.MAR ;V2.00 ; 31-JUL-1984 MNL ;V2.01 ; ADDED TO LOGICAL IF, IFTHEN, ELSIF THEN THE T/F NOTATION;V2.01 ; EXTENDED CHART BUFFER TO 128 BYTES TO ALLOW FOR TEXT ;V2.01 ; STORAGE FOR ADDING TO BARE SYMBOLS NOW IN USE. ;V2.01 ; EXTENDED PROGRAM ELEMENT FLAG WORD TO 8 BYTES. ;V2.01 ; ADDED NEW FLAGS TO PROGRAM ELEMENT FLAG WORD ;V2.01 ; EXTENDED HEAP ALLOCATION FOR 128 BYTE ELEMENTS ;V2.01 ; ADDED NEW ELEEMNTS TO BE PRINTED OUT INSIDE OF A ;V2.01 ; CONNECTOR PIXEL TO CLARIFY CONTROL FLOW ;V2.01 ; SIMPLE GOTO HAS LABEL OF DEST PRINTED INSEID ;V2.01 ; ADDED FLOW CHART STATISTICS ;V2.01 ; FIXED BUG PHASE_2_ACTION_2 HANDLE ERR= IN I/O ;V2.01 ; FIXED BUG PHASE_2 ACTION_10 ERROR IN NESTED DO LOOPS ;V2.01 ; FIXED BUG CHART_IF INCORECT HANDLEING OF MULTIPLE NESTED;V2.01 ; PARRENS IN LOGICAL EQUATION PART OF IF IS SEARCH FOR ;V2.01 ; ACTION PART. ;V2.01 ; FIXED BUG IN CHART_ACTION_LOGICAL_FUNCTION, DID NOT ;V2.01 ; PROPERY HANDLE MULTIPLE TOKENS BEFORE ENTRY POINT NAME ;V2.01 ; TO GET THE NAME FOR STORAGE AND LATER PRINT OUT ;V2.01 ; ADDED TO SYMBOLS PRINTED OUT-TEXT ;V2.01 ; ALL IF'S THE FIRST FEW CHARS OF LOGICAL EQUATION ;V2.01 ; SIMPLE GOTO THE LABEL GOING TO ;V2.01 ; DO'S THE LABEL OF LOOP AND LOOP CONTROL EQUATION ;V2.01 ; CONTINUE,PAUSE,RETURN,STOP,END THE TYPE NAME AND ANY ;V2.01 ; TEXT THAT MIGHT HAVE OCCOURED FOLLOWING ;V2.01 ; CHANGED MODULES CHART,IOLINE,TABLE,INDEX,STAT ;V2.01 ; 27-AUG-1984 MNL ;V2.02 ; ADDED COMMENTS SHOWING PROGRAM ELEMENT OFFSET SUMMARY ;V2.02 ; AND CHART CHART_ELEMENT OFFSET SUMMARY ;V2.02 ; BUG FIX-LABELS ON VERT. LINES REVERSED ;V2.02 ; PUT IN ROUTINE TO TRY AND DO A COMPRESS ON PIXEL ARRAY ;V2.02 ; CHANGED FLOW CHART OUTPUT FRIM LEFT TO RIGHT RASTER ;V2.02 ; SCAN TO UP TO DOWN RASTER SCAN. AS PER REQUEST BY ;V2.02 ; DUANE FOJT CODE 3514 NWC. ;V2.02 ; LOCATES BLOCKS OF CODE WITH ONLY ENTERNCE BEING VIA A ;V2.02 ; LABEL AND ONLY ONE JUMP TO THAT LABEL FROM OUTSIDE ;V2.02 ; THE BLOCK. MOVED THE BLOCK OF CODE TO JUST BELOW AND TO ;V2.02 ; THE RIGHT OF THE ONLY SOURCE ;V2.02 ; ERROR IN SELECTING IMPORT/EXPORT-USED WRONG REGISTER ;V2.02 ; IN TESTING SYMBOL FLAGS. ;V2.02 ; CHANGED ELEMENTS CHART,INDEX,IOLINE,OUTPUT ;V2.02 ; 28-AUG-1984 MNL ;V2.03 ; ADD SECOND TAG FIELD GIVEING THE STROAGE LOCATION OF THE;V2.03 ; VARIABLE. DATA WOULD BE SAVED AT ACCUMULATE DATA TIME ;V2.03 ; BY SWITCH /STORAGE AND WOULD ALSO DISPLAY AT THAT TIME ;V2.03 ; STORAGE INFO. UPDATE OPTIONS IN /ORDER TO INCLUDE NEW ;V2.03 ; TAG FIELDS. ;V2.03 ; ALSO CHANGED ENTRY POINT XREF GRAPHICAL OUTPUT TO ;V2.03 ; MARK NESTING LEVELS ;V2.03 ; CHANGED MODULES, IOLINE,INDEX,OPENCLOSE,OUTPUT,SUPER, ;V2.03 ; TABLE,FLOW ;V2.03 ; 7-SEP-1984 MNL ;V2.04 ; ADD TO PHASE_2_E A NEW SUBROUTINE ;V2.04 ; ADD_SPLIT_COLUMN_TO_MIDDLE TO ALLOW A COLUMN TO BE ADDED;V2.04 ; JUST AFTER STATED COL BETWEEN SATED ROWS IN TABLEAU. ;V2.04 ; AND ATTEMPT TO PUT REST OF NEW BLANK COL ON R.H.S. ;V2.04 ; CHANGED MODULES INDEX,IOLINE,CHART ;V2.04 ; 10-SEP-1984 MNL ;V2.05 ; CHANGED PHASE 3 TO USE ADD_SPLIT_COLUMN_TO_MIDDLE RATHER;V2.05 ; THAT ADD_COLUMN_TO_MIDDLE. ;V2.05 ; CHANGED INDEX,IOLINE,CHART. ;V2.05 ; 13-SEP-1984 MNL ;V2.06 ; ADDED TO FLOW CHART, IF FLOW LINE FROM SOURCE TO LABEL ;V2.06 ; NEEDS TO PASS OVER MORE THAN 3 PAGES (VALUE OF VAR ;V2.06 ; "MAX_DIRECT_PAGE") THEN A CONNECTOR SYMBOL IS USED ;V2.06 ; IN ITS PLACE. ;V2.06 ; ALSO ADDED TO THE /FLOW SWITCH THE CAPABILTY TO CONTROL ;V2.06 ; THE FORMAT OF THE FLOW CHART. /FLOW[=[NOMOVE][:][NOCONN];V2.06 ; WHICH SELECTIVELY DISABLE PHASE_2_E (MOVEING PORTIONS OF;V2.06 ; CODE AROUND)[NOMOVE] AND/OR USEING CONNECTORS [NOCONN] ;V2.06 ; MODIFIED MODULES INDEX,IOLINE,OPENCLOSE,CHART ;V2.06 ; 17-SEP-1984 MNL ;V2.07 ; STUDY OF CAUSE OF EXCESSIVE PAGE FAULTING AND RUN TIME ;V2.07 ; VS CLOCK TIME PROBLEM IN FLOW CHART DURING PHASE 3 IS ;V2.07 ; DUE TO THE CALLS TO ENTER_PROGRAM_ELEMENTS_X_Y. ;V2.07 ; WORK ON REDUCEING THE NUMBER OF CALLS REQUIRED. ;V2.07 ; RESULT WAS FOR TEST CASE USED -PAGE FAULT RATE DROPPED ;V2.07 ; BY A FACTOR OF APROXIMATELY 4 DURING THE FLOW CHARTBUILD;V2.07 ; SECTION FROM ABOUT 183000 TO 44600 THOUSAND FAULTS ;V2.07 ; CHANGED MODULES INDEX,IOLINE,CHART. ;V2.07 ; 18-SEP-1984 MNL ;V2.08 ; STORAGE INFORAMTION TAG FOR CALLED BY ARGUMENTS-ADD ;V2.08 ; DATA ON WHICH ARGUMENT NUMBER IT IS ;V2.08 ; CHANGED MODULES INDEX,IOLINE,STORE,OUTPUT,EVAL ;V2.08 ; 21-SEP-1984 MNL ;V2.09 ; ADD ARGUMENT INFORMATION FOR CALLING ARGUMENTS ;V2.09 ; SAVEING ARGUMENT NUMBER AND ENTRY POINT NAME ;V2.09 ; NEW SWITCH IMPLIMENTS FEATURE /ARGUMENT, ALSO SAVES ;V2.09 ; FOR SUPER INDEX-ADDED 3RD TAG FIELD FOR ARG INFO. ;V2.09 ; EXPANDED /REORDER FOR 4 ARGS -NEW ONE IS ARGUMENT ;V2.09 ; CHANGED MODULES INDEX,IOLINE,STORE,OUTPUT,EVAL ;V2.09 ; OPENCLOSE,TABLE,SUPER ;V2.09 ; 03-OCTOBER-1984 MNL ;V2.10 ; ADD TO COMMAND LINE PARSEING-ERROR PRINTOUT SHOWING ;V2.10 ; AREA OF ERROR OCCOURANCE. ;V2.10 ; ADDED SWITCH /D_LINES-SAME AS /DEBUG ADDED FOR FORTRAN ;V2.10 ; COMPILER COMPATABILITY. ALSO SWITCH /INDENT=X FOR FORMAT;V2.10 ; CONTROL OF SUPER INDEX OUTPUT AND INDENTATION CODE. ;V2.10 ; CHANGED MODULES INDEX,IOLINE,OPENCLOSE,TABLE,SUPER ;V2.10 ; 05-OCTOBER-1984 MNL ;V2.11 ; BUG FIX IN /ORDER ARGUMENT HANDELING AND INDENTATION ;V2.11 ; LEVEL 1 SPACEING. ;V2.11 ; CHANGED MODULES INDEX,IOLINE,OPENCLOSE,SUPER. ;V2.11 ; VERSION 2.11 SUBMITED TO DECUS LIBRARY 05-OCTOBER-1984 ;V2.11A ; 09-OCTOBER-1984 MNL ;V2.12 ; FOR /[RE]ORDER SWITCH SYNONIMS FOR ARGUMENT 'NAME' ;V2.12 ; ARE EITHER 'VARIABLE' OR 'COMMON' ;V2.12 ; CHANGED MODULES INDEX,IOLINE,OPENCLOSE. ;V2.12 ; 10-OCTOBER-1984 MNL ;V2.13 ; ADDED /SAVE_INDEX CAPABILITY ;V2.13 ; CHANGED MODULES INDEX,IOLINE,TABLE,OPENCLOSE,STORE. ;V2.13 ; 11-OCTOBER-1984 MNL ;V2.14 ; IMPROVED COMMAND LINE INPUT AND PARSEING. CAN NOW ;V2.14 ; HAVE CONTINUATION LINES AS LONG AS SWITCH/FILE SPEC ;V2.14 ; IS NOT SPLIT. ALSO ALLOW INTERCHANGEABLE USE OF ;V2.14 ; '=' AND ':' IN SWITCH VALUES/ARGUMENTS. ;V2.14 ; CHANGED FILES INDEX,IOLINE,OPENCLOSE ;V2.14 ; 17-OCTOBER-1984 MNL ;V2.15 ; ADDED TO STATISTICS ACCOUNTING FOR ALL TYPES OF TOKENS ;V2.15 ; CORRECTED LIBRARY_POINTER_TABLE IN TABLE.MAC, AS SOME ;V2.15 ; ENTRIES WERE NOT IN LEXICOGRAPHIC ORDER USEING THE ;V2.15 ; ASCII COALLATING SEQUENCE. ;V2.15 ; BUG IN 2ND TITLE LINE-FOLLOWING /SAVE_INDEX IN /DO_SUPER;V2.15 ; LEFT IN MODULE NAME ;V2.15 ; CHANGED FILES INDEX,IOLINE,TABLE,STAT,LINETYPE,STORE, ;V2.15 ; OPENCLOSE ;V2.15 ; 13-NOVEMBER-1984 MNL ;V2.16 ; BUG IN FLOW CHART-CAUSED ACCESS ERROR. ;V2.16 ; DID NOT PRPERLY UPDATE POINTERS IN PHASE_2_ACTION_6 ;V2.16 ; WHEN MOVEING UP ELSE(IF) SECTION ALONG SIDE PRECEEDING ;V2.16 ; SECTION AND HAVEING TO FILL OUT TO RIGHT JAGGED EDGE OF ;V2.16 ; SECTION TO LEFT. ;V2.16 ; ADDED CHECK FOR NO LOOP AROUND ON LOGICAL IF FOR ;V2.16 ; RETURN AND STOP ;V2.16 ; ALSO ADDED CHECK CODE TO DEBUG ROUTINE CHECK_TABLEAU ;V2.16 ; CHANGED MODULES INDEX,IOLINE,CHART ;V2.16 ; 26-NOVEMBER-1984 MNL ;V2.17 ; ACCOUNT FOR LONGER DCL COMMAND BUFFER AND FILE NAMES ;V2.17 ; IN V4.0. NEEDED TO ENLARGE HEAP MANAGEMENT TO HANDLE ;V2.17 ; 320 BYTE BLOCKS AS A REGULAR ITEM. ;V2.17 ; CHANGED MODULES INDEX,IOLINE,OPENCLOSE,HEAP,TABLE,STAT ;V2.17 ; VERSION 2.17 SUBMITTED TO DECUS LIBRARY AS UPDATE 26-NOVEMBER 1984 ;V2.17A ; VERSION 2.17 SUBMITTED TO FALL 84 DECUS (ANAHEIM) VAX SIG TAPE ;V2.17B ; ; ; ; .PSECT PURE_DATA,NOEXE,CON,NOWRT,SHR,GBL,RD ; ; LOCAL PURE DATA ; NO_END: .ASCID /INDEX-E-Missing End Statement/ CODE_1: .LONG 1 ;V1.4 CODE_2: .LONG 2 ;V1.4 CODE_3: .LONG 3 ;V1.4 CODE_4: .LONG 4 ;V1.4 CODE_5: .LONG 5 ;V1.4 .PSECT IMPURE_DATA,NOEXE,CON,WRT,NOSHR,GBL,RD,LONG ; ; LOCAL IMPURE DATA ; SCRATCH:.BLKL 2 ARG: .LONG 2 .ADDRESS ARG1,ARG2 ARG1: .LONG 0 ARG2: .LONG 0 DESCRIPTER: ;V2.00 .LONG 0,0 ;V2.00 .PSECT CODE,EXE,CON,NOWRT,SHR,GBL,NOVEC .ENTRY INDEX,^M ; ; ONE TIME ONLY CODE INITIALLIZATION ; ; FLAGS CLEARED CLRL ENTRY_SAVED_FLAG ;V1.12 CLRL SUPER_SAVED_FLAG ;V1.32 CLRL INDEX_SAVED_FLAG ;V2.13 ; LINES PER PAGE ON LINE PRINTER CALLG NULL,LIB$LP_LINES MOVL R0,LINES_PER_PAGE ; ; OPEN SCRATCH FILES CALLG NULL,OPEN_SCRATCH CALLG NULL,OPEN_CHART_SCRATCH ;V2.00 ; INIT SYMBOL TABLE AREA CLRQ SYMBOL_TABLE_QUEUE ;V1.10 CLRL SYMBOL_TABLE_QUEUE+8 ;V1.10 MOVAL LINE_TOKEN_QUEUE,LINE_TOKEN_QUEUE MOVAL LINE_TOKEN_QUEUE,LINE_TOKEN_QUEUE+4 MOVAL LABEL_QUEUE,LABEL_QUEUE ;V2.00 MOVAL LABEL_QUEUE,LABEL_QUEUE+4 ;V2.00 MOVAL VARIABLE_QUEUE,VARIABLE_QUEUE ;V2.00 MOVAL VARIABLE_QUEUE,VARIABLE_QUEUE+4 ;V2.00 ; INIT THE STATISTICS BUFFERS ;V1.4 MOVC5 #0,NULL,#0,#,TIME_INPUT ;V1.31 MOVC5 #0,NULL,#0,#,- ;V2.15 START_ACC_TOKEN_STAT ;V2.15 MOVC5 #0,NULL,#0,#,START_TOKEN_STAT ;V2.15 ; INIT THE HEAP CALLG NULL,INIT_HEAP ; ; NEW FILE INITIALIZATION CODE LOOP ENTRY POINT ; ; INIT TIMER FOR STATISTICS ;V1.4 ; ;V1.4 CALLG NULL,G^LIB$INIT_TIMER ;V1.4 NEW_FILE: ;V1.4 ; ;V1.4 ; ;**-1 ; GET COMMAND FROM OPERATOR, PARSE IT AND OPEN FILES ; CALLG NULL,OPEN ; GET DAY-TIME FOR LIST HEADER PUSHAL DAY_TIME CALLS #1,LIB$DATE_TIME ; CLEAR END OF FILE FLAG AND INPUT BUFFER IN USE FLAG CLRL END_OF_FILE CLRL DEFFERED_END_OF_FILE CLRL INPUT_BUFFER_FLAG ; ; COMMAND TIME STATISTICS SAVE ;V1.4 ; ;V1.4 PUSHAL TIME_COMMAND ;V1.4 PUSHAL CODE_1 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_COMMAND+8 ;V1.4 PUSHAL CODE_2 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_COMMAND+12 ;V1.4 PUSHAL CODE_3 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_COMMAND+16 ;V1.4 PUSHAL CODE_4 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_COMMAND+20 ;V1.4 PUSHAL CODE_5 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 CALLG NULL,G^LIB$INIT_TIMER ;V1.4 ;V1.4 ; ;V1.4 ; NEW SORCE MODULE INITIALIZATION CODE ; NEW_MODULE: ; ; MODULE PARSE LOOP ; SET STATUS WORD MOVL #PARSE_LINES,STATUS_WORD CLRL LINES_ON_PAGE ; INITIALIZE STATISTICS ACCUMULATION ; INI NEW SOURCE DATA INCL LINE NUMBER,PAGE NUMBER CLRL LINE_NUMBER CLRL PAGE_NUMBER CLRL INCLUDE_LEVEL CLRL PROGRAM_LEVEL CLRL BLOCK_DATA_FLAG CLRL END_FLAG CLRL PROGRAM_FLAG TSTL INDEX_SAVED_FLAG ;V2.13 BEQL 1$ ;V2.13 BRW 4$ ;V2.13 1$: ;V2.13 MOVC3 #31,DEFAULT_NAME,MODULE_NAME MOVC5 #0,NULL,#^A/ /,#32,CURRENT_MODULE_NAME ; BLANK OUT TITLE NAME ;V1.26 4$: ;V2.13 MOVL ,R6 ;GET ADDRESS OF INPUT FILE NAME ;V1.25 MOVL ,R7 ;GET SIZE OF INPUT FILE NAME ;V1.25 MOVC5 #0,NULL,#0,#32,IN_FILE_NAME ;INPUT FILE NAME STRING ;V1.25 LOCC #^A/]/,R7,(R6) ;FIND ']' PRECEEDING FILE NAME ;V1.25 BNEQ 2$ ;FOUND IT ;V1.25 SUBL3 #1,R6,R1 ;NOT USED-DEF IS BEGING OF STR ;V1.25 2$: ADDL3 #1,R1,R8 ;PASS OVER "]" ;V1.25 SUBL3 R6,R8,R0 ;GET NUMBER OF CHRS PASSED OVER ;V1.25 SUBL2 R0,R7 ;NUMBER OF CHRS LEFT ;V1.25 LOCC #^A/./,R7,(R8) ;FIND TERMINATEING '.' ;V1.25 SUBL3 R8,R1,R7 ;FIND LENGTH OF FILE NAME STRING;V1.25 CMPL #31.,R7 ;MAKE SURE NOT TO LONG ;V1.25 BGEQ 3$ ;OK ;V1.25 MOVL #31.,R7 ;-TOO LONG-TRUNCATE TO 31 CHRS ;V1.25 3$: MOVB R7,IN_FILE_NAME ;LOAD LENGTH ;V1.25 MOVC3 R7,(R8),IN_FILE_NAME+1 ;LOAD FILE NAME ;V1.25 ; ; GET A LINE TO PARSE (INCLUDEING COMMENTS) ; CALLG NULL,GET_LINE NEW_LINE: ; ; IF E.O.F. AND NOT IN INCLUDE FILE GO TO CLOSE PROCESSING ; IF E.O.F. AND IN INCLUDE FILE-POP UP ONE LEVEL IN PROCESSING ; AND GET NEW LINE TSTL END_OF_FILE ;END OF FILE CHECK BNEQ 3$ ;V1.4 BRW 1$ ;V1.4 3$: TSTL LINE_NUMBER ;CHECK FOR REQUIRED END PROCESSING ;V1.4 BNEQ 1003$ ;V1.4 BRW 2$ ;V1.4 1003$: PUSHAL NO_END ;V1.4 CALLS #1,G^LIB$PUT_OUTPUT ;V1.4 CALLG NULL,PARSE_BAD_END ;V1.4 ; RESET SYMBOL TABLE AREA ;V1.4 CALLG NULL,CLEAR_SYMBOL_TABLE ;V1.4 PUSHAL TIME_CLEANUP ;V1.4 PUSHAL CODE_1 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_CLEANUP+8 ;V1.4 PUSHAL CODE_2 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_CLEANUP+12 ;V1.4 PUSHAL CODE_3 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_CLEANUP+16 ;V1.4 PUSHAL CODE_4 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_CLEANUP+20 ;V1.4 PUSHAL CODE_5 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 CALLG NULL,G^LIB$INIT_TIMER ;V1.4 CALLG NULL,DUMP_STATS ;V1.4 BITL #LOG_FLAG,FLAG_WORD ;LOG COMPLETEION OF MODULE ;V2.00 BEQL 2$ ;V2.00 LOCC #0,#31,MODULE_NAME ;V2.00 SUBL3 R0,#31,DESCRIPTER ;V2.00 ADDL2 #,DESCRIPTER ;V2.00 MOVAL MODULE_MESSAGE,DESCRIPTER+4 ;V2.00 PUSHAL DESCRIPTER ;V2.00 CALLS #1,G^LIB$PUT_OUTPUT ;V2.00 2$: JMP CLOSE_DOWN ;**-6 1$: ; USE LIB$FREE_VM TO RELEASE MEMORY IN USE IN LINE TOKEN QUEUE 4$: REMQUE @LINE_TOKEN_QUEUE,R11 ;REMOVE ELEMENT FROM QUEUE BVS 5$ ;IF QUEUE EMPTY-DONE CVTWL 14(R11),ARG1 ;GET SIZE IN BYTES MOVL R11,ARG2 ;BASE ADDRESS CALLG ARG,FREE ;RELEASE MEMORY TO HEAP BRB 4$ 5$: ; ; DETERMINE LINE TYPE AND DOUBLE CHECK IT ; CALLG NULL,GET_LINE_TYPE ; ; PARSE THE LINE AND SAVE RESULTS ; CALLG NULL,EVAL ; ;V2.00 ; IF FLOW CHART WANTED-CALL DATA GATHER ROUTINE ;V2.00 ; ;V2.00 BITL #CHART_FLAG,FLAG_WORD ;V2.00 BEQL 7$ ;V2.00 BITL #GET_ENTRY_FLAG,FLAG_WORD ;V2.00 BNEQ 7$ ;V2.00 CALLG NULL,ACCUMULATE_CHART ;V2.00 7$: ;V2.00 ; ; IF END- DO OUTPUT OF ACCUMULATED DATA AND STATISTICS ; AND GO TO NEW MODULE LOOP ; TSTL END_FLAG BNEQ 1005$ ;V1.4 BRW 6$ ;V1.4 ; RESET SYMBOL TABLE AREA ;V1.4 1005$: CALLG NULL,CLEAR_SYMBOL_TABLE ;V1.4 PUSHAL TIME_CLEANUP ;V1.4 PUSHAL CODE_1 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_CLEANUP+8 ;V1.4 PUSHAL CODE_2 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_CLEANUP+12 ;V1.4 PUSHAL CODE_3 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_CLEANUP+16 ;V1.4 PUSHAL CODE_4 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_CLEANUP+20 ;V1.4 PUSHAL CODE_5 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 CALLG NULL,G^LIB$INIT_TIMER ;V1.4 ; ;V2.00 ; CONSTRUCT AND OUTPUT FLOW CHART ;V2.00 ; ;V2.00 BITL #CHART_FLAG,FLAG_WORD ;V2.00 BEQL 8$ ;V2.00 BITL #GET_ENTRY_FLAG,FLAG_WORD ;V2.00 BNEQ 8$ ;V2.00 CALLG NULL,DO_CHART ;V2.00 8$: ;V2.00 CALLG NULL,DUMP_STATS ;V1.4 BITL #LOG_FLAG,FLAG_WORD ;LOG COMPLETEION OF MODULE ;V2.00 BEQL 1008$ ;V2.00 LOCC #0,#31,MODULE_NAME ;V2.00 SUBL3 R0,#31,DESCRIPTER ;V2.00 ADDL2 #,DESCRIPTER ;V2.00 MOVAL MODULE_MESSAGE,DESCRIPTER+4 ;V2.00 PUSHAL DESCRIPTER ;V2.00 CALLS #1,G^LIB$PUT_OUTPUT ;V2.00 1008$: ;V2.00 JMP NEW_MODULE ;**-1 6$: ; ; GET NEW LINE ; CALLG NULL,GET_LINE JMP NEW_LINE CLOSE_DOWN: ; ; DO CLOSE PROCESSING ; CALLG NULL,CLOSE ;**-2 ; ; GO GET NEW COMMAND ; JMP NEW_FILE .END INDEX