SimCon - Fortran Analysis, Engineering & Migration About UsDownloadsPricing Home | SimCom logo
$keywords!
FPT - Updating Installations
Consultancy
Migration & Software QA
 
WinFPT & FPT
WinFPT
FPT Summary
 
Error Correction
Hosts
Metrics
Migration
Optimization/Optimisation
QA
Reports
Security
Standardisation  
Updates & Release notes
$keywords!
WinFPT & FPT - Special Issues
Checking Expressions
Continuation Lines
Datapool
File Handling
File Names
Hex Numbers
Program Control
Record/Replay
Tab Format
Tracing Execution
 
Gould-SEL
VMS & Unix
 
Associated Companies
IQS Solutions
 
 
Updating Installations

If you have a current maintenance contract please download new versions of FPT to extend and update your installations.

  • If you have a workstation licence, you may use FPT on any supported host.

  • If you have a PC licence, you may use the Intel Linux, Win32 and DOS releases.

  • The documentation may be downloaded without restriction.



Download the New Versions



FPT 3.5-a to FPT 3.5-i
  • The commands MAKE TEMPLATES FOR ALL ROUTINES and MAKE TEMPLATES FOR MISSING ROUTINES are supported in FPT 3.5-i and later. These commands automatically generate template (FTM) files.

  • Analysis of expressions was revised in FPT 3.5-h. All of the checks associated with data types and type coercions have been collected together and are controlled by a single command: in WinFPT the drop-down menu Checks | Expressions, and in command-line FPT the command CHECK EXPRESSIONS.

  • FPT versions 3.5-d and later support the facility to expand internal sub-programs in-line.

  • Handling of some intrinsic functions was revised in FPT version 3.5-d. Some inconsistencies were corrected in the handling of data sizes.

  • FPT versions 3.5-a and later include a facility to re-program ENCODE and DECODE statements as internal READ and WRITE.



FPT 3.4-l to FPT 3.4-w
  • The run-time trace code has been revised to insert a sequence number in each trace statement. These numbers may be used to identify the statements in the code which have been executed.

  • Several minor errors have been corrected in the formatting of free-format code.



FPT 3.4-h to FPT 3.4-k
  • FPT version 3.4-h, and later versions support coverage analysis. Code is inserted to measure the number of times each statement is executed at run-time. The analysis may be used to identify hot spots for optimization and to assess test coverage.

    Versions 3.4-i and 3.4-j support coverage analysis within the logical expressions in IF-THEN-ELSE constructs. Version 3.4-k corrects an error in flow analysis where executable statements occur in include files.



FPT 3.4-a to FPT 3.4-e
  • The command %edit symbols names systematically edits the names of user-defined symbols throughout a program. It may be used, for example, to replace the : and $ characters used in variable names in Gould-SEL (Encore) and Compaq VMS Fortran respectively.

  • The commands %change real size, %change integer size etc. have been revised to deal with the case where a system routine with fixed sizes for arguments or for a function return is called from the code to be modified.

  • The command %check program flow has been implemented. This command shows statements which cannot be reached during program execution.



FPT 3.3-v - Changes since FPT 3.3-u
  • Handling and checking of statement labels has been revised.

  • An error has been corrected in handling embedded format expressions containing string concatenation, //, operators.

  • Handling of the situation where a function is declared both in a template (FTM) file and the program code has been revised.



FPT 3.3-u
  • FPT 3.3-u corrects an error in handling long file names.

    In FPT versions 3.3-p to 3.3-t, output file names were required to be unique in the first 80 characters. If they were not, FPT would hang indefinitely, and would not generate output. This has now been corrected.

    In all other respects, FPT 3.3-u is identical to FPT 3.3-t.



