- adjustable array
 The array in a subprogram 
        has a variable dimension just as in Fortran 77 through that both the
        array name and the dimension (all dimensions) are dummy arguments. The actual
        shape is therefore passed from the actual arguments.
               SUBROUTINE SUB (A, NA)
               REAL, DIMENSION (NA) :: A
- allocatable array
 An array specified as 
        ALLOCATABLE  with a certain type and rank. 
        It can later be allocated a certain extent with
	the  ALLOCATE  statement. The corresponding
	storage area can be released with the DEALLOCATE  statement.
 
- array
 Dimensioned quantity (variable or constant).
 
- array assignment
 Assignment of a whole 
              array to another one is permitted provided they have the same 
              shape, and also if the expression on the right
              hand side is a scalar, in which case all the elements on the left 
              hand side will be assigned this same value.                    
              Array sections can be used here instead 
              of arrays.
 
- array function
 A function which operates 
        on an array and returns an array or a scalar, or a function
        which operates on a scalar and returns an array. An array valued 
        function is an array function which returns an array.
 
- array section
 Part of an array (the part 
       can have a rank greater than one, but array sections with
       rank one are the most common cases).
 
- assumed-shape array
 An array in a 
        subprogram which is not local and has a certain data type and a certain 
        rank.
	       SUBROUTINE SUB (A)
	       REAL, DIMENSION (:, :, :) :: A
 The extent is determined from an explicit
	 INTERFACE  in the calling program unit, and an explicit 
        specification of the shape of A  there 
        (including the extent).
               INTERFACE
	               SUBROUTINE SUB (A)
	               REAL, DIMENSION (:, :, :) :: A
	               END SUBROUTINE SUB
	       END INTERFACE
- assumed-size array
 The array has a variable dimension, like in
                                Fortran 77, through that both the array name
                                and the parameters of the dimension are
                                dummy arguments, except the last dimension,
                                which is given by a *
                SUBROUTINE SUB (A, NA1, NA2)
                REAL, DIMENSION (NA1, NA2,*) :: A
In Fortran 66 the concept "assumed-size array" was not defined, but it was simulated 
by placing the digit "1" where the "*" is in Fortran 77. This custom violates the
index check and is of course forbidden by modern compilers, for example the 
NAG Fortran 90 compiler. Many old programs still use this way of simulating dynamic memory allocation.
 
 
- attribute
 At the specification of a 
        variable the additional properties  PARAMETER,
			         PUBLIC, PRIVATE, INTENT, DIMENSION,
			         SAVE, OPTIONAL, POINTER, TARGET, 
			         ALLOCATABLE, EXTERNAL  
                                 and  INTRINSIC 
                                 are called attributes. They can also
				 be given by statements.
 
- automatic array
 Array in a subprogram where the array is
                                local but the parameters for the dimensions
                                are among the dummy arguments.
                 SUBROUTINE SUB (I, J, K)
	         REAL, DIMENSION (I, J, K) :: X
- BLOCK DATA
 A  BLOCK DATA  
            program unit contains definitions (initial values) which are 
            to be used in the other program units.
             BLOCK DATA  is now being replaced with the
            more powerful module.
 
- deferred-shape array
 The array is an array pointer or an 
allocatable array.
 
- extent
 The number of elements along the
                                 various dimensions.
 
- EXTERNAL
 The functions and subroutines you write
                                 or obtain from application libraries.
                                 The opposite is  INTRINSIC.
                                 When external functions or subroutines
                                 are used as actual parameters at the reference 
                                 of another subprogram they have to be
                                 specified as  EXTERNAL.
 
- function
 A program unit which returns a function value
                                 (or several, if array valued) in its name
                                 and has a number of arguments. Functions
                                 without arguments are permitted, it is also
				 permitted but not advisable that a
                                 function changes any of its arguments.
 
- generic
 A generic function can have the property
                                 that the data type of the argument gives
                                 the same data type to the function. The value
                                  SIN(1.0D0)  is also more accurate (calculated
                                 to a higher precision) than that of 
                                  SIN(1.0).
                                 In addition, there exist intrinsic functions,
                                 for example  REAL()  which can have arguments
                                 of various data types, but always returns a
                                 value of a certain data type. For generic
                                 subroutines only the arguments are adjusted.
 
