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