FPT 3.3-t - Changes since FPT 3.3-s

  • Automatic correction of inconsistent arguments has been extended:

    All cases where the inconsistency is only in INTENT may be corrected automatically - for example, where an expression is passed as an argument to a subroutine which will write to it.

    Character arguments which are inconsistent in length may be corrected. Correction is controlled by the command:

    % CORRECT INCONSISTENT STRING ARGUMENTS

  • The INCLUDE file fpt_missing_string_argument.fpi is now generated only if it is required. In earlier versions it was generated whenever the command %CORRECT MISSING ARGUMENTS was made.

  • An error has been corrected in the argument check which could cause a spurious inconsistent argument report when the formal and actual arguments were both of type BYTE.

  • Handling of string delimiters and of strings which extend across continuation lines has been revised.

    Some compilers assume that strings which extend across continuation lines are padded by spaces to column 72 (or 132 in extended source). Some count the number of trailing space characters on the line. In Fortran 90 free format the issue is handled by the & continuation characters. In fixed or tab format, FPT now attempts to generate code which is independent of the compiler behaviour. Strings which extend across continuations are terminated and linked by string concatenation, //, operators, or in FORMAT statements by commas, as appropriate. DATA statements and STOP statements cannot be handled in this way, and the unterminated string continuations are then marked by warnings. A new command,

    % [DO NOT] COUNT TRAILING SPACES IN STRINGS

    has been added to copy the behaviour of the target compiler.

    An error has been corrected in handling strings in FORMAT statements which end with multiple quotation characters.

  • FPT now accepts data statements in which separate DATA specifications are not separated by commas. For example:

          DATA X /3.0/ Y /4.0/

  • An error has been corrected in handling the G format descriptor. In FPT versions 3.3-p to 3.3-s, a spurious comma was inserted before the exponent specification in formats of the form:

          FORMAT (G16.3E5)

  • The command %COMPLETE REAL NUMBERS changes numbers written, for example, .1 or 17. to 0.1 and 17.0 respectively. It now also converts exponentiated numbers, for example, 3.D8 to 3.0D8.



FPT 3.3-s - Changes since FPT 3.3-i

