The syntax is as follows:
Real,Dimension(..) :: a, b Integer :: c(..)That declares three variables (which must be dummy arguments) to be assumed-rank.
The use of assumed-rank dummy arguments within Fortran is extremely limited; basically, the intrinsic inquiry functions can be used, and there is a SELECT RANK construct, but other than that they may only appear as actual arguments to other procedures where they correspond to another assumed-rank argument.
The main use of assumed rank is for advanced C interoperability (see later section).
Here is an extremely simple example of use within Fortran:
Program assumed_rank_example
Real x(1,2),y(3,4,5,6,7)
Call showrank(1.5)
Call showrank(x)
Call showrank(y)
Contains
Subroutine showrank(a)
Real,Intent(In) :: a(..)
Print *,'Rank is',Rank(a)
End Subroutine
End Program
That will produce the output
Rank is 0 Rank is 2 Rank is 5
An assumed-type variable is extremely limited in the ways it can be used directly in Fortran:
This is mostly useful for interoperating with C programs (see later section). Note that in a non-generic procedure reference, a scalar argument can be passed to an assumed-type argument that is an assumed-size array.