TOOLPACK1 consists of the following categories of software; (1) an integrated collection of tools intended to support the development and maintenance of FORTRAN 77 programs, in particular moderate-sized collections of mathematical software; (2) several user/Toolpack interfaces, one of which is selected for use at any particular installation; (3) three implementations of the tool/system interface, called TIE (Tool Interface to the Environment). The tools are written in FORTRAN 77 and are portable among TIE installations. The source contains symbolic constants as macro names and must be expanded with a suitable macro expander before being compiled and loaded. A portable macro expander is supplied in TOOLPACK1.

The tools may be divided into three functional areas: general, documentation, and FORTRAN processing. One tool, the macro processor, Can de used in any of these categories.

General Tools

ISTDC This data comparison tool is designed mainly for comparing files of numeric values, though it is also capable of comparing files with embedded text.

ISTET Expands tabs. Processes a file to remove tab characters and replace them with spaces.

ISTFI This tool finds all the include files that a file needs.
ISTGP Searches multiple files for occurences of a regular expression.

ISTHP This tool will provide limited help information about tools. The user enters regular expressions which are matched against keyword lists to trigger text output. The information in the help system is based on that provided in the Tool Quick Reference Guide.

ISTMP The macro processor may be used to preprocess a file. The processor provides macro replacement, inclusion, conditional replacement, and processing capabilities for complex file processing. (This tool also has uses in FORTRAN processing and documentation preparation.)

ISTSP This is a TIE-conforming version of the SPLIT utility to split up the concatenated files used on the tape.

ISTSV This is a save/restore utility to save and restore sub- trees of the Portable File Store (PFS).

ISTTD This is a text comparison tool.

ISTVC This is a simple text file version controller. Version files may be set up and recalled either by version number or data/time.

Documentation Generation Tools.

ISTAL This documentation generation aids is a preprocessor that can be used to generate FORTRAN specific information from intermediate files created by other tools. The information that can be generated includes callgraphs, cross reference listings, segment execution frequencies, and symbol information. ISTAL can also strip marked areas of comments from source code for inclusion into documentation. Commands to ISTAL are embedded in the document intermixed with standard text. ISTAL will also produce information formatted for direct display when used interactively.

ISTCB This is a small tool that acts as a comparator; change bar requests are inserted into a document wherever it is found to differ from the original.

ISTRF This is a text formatter similar to the Unix roff facility. The formatter takes in unformatted text and embedded formatting commands and produces formatted output text suitable for printing.

FORTRAN 77 Oriented Tools

ISTAN This is an instrumentor for Fortran 77 that permits the collection of run time execution frequency and tracing information, and assertion violation counts.

ISTCN This tool changes names in a FORTRAN 77 program at the token stream level.

ISTCR This tool changes names in a FORTRAN 77 program at the symbol table level.

ISTDS This is a declaration standardizer that rebuilds the declarative parts of a FORTRAN 77 program unit according to a programmable template.

ISTED This is a line-based editor derived from the Software Tools ED editor. ISTED has additional capabilities to assist the FORTRAN 77 programmer, including a macro facility with all keywords predefined. The editor includes programming capabilities and some intrinsic functions.

ISTFD This is a comparison tool for token streams rather than source text. This allows the tool to ignore layout and (optionally) comments.

ISTFR Converts the format of real, double precision, and complex constants to a standard form.

ISTGI This tool will change all intrinsic function references within FORTRAN 77 code to their generic forms (where this is legal or possible).

ISTIN Inserts the contents of include files in to a file marking the bounds with source embedded directives.

ISTLS This tool changes long FORTRAN names to the ANSI standard of six characters. When a name longer than six characters is encountered, the tool prompts the user for a replacement. This mapping is recorded in a file so that any further occurences of that long name can be replaced automatically.

ISTLX This is a low-level tool that scans FORTRAN 77 source text and produces a token stream and separate comment file. The token stream does not include information about layout but provides identification of keywords and string/numeric values within the original source.

ISTME Manipulates FORTRAN expressions to reduce the depth of the intermediate value stack.

ISTMF This is a differencing program. It takes as input two FORTRAN programs--one in source form, the other in token stream form and produces a merged output source. The differences are markedwith comments.

ISTMP The macro processor may be used to process Fortran source text. The 'eval' expression evaluation facility of ISTMP includes the FORTRAN intrinsic functions in addition to arithmetic facilities. As ISTMP is loaded with the host libraries the intrinsic functions will be the same as those that the processed program will use; this can be useful in the expansion of fixed constants within portable tools. (This tool also has uses in general macro expansion and documentation preparation).

ISTPF This is a portability verifier for FORTRAN 77 based on the FORTRAN 66 tool PFORT.

ISTPL This is a FORTRAN 77 formatter or "pretty printer." The options for this tool may be set or changed using the separate menu-driven polish options editor ISTPO.

ISTPO This is the polish options editor (see ISTPL).

ISTPP Ensures the consistency of PARAMETER statements over FORTRAN program units.

ISTPT This is an automatic precision converter for Fortran 77. It can convert between REAL and DOUBLE PRECISION changing intrinsics, constants, formats, and declarations.

ISTSA This is a semantic analyzer which checks conformance of code to the FORTRAN 77 standard.

ISTST This tool takes as input a Fortran program, analyzes the flow of control, and rebuilds the program in a structured form.

ISTUN Reverses the effect of ISTIN. Removes included files which are marked by source embedded directives with include statements.

In order to run the TOOLPACK tools, an implementation of TIE must be running on the host computer system. The three implementations of TIE are FORTRAN 77, C, and a version for VAX/VMS in PASCAL. The FORTRAN 77 implementation contains macro constants that must be specified for each host machine. In addition, several host-dependent routines must be supplied by the installer and various host-sensitive routines must be checked. Installation guides for TIE and the tools are included with the documentation.
One of the user/Toolpack interfaces is a collection of Unix shell scripts. The other two are written in FORTRAN and conform to TIE.

Running time varies with problem size. NESC executed the supplied test command procedures in an interactive session using a small input FORTRAN program of about 50 lines in approximately 60 seconds on a DEC VAX6220 running under VMS 5.1. The three tutorial examples described in the Introductory Guide require about 35 seconds.

Installation of TIE on the host computer is required prior to implementation of TOOLPACK1. Guides for TIECODE, machine-specific versions of TIE, and for installing the tools are provided on the transmittal tape in a form formatted for line printer. Unformatted copies are also provided for formatting using the TOOLPACK1 tools ISTRF and the Toolpack Documentation Macros, TDM.DAT. NESC implemented TOOLPACK1 in the DEC VAX virtual memory environment using the Pascal-based TIEVMS system interface.