Version 6.70 September 2010
Version 6.60 June 2010
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 ^
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.
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.
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:
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
The default interface header and trailer comment IDs (items 221 and 222 of the SPAG configuration data) are now
"!*--" and "!*++"
"**--" 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:
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:
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.
(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: