Normal argument correspondence is performed by position ( actual argument corresponds to dummy argument). F90 allows us to circumvent this ``fixed form'' limitation. The arguments can be specified in any order, provided they are labeled by appropriate keywords at the site of call. A keyword is the name of the dummy variable in the procedure declaration (followed by an sign); using keywords is necessary for the compiler to resolve the argument correspondence, if they are given out of order. Moreover, if a procedure has a long list of similar type arguments (say, 10 integer arguments) the use keywords greatly improves readability.
For example, the ``Polar-to-Cartesian'' subroutine
subroutine polar2cart(r, theta, x, y) real, intent(in) :: r, theta real, intent(out) :: x, y ... end subroutine polar2cartcan be called as
call polar2cart(1.0, 30.0, c1, c2)or as
call polar2cart(r=1.0, theta=30.0, x=c1, y=c2)or as
call polar2cart(x=c1, y=c2, r=1.0, theta=30.0)