Fortran 90 Vorhandensein optionaler Argumente

9

Ich verstehe das Verhalten der intrinsischen Funktion von present () mit pgf90 7.2 nicht. Ich habe ein 20-Zeilen-Beispielprogramm geschrieben, um das zu testen, aber die Ergebnisse ergeben für mich immer noch keinen Sinn. Beobachte:

%Vor%

wenn ich: testopt (1,2, (irgendeine Variable)) von meinem Hauptprogramm anrufe, druckt es: "anwesender Check: T F". Wenn ich jedoch: testopt (1,2, (irgendeine Variable)) von einem Unterprogramm aus anrufe, druckt es: "Gegenwartsprüfung: T T". Ich habe in beiden Fällen "present check: F" erwartet, weil ich nur die Unterroutine mit den 3 nicht-optionalen Argumenten und keine der optionalen Argumente anrufe. Ich kann mir nicht vorstellen, warum es sich so verhalten würde, und das verursacht einen großen Fehler in einem Programm, an dem ich gerade arbeite. Ich schätze jede Einsicht. Danke.

    
Jason 25.06.2010, 22:56
quelle

1 Antwort

5

Platzieren Sie dieses Unterprogramm in einem Modul und haben Sie dann eine Anweisung "use" für dieses Modul in der aufrufenden Routine (Hauptprogramm oder Unterprogramm)? Eine typische Regel ist, dass viele der erweiterten / neuen Funktionen von Fortran 90 eine explizite Schnittstelle erfordern, so dass sowohl der Aufrufer als auch der Angerufene die Argumente konsistent weitergeben. Der einfachste und beste Weg, dies zu erreichen, ist mit Modul / Verwendung. Nur eine Vermutung ...

    
M. S. B. 26.06.2010, 04:44
quelle