25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

5.5 Moduli 237<br />

IMPLICIT NONE<br />

SAVE<br />

! dichiarazione dei dati condivisi<br />

...<br />

CONTAINS<br />

SUBROUTINE sub(a,b,c,m,conv)<br />

IMPLICIT NONE<br />

REAL, DIMENSION(3), INTENT(IN) :: a<br />

REAL, INTENT(IN) :: b, c<br />

INTEGER, INTENT(OUT) :: m<br />

LOGICAL, INTENT(OUT) :: conv<br />

! sezione esecutiva<br />

...<br />

END SUBROUTINE sub<br />

END MODULE mio_modulo<br />

La subroutine sub è ”a disposizione” di una qualunque unità di programma che faccia uso del<br />

modulo mio_modulo e può da questa essere usata, come una normale subroutine, mediante<br />

l’istruzione CALL, così come illustrato dal seguente esempio:<br />

PROGRAM mio_prog<br />

USE mio_modulo<br />

IMPLICIT NONE<br />

...<br />

CALL sub(x,y,z,m,conv)<br />

...<br />

END PROGRAM<br />

Si noti che anche per una procedura di modulo è possibile definire una procedura interna, come<br />

ben descritto dal seguente programma:<br />

MODULE miomodulo<br />

! Esempio di sottoprogrammi interni ad procedure di modulo<br />

! Sezione dichiarativa<br />

IMPLICIT NONE<br />

TYPE :: new<br />

INTEGER :: j, k<br />

END TYPE new<br />

! Inizializzazione di x a mezzo di costruttore:<br />

TYPE(new) :: x=new(1234,5678)<br />

! Sezione "interna"<br />

CONTAINS<br />

SUBROUTINE sub_mod_1() ! sottoprogramma di modulo<br />

! start subroutine sub_mod_1<br />

CALL sub_int()

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!