NAME

       scan_commons - create a fortran f77 commons database.



SYNOPSIS

       scan_commons  [-afhqrsv]  -Eext  -Idir  -ddatabase  -xname
       [files]



DESCRIPTION

       scan_commons builds a database from the contents of common
       blocks or variable declarations.  scan_commons is intended
       to work with f77 include files  containing  common  blocks
       and  global  variable declarations, but can works with f77
       source files.

       The following variable declarations are recognized:  CHAR-
       ACTER,  COMMON,  COMPLEX, DOUBLE PRECISION, INTEGER, LOGI-
       CAL, PARAMETER and REAL.

       The generated database can  subsequently  be  used  for  a
       quick  lookup  using  get_common(1)  to  see  in which f77
       include file a certain common variable is defined.

       scan_commons uses the GNU database manager gdbm for  stor-
       ing, checking and retrieving items in the database.



OPTIONS

       -a     Add  duplicate  commons if they are defined in dif-
              ferent include files. If you choose not to use this
              flag,  duplicate  commons  defined in different f77
              include files will not be stored in  the  generated
              database.


       -f     Store  filenames only. The default is to store path
              and  filename.   Use  this   option   to   preserve
              diskspace  (or  memory if you are running this tool
              under MS-DOS).


       -h, --help
              gives a short overview of every option.


       -q     be really quiet. This will only print fatal  errors
              on stderr.  Usefull if called from a script.


       -r     re-organize  the  database after creation/updating.
              This may take a long time since  the  old  database
              will be read, sorted and written again. This option
              can be used standalone.

       -s     safe operation: every time a common  is  found  the
              database  will  be  updated  immediatly. Using this
              option can slow  the  generation  or  update  of  a
              database seriously down since no caching will done.


       -v     Be verbose.  scan_commons will print out a list  of
              directories  to visit, what extensions it is using,
              the number of files it has to scan, a complete list
              of  all  files to scan and a status report of every
              file scanned.  The output of these statistics is as
              follows:

              Statistics for file foo.inc (9/67)
              commons found      : 16
                     The total number of commons found in foo.inc
              duplicate commons  : 3
                     The total number of duplicate commons  found
                     in foo.inc. These duplicates can be found in
                     another include file.
              commons rejected   : 0
                     Number of commons rejected. This number  can
                     be different from 0 if you are performing an
                     update of a database.
              commons accepted   : 19
                     Total number of commons accepted  for  stor-
                     age.
              commons stored     : 19
                     Total number of commons actually stored.


       --version
              Shows the version number of scan_commons


       -Eext  Extensions scan_commons must use to determine which
              files it has to scan. Up to eight -E  are  allowed.
              Use  -E-  to  specify  no  extension.   The default
              extension is the empty extension.


       -Idir  Using this option tells scan_commons which directo-
              ries it has to search for f77 files containing com-
              mon blocks. Only the contents of that directory are
              scanned.  Subdirectories  are ignored.  Up to 64 -I
              are allowed.


       -ddatabase
              Name of the database to create  or  update.  If  no
              database  is  specified,  scan_commons looks at the
              value of the environment  variable  COMMON_DATABASE
              If   this  variable  points  to  a  database,  that
              database will be used.

       -xname Tells scan_commons to exclude the named  file  when
              scanning the files found with the -I -E options. Up
              to 64 -x are allowed.


       [files]
              Additional files to scan for common blocks



DIAGNOSTICS

       The following warning messages can occur:

       Warning: intended comment found
              scan_commons has detected a comment (a line  begin-
              ning  with a *, c or C) which does not start at the
              beginning of a line but before the seventh  column.

       Warning: more than 19 continuation lines near line XX
              scan_commons  has  detected more than 19 successive
              continuation lines. XX  indicates  near  what  line
              this occurs.

       Parse Error: unbalanced brace or delimiter
              a  unbalanced brace or delimiter has been detected.
              When this happens, scan_commons will tell you  near
              what  line  this error occured. This is a non-fatal
              error.

       Internal Parse Error: Invalid token range

       Internal Parse Error: Failed to remove common keywords
              These are internal parser errors, which  will  most
              likely  never be generated.  If these occur, please
              contact the author. These errors are fatal.



COMPATIBILITY

       The generated database can be shared without  problems  on
       different 32bit systems, but you can not access a database
       generated on a 32bit system from a 16 or 64 bit system.

       The MS-DOS versions have been built  with  flex  2.53  (no
       changes to the source code) and gdbm 1.7.3, which required
       some work to get it working under MS-DOS.

       scan_commons has run under HP-UX 9 and 10, SGI IRIX 5.2  &
       5.3, DEC OSF1, SunOs 4.1 and 4.3, Cray Unicos, IBM AIX 3.2
       & 4.1, Linux and MSDOS 6.2.  scan_commons also runs  in  a
       dos box under Windows 3.1, 3.11 and Win95.



ENVIRONMENT

       COMMON_DATABASE
              Points  to  the location of a common database. This
              environment variable is only used if the -ddatabase
              option is not given.



DISTRIBUTION POLICY

       All  utilities  in  this  fortran  utility  suite are dis-
       tributed under the GNU Public License.



BUGS

       A known bug is a malloc  failure  when  updating  a  large
       database  under  MS-DOS.   This is a gdbm-related failure,
       and the only  solution  is  to  create  several,  smaller,
       databases.

       If  a  bug occurs, it will most likely be generated by the
       MS-DOS versions of these tools. This will be mainly due to
       the 640kb memory limit MS-DOS has.

       If  you  think you have found a bug, you can send email to
       the author, describing what the bug is, how you  generated
       it  and if you can reproduce it. Also specify the platform
       where this bug occured.



AUTHOR

       Koen D'Hondt
       ripley@xs4all.nl
       (C)Copyright 1995-1996 by Ripley Software Development



SEE ALSO

       get_common(1),   list_commons(1),   fflow(1),   ffscan(1),
       ftags(1)