I file in Fortran

I file si possono leggere in Fortran usando istruzioni simili a quelle di Java. Il seguente programma rfile.f90 apre il file prova.txt, legge tre interi da esso, e li stampa a schermo.

PROGRAM prova
  IMPLICIT NONE         ! non richiesto se non ci sono variabili
  INTEGER :: x, y, z, w

  OPEN(unit=0, file="prova.txt")

        ! i8 significa: i prossimi otto caratteri vengono letti come un intero
        ! le parentesi delimitano una riga, quindi (i8,i8) (i8) significa:
        ! leggi i primi due interi da una riga, poi un intero dalla succesiva
  READ (unit=0, fmt="(i8,i8) (i8)") x, y, w

        ! legge da nuova riga
  READ (unit=0, fmt="(i8)") z

        ! per esempio, se il file prova.txt e':
        ! 1     6       9
        ! 3
        ! 41
        ! allora x=1 y=6 (il 9 viene ignorato) w=3 z=41

        ! iterazione di formato: 2i8 significa: due volte i8
  WRITE (*, fmt="(2i8) (i8)") x, y, w
  WRITE (*, fmt="(i8)") z

  STOP

END PROGRAM prova

Nel dettaglio, quello che le varie istruzione fanno:

OPEN(unit=0, file="prova.txt")
apre il file prova.txt e gli assegna il numero 0; ogni volta che va aperto un file, occorre scegliere un numero da assegnargli
READ (unit=0, ...) ...
questa istruzione legge dal file a cui è stato assegnato il numero 0; il resto dell'istruzione viene ora illustrato nel dettaglio
READ (unit=0, ...) x, y, w
quello che viene letto va nelle variabili x, y, w
READ (unit=0, fmt="(i8,i8) (i8)") x, y, w
La parte fmt= è la stringa di formato; questa stringa dice come sono scritti i dati sul file; in particolare:

Complessivamente, la stringa fmt="(i8,i8) (i8)" fa sì che vengano letti:

WRITE (*, fmt="(2i8) (i8)") x, y, w
scrive i valori di x, y, w a schermo; vengono ora analizzate nel dettaglio le varie parti di questa istruzione
WRITE (*, fmt="(2i8) (i8)") x, y, w
la stampa avviene su schermo perchè si è usato *; se al posto dell'asterisco si fosse usato unit=n allora la stampa sarebbe stata fatta sul file di numero n
WRITE (*, fmt="(2i8) (i8)") x, y, w
la stringa di formato è simile a quella della lettura