ING_DB
This commit is contained in:
parent
b995e725a4
commit
97f943910a
|
|
@ -0,0 +1,951 @@
|
||||||
|
.ds RF \f3LIBRARY \f1
|
||||||
|
.ds RH \f3GUTIL \f1
|
||||||
|
.ds CH - % -
|
||||||
|
.ds LH Anwendung
|
||||||
|
.ds LF ING_DB 6.3/0
|
||||||
|
.bp
|
||||||
|
.NH 2
|
||||||
|
.ft B
|
||||||
|
Bibliotheksfunktionen **
|
||||||
|
.ft R
|
||||||
|
.LP
|
||||||
|
.sp 10
|
||||||
|
.NH 3
|
||||||
|
.ft B
|
||||||
|
Vorbemerkung **
|
||||||
|
.ft R
|
||||||
|
.LP
|
||||||
|
Zwangsl\o'a"'ufig werden bei einem so umfangreichen
|
||||||
|
Programmkomplex wie ING_DB eine Reihe von Bibliotheken
|
||||||
|
verwendet. Dieser Abschnitt soll keine Erl\o'a"'uterungen
|
||||||
|
zum Inhalt und zur Leistung der einzelnen Prozeduren
|
||||||
|
und Funktionen
|
||||||
|
bringen, es soll nur auf einige Besonderheiten
|
||||||
|
hingewiesen werden. Mit dem \o'U"'bergang von UNIX Version 6
|
||||||
|
zu Version 7 wurden die Konvertierungsfunktionen
|
||||||
|
.ft B
|
||||||
|
atoX
|
||||||
|
.ft R
|
||||||
|
in ihrer Parameter\o'u"'bergabe bzw. -\o'u"'bernahme nicht
|
||||||
|
den Bedingungen der V7-Bibliothek
|
||||||
|
.ft B
|
||||||
|
libc.a
|
||||||
|
.ft R
|
||||||
|
angepasst. Es ist deshalb sinnvoll in AMX-Programmen
|
||||||
|
grunds\o'a"'tzlich die V6-Variante zu verwenden, um die
|
||||||
|
Namensgleichheit zu \o'u"'berbr\o'u"'cken.
|
||||||
|
.LP
|
||||||
|
Dar\o'u"'berhinaus kennt die Bibliothek
|
||||||
|
.ft B
|
||||||
|
gutil
|
||||||
|
.ft R
|
||||||
|
eine Reihe von Funktionen, deren Anwendung durchaus
|
||||||
|
Erleichterungen bei der Programmierung in C bringen kann,
|
||||||
|
ohne das Gesamtkonzept zu st\o'o"'ren. Allerdings wird
|
||||||
|
nachfolgend nur ein sehr bescheidener Teil der Prozeduren
|
||||||
|
beschrieben.
|
||||||
|
.NH 3
|
||||||
|
.ft B
|
||||||
|
Funktionen **
|
||||||
|
.ft R
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3APPEND \f1
|
||||||
|
.DE
|
||||||
|
.ft B NAME
|
||||||
|
.IP
|
||||||
|
append - Block-Verkettung
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
append (b1, l1, b2, l2, b3)
|
||||||
|
int l1, l2;
|
||||||
|
char *b1, *b2, *b3;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
Die Bl\o'o"'cke b1 und b2, jeweils mit der L\o'a"'nge l1 und l2, werden
|
||||||
|
zum Block b3 verkettet. "return" erfolgt mit der Adresse des
|
||||||
|
ersten Bytes nach b3.
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
FEHLER
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
Es wird nicht gepr\o'u"'ft, ob die Bl\o'o"'cke in unzul\o'a"'ssiger Weise
|
||||||
|
\o'u"'berlappen.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3ATOF \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
atof - konvertiert eine Zeichenkette in eine Float-Zahl
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
atof (str, val)
|
||||||
|
char *str;
|
||||||
|
double *val;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
atof konvertiert eine durch str adressierte Zeichenkette in eine
|
||||||
|
float-Zahl. Das Ergebnis steht auf der durch val adressierten
|
||||||
|
Variablen.
|
||||||
|
.br
|
||||||
|
.RS
|
||||||
|
.IP return: 8
|
||||||
|
-1 Syntaxfehler
|
||||||
|
.br
|
||||||
|
0 keine Fehler
|
||||||
|
.br
|
||||||
|
1 \o'U"'berlauf
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
Syntax:
|
||||||
|
.IP
|
||||||
|
{<sp>}[+|-]{<sp>}{<Ziffer>}[. <Ziffer>]{<sp>}[<exp>]
|
||||||
|
.sp
|
||||||
|
wobei "sp" ein Leerzeichen, exp=[e|E]<int> der Exponent und int
|
||||||
|
eine Integer Zahl im Sinne der Konvertierungsfunktion atoi ist.
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SIEHE-AUCH
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
atoi()
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3ATOI \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
atoi - konvertiert eine Zeichenkette in eine Integerzahl
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
atoi (str, val)
|
||||||
|
char *str;
|
||||||
|
int *val;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
atoi konvertiert eine durch str adressierte Zeichenkette
|
||||||
|
in eine 16-Bit Integer-Zahl.
|
||||||
|
Das Ergebnis steht auf der durch val adressierten Variablen.
|
||||||
|
.br
|
||||||
|
.RS
|
||||||
|
.IP return: 8
|
||||||
|
-1 Syntaxfehler
|
||||||
|
.br
|
||||||
|
0 keine Fehler
|
||||||
|
.br
|
||||||
|
1 \o'U"'berlauf
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
Syntax:
|
||||||
|
.IP
|
||||||
|
{<sp>}[+|-]{<sp>}{Ziffer}{<sp>}
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3ATOL \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
atol - konvertiert eine Zeichenkette in eine Long-Zahl
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
atol (str, val)
|
||||||
|
char *str;
|
||||||
|
int *val;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
atol konvertiert eine durch str adressierte Zeichenkette
|
||||||
|
in eine 32-Bit Integer-Zahl.
|
||||||
|
Das Ergebnis steht auf der durch val adressierten Variablen.
|
||||||
|
.RS
|
||||||
|
.IP return: 8
|
||||||
|
-1 Syntaxfehler
|
||||||
|
.br
|
||||||
|
0 keine Fehler
|
||||||
|
.br
|
||||||
|
1 \o'U"'berlauf
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
Syntax:
|
||||||
|
.IP
|
||||||
|
{<sp>}[+|-]{<sp>}{Ziffer}{<sp>}
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3BEQUAL \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
bequal - Test auf Blockgleichheit
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
bequal (a, b, l)
|
||||||
|
char *a, *b;
|
||||||
|
int l;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.ft B
|
||||||
|
bequal
|
||||||
|
.ft R
|
||||||
|
testet zwei Bl\o'o"'cke a und b, beide in der L\o'a"'nge l,
|
||||||
|
auf Gleichheit.
|
||||||
|
.RS
|
||||||
|
.IP return: 8
|
||||||
|
1 bei Gleichheit
|
||||||
|
.br
|
||||||
|
0 bei Ungleichheit
|
||||||
|
.RE
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3BITPOS \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
bitpos - h\o'o"'chstwertige Bitposition ermitteln
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
bitpos (w)
|
||||||
|
.br
|
||||||
|
int w;
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
bitpos ermittelt die Stellung des h\o'o"'chstwertigen Bits
|
||||||
|
der 16-Bit Integer-Zahl w.
|
||||||
|
Die Bits werden von rechts nach links, beginnend mit Null,
|
||||||
|
aufsteigend numeriert.
|
||||||
|
.RS
|
||||||
|
.IP return: 8
|
||||||
|
0, . . . , 15 entsprechend der Bitposition,
|
||||||
|
.br
|
||||||
|
-1 wenn kein Bit gesetzt ist.
|
||||||
|
.RE
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3BMOVE \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
bmove - Block Transport
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
char *bmove (a, b, l)
|
||||||
|
char *a, *b;
|
||||||
|
int l;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
bmove transportiert l Bytes von a nach b.
|
||||||
|
Die Sinnf\o'a"'lligkeit von l und ein "\o'U"'berlauf" von b
|
||||||
|
werden nicht gepr\o'u"'ft.
|
||||||
|
.IP
|
||||||
|
"return" erfolgt mit der Adresse des l+1. Elementes von b.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3CONCAT \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
concat - Zeichenketten Verkettung
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
char *concat (s1, s2, s3)
|
||||||
|
char *s1, *s2, *s3;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
Die Zeichenketten s1 und s2 werden zur Zeichenkette s3 verkettet.
|
||||||
|
Dabei d\o'u"'rfen s1 und s3 \o'u"'berlappen.
|
||||||
|
"return" erfolgt mit der Adresse des letzten Bytes (Null-Byte)
|
||||||
|
von s3.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3FTOA \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
ftoa - konvertiert eine Gleitkommazahl in eine Zeichenkette
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
ftoa (val, str, l, prec, form)
|
||||||
|
.br
|
||||||
|
double val;
|
||||||
|
.br
|
||||||
|
char *str, form;
|
||||||
|
.br
|
||||||
|
int l, prec;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
ftoa konvertiert eine doppeltgenaue Gleitkommazahl val in eine
|
||||||
|
entsprechende Zeichenkette str. Die Zeichenkette str muss
|
||||||
|
mindestens in der L\o'a"'nge l+1 vereinbart sein.
|
||||||
|
Die Genauigkeit prec gibt die Anzahl der Stellen nach dem
|
||||||
|
Dezimalpunkt an. Mit "form" wird das
|
||||||
|
Ausgabeformat festgelegt.
|
||||||
|
Es kann die Werte e, E, f, F, g, G, n<, N annehmen. E steht f\o'u"'r die
|
||||||
|
exponentielle- und F f\o'u"'r die Gleitkommadarstellung. G und N sind
|
||||||
|
analog zu F; passt die konvertierte Zahl aber nicht in die
|
||||||
|
Ausgabebreite, wird auf die exponentielle Form umgeschaltet.
|
||||||
|
G garantiert die Ausrichtung des Dezimalpunktes, N nicht.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3GETSTR \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
getstr - liesst eine Zeichenkette von der Standard-Eingabe
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
getstr (str, d, n)
|
||||||
|
char *str, d;
|
||||||
|
int n;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
Es werden Zeichen von der Standard-Eingabe nach str \o'u"'bertragen
|
||||||
|
und zwar solange, bis der Begrenzer
|
||||||
|
.ft B
|
||||||
|
d
|
||||||
|
.ft R
|
||||||
|
erkannt wird.
|
||||||
|
Dabei werden h\o'o"'chstens n Zeichen \o'u"'bertragen. Wenn der
|
||||||
|
Begrenzer nach n Zeichen noch nicht erkannt wurde,
|
||||||
|
werden alle weiteren Zeichen bis zur Erkennung des Begrenzers
|
||||||
|
\o'u"'bergangen. An Stelle des Begrenzers wird in jedem Falle
|
||||||
|
das Null-Byte \o'u"'betragen, sodass das Feld str mindestens von
|
||||||
|
der L\o'a"'nge n+1 sein muss.
|
||||||
|
"return" erfolgt mit dem Wert 1. Sollte vor der Erkennung des
|
||||||
|
Begrenzers das file-Ende erkannt werden, wird die Zeichenkette
|
||||||
|
ebenfalls mit dem Null-Byte abgeschlossen. "return" erfolgt dann
|
||||||
|
mit dem Wert 0.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3IOCV \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
iocv - konvertiert eine Integer-Zahl in eine Zeichenkette
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
iocv (i)
|
||||||
|
int i;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
Die Integer-Zahl i wird mittels der Funktion itoa in eine
|
||||||
|
Zeichenkette konvertiert. Das Ergebniss wird in einem internen
|
||||||
|
statischen Bereich gespeichert, dessen Adresse durch
|
||||||
|
"return" zur\o'u"'ckgegeben wird.
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SIEHE AUCH
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
itoa ()
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3ITOA \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
itoa - konvertiert 16-Bit Integerzahl in Zeichenkette
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
itoa (i, str)
|
||||||
|
int i;
|
||||||
|
char *str;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
Die Integer-Zahl i wird in eine 7 Byte lange Zeichenkette konvertiert
|
||||||
|
und in dem durch str adressierten Feld gespeichert.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3LENGTH \f1
|
||||||
|
.DE
|
||||||
|
.LP
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
length - ermittelt die L\o'a"'nge einer Zeichenkette
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
length (str)
|
||||||
|
char *str;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
Es wird die Anzahl der Bytes einer Zeichenkette, mit Ausnahme
|
||||||
|
des die Kette abschliessenden Null-Bytes, ermittelt und
|
||||||
|
durch "return" zur\o'u"'ckgegeben.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3OATOI \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
oatoi - konvertiert eine Zeichenkette, die eine Oktalzahl
|
||||||
|
darstellt, in eine Integer-Zahl
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
oatoi (str)
|
||||||
|
char *str;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
oatoi konvertiert die Zeichenkette str, die nur oktale Ziffern
|
||||||
|
und kein Vorzeichen enthalten darf, in eine 16-Bit Integer-Zahl.
|
||||||
|
Die Konvertierung wird beendet, sobald ein Zeichen ungleich einer
|
||||||
|
Oktalziffer erkannt wird. Der konvertierte Wert wird durch
|
||||||
|
"return" zur\o'u"'ckgegeben.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3PAD \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
pad - f\o'u"'llt eine Zeichenkette mit Leerzeichen auf
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
pad (str, l)
|
||||||
|
char *str;
|
||||||
|
int l;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
pad f\o'u"'llt die Zeichenkette str vom Null-Byte an bis zum
|
||||||
|
Erreichen der l-ten Position mit Leerzeichen, vorausgesetzt,
|
||||||
|
l ist gr\o'o"'sser als die L\o'a"'nge der Zeichenkette.
|
||||||
|
Erf\o'u"'llt l diese Bedingung nicht, wird die Kette nicht ver\o'a"'ndert.
|
||||||
|
pad wird durch den Aufruf von pmove (str, str, l, ' ') realisiert.
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SIEHE AUCH
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
pmove ()
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3PMOVE \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
pmove - transportiert eine Zeichenkette und f\o'u"'llt auf
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
char *pmove (str, b, l, c)
|
||||||
|
char *str, *b, c;
|
||||||
|
int l;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
pmove transportiert die Zeichenkette str in den Speicherbereich b.
|
||||||
|
Dabei werden genau l Bytes \o'u"'bertragen. Ist die Zeichenkette l\o'a"'nger,
|
||||||
|
wird abgeschnitten, ist sie k\o'u"'rzer, wird ab Nullbyte mit dem Zeichen
|
||||||
|
c aufgef\o'u"'llt.
|
||||||
|
.RE
|
||||||
|
.lP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3PRARGS \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
prargs - protokolliert die Argumente einer Kommandozeile
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
prargs (pc, pv)
|
||||||
|
int pc;
|
||||||
|
char **pv;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
prargs protokolliert \o'u"'ber Standardausgabe die Argumente einer
|
||||||
|
Kommandozeile (main(argc, argv)). Dabei werden Sonderzeichen
|
||||||
|
(Zeichen, deren oktaler Code zwischen 040 und 0177 liegt)
|
||||||
|
als Oktalzahl protokolliert.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3SCOMPARE \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
scompare - vergleicht zwei Zeichenketten
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
scompare (stra, la, strb, lb)
|
||||||
|
char *stra, *strb;
|
||||||
|
int la, lb;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.tf R
|
||||||
|
.IP
|
||||||
|
Zwei Zeichenketten stra und strb werden auf der Basis ihres
|
||||||
|
ascii-Codes verglichen. Die Anzahl der zu vergleichenden Zeichen
|
||||||
|
wird durch la bzw. lb definiert.
|
||||||
|
Die Zeichenkettenl\o'a"'ngen sollten mindestens so gross, wie die
|
||||||
|
angegebenen Vergleichsl\o'a"'ngen la und lb sein, andernfalls wird
|
||||||
|
als Vergleichswert das Nullbyte benutzt.
|
||||||
|
Werden die L\o'a"'ngen la und lb mit dem Wert Null angegeben, so
|
||||||
|
wird daf\o'u"'r automatisch ein Maximalwert (32767) benutzt.
|
||||||
|
Ebenso wird, falls la und lb ungleich sind f\o'u"'r die Kette
|
||||||
|
mit der kleineren Vergleichsl\o'a"'nge das Nullbyte zum Vergleich benutzt.
|
||||||
|
Leerzeichen werden \o'u"'bergangen.
|
||||||
|
IP return: 8
|
||||||
|
-1 stra < strb
|
||||||
|
.br
|
||||||
|
0 stra = strb
|
||||||
|
.br
|
||||||
|
1 stra > strb
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3SEQUAL \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
sequal - testet zwei Zeichenketten auf Gleichheit
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
sequal (stra, strb)
|
||||||
|
.br
|
||||||
|
char *stra, *strb;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
Zwei Zeichenketten stra und strb werden auf absolute Gleichheit getestet.
|
||||||
|
"return" erfolgt mit 1 bei Gleichheit, sonst mit 0.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3SMOVE \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
smove - Zeichenkette transportieren
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
smove (str, b)
|
||||||
|
.br
|
||||||
|
char *str, *b;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
Die Zeichenkette str wird zum Block b transportiert.
|
||||||
|
"return" erfolgt mit der L\o'a"'nge der transportierten Zeichenkette.
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3SYSERR \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
syserr - Systemfehlermitteilung und Abbruch
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
syserr (ptr)
|
||||||
|
char *ptr;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
syserr liefert eine Fehlermitteilung \o'u"'ber Standardausgabe
|
||||||
|
und bricht im Normalfall durch Aufruf der Funktion exit ab.
|
||||||
|
Argumente f\o'u"'r syserr sind in der gleichen Form
|
||||||
|
wie bei printf anzugeben. Sie sind allerdings in ihrer
|
||||||
|
Anzahl auf 5 beschr\o'a"'nkt.
|
||||||
|
syserr unterscheidet zwei Aufrufarten:
|
||||||
|
.RS
|
||||||
|
.IP 1.
|
||||||
|
der erste Parameter ist Null (die folgenden Parameter
|
||||||
|
wie bei printf), dann wird genau die
|
||||||
|
printf Funktion realisiert.
|
||||||
|
.IP 2.
|
||||||
|
Der erste Parameter ist nicht Null (also alle Parameter
|
||||||
|
wie bei printf), dann wird mit Hilfe der externen Variablen
|
||||||
|
char *Proc_name und int erron, Acceerror eine erweiterte
|
||||||
|
Fehlerprotokollierung realisiert (UNIX error,
|
||||||
|
ACCESS METHOD error, mit Angabe einer Fehlernummer
|
||||||
|
und eventuell vorangestelltem Programmnamen).
|
||||||
|
.RE
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3XPUTCHAR \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
xputchar - Zeichenausgabe \o'u"'ber Standard-output
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
xputchar (c)
|
||||||
|
.br
|
||||||
|
char c;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
xputchar \o'u"'bertr\o'a"'gt alle Zeichen mit Ausnahme derer,
|
||||||
|
deren oktaler Code gr\o'o"'sser als 040
|
||||||
|
und kleiner als 0200 ist (Sonderzeichen)
|
||||||
|
mittels der Funktion putchar zur Standardausgabe.
|
||||||
|
Sonderzeichen werden mittels printf als Oktalzahl
|
||||||
|
zur Standardausgabe geleitet.
|
||||||
|
Diesen wird das Zeichen "\\" vorangestellt.
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SIEHE AUCH
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
printf (), putchar()
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
------------------------------------------------------------
|
||||||
|
.sp 2
|
||||||
|
.DS C
|
||||||
|
\f3ZTACK \f1
|
||||||
|
.DE
|
||||||
|
.ft B
|
||||||
|
NAME
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
ztack - Zeichenkettenverkn\o'u"'pfung in einem Puffer
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SYNOPSIS
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
.DS L
|
||||||
|
char *ztack (stra, strb()
|
||||||
|
.br
|
||||||
|
char *stra;
|
||||||
|
char *strb;
|
||||||
|
.DE
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
BESCHREIBUNG
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
Die Zeichenketten stra und strb werden in einem
|
||||||
|
statischen Pufferbereich zu einer Zeichenkette verbunden.
|
||||||
|
"return" erfolgt mit der Anfangsadresse
|
||||||
|
des Puffers. Bei Puffer\o'u"'berlauf wird mittels Funktion syserr
|
||||||
|
der Fehlersachverhalt "ztack overflow" nebst Pufferinhalt mitgeteilt.
|
||||||
|
Der Puffer fasst maximal 100 Zeichen, wobei das Programm so angelegt ist,
|
||||||
|
das erst nach dem Umspeichern der Zeichenkette in den Puffer auf \o'U"'berlauf
|
||||||
|
getestet wird. Ein rekursiver Aufruf von ztack ist m\o'o"'glich
|
||||||
|
(ztack(ztack(x, y), z)).
|
||||||
|
.RE
|
||||||
|
.sp 1
|
||||||
|
.ft B
|
||||||
|
SIEHE AUCH
|
||||||
|
.ft R
|
||||||
|
.IP
|
||||||
|
syserr ()
|
||||||
|
.RE
|
||||||
Loading…
Reference in New Issue