Fortran 90

7.1 Keyword and Optional Arguments
Procedure arguments may be specified with a keyword and may also be optional:
 CALL set_corners(a)
 CALL set_corners(a,VALUE=2)
 ...
 SUBROUTINE set_corners(a,value)
 INTEGER, INTENT(IN), OPTIONAL :: value
 INTEGER, DIMENSION(:,:) :: a
 IF (PRESENT(value)) THEN
   a(::SIZE(a,DIM=1)-1,::SIZE(a,DIM=2)-1) = value 
 ELSE 
   a(::SIZE(a,DIM=1)-1,::SIZE(a,DIM=2)-1) = 0 
 END IF 
 END
The purpose of keywords and the OPTIONAL attribute is to break FORTRAN 77's rigid dependence on variable position within the calling list to identify the argument to which it corresponds.