ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ³
³ Ûßßßß ßßßßÛ ßßßßÛ Ein Compiler-Driver fr ³
³ ÛÜÜÜ Üß Üß 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 fhrt, 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
bemht, es entsteht lediglich ein neues "test.b" (so man
keinen Mll 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 natrlich 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 zurck...
Nach einer erfolglosen Compilierung wird also dennoch der Linker
bemht.
Dieser n”rgelt dann natrlich 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