XL Fortran for AIX 8.1

Language Reference

SUBROUTINE

Purpose

The SUBROUTINE statement is the first statement of a subroutine subprogram.

Format



   .------------.
   V            |
>>---+--------+-+--SUBROUTINE--name----------------------------->
     '-prefix-'
 
>--+-------------------------------+---------------------------><
   '-(--+---------------------+--)-'
        '-dummy_argument_list-'
 
 

prefix
is one of the following:
FORTRAN 95 Begins ELEMENTAL FORTRAN 95 Ends
FORTRAN 95 Begins PURE FORTRAN 95 Ends
RECURSIVE
Note:
type_spec is not permitted as a prefix in a subroutine.

name
is the name of the subroutine subprogram

Rules

At most one of each kind of prefix can be specified.

The subroutine name cannot appear in any other statement in the scope of the subroutine, unless recursion has been specified.

The RECURSIVE keyword must be specified if, directly or indirectly,

If the RECURSIVE keyword is specified, the procedure interface is explicit within the subprogram.

+---------------------------------Fortran 95---------------------------------+

Using the PURE or ELEMENTAL prefix indicates that the subroutine may be invoked by the compiler in any order as it is free of side effects. For elemental procedures, the keyword ELEMENTAL must be specified. If the ELEMENTAL keyword is specified, the RECURSIVE keyword cannot be specified.

+-----------------------------End of Fortran 95------------------------------+

+-------------------------------IBM Extension--------------------------------+

XL Fortran allows three exceptions to PURE subroutine:

You can also call external procedures recursively when you specify the -qrecur compiler option, although XL Fortran disregards this option if the SUBROUTINE statement specifies the RECURSIVE keyword.

+----------------------------End of IBM Extension----------------------------+

Examples

RECURSIVE SUBROUTINE SUB(X,Y)
  INTEGER X,Y
  IF (X.LT.Y) THEN
    RETURN
  ELSE
    CALL SUB(X,Y+1)
  END IF
END SUBROUTINE SUB

Related Information


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]