FORTRAN Programming Tools Release III.10 Submitted by Art Ragosta and Laura Jurgeleit 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.