|
F95 introduce il costrutto FORALL come alternativa ai cicli
DO per facilitare l'uso della notazione vettoriale.
Sulla riga del FORALL ci possono stare una o più assegnazioni di triplette del tipo [start]:[stop][:incr] a variabili intere che saranno gli indici del ciclo, più un'eventuale espressione logica scalare che può fare uso delle suddette variabili intere e funge da maschera. All'interno del blocco FORALL possono esistere solo operazioni di assegnazione facenti eventualmente uso delle variabili intere indici del FORALL, oppure altri FORALL o WHERE innestati. Tali assegnazioni verranno effettuate per i valori specificati sopra delle variabili intere e sotto il controllo dell'eventuale maschera presente. Il tutto termina ovviamente con END FORALL. Il costrutto FORALL rende i cicli con assegnazioni vettoriali più compatti e più facilmente ottimizzabili dai compilatori, specie su architetture di tipo vettoriale. |
PROGRAM pertutti IMPLICIT NONE INTEGER, PARAMETER :: ie=20, je=30, ke=60 REAL, PARAMETER :: rmiss=-1.0E15 REAL :: p(ie,je,ke), pp(ie,je,ke), p0(ke) INTEGER, i, j, k FORALL(i=1:ie, j=1:je, k=1:ke, pp(i,j,k) /= rmiss) p(i,j,k) = pp(i,j,k) + p0(k) END FORALL END PROGRAM pertutti |