SimCon logo

SimCon - Fortran Analysis, Engineering & Migration

  FPT Reference ManualDownloadsLicensingHome

FPT - Gould SEL (Encore) Fortran

Gould-SEL Concept and RSX computers dominated real-time simulator and signal processing in the eighties and early nineties. Many are still in use, in aircraft and power plant simulators and in tracking radars.

The codes are valuable. The issues in migrating them to Linux, Unix or Windows include:


DATAPOOL is a COMMON block which can be shared by any process running on the machine. The addresses of the variables are pre-defined. Each subroutine or function declares only the variables it uses, not the entire COMMON block. The MPX operating system contains tools to examine and change DATAPOOL variables at run-time, without the loss of run-time performance which would occur with a debugger.

FPT translates DATAPOOL into standard Fortran. Tools are available to access the DATAPOOL at run-time, and to edit and manipulate the DATAPOOL address database in a Linux, Unix or Windows environment.

Colon Characters in Variable Names

Gould-SEL Fortran allows variable names to contain colon characters, for example: IBUS:FLG or W:SAMP:T. FPT has a language-sensitive editor which can replace the colons. It checks that the conversion does not cause name collisions with variables already present and does not change colon characters in, for example, array declarations and sub-string expressions.

Silent Truncation of Names

Variable names in Gould-SEL Fortran can be of any length. However, the compiler only uses the first 8 characters to identify the variable. The names T_FFT_RE, T_FFT_RES and T_FFT_RESULTS are exactly equivalent. When the code is migrated, the new compiler treats the names as different variables.

FPT identifies that the variables are equivalent, and uses the first spelling encountered for all of them.

Mis-matched Arguments

The Gould-SEL real number format is constructed so that a REAL*4 and REAL*8 at the same address have the same value except for precision. REAL*8 values passed to routines which expect REAL*4 and vice-versa are common. IEEE numbers do not have this characteristic, and serious errors result when the data sizes are different. FPT finds and corrects all occurrences.

Unusual Control Constructs

FPT can convert Gould-SEL constructs such as DO - UNTIL to DO - WHILE, and SELECT CASE to IF-THEN-ELSE. Note that the Gould-SEL SELECT CASE syntax is different from that in standard Fortran 90.

Extended Memory Constructs

FPT removes statements such as EXTENDED BLOCK and EXTENDED DUMMY. Other extended memory constructs are converted to standard form.

Internal Sub-programs

The Gould-SEL syntax for internal sub-programs is different from that of standard Fortran. FPT can expand the internal routines in-line.

Hex Number Formats

Gould-SEL uses formats of the form 4ZFFFF. FPT converts these to standard Fortran 90 format, or to the formats for most other targets.

Division by Zero

Real-time programs should not crash. Halting hardware and man-in-the-loop simulations damages equipment and hurts people. Gould-SEL run-time systems are therefore tolerant of division by zero (It is assumed that the result can be ignored).

FPT can replace all vulnerable divisions by function calls which trap division by zero and discard the result.

Interactive Program Control

Gould-SEL simulations usually have real-time interactive control software. FPT fully automates the creation of an interactive environment for program control, written in standard Fortran.

The WinFPT Tutorial Migration from Gould-SEL to Win32 contains a detailed description of the migration process. The completed code is in the WinFPT distribution.


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