This commit is contained in:
Oliver Lehmann 1989-04-25 15:13:02 +00:00
parent d3a90c3c80
commit dcecb90949
2 changed files with 865 additions and 0 deletions

View File

@ -0,0 +1,396 @@
@ @ @ @ @
@ @ @@ @@ @ @
@ @ @ @ @ @ @ @
@ @ @ @ @ @
@@@@@@@ @ @ @ @
@ @ @ @ @ @
@ @ @ @ @ @
@ @ @ @ @@@@@
@ @ @@ @ @ @
@ @ @ @ @ @ @
@ @ @ @ @ @ @
@ @ @ @@ @ @
@@@@ @ @ @@@@@
@@@@@@@ @@@@@@@ @@@@@@@
@ @ @ @ @
@ @ @
@@@@@ @ @
@ @ @
@ @ @
@ @ @
J . W e n z l a f f
Z K I d e r A d W
K u r s t r . 3 3
-----------------------
B E R L I N , 1 0 8 6
- 1 -
ING_DB 6.3/4 AMX(FORTRAN77)
EINLEITUNG
Fuer die Einbindung von Datenbankaktionen in FORTRAN77 unter
UNIX bsd 2.9 stehen die AMX-Compiler `amxf' und `oamxf' zur
Verfuegung. `oamxf' ist die overlay-Version von `amxf'.
Die Datenbankaktionen werden in AMX/C programmiert und mit
`amxf' uebersetzt, alle anderen Programmteile koennen in
FORTRAN77 geschrieben werden. Sie werden mit `f77' ueber-
setzt und mit `amxf' bzw. `oamxf' gelinkt (verbunden).
Die Verwendung von `amxf' zur Programmerstellung erfordert
keine Angabe einer speziellen AMX-Bibliothek (analog zu
`amx'). Die Verwendung von `oamxf' erfordert vom Nutzer
1. die Angabe des Flags `-V' beim Uebersetzen der zu
ueberlagernden Moduln
2. die Angabe der ueberlagerbaren AMX-Bibliotheken
-lova1 bzw. `.../lib/libova1.a'
-lova2 bzw. `.../lib/libova2.a'
-lova3 bzw. `.../lib/libova3.a'
-lova4 bzw. `.../lib/libova4.a'
wobei der Pfad `.../' das home-directory des Da-
tenbanksystems ING_DB 6.3 angeben soll.
Jede Bibliothek belegt ein Textsegment (8 KByte). Ent-
sprechend der Ueberlagerungsstruktur koennen die Biblio-
theken verteilt werden. Die Nummerierung schreibt aber die
Reihenfolge der Angabe beim Verbinden vor.
EIN-/AUSGABEN
Solange in FORTRAN77 und C jeweils verschiedene Dateien an-
gesprochen werden, koennen ohne Sprachmixprobleme beliebige
Ein-/Ausgabeoperationen ausgefuehrt werden. Gleiche Dateien
koennen nur dann in beiden Sprachen angesprochen werden,
wenn es sich um die Standard-Ein- oder -Ausgabedatei han-
delt.
FORTRAN77 C
--------- ---------------------
Einheit 5 stdin (Deskriptor 0)
Einheit 6 stdout (Deskriptor 1)
Einheit 0 stderr (Deskriptor 2)
Einheit 5, 6 oder 0 in FORTRAN77 darf dabei keiner anderen
Datei zugewiesen werden, wie auch stdin, stdout oder stderr
bzw. Deskriptor 0, 1 oder 2 in C. In C sollten die Stan-
darddateien auch nicht gepuffert werden (s. SETBUF(III)).
- 1 -
ING_DB 6.3/4 AMX(FORTRAN77)
FELDER
In FORTRAN77 beginnen Indizes von Felder (Vektoren) immer
mit 1, in C dagegen mit 0.
Beispiel
FORTRAN77: array(n) hat die Indizes 1 .. n
C array[n] hat die Indizes 0 .. (n - 1)
Probleme koennen immer dann auftreten, wenn ueber Argumente
ein Index uebermittelt wird, der den Bearbeitungsstand des
Feldes ausdruecken soll. Die Uebermittlung der Kardinali-
taet des Feldes (Anzahl der Feldelemente) bringt keine Pro-
bleme.
In mehrdimensionalen Feldern hat in FORTRAN77 Spalte vor
Zeile, in C Zeile vor Spalte Vorrang.
FORTRAN77
+-----------------------------------+
a(2,3) | 1,1 | 1,2 | 1,3 | 2,1 | 2,2 | 2,3 |
a(3,2) | 1,1 | 1,2 | 2,1 | 2,2 | 3,1 | 3,2 |
a(6) | 1 | 2 | 3 | 4 | 5 | 6 |
+-----------------------------------+
C
+-----------------------------------+
a[6] | 0 | 1 | 2 | 3 | 4 | 5 |
a[2,3] | 0,0 | 1,0 | 0,1 | 1,1 | 0,2 | 1,2 |
a[3,2] | 0,0 | 1,0 | 2,0 | 0,1 | 1,1 | 2,1 |
+-----------------------------------+
FORTRAN77 KONVENTIONEN
Der Eintrittspunkt in das FORTRAN77-Programm ist
subroutine amx()
Damit wird eine ordnungsgemaesse Datenbankinitialisierung
und -beendigung gesichert.
Fuer FORTRAN77 gibt es keine weiteren Konventionen zu
beachten, folgende Hinweise sollen die Arbeit etwas erleich-
tern:
- Vermeiden Sie die Verwendung von Funktionen, die
in C geschrieben sind und von FORTRAN77 aufgerufen
werden, solange Sie den Mechanismus der Argu-
mentuebergabe nicht vollstaendig verstanden haben.
- Stringvariablen in FORTRAN77, die Zeichenketten-
domaenen aufnehmen sollen, muessen ein Zeichen
laenger sein, als die Laenge der Zeichenketten-
domaene in der Datenbank, auch wenn FORTRAN77 das
Abschlusszeichen `\0' fuer die Zeichenkette nicht
- 2 -
ING_DB 6.3/4 AMX(FORTRAN77)
benoetigt.
- Schon sehr kleine AMX/FORTRAN77-Programme belegen
den vollen Adressraum. Benutzen Sie von vornhe-
rein die Ueberlagerungsstrukturen.
- Benutzen Sie fuer AMX/F-Austauschobjekte vom Typ
`integer' immer `integer*2' bzw. `integer*4'.
C KONVENTIONEN
Vom C-Teil der C/FORTRAN77-Programmen koennen alle
FORTRAN77-Objekte (Routinen, Daten), vom FORTRAN77-Teil
koennen nur bestimmte C-Objekte benutzt werden.
NAMEN
FORTRAN77-Namen (Symbole) duerfen maximal 6 Zeichen lang
sein. In C muss an den FORTRAN77-Namen ein zusaetzlicher
Unterstrich `_' angehaengt werden, um FORTRAN77-Objekte in C
zu erreichen.
z.B. FORTRAN77 name string func
C name_ string_ func_
Normalerweise wird in FORTRAN77 Gross- und Kleinschreibung
nicht unterschieden, d.h. der FORTRAN77-Compiler uebersetzt
alle Gross- in Kleinbuchstaben. Das `f77'-Flag `-U'
gestattet die Verwendung von Gross- und Kleinbuchstaben.
TYPKONVERSIONEN
Fuer die Typen in FORTRAN77 und C gelten folgende Zuordnun-
gen:
integer*2 short bzw. short int
integer long bzw. long int
oder
short bzw. short int
(siehe `f77'-Flag `-i2')
integer*4 long bzw. long int
logical long bzw. long int
oder
short bzw. short int
(siehe `f77'-Flag `-i2')
real float
double precision double
complex struct { float r, i; }
double complex struct { double r, i; }
character*n char [n]
- 3 -
ING_DB 6.3/4 AMX(FORTRAN77)
ARGUMENTKONVERSIONEN
In FORTRAN77 werden Parameter grundsaetzlich durch
Adressverweise (Call By Reference) uebergeben, einige Para-
meter (Funktionen, Parameter vom Typ character*n) erzeugen
einen zusaetzlichen Laengenparameter vom Typ integer*4 bzw.
long.
subroutine f(..., x, ...) f_(..., x, ...)
integer*2 x short *x;
subroutine f(..., x, ...) f_(..., x, ...)
integer x long *x;
oder
short *x;
(siehe `f77'-Flag `-i2')
subroutine f(..., x, ...) f_(..., x, ...)
integer*4 x long *x;
subroutine f(..., x, ...) f_(..., x, ...)
logical x long *x;
oder
short *x;
(siehe `f77'-Flag `-i2')
subroutine f(..., x, ...) f_(..., x, ...)
real x float *x;
subroutine f(..., x, ...) f_(..., x, ...)
double precision x double *x;
subroutine f(..., x, ...) f_(..., x, ...)
complex x struct {float r, i; } *x;
subroutine f(..., x, ...) f_(..., x, ...)
double complex x struct {double r, i; } *x;
subroutine f(..., x, ...) f_(..., x, ..., xlen)
character*(*) x char x[];
long xlen;
subroutine f(..., x, ...) f_(..., x, ..., xnull)
subroutine x int (*x)();
long xnull; /* == 0L */
- 4 -
ING_DB 6.3/4 AMX(FORTRAN77)
FUNKTIONSKONVERSIONEN
Fuer die Uebergabe von Funktionswerten an aufrufende Routi-
nen gelten folgende Zuordnungen:
integer*2 function f(...) short f_(...)
integer function f(...) long f_(...)
oder
short f_(...)
(siehe `f77'-Flag `-i2')
integer*4 function f(...) long f_(...)
logical function f(...) long f_(...)
oder
short f_(...)
(siehe `f77'-Flag `-i2')
real function f(...) nicht darstellbar, weil
float in Ausdruecken
immer in double umgewan-
delt wird
double precision function f(...) double f_(...)
complex function f(...) f_(r, ...)
struct {float r, i;} *r;
double complex function f(...) f_(r, ...)
struct {double r, i;} *r;
character*n function f(...) f_(r, l...)
char r[];
long l;
- 5 -

View File

@ -0,0 +1,469 @@
.pl 66
.ll 65
.ns
.po 5
.nr in 5
.de i0
.in \n(in
..
.de lp
.i0
.if !\n(.V .ta \\$2+1
.if \n(.V .ta \\$2
.in \\$1
.ti -\\$2
..
.de s1
.sp 1
.ne 4
..
.de s2
.sp 1
..
.de fo
'sp 2
'tl ''- % -''
'bp
..
.de th
.de x1
.rs
'sp 4
'tl '\\*(II/\\$3''\\$1(\\$2)'
'sp 2
\\..
.wh -7 fo
.wh 0 x1
.pn 1
'fi
'ad
.bp
.in \n(in
.dt
..
.de sh
.i0
.s1
.ne 5
.ti 0
\\$1
.br
..
.de dt
.ta 8 16 24 32 40 48 56 64
..
.ds II ING_DB 6.3
.ds UU UNIX
.ds AA AMX
.ds FF FORTRAN77
.if !\n(.V .ds +- +-
.if \n(.V .ds +- \(+-
.ds ** *
.ds - -
.ds _ _
.ds v |
.hy 0
.so f77.um
.nf
.fi
.sp 5
.nf
@ @ @ @ @
@ @ @@ @@ @ @
@ @ @ @ @ @ @ @
@ @ @ @ @ @
@@@@@@@ @ @ @ @
@ @ @ @ @ @
@ @ @ @ @ @
.fi
.sp 5
.nf
@ @ @ @ @@@@@
@ @ @@ @ @ @
@ @ @ @ @ @ @
@ @ @ @ @ @ @
@ @ @ @@ @ @
@@@@ @ @ @@@@@
.fi
.sp 5
.nf
@@@@@@@ @@@@@@@ @@@@@@@
@ @ @ @ @
@ @ @
@@@@@ @ @
@ @ @
@ @ @
@ @ @
.fi
.sp 10
.nf
J . W e n z l a f f
Z K I d e r A d W
K u r s t r . 3 3
-----------------------
B E R L I N , 1 0 8 6
.fi
.th \*(AA \*(FF 4
.sh EINLEITUNG
F\*ur die Ein\%bin\%dung von Da\%ten\%bank\%aktio\%nen in
\*(FF unter
\*(UU bsd 2.9 stehen die
\*(AA\*-Compiler `amxf' und `oamxf' zur Ver\%f\*ugung.
`oamxf' ist die overlay\*-Ver\%sion von `amxf'.
.br
Die Da\%ten\%bank\%aktio\%nen wer\%den in
\*(AA/C pro\%gram\%miert und mit `amxf' \*uber\%setzt,
alle anderen Pro\%gramm\%tei\%le k\*on\%nen in
\*(FF ge\%schrie\%ben wer\%den.
Sie wer\%den mit `f77' \*uber\%setzt
und mit `amxf' bzw. `oamxf' gelinkt (ver\%bunden).
.br
Die Ver\%wen\%dung von `amxf' zur Pro\%gramm\%er\%stel\%lung
erfordert keine An\%ga\%be einer speziellen
\*(AA\*-Bib\%lio\%thek
(analog zu `amx').
Die Ver\%wen\%dung von `oamxf' erfordert vom Nutzer
.s2
.lp +10 5
1. die An\%ga\%be des Flags `\*-V' beim
\*Uber\%setzen der zu \*uber\%lagernden Moduln
.s2
.lp +10 5
2. die An\%ga\%be der \*uber\%la\%ger\%baren
\*(AA\*-Bib\%lio\%theken
.br
\*-lova1 bzw. `.../lib/libova1.a'
.br
\*-lova2 bzw. `.../lib/libova2.a'
.br
\*-lova3 bzw. `.../lib/libova3.a'
.br
\*-lova4 bzw. `.../lib/libova4.a'
.br
wobei der Pfad `.../' das home\*-directory
des Da\%ten\%bank\%sys\%tems \*(II an\%ge\%ben soll.
.i0
.s1
Jede Bib\%lio\%thek belegt ein Text\%seg\%ment
(8 KByte).
Ent\%sprech\%end der \*Uber\%la\%ge\%rungs\%struk\%tur k\*on\%nen
die Bib\%lio\%theken ver\%teilt wer\%den.
Die Num\%me\%rie\%rung schreibt aber
die Reihenfolge der An\%ga\%be
beim Ver\%bin\%den vor.
.s1
.sh "EIN\*-/AUSGABEN"
So\%lan\%ge in \*(FF und C jeweils ver\%schie\%dene
Da\%tei\%en an\%ge\%sprochen wer\%den,
k\*on\%nen ohne Sprach\%mix\%pro\%ble\%me
beliebige Ein\*-/Aus\%ga\%be\%ope\%ra\%tionen
ausgef\*uhrt wer\%den.
Glei\%che Da\%tei\%en k\*on\%nen nur dann
in bei\%den Spra\%chen an\%ge\%sprochen wer\%den,
wenn es sich um die Stan\%dard\*-Ein\*-
oder \*-Aus\%ga\%be\%da\%tei han\%delt.
.s2
.lp +25 20
\*(FF C
.br
.lp +25 20
\*-\*-\*-\*-\*-\*-\*-\*-\*- \*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-
.br
.lp +25 20
Einheit 5 stdin\ \ (Des\%krip\%tor 0)
.br
.lp +25 20
Einheit 6 stdout (Des\%krip\%tor 1)
.br
.lp +25 20
Einheit 0 stderr (Des\%krip\%tor 2)
.i0
.s1
Einheit 5, 6 oder 0 in \*(FF darf dabei keiner
anderen Da\%tei zugewiesen wer\%den,
wie auch stdin, stdout oder stderr
bzw. Des\%krip\%tor 0, 1 oder 2 in C.
In C soll\%ten die Stan\%dard\%da\%tei\%en auch
nicht ge\%puf\%fert wer\%den (s. SETBUF(III)).
.s1
.sh FELDER
In \*(FF beginnen Indizes von Fel\%der (Vek\%to\%ren)
immer mit 1,
in C dagegen mit 0.
.s1
Beispiel
.lp +20 15
\*(FF: array(n)\ \ \ hat die Indizes 1 .. n
.lp +20 15
C array[n]\ \ \ hat die Indizes 0 .. (n \*- 1)
.i0
.s1
Pro\%ble\%me k\*on\%nen immer dann auftreten,
wenn \*uber Ar\%gumente ein Index \*ubermittelt wird,
der den Be\%ar\%bei\%tungs\%stand des Fel\%des aus\%dr\*ucken soll.
Die \*Uber\%mitt\%lung der Kar\%di\%na\%li\%t\*at
des Fel\%des (Anzahl der Feld\%ele\%men\%te)
bringt keine Pro\%ble\%me.
.br
In mehr\%di\%men\%siona\%len Fel\%dern hat in \*(FF
Spalte vor Zei\%le,
in C Zei\%le vor Spalte Vorrang.
.s1
.nf
\*(FF
+\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-+
a(2,3) | 1,1 | 1,2 | 1,3 | 2,1 | 2,2 | 2,3 |
a(3,2) | 1,1 | 1,2 | 2,1 | 2,2 | 3,1 | 3,2 |
a(6) | 1 | 2 | 3 | 4 | 5 | 6 |
+\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-+
C
+\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-+
a[6] | 0 | 1 | 2 | 3 | 4 | 5 |
a[2,3] | 0,0 | 1,0 | 0,1 | 1,1 | 0,2 | 1,2 |
a[3,2] | 0,0 | 1,0 | 2,0 | 0,1 | 1,1 | 2,1 |
+\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-\*-+
.fi
.s1
.sh "\*(FF KONVENTIONEN"
Der Ein\%tritts\%punkt in das
\*(FF\*-Pro\%gramm ist
.s1
.in 15
subroutine amx()
.i0
.s2
Damit wird eine ordnungsgem\*a\*se
Da\%ten\%bank\%ini\%tia\%li\%sie\%rung und
\*-beendigung gesichert.
.br
F\*ur \*(FF gibt es keine weiteren Konventionen
zu beachten,
fol\%gen\%de Hin\%wei\%se sol\%len die Ar\%beit etwas er\%leich\%tern:
.s1
.lp +10 5
\*- Ver\%meiden Sie die Ver\%wen\%dung von Funk\%tio\%nen,
die in C ge\%schrie\%ben sind
und von \*(FF aufgerufen wer\%den,
so\%lan\%ge Sie den Me\%cha\%nis\%mus der
Ar\%gu\%ment\*uber\%ga\%be nicht voll\%st\*an\%dig ver\%stan\%den haben.
.s1
.lp +10 5
\*- Stringvariablen in \*(FF,
die Zei\%chen\%ket\%ten\%dom\*anen aufnehmen sol\%len,
m\*ussen ein Zei\%chen l\*anger sein,
als die L\*ange der Zei\%chen\%ket\%ten\%dom\*ane
in der Da\%ten\%bank,
auch wenn \*(FF das Abschlu\*szeichen `\e0'
f\*ur die Zei\%chen\%ket\%te nicht ben\*otigt.
.s2
.lp +10 5
\*- Schon sehr kleine
\*(AA/\*(FF\*-Pro\%gram\%me belegen
den vol\%len Adre\*s\%raum.
Benutzen Sie von vorn\%he\%rein die
\*Uber\%la\%ge\%rungs\%struk\%tu\%ren.
.s2
.lp +10 5
\*- Be\%nutzen Sie f\*ur \*(AA/\*FF\*-Aus\%tausch\%ob\%jek\%te
vom Typ `integer' immer `integer*2'
bzw. `integer*4'.
.s1
.sh "C KONVENTIONEN"
Vom C\*-Teil der C/\*(FF\*-Pro\%gram\%men
k\*on\%nen alle \*(FF\*-Objekte
(Rou\%ti\%nen, Da\%ten),
vom \*(FF\*-Teil k\*on\%nen nur bestimmte
C\*-Objekte benutzt wer\%den.
.s1
.sh "NAMEN"
\*(FF\*-Namen (Symbole)
d\*urfen maximal 6 Zei\%chen lang sein.
In C mu\*s an den \*(FF\*-Namen
ein zu\%s\*atz\%lich\%er Unterstrich `_'
an\%ge\%h\*angt wer\%den,
um \*(FF\*-Objekte in C zu erreichen.
.s1
.nf
z.B. \*(FF name string func
C name_ string_ func_
.fi
.s1
Normalerweise wird in \*(FF
Gro\*s\*- und Kleinschreibung
nicht unterschieden,
d.h. der \*(FF\*-Compiler \*uber\%setzt
alle Gro\*s\*- in Klein\%buch\%sta\%ben.
Das `f77'\*-Flag `\*-U' gestattet
die Ver\%wen\%dung von Gro\*s\*- und Klein\%buch\%sta\%ben.
.s1
.sh TYPKONVERSIONEN
F\*ur die Typen in \*(FF und C
gel\%ten fol\%gen\%de Zu\%ord\%nun\%gen:
.s1
.lp +30 25
integer*2 short bzw. short int
.lp +30 25
integer long bzw. long int
.br
oder
.br
short bzw. short int
.br
(siehe `f77'\*-Flag `\*-i2')
.lp +30 25
integer*4 long bzw. long int
.lp +30 25
logical long bzw. long int
.br
oder
.br
short bzw. short int
.br
(siehe `f77'\*-Flag `\*-i2')
.lp +30 25
real float
.lp +30 25
double precision double
.lp +30 25
complex struct { float r, i; }
.lp +30 25
double complex struct { double r, i; }
.lp +30 25
character*n char [n]
.i0
.s1
.sh ARGUMENTKONVERSIONEN
In \*(FF wer\%den Pa\%ra\%me\%ter grund\%s\*atz\%lich
durch Adre\*sver\%weise
(Call By Reference) \*ubergeben,
einige Pa\%ra\%me\%ter
(Funk\%tio\%nen, Pa\%ra\%me\%ter vom Typ character*n)
er\%zeu\%gen einen zu\%s\*atz\%lichen L\*an\%gen\%pa\%ra\%me\%ter
vom Typ integer*4 bzw. long.
.s1
.lp +30 30
subroutine f(..., x, ...) f_(..., x, ...)
.lp +30 30
integer*2 x short *x;
.s1
.lp +30 30
subroutine f(..., x, ...) f_(..., x, ...)
.lp +30 30
integer x long *x;
.br
oder
.br
short *x;
.br
(siehe `f77'\*-Flag `\*-i2')
.s1
.lp +30 30
subroutine f(..., x, ...) f_(..., x, ...)
.lp +30 30
integer*4 x long *x;
.s1
.lp +30 30
subroutine f(..., x, ...) f_(..., x, ...)
.lp +30 30
logical x long *x;
.br
oder
.br
short *x;
.br
(siehe `f77'\*-Flag `\*-i2')
.s1
.lp +30 30
subroutine f(..., x, ...) f_(..., x, ...)
.lp +30 30
real x float *x;
.s1
.lp +30 30
subroutine f(..., x, ...) f_(..., x, ...)
.lp +30 30
double precision x double *x;
.s1
.lp +30 30
subroutine f(..., x, ...) f_(..., x, ...)
.lp +30 30
complex x struct {float r, i; } *x;
.s1
.lp +30 30
subroutine f(..., x, ...) f_(..., x, ...)
.lp +30 30
double complex x struct {double r, i; } *x;
.s1
.lp +30 30
subroutine f(..., x, ...) f_(..., x, ..., xlen)
.lp +30 30
character*(*) x char x[];
.br
long xlen;
.s1
.lp +30 30
subroutine f(..., x, ...) f_(..., x, ..., xnull)
.lp +30 30
subroutine x int (*x)();
.br
long xnull; /* == 0L */
.s1
.i0
.s1
.sh FUNKTIONSKONVERSIONEN
F\*ur die \*Uber\%ga\%be von Funk\%tions\%wer\%ten
an aufru\%fen\%de Rou\%ti\%nen
gel\%ten fol\%gen\%de Zu\%ord\%nungen:
.s1
.lp +35 35
integer*2 function f(...) short f_(...)
.s1
.lp +35 35
integer function f(...) long f_(...)
.br
oder
.br
short f_(...)
.br
(siehe `f77'\*-Flag `\*-i2')
.s1
.lp +35 35
integer*4 function f(...) long f_(...)
.s1
.lp +35 35
logical function f(...) long f_(...)
.br
oder
.br
short f_(...)
.br
(siehe `f77'\*-Flag `\*-i2')
.s1
.lp +35 35
real function f(...) nicht darstellbar,
weil float in Aus\%dr\*ucken immer in double
um\%ge\%wan\%delt wird
.s1
.lp +35 35
double precision function f(...) double f_(...)
.s1
.lp +35 35
complex function f(...) f_(r, ...)
.br
struct {float r, i;} *r;
.s1
.lp +35 35
double complex function f(...) f_(r, ...)
.br
struct {double r, i;} *r;
.s1
.lp +35 35
character*n function f(...) f_(r, l...)
.br
char r[];
.br
long l;
.i0
.s1