Copyright (C) 2000-2012 |
GNU Info (g77-300.info)%DESCR()The `%DESCR()' Construct ------------------------ %DESCR(ARG) The `%DESCR()' construct specifies that an argument, ARG, is to be passed by descriptor, instead of by value or reference. `%DESCR()' is restricted to actual arguments in invocations of external procedures. Use of `%DESCR()' 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. Do not depend on `%DESCR()' supplying a pointer and/or a length passed by value to the procedure being invoked. While that is a likely implementation choice, other implementation choices are available that preserve the pass-by-reference semantics without passing a pointer to the argument, ARG. (For example, a copy-in/copy-out implementation.) And, future versions of `g77' might change the way descriptors are implemented, such as passing a single argument pointing to a record containing the pointer/length information instead of passing that same information via two arguments as it currently does. _Implementation Note:_ Currently, `g77' passes all variables and arrays of type `CHARACTER' by descriptor. Future versions of, or dialects supported by, `g77' might pass `CHARACTER' functions by descriptor as well. Thus, use of `%DESCR()' tends to be restricted to cases where ARG is not type `CHARACTER' but the called procedure accesses it via a means similar to the method used for Fortran `CHARACTER' arguments. Note: Procedures (SUBROUTINE and FUNCTION), for detailed information on how this particular version of `g77' passes arguments to procedures. automatically generated by info2www version 1.2.2.9 |