Programs for Programmers

plusFORT Revision History

Version 6.70 September 2010

  • GXCHK can now produce 3 different types of HTML output using its built-in viewer or the system browser.
  • PFFE has been updated to have a modern windows look and feel.
  • Added 'Clear Output Log' button to PFFE.
  • Added 'View Source File' and 'View FIG file' options to PFFE.
  • Added scroll-bars to file-list windows in PFFE.

Version 6.60 June 2010

  • GXCHK now defaults to standard ASCII characters for box-drawing.
  • Fixed a bug in SPAG coverage analysis option that caused probes to be inserted in WHERE constructs.
  • In the Windows version, output files whose name is derived from input filenames now preserve case where possible.
  • Fixed a bug in SPAG which could cause the SAVE attribute to be wrongly specified when rewriting declarations in Fortran 90 style.
  • Fixed a bug in SPAG which could cause SAVE statements to be retained for clutter variables when rewriting declarations on Fortran 77 style.
  • An internal indexing scheme has been revised to allow SPAG to process subprograms with up to 40959 statements (up from 8191).
  • Fixed GXCHK bug with very large argument lists.
  • Fixed AUTOMAKE bug which could cause incorrect order of compilation when MODULE statement is in an INCLUDE file.


Version 6.55 September 2003 

Lines in AUTOMAKE.FIG can be continued by placing the character "^" at the end of all except the last line.

e.g. link=slink %ob ^
-file:%ex ^
-stack:0x600000

Fixed AUTOMAKE bug involving spaces in include file names.
Fixed SPAG bug where TYPE is used as synonym for PRINT fixed.
Fixed SPAG bug when item 4 was set to 0, USE statements were lost
Fixed CVRANAL produced "File not found" when run from PFFE
Fixed SPAG bug with EQUIVALENCE when item 2 is -1

Version 6.54 March 2003

Fixed bug which replaced blank lines in F90 output with "!".
Minor changes to EXEC SQL parser in SPAG (config option 59).

Version 6.53 January 2003

Fixes for bugs in "preserve layout of declarations" mode.
Improved treatment of control construct (DO, SELECT CASE) names.

Version 6.52 December 2002

Context sensitive links to the plusFORT manual have been added to the plusFORT front-end (PFFE), and several bugs in PFFE were fixed.

A number of size limits have been significantly increased in SPAG and GXCHK.

New SPAG configuration items 134-136 allow greater control of static analysis output.

In AUTOMAKE, where %LL or %LI produces a filename with spaces it is now automatically enclosed in quotes.

Version 6.50 March 2002

SPAG now supports most of Fortran 90/95, including all code generated when SPAG converts existing Fortran 77 programs to Fortran 90. The main
exception is that SPAG does not yet recognise declarations relating to overloaded operators and procedures. In addition SPAG supports
dynamic and coverage analysis only for Fortran 77 code.

In general, if a particular F90 feature is not supported, the output code generated by SPAG will be manifestly wrong and non-compilable.
In some cases, SPAG may also generate spurious information or warning messages. For example, the F77 style argument checking in SPAG may throw
up spurious errors when calling generics, or when passing derived type arguments. For this reason, we recommend that, when processing F90 code,
argument type checking should be suppressed by setting the new configuration switch 133 to 0.

e.g.	spag *.f90 133=0

The treatment of modules has been substantially improved in version 6.50. SPAG now obtains information about the contents of modules by reading the symbol tables (.smb files) for the module.

In order to find module symbol tables, SPAG maintains a ASCII text file called PFMODULE.KEY. This file contains records which specify the location of each module USEd by source code in the current directory.

For example

TRAJECTORY : traject.smb

specifies that the symbol table for module TRAJECTORY is in the file "traject.smb".

As SPAG processes source code, it automatically inserts records in PFMODULE.KEY for every module it encounters. When SPAG encounters a USE
statement, it consults this file to find the module data. If the module has not been processed yet, there will be no record for it in PFMODULE.KEY, and SPAG will report an error. However once the entire source has been processed once, PFMODULE.KEY will contain all necessary records, and the second pass should be error free.

An exception to this rule is that SPAG will not automatically find modules from a different directory. In this case it is recommended that the locations of modules be inserted in PFMODULE.KEY using a text editor.

e.g.

GPS_COORDS : gps\coordmod.smb

Most Fortran 90 users will be familiar with the requirement that modules be compiled before code that USEs them. A similar requirement applies to SPAG. For example, if a module is changed, it is important that the file containing the source for the module be re-processed before any  files that USE the module.

The plusFORT AUTOMAKE tool provides a solution to this problem both for compilers and for SPAG. A new batch/shell file called Autospag uses AUTOMAKE to run SPAG in such a way that the processing order requirements are satisfied. A small configuration file called AUTOSPAG.FIG should be placed in the source directory. A typical case, in which all .F90 files are to be processed, and the symbol table files have the .SMB extension would be covered by the following configuration file:

COMPILE=@spag %fi
OBJEXT=SMB
FILES=*.f90
NOQUITONERROR

