25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

238 Unità di Programma<br />

RETURN<br />

CONTAINS<br />

SUBROUTINE sub_int() ! sottoprogramma interno<br />

! start subroutine sub_int_1<br />

CALL sub_mod_2(x%j,x%k)<br />

RETURN<br />

END SUBROUTINE sub_int<br />

END SUBROUTINE sub_mod_1<br />

SUBROUTINE sub_mod_2(i1,i2) ! sottoprogramma di modulo<br />

INTEGER, INTENT (IN OUT) :: i1, i2<br />

INTEGER :: x<br />

! start subroutine sub_mod_2<br />

x = i1<br />

i1 = i2<br />

i2 = x<br />

RETURN<br />

END SUBROUTINE sub_mod_2<br />

END MODULE miomodulo<br />

!<br />

PROGRAM prova<br />

USE miomodulo<br />

CALL sub_mod_1( )<br />

WRITE(*,*) x<br />

STOP<br />

END PROGRAM prova<br />

5.6 Procedure Esterne<br />

Le procedure esterne sono unità di programma (subroutine o function) indipendenti, compilate<br />

separatamente, tipicamente scritte su file del tutto separati dal resto del programma. <strong>Il</strong> corpo<br />

di una procedura esterna deve contenere tutte le frasi (dichiarazioni e istruzioni) indispensabili<br />

per una sua corretta ed autonoma compilazione. Così come un programma principale e un<br />

modulo, anche una procedura esterna può ospitare procedure interne. <strong>Il</strong> seguente frammento<br />

di codice mostra un esempio di procedura esterna invocata dal programma principale:<br />

PROGRAM first<br />

REAL :: x<br />

x=second()<br />

...<br />

END PROGRAM first<br />

FUNCTION second() ! funzione esterna<br />

REAL :: second

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

Saved successfully!

Ooh no, something went wrong!