Wie klagen die Formatspezifikation ersetzt mit
15 FORMAT ('T(',I2,')=',F8.4)
stoppt den Compiler zu sehen ist, werden. Ich antworte jetzt allgemeiner.
Eine Formatspezifikation kann aus mehreren Formatelementen bestehen, wobei jedes Element ein Editierdeskriptor oder (rekursiv) eine eingeklammerte Liste von Formatelementen ist.
Es ist normalerweise notwendig, jedes Formatelement durch ein Komma zu trennen. Im Format der Frage sind die Editierdeskriptoren 'T('
, I2
und ')='
. [Der erste und der letzte sind Zeichenkettenbearbeitungsdeskriptoren und der zweite ist ein Datenbearbeitungsdeskriptor.] Kein Komma zwischen den zwei Paaren darf weggelassen werden.
Vom Fortran 2008-Standard wird das Komma erlaubt nur in folgenden Fällen verzichtet werden:
- zwischen einer
P
Bearbeitungsbeschreibung und ein unmittelbar folgenden F
, E
, EN
, ES
, D
oder G
Editierdeskriptor, möglicherweise mit vorheriger Spezifikation;
- vor einem Schrägstrichbearbeitungsdeskriptor, wenn die optionale Wiederholungsspezifikation nicht erscheint;
- nach einem Schrägstrich Bearbeitungsdeskriptor;
- vor oder nach einem Doppelpunkt Bearbeitungsdeskriptor.
Natürlich, nur weil solche Kommas weggelassen werden können, bedeutet das nicht, dass sie sein sollten. Ein optionales Komma-Präsent zu haben tut nie weh.
Weiter, wie durch die Nachricht des Compilers vorgeschlagen, kann ein Compiler die Abwesenheit von Kommas akzeptieren, selbst wenn ein kompatibles Programm sie haben muss (obwohl der Compiler in der Lage sein muss, solche Nichteinhaltung zu erkennen). Als persönliche Aussage würde ich vorschlagen, solche nicht standardisierten Schriften zu vermeiden.
Wie in den Kommentaren, auch mit der korrigierten Formatspezifikation festgestellt worden ist, ist das Programm noch nicht gültig: mit j=j+3
vor j
wird zunächst definiert ist nicht erlaubt.
versuchen '('T (', I2, ') =', F8.4)' Der zweite Fehler folgt nur, weil das beschriftete Format ungültig war – agentp
Vielen Dank! Es hat funktioniert, aber die Ergebnisse sind nur Nullen ?? – Bay
'j' wird niemals initialisiert. Versuchen Sie "j = 3" anstelle von "j = j + 3" – agentp