A file called "f90func.txt" containing a list of all Fortran 90 INTRINSIC functions, has been included in the installation directory.  "f90func.txt" is now the default for item 210 of the SPAG configuration data.

The default header comment ID (item 220 of the SPAG configuration data) is now

"!*=="

instead of

"**=="

The default interface header and trailer comment IDs (items 221 and 222 of the SPAG configuration data) are now

"!*--" and "!*++"

instead of

"**--" and "**++"


If no directories are specified on items 230 and 232 of the SPAG configuration data, the restructured source and symbol table files are written in the same directory as the input source code. Previously the default was the current directory.

The maximum input record length (item 51 of the SPAG configuration data)may now be up to 512 characters (previously 136).

Version 6.20 June 2000

The support for modules that was included in version 6.20 beta has been upgraded and replaced in version 6.50. Like version 6.20, SPAG 6.50 uses a file called PFMODULE.KEY. However the usage is slightly different, and it is recommended that any PFMODULE.KEY files created by the earlier version be deleted.

The treatment of configuration option 141 (F77/F90 output source form)has been corrected.


Version 6.11 Feb 2000


Support for RECURSIVE FUNCTION and RESULT clause added.

A problem in converting DOUBLE PRECISION FUNCTION to F90 has been fixed.

The CALL nesting limit in GXCHK has been increased to 200.

A problem in converting double precision intrinsics to F90 has been fixed.

Some internal limits in AUTOMAKE have been increased.

The %LL placeholder can be inserted in the link command in AUTOMAKE. This expands to the name of a file (generated automatically by AUTOMAKE) which contains a list of libraries specified using LIBRARY=. This is an alternative to the %LI directive introduced and version 6.05, suitable for the case where the number of libraries is large.

Version 6.09 Sept 1999

Several bugs in the conversion of declarations to Fortran 90 syntax have been fixed.

The treatment of Cray pointers has been improved.

SPAG now deals with more Fortran 90 features, including recursive subroutines and functions, the WHERE statement and the WHERE construct. There has also been substantial internal reorganization to prepare for the treatment of MODULES and internal subprograms.

More consistency checks have been added to detect conflicting settings in SPAG.FIG.

SPAG now has many internal self-validation checks to confirm correct and consistent operation.

Version 6.05 May 1998

SPAG now leaves unrecognised statements unchanged. Previously, they were reformatted, sometimes with unfortunate results.

Setting configuration item 138>0 causes SPAG to ignore #include statements, instead of converting them to standard INCLUDE statements.

AUTOMAKE has been extended to deal with libraries. If lines of the form:

LIBRARY=ABC.LIB
LIBRARY=XYZ.VBG
LIBRARY=dceqw

are added to AUTOMAKE.FIG, AUTOMAKE checks whether any of the specified library files have been updated since the last link, and if so, ensures
that the program is relinked.

In addition, the %LI placeholder can be inserted in the link command. Before the command is executed, this is replaced by the list of libraries, with names separated by spaces.

An AUTOMAKE configuration file editor has been included in the NT version of plusFORT. This is a Windows based utility which is started automatically if there is no AUTOMAKE.FIG in the current directory. It can also be started from the command line by typing a command of the form:
AMEDIT myprog.fig


A new install program has been developed for the NT version of plusFORT.

The version of QSPLIT included with the NT version of plusFORT now supports long file names.

PFFE has been enhanced with a more task-oriented user interface. When it is started, PFFE asks you to select the type of run you would like, and, for more complex tasks, leads you through the required steps.

Version 6.02 November 1997

The release version of the plusFORT front-end, PFFE, for Windows 95/NT is now included. Note that the new version of PFFE cannot be used with earlier plusFORT releases.

Bug fixes

(1) A problem involving block IF followed immediately by 2 ENDIFs fixed.

(2) Interaction between variable renaming and declaration rewriting caused variables to be declared more than once.

(3) All programs can now deal with command lines up to 1024 characters long (subject to support by the operating system)

(4) AUTOMAKE now recognises lines of the form

USE A ; USE B

(5) A bug in Dynamic Analysis which was introduced at Version 6 has been fixed. The bug caused arrays output using implied DO to be checked with invalid array subscripts.

Version 6.0 August 1997

Version 6 of plusFORT is fully described in Revision D of the plusFORT Reference Manual. Please call Polyhedron Software if you do not have a copy.

The main new features in Version 6 are summarised below:

  • Automatic translation of COMMON blocks and INCLUDE files to Fortran 90 modules (see item 4 of the SPAG configuration file)
  • Automatic creation and use of Fortran 90 interface modules for all subprograms.
  • Automatic embedding of comments describing every subprogram's interface, including calls in and out, arguments, COMMON variables
    etc.
  • Translation between VAX structures and Fortran 90 derived types.
  • The Windows 95/NT version has a new interactive configuration editor and front-end. Just type "PFFE" at a Windows 95 or NT
    command prompt to activate this program. Usage is self-explanatory.
  • Year 2000 checks using static and dynamic analysis.
  • Many new formatting and Fortran 90 translation options.

   for further information