Comme indiqué précédemment, un tableau peut être utilisé comme les index d'un tableau. C'est ce qu'on appelle un indice vectoriel.
A([1,4,7,54,81]) = 3.21423
définit les éléments donnés à cette valeur. (C'est la même chose que la réponse précédente mais en utilisant la notation Fortran 2003+/moderne des constructeurs de tableaux).
Le tableau peut être n'importe quel tableau de rang 1, comme une variable ou une expression :
integer :: idx(5)=[1,4,7,54,81]
A(idx) = 3.21423
A(idx-1+1) = 3.21423
Bien entendu, les indices vectoriels sont utiles dans d'autres contextes, comme le référencement :
print *, A(idx)
call sub(A(idx))
A(idx) = A(idx+1) + 5
Toutefois, les sections de tableau avec des indices vectoriels sont soumises à diverses restrictions, telles que :
- il ne s'agit pas toujours d'arguments à une procédure ;
- un pointeur peut ne pas pointer vers eux ;
- toutes ces sections ne peuvent être affectées.
Dans le troisième cas, si le même indice apparaît plus d'une fois dans l'indice, nous ne pouvons pas le définir. Ainsi,
print *, A([1,5,1])
est autorisé, mais
A([1,5,1]) = 3.
ne l'est pas.