Attualmente, sto usando riga di comando di shell chiama dal mio programma FORTRAN utilizzando SISTEMA non standard di routine intrinseca (simile a Fortran 2008 EXECUTE_COMMAND_LINE intrinseca):Esegui riga di comando e restituire l'output del comando
CALL SYSTEM(commandStr)
dove commandStr è un stringa di caratteri contenente il comando shell che voglio eseguire. Al momento, non sono a conoscenza di un modo diretto per restituire l'output di commandStr, ma solo il suo stato di ritorno. Quindi, quello che sto facendo ora è scrivere l'output in un file e quindi leggere il file all'interno del programma Fortran. Esempio:
CALL SYSTEM('sed ''s/,//g'' myFile > dummyFile')
se voglio rimuovere le virgole da myFile. Quindi utilizzo OPEN e READ per ottenere il contenuto di dummyFile.
Questo funziona bene, tuttavia sono preoccupato per la scrittura/lettura di file dal disco, soprattutto se stavo facendo questo in un lungo ciclo, e se l'output di commandStr era grande. C'è un modo per reindirizzare l'output di CommandStr in un buffer di memoria (non un hard disk) al quale potrei accedere direttamente dal mio programma Fortran (magari attraverso uno specifico numero di UNIT)?
Se l'output era grande, non avrebbe più senso memorizzarlo in un file? – Rook
Immagino che non farebbe la differenza per il codice - l'unica parte che mi preoccupo qui è l'I/O frequente da e verso il disco che influenza l'efficienza del programma. C'è un motivo per cui sarebbe meglio archiviarlo in un file, qualcosa che mi manca? – milancurcic
Bene, dal mio punto di vista è solo un problema di praticità. Se non ci sono molti dati, non è importante memorizzarli in un file. Sono molti dati e lo sto riutilizzando nel programma corrente, l'ultimo posto in cui voglio che sia la memoria. Ho bisogno di memoria per archiviare i risultati di "analizzare" quel file e poi fare qualcosa con quelli. Probabilmente sarebbe stato meglio spiegarlo, ma penso che tu abbia avuto l'idea. – Rook