标准中assumed-shape array的定义为:an assumed-shape array is a nonpointer dummy argument array that take its shape from the associated actual argument array. 因此,assumed-shape数组的形状是通过虚实结合传递过来的(利用array descriptor),在子程序中其形状可作为已知对待(针对整个数组和部分数组的操作以及数组内置函数均可用)。翻译成“假定形状”,肯定了形状已知的一面,但虚实结合的含义没有体现出来。
If the lower bound is not specified, it is assumed to be 1.
The rank of the array is the number of colons (:) specified.
The value of the upper bound is the extent of the corresponding dimension of the associated actual argument array + lower-bound - 1.
自言自語:
for (B): 當POINTER A "pointer to"/"associated with"/"aliasing" B, A就是B, A就有B的attributes(lower and upper bounds), may be是我一廂情願的強詞奪理
for (A): assumed shape array的下標能是"浮動"的有何不好? 不然 REAL::A(10) 實參A(3:10), 對應虛參的下標是"3"好還是"1"好, 見仁見智了
傳統上, SHAPE定義是RANK(number of dimensions)與EXTENT(size of each dimsnsion), 並不綁定lower/upper bounds