ING_DB
This commit is contained in:
parent
d3a90c3c80
commit
dcecb90949
|
|
@ -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 -
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -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
|
||||
Loading…
Reference in New Issue