From: julian@vscn08.cern.ch (Julian James Bunn)
Subject: FLOW - companion to FLOPPY - some info
Reply-To: julian@vscn08.cern.ch (Julian James Bunn)
Organization: CERN European Lab for Particle Physics
Date: Thu, 30 Jul 1992 06:42:40 GMT


 Thanks to everyone who expressed an interest in a post of FLOW, the
companion program to FLOPPY. I sent FLOW to comp.sources.misc a couple
of days ago, but I guess the moderator is on hols, as it hasn't yet
appeared .... The posting contains code for installation on VMS, Unix
and CMS operating systems. 

 To use FLOW, you will need to have installed FLOPPY, which is available
at various ftp sites (such as gatekeeper.dec.com) under the name "ffccc".

 Since there have been a couple of requests recently for "structure
chart" generators in comp.lang.fortran, I include below a taste of what
FLOPPY/FLOW can do ... but these are not anywhere near such powerful
tools as e.g. DECSET from DEC (described by Steve Lionel recently).
The report extract that follows is the "textual structure chart" for 
the FLOW program itself, as produced by FLOW. (Note that the module 
descriptions appearing at the end of each line are picked from the 
source code itself...)

                      Meaning of Symbols:
                      -------------------
                      .   ==> terminal node in the tree
                      *   ==> external procedure
                      >   ==> subtree node, expanded below
                      +   ==> multiply called terminal node
                      ]   ==> procedure calling only externals
 -------------------------------------------------------------------------
                      ?   ==> module is in IF clause
                      (   ==> module is in DO loop
 *************************************************************************
 EXTERNAL procedure names will not appear
 =============
 Node name ==> FLOW
 =============
 
  FLOW                                                 :
      |-----PRODES                                     :Steer the FLOW program
                |-----INIARR   +                       :Initialise arrays
                |-----RDFLOP   >                       :Read the data from FLOPPY
                |-----EXTERN                           :Find names of external routines
                |         |-----RDFLOP   >             :Read the data from FLOPPY
                |?----PROTRE                           :Produce the FLOW diagram
                |         |-----SEARCH   +             :Finds the index for a routine name
                |         |-----LENOCC   ]             :
                |         |?----LENOCC   ]             :
                |         |?----LENOCC   ]             :
                |         |??---LENOCC   ]             :
                |         |??---LENOCC   ]             :
                |?----PROCHT                           :Produce the graphics SC
                |         |-----SEARCH   +             :Finds the index for a routine name
                |         |-----GRINIT                 :Close the graphics package
                |         |         |-----LENOCC   ]   :
                |         |-----CHTBOX   +             :Plots a box
                |         |-----SEARCH   +             :Finds the index for a routine name
                |         |((---CHTBOX   +             :Plots a box
                |         |((---GTX                    :Plots the text at a given position
                |         |         |-----LENOCC   ]   :
                |         |((---SEARCH   +             :Finds the index for a routine name
                |         |((---CHTLIN   ]             :Calculate and plot box intersect
                |         |(((--GRCLOSE                :Close the graphics package
                |                   |-----LENOCC   ]   :
                |?----PROCOM                           :Produce the COMMON block table
                |         |-----LENOCC   ]             :
                |         |-----LENOCC   ]             :
                |?----PROQRY                           :Interactively look at the tree
                          |-----CASCHG   >             :Convert any lower case to upper
                          |-----SEARCH   +             :Finds the index for a routine name
                          |-----CASCHG   >             :Convert any lower case to upper
 

-------------------------------------------------------------------------------
Julian James Bunn / CERN Computing and Networks Division. Tel.: Geneva 767 5029
Email: julian@vxcrna.cxern.ch
-------------------------------------------------------------------------------