2015-12-26 14 views

risposta

9

exit in Fortran è una dichiarazione che termina loop o completa l'esecuzione di altri costruisce. Tuttavia, la domanda riguarda chiaramente l'estensione non standard, come una funzione o subroutine, offerta da molti compilatori che è strettamente correlata alla dichiarazione stop.

Ad esempio, gfortran offers una cosa del genere.

Poiché questo uso di exit non è standard, è necessario fare riferimento alla documentazione di un'implementazione specifica in merito alla forma e ai relativi effetti.

L'istruzione stop, d'altra parte, è un'istruzione Fortran standard. Questa istruzione avvia normale terminazione dell'esecuzione di un programma Fortran (e può essere confrontata con la dichiarazione error stop che avvia errore errore).

Oltre a sapere che terminare (normalmente) l'esecuzione del programma segue una dichiarazione stop e che esiste un codice di arresto, il modo effettivo che accade è di nuovo lasciato aperto all'implementazione. Ci sono alcune raccomandazioni (ma queste sono solo raccomandazioni) su ciò che accade. Ad esempio, in Fortran 2008 si suggerisce che

  • il codice di arresto (che può essere un numero intero o una stringa) essere stampato su un'unità "errore";
  • se il codice di arresto è un numero intero, deve essere utilizzato come stato di uscita del processo;
  • se non vi è alcun codice di arresto (o è un carattere) zero essere restituito come stato di uscita.

Quanto sopra è abbastanza vago in quanto in molte impostazioni i concetti di cui sopra non si applicano.

In pratica, exit sarà simile alla funzione della libreria C di tale nome e il suo effetto sarà come stop senza un codice di arresto (ma passando comunque lo stato specificato al sistema operativo).

In sintesi, Fortran non descrive una differenza tra stop e exit. L'utilizzo di exit (per la terminazione) non è portabile e anche l'effetto di stop non è interamente definito.

5

stop è una dichiarazione fortran ma exit è una funzione che si verifica solo per terminare il programma.

Il stop dichiarazione sarà in uscita il suo argomento [che può anche essere una stringa] per stderr

stop 123 

e restituirà uno stato zero al processo padre.

Considerando che exit è una funzione e deve essere chiamata come qualsiasi altra. Sarà anche silenziosa (cioè nessun messaggio):

call exit(123) 

e l'argomento per uscire verrà restituito al processo padre lo stato

Problemi correlati