New Features and Commands - Fortran Language

  • Fortran 90 data type and attribute declarations are now fully accepted, for example:

          INTEGER,PARAMETER :: P1=1

  • FPT now formats the tokens within FORMAT strings, and within embedded format specifications within READ and WRITE statements. Embedded expressions in formats delimited by < > characters are accepted, for example:

          WRITE (4,'(/,I< ilength >)') n

  • Embedded expressions in formats, delimited by < > characters, may be converted automatically to standard Fortran 77. The code above, for example, is converted to:

          CHARACTER*(10) embedded_expressions (1:4)
              :
          WRITE ( embedded_expressions (1),'(1I10)') ilength
          WRITE (4,'(/,I'// embedded_expressions (1)//')') n

    (This method was published in comp.lang.fortran by Tim Prince).

  • VMS external parameters (Psychic parameters) are supported on all hosts. For example:

          EXTERNAL FOR$IOS_ENDDURREA
            :
          IF (ISTAT .EQ. %LOC(FOR$IOS_ENDDURREA)) THEN

    Commands are supported to convert these automatically to standard parameters.

  • The Gould-SEL (Encore) DATAPOOL construct is fully supported.

    DATAPOOL has been supported by FPT for several years, but in earlier versions the DATAPOOL was automatically converted to a standard Fortran 77 COMMON block. FPT version 3.3-s allows the DATAPOOL statements to remain in Gould-SEL format.

  • Gould-SEL logical file codes are supported. These are short strings used instead of logical unit numbers, for example:

          WRITE('DT1',400)X,Y,H,P,Q,R

  • The Gould-SEL run-time EXTENDED BASE construct is supported, for example:

          EXTENDED BASE /VPX/*

  • Right-justified Hollerith assignments are supported, for example:

          TFC=4R TT6

  • Optional comment delimiters X and Y are accepted and are converted to standard comment delimiters.

  • Directives introduced by '%' characters in column 1 are accepted, but are treated as comments.

  • The PAGE keyword is accepted. PAGE is used to control list file format in Gould-SEL (Encore) Fortran. A command is provided to comment-out the PAGE statements.

  • HP3000 partial word designators and sub-string designators are accepted. Partial word designators are written, for example:

          ISTAT[12:4]=IE[8:4]

    where ISTAT and IE are integers, and 4 bits starting at bit 8 are copied from IE and are written into 4 bits in ISTAT starting at bit 12.

    Sub-string designators are written, for example:

          OUTSTR[22:32]=VNAME[1,32]

    where, in each bracketted expression, the first number is the character position and the second number is the length of the sub-string.

New Features and Commands - Checks and Analyses

  • The total size of a COMMON block is now tracked through each sub-program in which it occurs. FPT now issues a warning if the size of a named COMMON block varies between sub-programs.

New Features and Commands - Code Modification

  • The command: INSERT INCLUDE FILES INLINE has been added. This is particularly useful in preparing code for the HP-UX Fortran 90 compiler, which may generate a bad symbol table for the interactive debugger when INCLUDE files are present.

  • Directives may be inserted in template (FTM) files which specify specific default arguments which are to be inserted by the CORRECT MISSING ARGUMENTS command.

  • The command ADD PARENTHESES TO FUNCTION DECLARATIONS supplies empty parentheses for function declarations in which they have been omitted. The parentheses are required in the Fortran 90 standard and by some compilers, but are optional on many systems.

  • The command REMOVE LINE COMMENTS AFTER END deletes line comments between an END statement and the end of a file. Some compilers see text following an END statement as the start of a new sub-program, even though no declaration or executable statements are present.

  • The command REVERSE OUTPUT FILE NAMES causes output file names to be written with the extension first, followed by the base name. Thus, for example, the input name ST_SP1.F is reversed to read F.ST_SP1. This is the format required by the Gould-SEL (Encore) MPX operating system.

  • There are new commands to edit the file names written in INCLUDE statements. The names of the files written to the output directories are not affected. It is then possible to use FPT under one operating system to prepare code for execution on another. We have used this command in-house to prepare code for compilation under MPX, while running under Linux and Win32.

Changes to Existing Commands and Features - Fortran Language

  • The handlers for strings and format statements which extend across multiple lines have been revised. If a string is written across multiple continuation lines in Fortran 77 fixed or tab format, the interpretation of the string is dependent on the compiler and on compilation switches. For example, with fixed format 72 column input, the interpretation depends whether the compiler counts trailing spaces or assumes that there are 72 characters in the line, and on the interpretation of tab characters in the line. FPT now attempts to generate compiler-independent code. (Note that the problem does not arise in Fortran 90 free format. A token may be broken and resumed by the use of '&' continuation characters).

  • FPT uses different formatting rules and commands for header comments at the start of a sub-program and for comments within the code. In earlier versions of FPT, the header contained all comments written before the PROGRAM, SUBROUTINE, FUNCTION or BLOCK DATA statement, and all comments written between this statement and the first declaration. OPTIONS and OPTION statements were also permitted within the header. In FPT 3.3-s, the header may also contain SAVE and IMPLICIT statements, and the rules for formatting the code body are not applied until the first declaration statement is encountered.

Changes to Existing Commands - Code Modification

  • The commands CHANGE REAL SIZE and CHANGE COMPLEX SIZE change the declaration statements for variables. They now also change the way in which literal numbers are written. Thus, for example:

          PHID = 53.2

    is converted by the command

    CHANGE REAL SIZE TO: 8    to

          PHID = 53.2D0

    This is particularly useful in preparing code for the HP-UX Fortran 90 compiler where real literal numbers default to single precision even though they are used in double precision arithmetic.

  • The commands which change data sizes, CHANGE INTEGER SIZE etc., no longer change the sizes of arguments specified in template (FTM) files.

  • The CORRECT ARGUMENTS command now has an option to correct the lengths of string arguments when the length of the actual argument differs from the length of the formal argument. Most compilers automatically pad or truncate a string when there is a length mis-match. Some, in particular the Absoft compilers, make no correction and data corruption may occur.

Bug Fixes and Error Corrections - Fortran Language

  • Syntax restrictions on OPTION and OPTIONS statements have been relaxed. There are no universal conventions for the syntax of OPTIONS statements, and some of the more unusual statements could generate spurious errors.

  • Fortran 90 declaration statements with multiple attributes were formatted poorly when COLUMN FORMAT DECLARATIONS was specified. This has been corrected.

Bug Fixes and Error Corrections - Checks and Analyses

  • The command CHECK NAMES failed to report Fortran PARAMETERs of type CHARACTER with different values in different sub-programs. In some circumstances FPT also failed to report names used for variables in COMMON on one sub-program and for local variables in another. Both errors have been corrected.

  • In some contexts, the usage check failed to recognise that the members of NAMELIST sets could be read or written to in namelist-directed I/O statements. This has been corrected.

  • The usage check failed to recognise that a variable could be read or written when its address was passed into a sub-program as, for example, LOC(X) or %LOC(X). This has been corrected.

Bug Fixes and Error Corrections - Code Modification

  • The command MAXIMUM BASE FILE NAME LENGTH could generate incorrect file names if the entire output file name length became very much shorter than the original length. This is corrected in FPT 3.3-s.

  • FPT correctly recognises internal WRITE statements which write into character variables, for example:

          WRITE(WORK_STRING,400) I

    However, some code modification commands were confused when the character variable was labelled by a UNIT= specifier, for example:

          WRITE(UNIT=WORK_STRING,400) I

    This is corrected in FPT 3.3-s.

  • The command CORRECT USE OF INTEGER FOR LOGICAL can convert expressions of the form:

          IF (ISTAT) GOTO 999

    where ISTAT is integer, to

          IF (IAND(ISTAT,1) .NE. 0) GOTO 999

    However, the literal value 1 is (by default) INTEGER*4. A problem arises on some systems is ISTAT is INTEGER*2. FPT now matches the sizes of the operands.

  • The command SPECIFY GLOBAL SAVE could, in some circumstances, write the SAVE statement after, rather than before an INCLUDE statement. This has been corrected.

  • The command LOWER CASE SYMBOLS could prevent the recognition of a symbol name in an FPT directive written in the code. In particular, this could affect the interpretation of %INTENT directives. The problem is corrected in FPT 3.3-s.

Bug Fixes and Error Corrections - Interactive Environment

  • Control characters typed to the FPT prompt could cause some of the Unix versions of FPT to hang. This has been corrected.



New features in FPT 3.3-h and FPT 3.3-i

  • New formatting commands allow conversion from fixed or tab format to free format code, and back again.

  • Labelled DO - CONTINUE constructs may now be replaced automatically by DO - ENDDO constructs, optionally removing the statement labels.

  • An error has been corrected which, in some circumstances, prevented the translation of VMS library references where the entire file name is enclosed in parentheses, for example:

          INCLUDE '($FORIOSDEF)'



New features and revisions in FPT 3.3-f

  • Support for the data type DOUBLE COMPLEX (as opposed to COMPLEX*16 or COMPLEX*32 ). Commands are supported to convert between the different type declarations.

  • Support for binary literal values, for example, B'1001' or '1110101'b (Hex and octal literals have always been supported).

  • The Win32 version now supports file and directory names which contain spaces. A side effect is that FPT may now be installed below C:\Program files.



FPT 3.3-d and FPT 3.3-e

  • FPT version 3.3-d has improved error handling for the Gould-SEL (Encore) DATAPOOL construct. Version 3.3-e also supports the Gould-SEL keyword OPTION (as opposed to OPTIONS ) and the less common arguments to the OPEN keyword, for example, MININCREMENT=... and SPOOLFILE=... (There is no advantage in upgrading from version 3.3-c unless you use Gould-SEL Fortran).

  • The command show logical units may be used interactively in version 3.3-e.



Revisions in FPT 3.3-c

  • Internal READ and WRITE statements to non-character arrays are now supported. This conforms to the observed behaviour under VMS and some other systems. They are marked by diagnostics.

  • An exclamation mark in column 6 is now accepted as a continuation character, not as a comment delimiter. A diagnostic is issued!

  • The interpretations of DO without arguments and LEAVE have been revised to conform to the Gould-SEL (Encore) MPX usage.

  • Formatting of comments has been revised to keep Gould-SEL or IBM line numbers in column 73 (The truncate command now removes them completely).

  • The FPT rename command has been revised to allow sub-programs and common blocks to be renamed explicitly without affecting the names of variables.

  • Error handling has been revised. A new command suppress all errors allows all diagnostics to be removed from the output code. This prevents the accumulation of old error messsages when code is cleaned-up in several sessions. The warning that EXIT is a Fortran keyword may now be suppressed independently of the warnings for other keywords.

  • Some spurious error messages have been removed in handling unusual arguments to INQUIRE and in handling sub-program arguments used to declare array bounds.

  • Errors have been corrected in the interactive interface to FPT. These did not result in the generation of incorrect code, but were sometimes frustrating. In particular, the interface to check data types has been revised.


Revisions in FPT 3.3-b

  • % change ISAM file accessess to sub-program calls
    % change I/O to sub-program calls

    have been revised. The code generated is simplified.

  • % correct inconsistent arguments

    has been revised and some (very rare) errors have been corrected.



New commands in FPT V3.3-a include:

  • % show logical units
  • % check data types
  • % check data in common blocks
  • % check data in structures
  • % correct use of integer for logical
  • % change all I/O to sub-program calls
  • % remove %DESCR
  • % change character parameters to CHAR() or to HEX

Diagnostic handling, and many other features have been extensively revised.

Copyright ©1995 to 2008 Software Validation Ltd. All rights reserved.