The `%VAL()' Construct
----------------------
%VAL(ARG)
The `%VAL()' construct specifies that an argument, ARG, is to be
passed by value, instead of by reference or descriptor.
`%VAL()' is restricted to actual arguments in invocations of
external procedures.
Use of `%VAL()' is recommended only for code that is accessing
facilities outside of GNU Fortran, such as operating system or
windowing facilities. It is best to constrain such uses to isolated
portions of a program--portions the deal specifically and exclusively
with low-level, system-dependent facilities. Such portions might well
provide a portable interface for use by the program as a whole, but are
themselves not portable, and should be thoroughly tested each time they
are rebuilt using a new compiler or version of a compiler.
_Implementation Note:_ Currently, `g77' passes all arguments either
by reference or by descriptor.
Thus, use of `%VAL()' tends to be restricted to cases where the
called procedure is written in a language other than Fortran that
supports call-by-value semantics. (C is an example of such a language.)
Note:Procedures (SUBROUTINE and FUNCTION), for detailed
information on how this particular version of `g77' passes arguments to
procedures.