Fortran-Programm mit Subroutine und Function

In diesem Artikel zeige ich euch, dass eine vernünftige Namensgebung der Variablen das Leben als Programmierer stark vereinfacht. Der Code ist einfacher zu lesen und man muss nicht immer sein Gedächtnis bemühen.

Das Beispiel behandelt das Thema Subroutinen und Funktionen. Sie dienen verschiedene Zwecke und stehen an unterschiedlichen Stellen im Fortran-Programm. Ich habe sie durch aussagekräftige Präfixe gekennzeichnet, was ihr so nicht in anderen Fortran-Programmen finden werdet. Auch ihre Rückgabewerte erhalten bestimmte leicht zu merkende Präfixe.

Ich erkläre nur das Thema dieses Artikel, werde aber nicht jede Zeile kommentieren. Das nötige Basiswissen setze ich voraus.

In Zeile 12 seht ihr eine Funktion, gefolgt von einer Subroutine (Zeile 14).

Nun beginne ich mit der Subroutine, die im Hauptprogramm ausformuliert wird. Sie wird mit call aufgerufen. Ihr Präfix ist sb_ Sie wird ausformuliert unter dem Befehlswort contains. Was in dieser Subroutine berechnet wurde, befindet sich in rs_multAnswer. Das Präfix rs_ verweist auf einen Rückgabewert aus einer Subroutine. Das ist die Abkürzung aus „Rückgabewert“ und „Subroutine“.

Die Subroutine in dem Abschnitt contains beginnt mit einem sprechenden Programmnamen und endet mit diesem (sb_mult). Anhand des Präfixes sb_ kannst du leicht erkennen, dass es sich um eine Subroutine handelt.

Der Rückgabewert wird in der Variablen c gespeichert, der beim call sich in der Variablen rs_multAnswer wiederfindet. Es ist also völlig egal, welcher Variablenname in der Subroutine selber benutzt wird.

In der Subroutine sind die Inputvariablen a und b genau angegeben bei intent(in). Die Outputvariable c ist bei intent(out) zu finden. Das ist recht übersichtlich.

Es geht weiter mit der Funktion.

Eine Funktion wird mit dem Schlüsselwort function eingeleitet. Sie befindet sich außerhalb des Hauptprogramms, ganz im Gegensatz zur Subroutine. Das Präfix des Funktionsnamens ist fn_, was leicht zu merken ist. Die Funktion gibt den Rückgabewert hinter result in Klammern zurück. In dem Beispiel soll es die Variable sum sein. Die Eingabevariablen werden bei intent(in) definiert.

Die Funktion heißt fn_add und soll die beiden Inputvariablen a und b summieren. Die Summe wird in der Variablen sum abgelegt.

Im Hauptprogramm wird der Rückgabewert an die Variable rf_addAnswer übergeben, die als real zuvor definiert worden war.

Die Inputvariablen x und y werden der Funktion fn_add übergeben, wo sie addiert werden und über die Outputvariable sum an die Rückgabevariable rf_addAnswer übergeben wird. Das Präfix rf_ ist nicht zufällig gewählt sondern bedeutet Rückgabe einer Funktion. Beachte die Anfangsbuchstaben.

Das gesamte Fortran-Programm liste ich nun auf. Es sollen zwei reelle Zahlen eingegeben, die addiert und multipliziert werden. Zusätzlich soll die Eingabe in einer CSV-Datei mit dem Namen fortranOut.csv gespeichert werden.

Das vollständige Programm FortranDemo.

Den Part mit der Speicherung in einer Datei zeige ich euch jetzt.

Erst wird die Datei fortranOut.csv mit dem willkürlich gewählten Kanal 10 geöffnet (open) und dann darin die beiden Rückgabewerte aus der Addition und Multiplikation geschrieben (write). Schließlich muss noch der Kanal geschlossen (close) werden. Anhand der Präfixe könnt ihr schnell ersehen, woher die Variablenwerte stammen, ob aus einer Funktion oder aus einer Subtroutine.

Sollte die CSV-Datei noch nicht bestehen, wird sie beim open angelegt.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen