web-dev-qa-db-fra.com

Quelle est la différence entre "stop" et "exit" à Fortran?

Quelle est la différence entre stop et exit dans Fortran?

Les deux peuvent terminer le programme immédiatement avec des informations d'erreur.

17
Terry Qiao

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

  • le code d'arrêt (qui peut être un entier ou une chaîne) soit imprimé dans une unité "d'erreur";
  • si le code d'arrêt est un entier, il doit être utilisé comme état de sortie du processus;
  • s'il n'y a pas de code d'arrêt (ou s'il s'agit d'un caractère), zéro sera renvoyé comme état de sortie.

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.

15
francescalus

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

8
Craig Estey