FLECS90(l) flecs 90 FLECS90(l)
flecs 90 flecs 90
20 Dec 1994
NAME
flecs90 - FLECS to Fortran 90 translator
SYNOPSIS
flecs90 [ -f ] [ -c ] [ -n ] [ -s ] [ -l ] file...
DESCRIPTION
The flecs90 processor is designed to translate code written in the
FLECS extended control language for Fortran 77 into fixed form Fortran
90 code. Because Fortran 90 contains all of the extended capabilities
of FLECS, flecs90 is designed to provide a one time conversion from
FLECS code to Fortran 90 code.
WARNINGS
Note that the options -s and -l can cause serious problems in the
translated Fortran 90. See the TRANSLATION section before deciding to
use these options.
Control can no longer be transferred from inside a FLECS procedure to
a statement outside the procedure using a GOTO statement.
OPTIONS
-f Process FLECS file but do not create a Fortran file.
-c Echo comments in FLECS file to Fortran file.
-n Include line number of FLECS code in columns 74 to 78 of Fortran
file.
-s Translate FLECS SELECT and appropriate CASE statements into
Fortran 90 SELECT CASE rather than BLOCK-IF statements.
-l Do not include a label in Fortran 90 translation naming DO loops
generated by FLECS repetition keywords.
file ...
List of FLECS source files to be processed.
TRANSLATION
alternation
FLECS keywords denoting alternation structures IF, UNLESS, WHEN ...
ELSE, CONDITIONAL, SELECT, and CASE are translated into Fortran 90
BLOCK-IF statements.
If the -s option is used, FLECS SELECT and appropriate CASE statements
are translated into Fortran 90 SELECT CASE rather than BLOCK-IF
statements. This causes errors compiling the Fortran 90 code if the
restrictions on the SELECT CASE statement are not met. Specifically,
the index must be an expression of type integer, logical or character,
- 1 - Formatted: November 1, 2025
FLECS90(l) flecs 90 FLECS90(l)
flecs 90 flecs 90
20 Dec 1994
and the case selectors must be evaluated at compile time.
repetition
FLECS keywords denoting repetition structures DO, FOR, WHILE, UNTIL,
REPEAT WHILE, REPEAT UNTIL, and LOOP are translated into Fortran 90 DO
statements. The Fortran 90 DO loops are named FLECS_LOOP_i where i is
the number of FLECS repetition structures translated.
FLECS keywords CYCLE and EXIT which affect the execution of FLECS
loops are translated into Fortran 90 CYCLE and EXIT statements.
If the -l option is used, the Fortran 90 DO loops generated by FLECS
repetition structures are not named. Since the DO loops are no longer
named, the FLECS keywords CYCLE and EXIT will affect the inner most DO
loop in the Fortran 90 code, including those not generated by FLECS
repetition structures. This can change the behavior of programs. For
example, in FLECS code which contained an EXIT statements within a
Fortran 77 DOp within a FLECS LOOP structure, the EXIT statement would
terminate the Fortran 77 DO loop not the FLECS LOOP structure.
procedure
FLECS procedures, denoted by the TO keyword, are translated into
Fortran 90 internal subroutines. The FLECS keyword REVERT which causes
execution within a FLECS procedure to transfer immediately out of the
procedure is translated into a Fortran 90 RETURN statement.
Because each FLECS procedure becomes a separate Fortran 90 subroutine,
control can not be transferred from inside a FLECS procedure to
outside the procedure via a GOTO or other similar statement.
ERRORS
Flecs90 errors are identified by the file name and line number and an
error type. There are three different types of errors. The first type,
denoted by (I) cause a line of FLECS code to be ignored. The second
type, denoted by (T), cause the current FLECS structure to be
terminated. With the final error type, denoted by (E), lines are
echoed to the Fortran file.
- 2 - Formatted: November 1, 2025