[comp.os.vms] INDEX

COLEMAN@UMBSKY.BITNET (01/27/88)

Hello!

   After three weeks of relative inactivity, I'm ready to distribute the
INDEX program which Paul Charette of the Naval Underwater Systems Centre
(charettep@nusc-wpn.arpa) obtained from a DECUS tape. For those of you
who either don't recall all the details or never saw his messages, they
can be found below in their entirety. Just send me your BITnet address
and I'll get it to you as soon as humanly possible.

   ARPAnet readers -- read below for the node address and other relevant
info for FTPing it.

                                         Steve Coleman
                                         Computing Services
                                         University of Massachusetts at Boston
                                         Harbor Campus
                                         Boston Mass 02125  USA
                                         (617) 929-7805
                                         BITnet:         COLEMAN@UMBSKY

===============================================================================

(Message #1)

Greetings and Permutations,

    About two weeks ago, I requested information about a program which
would analyze FORTRAN code and generate flow charts.  Thanks to responses
by many of you, I traced down INDEX, a DECUS program which is touted as
a "FORTRAN Cross Referencer and Flow Chart Generator".  (embed disclaimer)
I haven't had time to test it out, so I can't speak for it's usefulness or
reliability, but it looks quite useful.

    If you would like a copy, I will gladly forward the source to you.
I wish I could make it available for Anonymous FTP, but our site doesn't
allow anonymous access.  Be warned, however, that it is quite large, however
(23 files, ~3000 blocks of source, with the largest file having 880 blocks).
I tried packing it using VMS_SHAR, with MAX_PART_SIZE = 64





                 INDEX-FORTRAN CROSS REFERENCE AND FLOW CHART

                                   ABSTRACT




          INDEX is a FORTRAN source cross-referencing  and  flow  charting
     utility  that  allows  the  user  to  look  at individual source files
     (optionally saving the data for an overall SUPER INDEX) and  determine
     what  variables  are  used  on  what  lines  and  how  they  are used.
     Furthermore the user can select for display/save for SUPER INDEX  only
     those  variables  or COMMON blocks with the characteristics that he is
     interested  in-global/local,  assigned   value/not   assigned   value,
     used/unused,   imported/exported,   etc   in  any  combination.   Also
     available is the optional ability to show up to four additional  items
     of information for display during the regular and SUPER INDEX:

          The variable storage location information (local, in COMMON,
          passed by argument, etc).

          The variable type (REAL F_Floating, structured etc)

          Usage in FUNCTION/SUBROUTINE  calls  (routine  used  in  and
          argument number).

          A user selected tag of up to 31 characters.

     The data saved for a SUPER INDEX listing (consisting of 6  data  items
     as  outlined  above) can be displayed with a great deal of flexibility
     as to the data item selection, order and format (or saved in  an  ISAM
     data  file for the user to work on directly).  A special option of the
     SUPER INDEX allows the output of a list of module entry  points  which
     pass  data  in and out by argument, the name of each argument and it's
     type , the name of any module which call that entry point  along  with
     the  the  name  of  each variable passed in the corresponding argument
     position and it's type.  The resulting information supplied allows the
     user to follow the flow of data throughout a program or find the usage
     of any selected data variable as required.

          If selected, the user may at the same time generate a flow  chart
     of the source file currently being cross-referenced.

          If wanted, the user can generate in place of the SUPER INDEX,  an
     entry  point  cross  reference  listing  showing  who calls who and is
     called by who (with optional graphical tree output).

=============================================================================

(Message #2)

INDEX is now available through anonymous FTP from garfld.msfc.nasa.gov.
Their ARPAnet node number is 128.158.1.1.  The anonymous account username
is ANON.  The password is GUEST.  Enjoy!

=============================================================================

-------

KIMBLE@UTKVX3.BITNET (04/04/88)

index

JOE@FHCRCVAX.BITNET (Joe Meadows) (04/05/88)

This is a modification for the INDEX / FIND utility. Note that INDEX and
FIND are the same utility, only the name is different.  This utility can
be found on the Fall '87 Decus tape, under [VAX87E.MEADOWS.INDEX], and was
posted previously to info-vax.

This fixes behaviour of /CHARACTERISTICS qualifier.

--- In search.c , find the following -----------
  if (search->si_v_char) {
    if (((search->si_l_charset & fh2->fh2$l_filechar) == search->si_l_charset)
     && ((search->si_l_charclr & fh2->fh2$l_filechar) == search->si_l_charclr))
--- and change to ------------------------------
  if (search->si_v_char) {
    if ((search->si_l_charset & fh2->fh2$l_filechar)
     && (!(search->si_l_charclr & fh2->fh2$l_filechar)))
------------------------------------------------

        This solves two problems at once, the previous code would force all
negated keywords to behave as though they were not negated, and all present
keywords would have to be true (i.e. /CHAR=(READ,WRITE) would only match if
the file had BOTH read and write verify set, whereas the help said it would
be EITHER).

        The behaviour with this modification is as documented, if any of the
present keywords hold true and if none of the negated keywords hold true
for the file, then the file is displayed.

        A possible future modification would be to modify it so that
you can ask that BOTH need to be set. Perhaps I could change it so that
/CHARACTERISTICS=(READ+WRITE) would test for read AND write, and
/CHARACTERISTICS=(READ,WRITE) would test for read OR write. No one has
written to me asking for such a modification, so perhaps it's not such a
wanted item..

  Joe Meadows Jr.
  VAX/VMS System Manager / guru in training
  Fred Hutchinson Cancer Research Center
  1124 Columbia St.
  Seattle Wa. 98104
     bitnet - JOE@FHCRCVAX
     arpa   - JOE%FHCRCVAX.BITNET@WISCVM.WISC.EDU
     voice  - (206) 467-4970