Am Son, 2001-11-25 um 15.00 schrieb Thomas Hertweck:
Ralf Corsepius wrote:
[...] Keine Ahnung welches flush hier gemeint ist, wenn es sich aber um die Anbindung an die libc-Funktion fflush oder an dem dem fflush unterlagerte sys-call handelt, ist das ein wirklich ernstes Problem mit potentiell fatalen Seiteneffekten. Um nicht zu sagen, es führt in einer grossen Anzahl von Programmen zur völligen Funktionsunfähigkeit (Vgl. man 3 fflush) und ist nahe daran den Compiler als völlig funktionsunfähig zu disqualifizieren.
Es handelt sich um die intrinsische Funktion "flush(unit)". Beispiel- programm (von Michael Schulz) zum Testen: [..] Nachdem "flush" aufgerufen wurde, sollte in der Datei flushoutput.txt das Wort "test" stehen, tut es aber beim Compilieren des Programmes mit ifc nicht. Erst wenn "close(42)" aufgerufen wird, wird auch in die Datei geschrieben. Ich habe das auf einer SGI und auf einer HP mit den dor- tigen Compilern probiert, und dort steht wie erwartet nach dem Aufruf von "flush" auch der Text in der Datei. Intel hat wie gesagt den Fehler bestaetigt und arbeitet daran. OK, wenn mich meine FORTRAN-Kenntisse nicht im Stich lassen (Mein letztes FORTRAN-Progi liegt > 10 Jahre zurück), handelt es sich bei FLUSH um das FORTRAN-Gegenstück zum C-fflush (3).
Das bedeutet aber auch, dass praktisch kein Programm richtig funktionieren kann, das Ausgabe-Funktionen benutzt. Da die meisten klassischen FORTRAN-Programme ohnehin nur für den BATCH-Betrieb ausgelegt sind und interaktiver IO meist nur eine untergeordnete Rolle spielt (flush somit nur selten verwendetet wird), sind die Folgen auf die Funktionfähigkeit von Fortran-Programmen nicht ganz so gravierend wie in anderen Sprachen. Aber immerhin - Wäre es der C-Compiler und wäre Intel's Compiler OpenSource, wäre _das_ Grund genug _sofort_ ein BugFix-Release zu herauszubringen. Ralf