Fortran 77

From Atari Wiki
Jump to navigation Jump to search





                  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
                  ³                                               ³
                  ³  Ûßßßß ßßßßÛ ßßßßÛ   Ein Compiler-Driver fr  ³
                  ³  ÛÜÜÜ     Üß    Üß     BC-Fortran-77 V1.3c    ³
                  ³  Û      Üß    Üß           Version 0.12       ³
                  ³  ß      ß     ß        (C)1992, U. Bartelt    ³
                  ³                                               ³
                  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
                




        Žtt„nschn !!!
        ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

        Dies Programm ist Freeware und frei jeglicher Versprechen
        meinerseits.
        - Es darf nicht verkauft werden, in PD-Sammlungen aufgenommen werden
          oder auf eine andere Art dem Geldverdienen Dritter dienen.
        - Ich verspreche nichts !!!
          Nichteinmal, daž das Programm funktioniert oder den Rechner
          unbeschadet l„žt...



        Was, wie, warum, wozu ?
        ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

        Vor einiger Zeit lief mir mal der von Andr‚ K”stli stammende
        Fortran-77-Compiler ber den Weg. (BC-Fortran-77 Version 1.3c)
        Der sah ja auch ganz nett aus...
        Aber er hatte ein paar Schwachstellen (in meinen Augen)...

           1. Er verlangte eine nicht meiner Directory-Philosophie konforme
              Installation auf der Festplatte.
           2. Aužerdem hatte ich keine Lust, immer Compiler und Linker
              nacheinander aufzurufen. Ich bin halt an die blichen
              C-Compiler-Driver gew”hnt, und die k”nnen das auch anders...
           3. Ich konnte mir die Optionen des Compilers und des Linkers
              einfach nicht merken. Das liegt auch wieder daran, daž die
              blichen C-Compiler-Driver zumindest bei den wichtigsten
              Optionen einen Quasi-Standard einhalten...

        So entstand dann --- als Quickhack --- F77.TTP, um diese drei Punkte
        zumindest halbwegs akzeptabel zu l”sen...



        How 2 install...
        ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

        Der BC-Fortran'sche Lieferumfang besteht aus den folgenden Dateien:

           1) Fortran-77-Compiler      BCF.TTP
           2) Linker                   BCL.TTP
           3) Basis-Library            BCRTSY.B
           4) Mathematik-Library       MATHLIB.B
           5) Kurzanleitung            LIES.TXT

           (Nur wenn alle diese Files komplett weitergegeben werden, ist die
           Verbreitung von BC-Fortran erlaubt.)

        Gem„ž meiner Directory-Struktur liegen

           - Compiler und Linker im Verzeichnis "c:\bin\bcf\"
           - Die Libraries im Verzeichnis "c:\lib\bcf\"

        und die Environment-Variablen "BCF_EXEC" und "BCF_LIB" werden auf
        diese Pfade eingestellt. Dies geschieht sinnigerweise im Profile der
        Lieblings-Shell oder mit einem im Auto-Ordner liegenden Programm,
        das ein Environment initialisiert.
        Weiter wird entweder "F77.TTP" in ein Verzeichnis gesteckt, das in
        der Environment-Variable "PATH" vorkommt oder man bedient sich eines
        ALIASes oder „hnlicher Funktionen, um "F77.TTP" griffbereit zu
        halten.

        In "MUPFEL.MUP" oder "GULAM.G" st„nde also

           setenv BCF_EXEC c:\bin\bcf         # mit oder ohne "\" am Ende
           setenv BCF_LIB  c:\lib\bcf
           alias  f77      c:\bin\bcf\f77.ttp # oder die MUPFELsche "HASH"-
                                              # Funktion benutzen.

        Bei anderen Shells mag das eventuell anders aussehen, aber wer
        regelm„žig seine Shell benutzt, wird zumindest in der Lage sein,
        dies der Syntax seiner Shell anzupassen...

           Ist BCF_EXEC nicht definiert, so sucht F77.TTP in den durch PATH
           angegebenen Directories nach Compiler und Linker.
           Man k”nnte also die drei TTPs einfach in ein "Standard"-Programm-
           Directory kopieren und dies im PATH eintragen.



        F77 aufrufen...
        ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

        Zun„chst einmal ein paar Beispiele:

           1. f77 test.f
              - Compiliert "test.f" zu "test.b". An den Compiler wird die
                Option -U bergeben, was dazu fhrt, daž nicht zwischen
                Grož- und Kleinschreibung in Namen unterschieden wird.
                (Dies erschien mir sinnvoll als Default, denn es entspricht
                 dem, was man von Fortran so gew”hnt ist.)
              - Konnte "test.b" korrekt generiert werden, so wird der Linker
                instruiert, "test.b" und "mathlib.b" zu einem Programm
                zusammenzubinden. Dies heižt dann "test.prg" und liegt sch”n
                brav neben dem Quelltext...
                ("mathlib.b" wird defaultm„žig eingebunden, denn Fortran-
                 Programme sollen ja haups„chlich RECHNEN...
                 Dies kann auf Wunsch unterbleiben, dann ist die Option -r
                 anzugeben.)

           2. f77 -c test.f
              - Jagt "test.f" nur durch den Compiler. Der Linker wird nicht
                bemht, es entsteht lediglich ein neues "test.b" (so man
                keinen Mll getippt hat)...

           3. f77 test.b
              - Jagt "test.b" durch den Linker. (siehe bei 1.)

           4. f77 myprog.b mysubs.b
              - Die beiden angegebenen Module werden mit der Mathe-Library
                zusammen zu einem Programm gelinkt. Dies hat dann den Namen
                der ersten Datei, also "myprog.prg".

           5. f77 myprog.f mysubs.f
              - Žhnlich Beispiel 4, jedoch werden die angegebenen Quelltexte
                erstmal einzeln durch den Compiler genudelt.
                War dies erfolgreich, so werden sie wie in Beispiel 4 weiter-
                verarbeitet...

        Das sollte zun„chst an Beispielen reichen.

        Ehrlicherweise muž ich noch nachtragen, daž die Library "bcrtsy.b"
        immer vom Linker eingebunden wird.
        (Muž ja auch sein, damit alles l„uft...)



        Die Optionen von F77.TTP...
        ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

        ...noch werden nicht alle Optionen des BC-Fortrans von F77.TTP
        bedient.
        Aber das wird sich evolution„r „ndern...

        Momentan werden folgende Optionen erkannt:

           -c   compile only
           -f   no casefolding, distinguish upper and lowercase
           -g   compile with debug code
           -n   no actions, only show commands...
           -O   optimize (currently only optimizes linking)
           -r   don't link with MATHLIB.B
           -sn  set stack size to n kBytes
           -v   verbose compile and link
           -vc  verbose compile
           -vl  verbose link

        ...und noch zwei weitere, aber darauf w„re ja jeder selbst gekommen.
        ...oder etwa nicht ?

           -?   helptext
           -h   helptext

        Dem alten BC-Fortran-Hasen f„llt natrlich sofort auf, daž dies
        nicht die blichen Optionen von BCF und BCL sind.
        Schaut man sich aber mal die Optionen g„ngiger C-Compiler-Driver an,
        so f„llt sofort auf, daž ich versucht habe, die Optionen „hnlich zu
        gestalten.

        So soll es auch bleiben. Amen !



        Bugs
        ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

        - Scheinbar geben BCF und BCL keine Fehlercodes zurck...
          Nach einer erfolglosen Compilierung wird also dennoch der Linker
          bemht.
          Dieser n”rgelt dann natrlich an, er k”nne sein File nicht finden.
             Das wird eventuell sp„ter mal durch eine FILEEXIST()-Abfrage
             abgefangen werden...

        - Mit BC-Fortran erstellte Programme laufen nicht sauber im Konsole-
          Fenster von GEMINI. Vom Desktop aus ge-doppelklick-startet, machen
          sie keine Probleme. Benamst man sie einfach zu TOS-Programmen um,
          so machen sie auch im Konsole-Fenster keinen Žrger.
             Hieran werde ich nichts „ndern, denn es ist durch einen kleinen
             Patch in BCL.TTP behebbar...
             Einen File-Monitor (z.B.: SED von der Kleisterscheibe) nehmen
             und in BCL.TTP die Zeichenfolge ".prg" suchen und durch ".tos"
             ersetzen !



        Ausklang
        ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

        Hab ich nun alles Wichtige erw„hnt ?
        Ich hoffe ja...

        Falls doch nicht, einfach mal melden bei:

           Ulf Bartelt

           Fido       : 2:241/4530.2
           Earn/Bitnet: stub @ dcztu1
           Internet   : stub @ ibm.rz.tu-clausthal.de



Back to Fortran