A statement function is a user-defined function which is defined and used within a program unit. It appears after the type declarations but before the executable statements, and looks superficially like a simple assignment statement.

fname(dummy,_{1}dummy, …,_{2}dummy) =_{n}expression

A statement function may contain any number of dummy arguments, all of which
must appear in the *expression* on the right hand side of the
statement. The *expression* also may contain constants, variables
and array elements defined elsewhere in the program unit in which the
statement function appears. Intrinsic functions, external functions and
previously defined statement functions also may appear in the definition
of a statement function.

Statement functions may return any of the six FORTRAN 77 data types.
*fname* is a symbolic name and must be unique within the
program unit defining it. It conforms to normal FORTRAN 77 implicit
typing. To override this, simply declare the name *fname* in the type
declarations. If the statement function returns a `CHARACTER`

value, then the length must be declared in the statement function
definition.

The dummy arguments *dummy _{1}*,

Like an intrinsic or external function, a statement function is invoked by its name and argument list.

REAL C,F,TEMP C(F) = 5.0*(F - 32.0)/9.0 WRITE(*,*)'Enter the temperature in Fahrenheit' READ(*,*)TEMP WRITE(*,*)'Fahrenheit = ',TEMP,' and Celsius = ',C(TEMP)

This statement function converts Fahrenheit to Celsius. Note that the dummy
argument `F`

appears in the right hand side of the statement
`5.0*(F - 32.0)/9.0`

. The function is invoked by
`C(TEMP)`

in the second `WRITE`

statement.

In this program fragment, the statement function is invoked in an
assignment statement with an array element as its actual argument. Notice
also that the statement function uses the value of the constant `C`

which is **not** an argument of the function.

DOUBLE PRECISION C,E,M INTEGER I,NMAX PARAMETER(C=299792458D0,NMAX=100) DOUBLE PRECISION ENERGY(NMAX),MASS(NMAX) E(M) = M*C**2 … DO 10, I = 1,NMAX ENERGY(I) = E(MASS(I)) 10 CONTINUE

DOUBLE PRECISION F,FORCE,G,M1,M2,R PARAMETER(G=6.67428D-11) F(M1,M2,R) = G*M1*M2/R**2 … FORCE = F(MASS,MASS,RADIUS)

This definition of a statement function calculating the attractive force between two bodies involves three arguments. Although the dummy arguments must be unique, the actual arguments do not have the same restriction. In this example, the force between two identical bodies (same mass) is determined.