- interface
 Since all the different program units in a
                                 Fortran program are compiled completely
                                 independent all information on the arguments
                                 have to be transferred  manually. In 
                                 Fortran 77 
                                 this was done with very long and cumbersome
                                 argument lists. 
                                 In Fortran 90 an  INTERFACE 
                                 can be used. This has to be used in the
                                 following cases
 
- modules that use user defined data types
- call with keyword arguments or optional arguments
- user defined generic routines
- use of assumed-shape arrays
- use of arrays specified with pointers
- at the definition of a new interpretation of an OPERATOR
- to increase the chance that INTENT  has any effect
                  (implementation dependent case)
- call of an array valued function
- If IMPLICIT NONE  is being used, an INTERFACE  may be
                  required at the use of a subprogram as the actual argument
 
 
- internal function
 A function which is local to a certain
                                 program unit, and is after a 
                                 CONTAINS 
                                 statement. All the variables in the
                                 program unit are directly available. 
                                 An internal function can not be used
                                 outside the program unit where it is defined.
                                 This can be useful in order to avoid
                                 name conflicts between functions and
                                 subroutines from different libraries.
                                 An internal function can not be used as
                                 an argument! It also exists internal 
                                 subroutines.
 
- intrinsic
 Those functions and subroutines that are 
                                 delivered together with the compiler are
                                 called intrinsic, and have some special
                                 properties, they do not usually have to
                                 be specified. Since Fortran 90 has so
                                 many intrinsic functions, some manufacturers
                                 may choose to let some of them instead be
                                 available in a usual library, and thus be
                                 external.
                                 The opposite to intrinsic is external.
      
                                 If intrinsic functions or subroutines
                                 are used as arguments at the call of
                                 some other subprogram they must be 
                                 specified as  INTRINSIC. Note the very
                                 important difference between an intrinsic
                                 and an internal subprogram.
 
- loop
 With a loop we mean a number of executable
                                 statements that are repeated a number of 
                                 times,
                                 the usual case is a  DO-loop, but also an
                                  IF-statement (arithmetic or logical or the
                                 newer  IF...THEN...ELSE...ENDIF  or 
                                 a  CASE 
                                 construct) can be called a loop.
 
- main program
 Each Fortran program has to consist 
        of exactly one main program and and any number of 
        subroutines, 
        functions, 
        modules and 
        BLOCK DATA  program units.
        A main program may start with the statement PROGRAM name 
        and must be terminated with a statement END PROGRAM name 
        or END PROGRAM  or the simpler END.
 
- module
 A module contains specifications and
                        definitions to be used in other program
                        units. Replaces BLOCK DATA.
 
- nested
 Inside a   DO-loop can be 
       further  DO-loops, inside an  IF...THEN...ELSE...ENDIF  or
        CASE  can also be additional constructs.
       Sometimes also  IF  and  CASE  constructs
                                 are called loops.
 
- program unit
 The collective reference to a 
        main program, a subroutine, 
        a function, a module or a
        BLOCK DATA program unit.
 
- rank
 The number of dimensions.
			         WARNING: Not the mathematical rank.
 
- recursive
 A function or a subroutine that calls itself.
                                 Permitted from Fortran 90.
 
- result variable
 A function is called by its 
        function name, and on return that name contains the value
                                 of the function. If the function is  recursive
                                 a special result variable has to be used
                                 inside the function in order to store the 
                                 result 
                                 temporarily, but it is still returned in the
                                 usual way via the function name. 
			         The result variable is also useful for
                                 array functions, even in the non-recursive 
                                 case.
                                 It is always permitted in a function 
                                 specification to use the result variable.
 
- shape
 The shape of an array consists of its
        rank and extent.
 
- statement function
 A function local to 
        a program unit, is located between the ordinary specifications
        and  the executable statements. Very simple, available already in FORTRAN I.
        A more general concept is the internal function
        after a CONTAINS  statement. A statement
        function may not be used as an argument!
 
- subroutine
 A program unit which does not return any 
                                 value through its name and has a number
                                 of arguments.
                                 It is permitted for a subroutine to change
                                 the values of its arguments. A subroutine
                                 can however have other tasks to perform,
                                 quite often related to input and output.
                                 A subroutine does not have a data type.