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.2 Le specifiche di I/O 423<br />

• La clausola REC=rn , in cui rn rappresenta una variabile (o una espressione) di tipo intero,<br />

specifica il numero rappresentativo del record che deve essere scritto in un file connesso<br />

ad accesso diretto. L’utilizzo di questo specificatore è, pertanto, limitato a operazioni di<br />

scrittura su file connessi con la clausola ACCESS=’DIRECT’.<br />

• La clausola NML=lista specifica la lista con nome che deve essere prodotta in uscita.<br />

Come per l’istruzione READ, anche in questo caso lo specificatore è incompatibile con la<br />

clausola FMT=fmt . Si noti che la parola chiave NML= può essere omessa nel qual caso lo<br />

specificatore, ridotto alla sola espressione lista , deve essere il secondo della lista.<br />

• La clausolaADVANCE=adv specifica se la scrittura di un record debba essere o meno seguita<br />

dall’avanzamento al record successivo. I possibili valori per la variabile stringa adv sono<br />

’YES’ (che è anche il valore di default) e ’NO’. Si noti che questa clausola ha significato<br />

soltanto in presenza di file formattati connessi per operazioni ad accesso sequenziale.<br />

8.2.6 Istruzioni di posizionamento di un file<br />

Durante le operazioni di I/O su un file esterno connesso per accesso sequenziale è talvolta<br />

necessario avere un maggiore controllo sulla posizione del record da leggere o da scrivere. In<br />

particolare può essere necessario alterare la posizione corrente del puntatore al file, ad esempio<br />

spostandosi all’interno del record corrente, o fra due record, all’inizio del primo record (punto<br />

iniziale) oppure dopo l’ultimo record (punto terminale). Allo scopo il linguaggio possiede tre<br />

istruzioni di posizionamento che saranno oggetto di questo paragrafo.<br />

L’istruzione BACKSPACE<br />

Può accadere talvolta che l’ultimo record introdotto debba essere sostituito da un nuovo record<br />

(ossia ”riscritto”), oppure che l’ultimo record letto debba essere riletto. A tale scopo il <strong>Fortran</strong><br />

mette a disposizione l’istruzione BACKSPACE che si caratterizza per la seguente sintassi:<br />

BACKSPACE([UNIT=]u[,IOSTAT=ios])<br />

in cui, come di consueto, u è una espressione intera il cui valore rappresenta una unità logica<br />

mentre ios è una variabile intera rappresentativa della riuscita o meno dell’operazione (i valori<br />

possibili per ios sono gli stessi visti per l’istruzione READ). Come sempre, l’ordine degli specificatori<br />

può essere alterato tranne nel caso in cui la parola chiave UNIT= sia assente, nel qual<br />

caso l’unità logica deve essere specificata per prima.<br />

L’azione di questa istruzione è quella di posizionare il file prima del record corrente se<br />

esso è attualmente posizionato all’interno di un record, oppure prima del record precedente se<br />

il file è posizionato fra due record consecutivi. Un qualsiasi tentativo di applicare l’istruzione<br />

BACKSPACE quando il file è già posizionato all’inizio del file non produce alcun cambiamento alla<br />

posizione del file. Se il file è posizionato dopo il record di endfile l’istruzione BACKSPACE produce<br />

un ”arretramento” del file a monte di questo record. Non è possibile applicare l’istruzione<br />

BACKSPACE ad un file non esistente o non connesso né è possibile applicare questa operazione<br />

ad un record scritto con formato libero oppure prodotto con meccanismo namelist.

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

Saved successfully!

Ooh no, something went wrong!