Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  RATFOR (1)


ratfor77 - ratfor preprocessor for fortran77




ratfor77 [-C] [-l n] [-o output] [input]


Ratfor77 reads the ratfor source code in the file input (or standard input if input is not given) and converts it Fortran77 source code.

The following options are available:
-C If the -C options is specified, ratfor77 will keep the comments from the ratfor source in the Fortran77 output (useful for compiler directives).
-l n The user sets the starting label to n.
-o output
  Specify output file, otherwise it is the standard output.

Ratfor has the following syntax:

prog: stat
prog stat

stat: if (...) stat
if (...) stat else stat
while (...) stat
repeat stat
repeat stat until (...)
for (...;...;...) stat
do ... stat
switch (intexpr) { case val[,val]: stmt ... default: stmt }
break n
next n
return (...)
digits stat
{ prog } or [ prog ] or $( prog $)
anything unrecognizable

where stat is any Fortran or Ratfor statement, and intexpr is an expression that resolves into an integer value. A statement is terminated by an end-of-line or a semicolon. The following translations are also performed.
        <       .lt.            <=      .le.
        ==      .eq.
        !=      .ne.            ^=      .ne.            ~=      .ne.
        >=      .ge.            >       .gt.
        |       .or.            &       .and.
        !       .not.           ^       .not.           ~       .not.

Integer constants in bases other that decimal may be specified as n%dddd... where n is a decimal number indicating the base and dddd... are digits in that base. For bases > 10, letters are used for digits above 9. Examples: 8%77, 16%2ff, 2%0010011. The number is converted the equivalent decimal value using multiplication; this may cause sign problems if the number has too many digits.

String literals ("..." or ’...’) can be continued across line boundaries by ending the line to be continued with an underline. The underline is not included as part of the literal. Leading blanks and tabs on the next line are ignored; this facilitates consistent indentation.

include file

will include the named file in the input.

define (name,value) or
define name value

defines name as a symbolic parameter with the indicated value. Names of symbolic parameters may contain letters, digits, periods, and underline character but must begin with a letter (e.g. B.FLAG). Upper case is not equivalent to lower case in parameter names.

string name "character string" or
string name(size) "character string"

defines name to be an integer array long enough to accomodate the ascii codes for the given character string, one per word. The last word of name is initialized to the symbolic parameter EOS, and indicates the end of string.


This is a C version of ratfor, derived from a UofA ratfor in ratfor. It was originally released to the net sometime ago, and It is re-released for the benefit of those sites who only get mod->comp.sources.

It now includes minor changes to produce F77 code as well.

This code *is* PD. You (public) have all the rights to the code. [But this also means you (singular) do not have any *extra* rights to the code, hence it is impossible for you to restrict the use and distribution of this code in any way.]

I would, as usual, appreciate hearing about bug fixes and improvements.


        Usenet: [decvax|ihnp4]!utzoo!yetti!oz ||


        Bitnet: oz@[yusol|yuyetti].BITNET

        Phonet: [416] 736-5257 x 3976


This is not a bug but a design error in both AT&T ratfor and this public domain ratfor:

The problem is with the switch statment. It switches on an integer valued expression. It should switch on an integer variable.

The reason is that

        "implicit undefined"

        "implicit null"

is unusable because the switch is done on a new variable that is not declared or declarable by the programmer who cannot guess its name.

Please let me know if you fix this.

Search for    or go to Top of page |  Section 1 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.