Quelle est la différence entre stop
et exit
dans Fortran?
Les deux peuvent terminer le programme immédiatement avec des informations d'erreur.
exit
dans Fortran est une instruction qui termine les boucles ou termine l'exécution d'autres constructions. Cependant, la question porte clairement sur l'extension non standard, en tant que fonction ou sous-programme, offerte par de nombreux compilateurs, qui est étroitement liée à l'instruction stop
.
Par exemple, gfortran propose une telle chose.
Étant donné que cette utilisation de exit
n'est pas standard, vous devez vous référer à la documentation d'une implémentation particulière quant à sa forme et à ses effets.
L'instruction stop
, d'autre part, est une instruction Fortran standard. Cette instruction déclenche la fin normale de l'exécution d'un programme Fortran (et peut être comparée avec le error stop
instruction qui initie erreur terminaison).
Outre le fait de savoir que la fin (normale) de l'exécution du programme suit une instruction stop
et qu'il existe un code d'arrêt, la manière réelle qui se présente est à nouveau laissée ouverte à l'implémentation. Il y a quelques recommandations (mais ce ne sont que des recommandations) sur ce qui se passe. Par exemple, dans Fortran 2008, il est suggéré que
Ce qui précède est assez vague car dans de nombreux contextes, les concepts ci-dessus ne s'appliquent pas.
En général, dans la pratique, exit
sera similaire à la fonction de la bibliothèque C de ce nom et son effet sera comme stop
sans code d'arrêt (mais en transmettant toujours le statut donné au système d'exploitation).
En résumé, Fortran ne décrit pas de différence entre stop
et exit
. L'utilisation de exit
(pour la terminaison) n'est pas portable et même l'effet de stop
n'est pas entièrement défini.
stop
est une instruction fortran mais exit
est une fonction qui arrive juste à terminer le programme.
L'instruction stop
affichera son argument [qui peut également être une chaîne] vers stderr
stop 123
et il renverra un état zéro au processus parent.
Alors que exit
est une fonction et doit être appelée comme n'importe quelle autre. Il sera également silencieux (c'est-à-dire sans message):
call exit(123)
et l'argument de sortie sera renvoyé au processus parent en tant qu'état