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.

8.4 Gestione dei file ad accesso diretto 437<br />

OPEN(UNIT=12,FILE=’archivio’,STATUS=’OLD’,ACCESS=’DIRECT’, &<br />

FORM=’UNFORMATTED’,RECL=120)<br />

! Acquisizione dell’indirizzo del record da leggere<br />

READ(*,*) pos<br />

! Lettura del record<br />

READ(UNIT=12,REC=pos) rad<br />

! Elaborazione del record letto<br />

...<br />

CLOSE(UNIT=12,STATUS=’KEEP’)<br />

3. Aggiornamento di un file ad accesso diretto:<br />

CHARACTER(LEN=10) :: campo1<br />

REAL :: campo2, campo3<br />

INTEGER :: chiave<br />

OPEN(UNIT=13,FILE=’esame’,STATUS=’OLD’,ACCESS=’DIRECT’, &<br />

FORMAT=’UNFORMATTED’,RECL=150)<br />

! Acquisizione dell’indirizzo del record da aggiornare...<br />

READ(*,*) chiave<br />

! ... e del valore del record da scrivere<br />

READ(*,*) campo1<br />

READ(*,*) campo2<br />

! Aggiornamento del record<br />

WRITE(UNIT=13,REC=matricola) campo1,campo2,campo3<br />

CLOSE(UNIT=13,STATUS=’KEEP’)<br />

E’ doveroso, in conclusione, far notare che i file ad accesso diretto non formattati aventi<br />

record la cui lunghezza sia un multiplo intero della dimensione del settore di un particolare<br />

computer rappresentano i file <strong>Fortran</strong> più efficienti per quel computer. Quanto asserito è<br />

facilmente comprensibile se si pensa che:<br />

• Essendo un file ad accesso diretto è possibile processarne un qualunque record direttamente.<br />

• Essendo non formattato non saranno dedicate risorse di macchina alla conversione da o<br />

verso un formato leggibile dall’utente umano.<br />

• Poiché ciascun record ha una lunghezza proprio pari ad un settore del disco, ogni volta che<br />

un record debba essere processato sarà necessario leggere o scrivere soltanto un settore. E’<br />

chiaro che record più grandi o più piccoli la cui lunghezza non sia multipla della dimensione<br />

del settore costringerebbero la testina di lettura/scrittura a muoversi a cavallo di due o<br />

più settori per analizzare un unico record.<br />

Dal momento che questi file sono così efficienti, molti grossi programmi <strong>Fortran</strong> sono sviluppati<br />

per farne abbondante uso.

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

Saved successfully!

Ooh no, something went wrong!