O.K. ich habe das gestern Abend nur aus meinem AVR-CP/M Backup Quellcode-Verzeichnis kopiert - ich schau heute Abend nochmal nach, ob das wirklich so funktioniert, da bin ich aber ziemlich sicher ("famous last words").
"Globale Variablen"
In Fortran kann man Variablen in COMMON Blöcken zusammenfassen und dann in Unterprogrammen verwenden. Das sind sozusagen globale Speicherblöcke mit Namen (es gibt auch einen unbenannten). In jedem Unterprogramm taucht deshalb der COMMON Block SCALE auf, in dem diese "globalen" Variablen deklariert werden. Man kann das auch ähnlich wie eine global definierte "Struktur" in anderen Sprachen sehen.
In manchen Basic Dialekten gibt es auch COM Blöcke, die genauso funktionieren (z.B. HP Rocky Mountain Basic).
Die Variable IDEV wird also einmal in TINITmit IDEV = NDEV besetzt und kann dann in Unterprogrammen, die die folgende COMMON Anweisung enthalten, verwendet werden:
WRITE Anweisungen gibt es formatiert und unformatiert.
ist unformatiert, d.h. wird direkt binär die Folge der 5 Bytes in SEQ ausgegeben. Bei formatierter Ausgabe wird eine FORMAT Anweisung verwendet um das ... Format festzulegen. Da können dann genaue Angaben zu Vor- und Nachkommastellen etc gemacht werden. Die wird üblicherweise für Textausgaben (ASCII) verwendet. Das ist ähnlich wie in BASIC mit den PRINT und PRINT USING Anweisungen.
Es müsste auch funktionieren:
(LOGICAL*1, weil der MS-Fortran Compiler noch keine CHARACTER kennt).
Martin