Forcheck, a Fortran analyzer and programming aid

A Fortran analyzer and programming aid

Forcheck is is the oldest and most comprehensive Fortran verifier on the market. It performs a static analysis of Fortran programs or separate Fortran program units. Forcheck detects more anomalies in your program than most compilers do. Because it locates bugs as early in the development phase as possible, it saves you time and helps you to produce more reliable code.

Forcheck is ideally suited to get a fast insight in programs under development, in existing and in legacy programs. It composes optimal documentation of your project with cross-reference tables of each program unit, a survey of the complete program and a call-tree. Forcheck can be used as a software engineering tool in the various stages of the development process and can verify the conformance to each level of the Fortran standard. Beside the full Fortran syntax Forcheck supports many language extensions of all popular compilers.

Forcheck is fully configurable so you can tune the analysis and output to your needs. You can store the global information of the analyzed program units in libraries and reference these libraries in subsequent Forcheck runs to verify the consistency of all references, usage of modules and common-blocks.

Forcheck is very suitable as a cross-platform development tool. It is available on many platforms from PC to supercomputer and supports most Fortran language extensions of all popular compilers on each platform.

Product Descriprion


Forcheck is a static analyzer for programs coded in Fortran. It operates on the Fortran source code of the program. It analyses the individual program units (main program, modules, external procedures, block data's) and verifies the entire program integrity. It produces extensive documentation. Forcheck supports Fortran 66, Fortran 77, Fortran 90, Fortran 95, HPF and many language extensions of the various compilers.

Human Interface

The Windows implementation provides an integrated development environment. In the other implementations the filenames of files to be analyzed and options can be entered by command-line, by question and answer, or by specifying a command-file. The human interface of each implementation is specifically designed to conform to the host operating system. Options can be specified to tune the analysis and output. On-line documentation is supplied.

Program-unit Analysis

During program-unit analysis Forcheck verifies the syntax and the static semantics of the program unit as precisely as can reasonably be done during static analysis. Optionally the syntax can be verified for conformance to the Fortran 77, Fortran 90, or Fortran 95 standard. Obsolescent Fortran 90 or Fortran 95 syntax can be flagged. Forcheck signals unassigned variables, data type conflicts, illegal transfer of control, inconsistent usage of procedures, illegal usage of intrinsic procedures, extensions of common-blocks through equivalences, and many other anomalies.

Program-unit Information

Optionally Forcheck lists the source code and composes cross-reference tables for all syntactic elements: program and procedure entries, named constants, labels, variables, derived types, referenced procedures, common blocks, and external input/output. For all of these items the data types and operation codes (actions performed) are presented. Warnings are given for illegally used, for potential unintentional usage and for unused items, e.g. 'unreferenced', or 'variable, initialized in DATA statement, changed'. Moreover unreferenced modules, common blocks and include files are listed.

Reference Structure

At wish Forcheck composes a hierarchical call-tree of all referenced procedures for all or specified roots. Recursive references are flagged. To keep the output as compact and clearly strucŽtured as possible, needless repetitions of sub-trees are suppressed. Unreferenced procedures with their references are presented in separate trees.

Global Program Analysis

Forcheck verifies the type of all referenced procedures and the argument lists. Besides inspection of the number of arguments and argument data types, Forcheck informs you if an argument is a constant, expression, or occurs more than once in the actual argument list, while a new value is assigned to the dummy argument in the procedure. You are also informed whether an actual array or character datum is shorter than the dummy or if the ranks of noncharacter arrays differ. The consistency of common blocks is verified for data types and length. If the number, data type, data type length, array rank or array size in the various occurrences of a common block differ, you will be informed. When analyzing a complete program Forcheck signals unreferŽenced and unassigned common-block elements and public module variables.

Global Program Information

Optionally Forcheck lists all analyzed program units and procedures with the names of the files in which they are stored and page numbers of the source code listings. Cross-reference tables are constructed for referenced procedures, modules, common blocks, common-block elements, include files and external input/output, with types and operation codes.

Final Report

The analysis is concluded by a summary of all messages presented, and a list with the number of messages given, the number of statements, the number of program units, the number of files, etc.

Library files

All global information, gathered during program-unit analysis, can be stored in (indexed) library files. If a program unit is modified, or a new program unit is constructed, the global information of this modified, or new program unit is replaced in, or added to a library file. The interface of the program unit with the rest of the program will be verified using these library files. When referring to library files, Forcheck keeps track of the versions of the program units. Each time you store the global program-unit information of a specific program unit in a library file its version number is updated. The version number is displayed on the source code listings and the program cross-references. For the program analysis you can specify the library files or program units to be included or referenced.


An utility is supplied to remove program units from the library file, to compress it or to list the program units stored.

Compiler Emulations

Forcheck supports most language extensions of many compilers. By activating a specific configuration file you can instruct Forcheck to emulate the compiler of your choice. This is most useful for host-target program development.

Tuning Forcheck

The destination of Forcheck output and the page-size can be determined by the user during command-line entry. The actual output presented can be specified using command-line options. Forcheck can be tuned to your specific needs by adapting the configuration file used. The syntax extensions and intrinsic procedures you want Forcheck to accept can be specified in this configuration file. The severity level of each syntax message can be adjusted or a message can be suppressed entirely. The way Forcheck numbers lines or statements can be selected.


Forcheck is accompanied by an installation guide and an extensive user's guide. For the PC windows implementation the installation guide and user's guide have been integrated. In the user's guide the operation of Forcheck is explained. All options are documented, examples are presented. Moreover we clarify what Forcheck exactly verifies and what its limitations are. The syntax messages are listed and elucidated. All Fortran extensions that Forcheck accepts are listed. A glossary and index are included. Online help is provided.

Forcheck features
  • Performs a full static analysis of an entire Fortran program or a separate analysis of one or more program units.
  • Detects more anomalies in your program than the compiler. Because it locates bugs as early in the development phase as possible, it saves you time and helps you to produce more reliable code.
  • Is ideally suited to get a fast insight in existing and legacy programs. It composes optimal documentation with a call-tree and cross-reference tables both on the program-unit as on the program level.
  • Can be used as a software engineering tool in the various stages of the development process.
  • Is suitable for small and large projects.
  • Can verify the conformance to the various levels of the Fortran standard. Moreover it bts many language extensions of all popular compilers. FORCHECK is fully configurable so you can tune the analysis and output to your needs.
  • Stores the global information of the analyzed program-units in libraries which can be referenced in subsequent FORCHECK runs to verify the consistency of all references and common-blocks.
  • Is very suitable as a cross-platform development tool.
  • Is available on many platforms from PC to supercomputer. It bts most Fortran syntax extensions of all popular compilers.
  • Provided with an intuitive IDE for Windows.
  • Is sold with full guarantee and bt.
  • Is in use at many sites. Look what users say about FORCHECK !
Supported compilers

The following compilers and most of their extensions are currently directly supported.
  • Absoft Fortran and Absoft Pro Fortran
  • Apollo/Domain Fortran
  • Control Data 4000 Fortran
  • Convex Fortran
  • Cray Fortran
  • Cyber Fortran NOS/VE
  • DEC PDP-11 Fortran
  • Compaq Visual Fortran
  • Digital Research Fortran-77
  • Fujitsu Fortran
  • F2c Fortran 77
  • GNU Fortran
  • HP Fortran for OpenVMS Alpha
  • HP Fortran for Tru64 UNIX Alpha
  • HP Fortran
  • IBM XL Fortran for AIX
  • IBM Professional Fortran
  • IBM VS Fortran V2
  • Intel Visual Fortran
  • Lahey Fortran
  • Lahey/Fujitsu Fortran
  • Microsoft Fortran
  • Microsoft Fortran Powerstation
  • NAGWare Compiler
  • NAS Fortran
  • NDP Fortran
  • Portland Group Fortran
  • Prime Fortran
  • Prospero Fortran
  • RM/Fortran
  • Salford FTN Fortran
  • Silicon Graphics MIPSpro Fortran
  • Sun Fortran
  • Unisys 1100 Fortran 77
  • Watcom FORTRAN 77
If the compiler you use is not in this list you can easily compose a configuration file to enable the data types, Fortran extensions, intrinsic functions, and open/close/inquire keywords you want FORCHECK to accept. We kindly offer help to perform this task.

The above content is Copyright © by Leiden University

home | back | comment | sales

CustomSolutionsPageDate: 19 February 2018
Copyright © 1997 - 2017 Custom Solutions