Je suis sûr que la solution est extrêmement simple, mais j'ai du mal à comprendre comment utiliser les fonctions de Fortran. J'ai le programme simple:Comment créer des fonctions dans Fortran?
PROGRAM main
IMPLICIT NONE
INTEGER :: a,b
a = 3
b = 5
PRINT *,funct(a,b)
END PROGRAM
FUNCTION funct(a,b)
IMPLICIT NONE
INTEGER :: funct
INTEGER :: a,b
funct = a + b
END FUNCTION
J'ai essayé plusieurs variantes de celui-ci, y compris l'attribution d'un type de données avant que la fonction, l'affectation du résultat de fonct à une autre variable dans le programme principal et l'impression de cette variable, et le déplacement le bloc FUNCTION au dessus du bloc PROGRAM. Aucun d'entre eux a travaillé. Avec le programme actuel, je reçois une erreur sur la ligne 6 (la ligne avec l'instruction PRINT):
Error: Return type mismatch of function 'funct' (UNKNOWN/INTEGER(4))
Error: Function 'funct' has no IMPLICIT type
De tous les guides que j'ai essayé, je semble faire droit; au moins l'une des variantes, ou une combinaison de certaines d'entre elles, aurait dû fonctionner. Comment dois-je changer ce code pour utiliser la fonction?
le problème est que vous avez utilisé 'none' implicite alors que vous ne donniez pas' funct' une déclaration. vous devez ajouter 'integer, external :: funct'. –
Merci, ceci et la réponse de Pierre ont fonctionné. – zbz323