Wenn im Quellcode wie
real :: x=1
real :: y=1.
dort auftretenden ein Unterschied zu einer lexikalischen Ebene. Im ersten Fall ist 1
eine literale Ganzzahlkonstante; in der zweiten 1.
ist eine literale (Standard) reale Konstante. Das heißt, die Ganzzahl 1
wird im Rahmen der Initialisierung in den Typ x
konvertiert. Es ist sehr wahrscheinlich, dass x
und y
auf den gleichen Wert initialisiert werden.
In beiden Fällen handelt es sich um legitime Deklarationen. In diesem Sinne ist das Dezimalsymbol nicht erforderlich, obwohl es einen technischen Unterschied gibt.
Mit Namelist Eingabe Dinge sind etwas anders. In den Eingabedateien 1
und 1.
keine Literalkonstanten (nicht im Quellcode). Stattdessen wird der Wert in der Eingabe als der Typ der Variablen interpretiert, auf die er angewendet wird. In Ihrem Fall wird foo
standardmäßig als real angenommen, dann werden sowohl 1
als auch 1.
als reelle Standardwerte betrachtet.
Ein reeller Wert in einer Namenslisteneingabe muss kein Dezimalsymbol haben. Ohne diesen Wert hat der Wert keinen Bruchteil. In diesem Sinne besteht kein Unterschied zwischen dem Vorhandensein und dem Fehlen des Dezimalsymbols und die Werte sind gleich.
Ohne tiefer zu erforschen, sind mir keine Änderungen bekannt, wie diese Dinge zwischen Revisionen der Sprache interpretiert werden.
Dies ist ein guter Zeitpunkt zu beachten, dass die Dinge sehr unterschiedlich sind, wenn formatierte (nicht nameliste) Eingabe betrachtet wird. Das Fehlen eines Dezimalzeichens kann bei bestimmten Formaten very confusing sein.