1 STRUCTURE - 

    This program will search FORTRAN/RATFIV/COBOL/MACRO-32 source, and 
  determine the calling structure.  It was originally written for 
  generating overlay structures on PDP-11's, but is also useful for 
  discovering the flow of control in an unfamilar set of modules.

    If any modules in a system are left out from the analysis, the 'tree'
  structure that results will stop at the point the missing modules are 
  called. A 'root' segment is defined as a module that is not called by
  any other module in the system.

    The current maximum number of seperate module entry points that can be
  read in is 1000, and the maximum number of root segments is 200.

2 Usage
    You need the following command line in your LOGIN.COM file to run the
  STRUCTURE program, or you type in the 'RUN' command yourself.

            $STRU*CTURE:== $SYS$SYSDEVICE:[VMSUTIL.STRUCT]STRUCTURE

    To run:
      'Input file' consists of a list of file names to be searched,
  one per line. The complete file spec can be used for example, 
  'DATACLAS:[YPII.SOURCE]INDEX.MAC'. 
	
      'Output file' from STRUCTURE, defaults to STRUCTURE.LIS.

      'Noiseword file' consists of a file of entrys that are to be 
  disregarded. No file given = no noisewords

2 RATFIV
      The following restrictions apply to the analysis of RATFIV source
  code.
        1. Continuation lines are read in as seperate and unique lines.
        2. The symbol '#' is recogonized as the comment character.
        3. 'INCLUDE' files are not read in and inserted into the source
             code.
        4. Macros are not expanded.
        5. Blank lines are ignored.

      When reading a new file in for analysis, the file name is used for
  the module name until a 'SUBROUTINE' or 'PROGRAM' statement is 
  encountered. 'ENTRY' statements are ignored in the analysis except if 
  a module executes a 'CALL' to an entry point. The module the 'ENTRY' is 
  in is not tracked. Please note that the analysis is only done on the 
  following keyswords.
        1. PROGRAM
        2. SUBROUTINE
        3. CALL

2 FORTRAN

      The following restrictions apply to the analysis of FORTRAN source
  code.
        1. Continuation lines are read in as seperate and unique lines.
        2. The symbol 'C', 'c', '*' and '!'  are recogonized as the 
             comment characters.
        3. 'INCLUDE' files are not read in and inserted into the source
             code.
        4. Blank lines are ignored.

      When reading a new file in for analysis, the file name is used for 
  the module name until a 'SUBROUTINE' or 'PROGRAM' statement is 
  encountered. 'ENTRY' statements are ignored in the analysis except if 
  a module executes a 'CALL' to an entry point. The module the 'ENTRY' is 
  in is not tracked. Please note that the analysis is only done on the 
  following keyswords.
        1. PROGRAM
        2. SUBROUTINE
        3. CALL

2 COBOL

      The following restrictions apply to the analysis of RATFIV source
  code.
        1. Continuation lines are read in as seperate and unique lines.
        2. The symbol '*' and '\' are recogonized as the comment 
             characters.
        3. 'INCLUDE' files are not read in and inserted into the source
             code.
        4. Blank lines are ignored.

      When reading a new file in for analysis, the source is skipped over
  until the 'PROCEDURE DIVISION' is found. The file name is used for the
  module name until the first label 'tag' (starts in column 8) is 
  encountered. Every new 'tag' is treated as though a new program module 
  is being defined. These tags are recorded for tracking when a 'CALL' or 
  'PERFORM' is encountered. The 'tag' associated with a 'SECTION' name is 
  ignored, which could cause problems if you PERFORM a whole SECTION. 
  Please note that the analysis is only done on the following keyswords.
        1. 'tags'
        2. PERFORM
        3. CALL

2 MACRO

      The following restrictions apply to the analysis of RATFIV source
  code.
        1. Continuation lines are read in as seperate and unique lines.
        2. The symbol ';' is recogonized as the comment character.
        3. 'INCLUDE' files are not read in and inserted into the source
             code.
        4. Blank lines are ignored.

      When reading a new file in for analysis, the file name is used for 
  the module name until a 'ENTRY' statement is encountered. The preceding 
  '.' is not needed. Altough 'BSBX' instructions are tracked the actual 
  module to which they jump to is not tracked. Please note that the 
  analysis is only done on the following keyswords.
        1. ENTRY
        2. CALLG
        3. CALLS
        4. BSBB
        5. BSBW
