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.

4.10 Non-advancing I/O 215<br />

INTEGER :: int1, int2 ... OPEN(UNIT=6,PAD=’YES’) READ(*,FMT=’(2I6)’)<br />

int1,int2<br />

e il record di ingresso è inserito come:<br />

12bbbb34<br />

il risultato sarebbe l’assegnazione del valore 12 alla variabile int1 e del valore 34 alla variabile<br />

int2 (naturalmente lo stesso effetto si avrebbe omettendo lo specificatore PAD ed assumendo<br />

per esso il valore di default). Se, invece l’istruzione di connessione fosse:<br />

OPEN(UNIT=6,PAD=’NO’)<br />

la successiva istruzione di lettura fallirebbe in quanto la lunghezza del record di ingresso, di<br />

otto caratteri, risulta minore dei dodici caratteri che è quanto imposto dalla specificazione di<br />

formato.<br />

Pertanto, connettere il dispositivo di ingresso standard specificandoPAD=’NO’ fa in modo che<br />

gli eventuali caratteri bianchi inseriti come padding vengano tenuti in conto dallo specificatore<br />

SIZE in una eventuale istruzione di lettura non-advancing. Si fa notare, tuttavia, che l’uso<br />

dello specificatore PAD risulta poco significativo nelle operazioni di lettura da tastiera mentre<br />

può risultare utile nelle operazioni di lettura da file esterno scritti, ad esempio, da un altro<br />

programma; in tal caso, infatti, porre uguale a ’NO’ il valore di PAD può fornire uno strumento<br />

per verificare se la lettura dei dati avviene correttamente.<br />

Per quanto concerne, infine, le operazioni di output non-advancing, esse sono molto più<br />

semplici rispetto a quelle di input. E’ necessario prevedere soltanto due possibilità:<br />

• Se non viene riscontrata alcuna condizione di errore, l’operazione di scritture continua sul<br />

medesimo record a partire dall’ultimo carattere inserito.<br />

• Se viene incontrata una condizione di errore, il file viene posizionato immediatamente<br />

dopo il record appena scritto.<br />

L’utilizzo più frequente di una istruzione di uscita non-advancing è quello di scrivere un prompt<br />

sul terminale video e di leggere il record di input sulla stessa riga dello schermo. Ad esempio,<br />

la seguente coppia di operazioni di I/O:<br />

WRITE(*,’("Inserisci il valore di m: ")’,ADVANCE=’NO’)<br />

READ(*,’(I5)’) m<br />

visualizza sul terminale video la stringa:<br />

Inserisci il valore di m: _<br />

in cui il simbolo underscore è rappresentativo della posizione del cursore che si posiziona immediatamente<br />

dopo l’ultimo carattere della stringa rappresentata e corrisponde al punto dove<br />

comincerà l’inserimento del record di input.

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

Saved successfully!

Ooh no, something went wrong!