An interprocedural analyser for Fortran 90 and High Performance Fortran programs

IDA home - Download - Input Language - Papers - SHPF

IDA (for `Interprocedural Dependency Analyser') is an interactive tool that provides interprocedural information about Fortran programs, such as:

call graphs:
which show the calling relationships between program units;

traces of variables:
where and how a variable is used throughout the program;

common block partitioning and usage:
how common blocks are partitioned into variables in each program unit, and how those variables are used in that unit and its descendents;

procedure references and argument associations:
the location and actual arguments of every call to a particular procedure.
It is available in the public domain (see Download).

Interprocedural information is invaluable for investigating and `understanding' programs, especially large ones. It is particularly useful when modifying or further developing a code. For example, it is needed when converting a sequential Fortran program into a message-passing or High Performance Fortran program to run on a distributed memory parallel machine or workstation cluster; indeed, that application area was the original motivation for developing the tool.

IDA can analyse partial as well as complete programs, that is, it is not necessary to provide it with the source code for a whole program. That is useful, for example, if the program calls library routines whose source code is not available. Also it does not require the existence of a Fortran main program, so it can be used, for example, to analyse a self-contained collection of library routines.

IDA incorporates the same front-end as SHPF, our public domain High Performance Fortran 2.0 (HPF) compiler. Therefore it accepts the HPF 2.0 language, which includes Fortran 90 and Fortran 77. It accepts Fortran 90 free source form and VAX Fortran tab-formatted input as well as traditional fixed source form. Currently a few Fortran 90 features are not fully supported (see Input Language), though IDA recognises all of Fortran 90 and reports the presence of any unsupported features. IDA also accepts message-passing calls such as those of MPI, PVM and PARMACS (in library form), as these have the form of Fortran subroutine calls. Since IDA accepts HPF and message-passing Fortran it can assist in maintaining and further developing parallel programs as well as creating them.

In designing IDA we opted for speed and simplicity of operation rather than sophistication. It only provides a text command interface, not a graphical one, and it only performs code analysis, not code transformation. However, these limitations are compensated by the fact that it provides useful information quickly and easily. We hope that it should be usable by a beginner straight away, without any significant learning process. For example, to generate the call graph of a program, one simply types:

      ida list-of-Fortran-source-files
then, at IDA's command prompt:
      (ida) call
Furthermore IDA offers help information whenever a mistake is made in using it. It is fast in operation, and the `program database' it generates - which contains all of the information required for interprocedural analysis - is quite compact. Finally, IDA is straightforward to install; installation is simply a matter of compiling two C programs, which can be done with either an ANSI C or a K&R C compiler. Although IDA was developed for Unix systems it should be readily portable to other operating systems, e.g. Windows NT or Windows 95, which only requires the creation of a new `driver' script. (Contact the author if you are interested in this.)

IDA was developed by John Merlin in the Esprit CAMAS project in 1993-4. Feedback of any kind, e.g. suggestions for improvement, bug reports or praise, is always welcome, and should be sent to John Merlin,

IDA home - Download - Input Language - Papers - SHPF

John Merlin (
Last updated Tue May 12 1998.