



                     FORTRAN Programming Tools  
                     Release III.10


                     Submitted by Art Ragosta and Laura Holst
                     US Army Aviation Systems Command
                     Aeroflight Dynamics Directorate
                     RAGOSTA@MERLIN.ARC.NASA.GOV
                     NASA Ames Research Center
                     MS 219-1
                     Moffett Field, CA   94035-1000
                     (415) 604-5558/5578


This package contains a set of programming tools of either general interest or
specifically aimed at FORTRAN 77 users.  Although many of the tools are
transportable, some of the programs and all of the command files are specific
to the VAX family running VMS version 4.0 or higher. 


The following tools are included :

BUGOUT - a system for the debugging and optimization of FORTRAN source codes. 
This package was developed for the determination of coding problems that could
result in addressing errors (e.g., COMMON blocks of different lengths in
different routines, CALL statements with more or fewer arguments than the
SUBROUTINE statement); on a VAX, these errors normally result in an access
violation.  Additional capabilities include automatic compilation with
/DEBUG=BOUNDS, continual traceback printout, proper initialization and use of
variables, and CPU time used by each subprogram.

CHECK72 - a program to verify that no text has been typed beyond column 72 (or
80) of a FORTRAN source deck (or other file).

CLEANUP - a source-code cleanup and structuring utility for FORTRAN 77.

DOUBLE - a program to list two files side-by-side on a VT100-compatible
terminal.

EIGHTY - a program used to crunch a text file whose records are longer than 80
columns into 80 columns.  UNEIGHTY restores the records to full length. (This
program was written because our HASP communications will not transfer files
with records longer than 80 columns.)

FIFE - the Friendly, Interactive FORTRAN Environment is a general purpose
executive program for development of flexible, user-friendly systems.  The user
interface is command-oriented (maybe an optional menu-based interface will be
provided in the future) and has been found to meet with good user acceptance. 
Modules and new commands can be added with great ease.  This version is
preliminary but has already been found to be quite usable.

FILTER - a program to replace text strings with other text strings, perform tab
replacement, 8 bit zeroing, etc.

FLS, FS - .COM files used to submit FORTRAN compiles to the batch queues.

FORTLIST - a useful listing program that formats a FORTRAN file, produces a
listing with page numbers and dates, and creates a table of contents and index
by subprogram name.

FORTVMS - a program for reformatting a file with FORTRAN-compatible carriage
controls into a VMS-standard listing format.

FPP - a FORTRAN PreProcessor program similar to the C preprocessor, but simpler
and FORTRAN-oriented.

GROK - returns number of characters, words, lines, carriage control type,
length of longest line, length of longest page, and existence of TABs.

INCLUDER - replace INCLUDE statements in a source code with the file
referenced.

MERLIB - a library of FORTRAN and MACRO routines that provide useful
capabilities for FORTRAN programmers.  This library can also be linked to any
language that is capable of supporting the FORTRAN interface on the VAX.  See
MERLIB.DOC for the MANY routines included.

NAMEIO - a program to replace NAMELIST I/O with transportable, FORTRAN 77 code.

PAGER - maintain a paginated listing file.

REORDER - a program to reorder the subprograms in a source file.

RPURGE - Reverse PURGE command.  Deletes all but the OLDEST file that matches
the specification.

SEND - a nifty little send_message_to_username routine used by some of the
batch procedures.

SMALL - a program to break up big text files for transfer by mail, floppy disk,
etc.

SPLIT - a program to split FORTRAN source codes into subprograms.

STRIP72 - a program to remove all characters beyond column 72 and remove
trailing blanks.  STRIP removes all trailing blanks only.

STUB - a program to create dummy subprograms with a standard format prologue of
comment cards.

TOUCH - change a file's revision date to the current date/time.

VMSFORT - a program for reformatting a file with VMS-standard carriage control
to the FORTRAN-compatible control characters.


Notes :

A. All other programs are the exclusive work of the submitters except FORTLIST
which was based on a program written by Ed Austin at the Aviation Applied
Technology Directorate, Ft. Eustis, VA, and later modified by the submitters and
Koreen Clay of the Technology Development Corporation.

B. We attempted to make the user interface of all of the tools as similar as
possible and followed VMS standard procedures when applicable.  We generally
avoid the CLI routines as it is much easier to transport the FOREIGN command
interpretation than the CLI syntax.

C. All routines in the MERLIB library are similarly the work of the 
submitters except as noted in B, above.  Some of the algorithms were derived 
from text books; these routines are referenced in the source code.
Some routines were based upon routines found in DECUS releases; if the general
functioning of the code is sufficiently similar to the original, the author of
the original is noted.

D. The .COM files are all designed to run from a system account accessed as
logical name 'MERLIN:'.  It will be necessary to change all references to
MERLIN: to an appropriate directory or to define this logical name.

E. See the file REVISIONS.TXT for the major changes since the previous release
of this package.


There are two documents of special note in this release of the tools package. 
They are PROGRAM.STD and LIFECYC.TXT.  

PROGRAM.STD is a set of programming standards developed for FORTRAN 77
programs. These standards are suggested on the basis of transportability,
efficiency, and maintainability.  It has been found that abiding by these
standards, especially on large systems developed by multiple programmers,
enhances these traits.  The author is presenting these standards solely as a
suggestion.  I will neither defend nor modify the standards.  It will be noted
that most of the programs in this package abide to a large degree with these
standards but, since many of the tools are not intended to be transportable,
the transportability issue was less severe for this package.

LIFECYC.TXT is a document describing the full life cycle of a software
development project.  This document was developed jointly by the submitter and
Kristine Tischer, formerly of Computer Sciences Corporation.  The descriptions
in this document follow particular methodologies which are the subject of
constant debate in the software industry.  It is the opinion of the submitter
that the exact methodology used is less important than the existence of a
disciplined approach with adequate verification and documentation.  Similarly
to the programming standards, I will not defend nor maintain this document; it
is provided on the belief that it may prove useful to people involved in large
scale development efforts.  The methodologies described can be found in detail
in many books and magazine articles (some references are provided -- the
references to government documents are largely relevant to the project for
which the lifecycle analysis was prepared and are not, unfortunately, widely
available).

Files of type '.DOC' are the documentation files for individual tools. 
Files of type '.TXT' are documentation for the FPT package as a whole.

See files INSTALL.TXT and INSTALL.COM for assistance in installing the tools.
