Anhang
A.I Untersuchung auf redundanzfreie Speicherung
Nonnalfonnelllehre
Gegenstand der foIgenden Erorterungen ist unsere Tabelle VERTRETER- TAETIGKEIT in der Form (siehe Abschnitt 2.1):
Grundlegend fUr eine theoretische Untersuchung, ob Daten iiberfliissigerweise in einer TabeIIe aufgefUhrt sind, ist die Normalformenlehre von Codd. Diese verfoIgt unter anderem das ZieI, eine TabeIIe so zu zergliedern, daB die Daten innerhalb der resultierenden Tabellen redundanifrei auftreten. Zur Vertiefung der nachfoIgenden Darstellung wird im Anhang A.2 ein Fallbeispiel zur Struk- turierung von Auftragsdaten vorgesteIIt. Der dort aufgefUhrte Datenbestand bildet die Grundlage fUr die in diesem Buch angegebenen Ubungsaufgaben.
Hinweis:
Die Normalformenlehre wurde auch deswegen entwickelt, um unerwiinschte Effekte beim Ein- fiigen (INSERT) wId Loschen (DELETE) von Tabellenzeilen auf Grund von Abhlingigkeiten zu vermeiden.
Die "1. Nonllalfonll"
Zunachst ist sicherzusteIIen, daB sich eine TabeIIe in der "1. Normalform" be- findet. Dies bedeutet, daB jeder Wert innerhalb einer TabeIIenzeiIe ein einzel- ner Wert (atomar) ist, der keine Zusammenfassung von mehreren Werten sein darf.
WeiI die von uns zu untersuchende AusgangstabeIIe VERTRETER-TAETIG- KElT in jeder Zeile und jeder Spalte genau einen Wert enthalt, befindet sie sich bereits in der "1. Normalform", so daB sie auf die "2. Normalform" iiberpriift werden kann.
A.I Untersuchung auf redundanzfreie Speicherung 275
Funktionale Abhangigkeit
Urn zu entscheiden, ob sich eine Tabelle in der "2. Normalforrn" befindet, mUs- sen wir "funktionale Abhiingigkeiten" untersuchen.
Dabei ist eine Eigenschaft B von einer Eigenschaft A dannfunktional abhlingig, wenn zu jedern Wert von A hOchstens ein Wert von B moglich ist.
Wir kennzeichen diesen Sachverhalt grafisch durch das Diagramm:
Z.B. ist V_NAME funktionaI abhangig von V _NR, weil zu jeder Vertreter- kennzahI genau ein Vertretername gehOrt. Dagegen ist etwa DATUM nicht funktionaI abhiingig von V _NR, da z.B. der VertreterkennzahI 8413 sowohI der Datumswert "24.06.89" aIs auch der Datumswert "25.06.89" zugeordnet ist (siehe die Tabelle VERTRETER-TAETIGKEIT).
GrundsatzliGh sind alle in einer Tabelle enthaltenen Merkmale funktionaI ab- hiingig vom IdentifikationsschlUssel, da durch jeden Wert dieses SchlUssels ge- nau eine Tabellenzeile identifiziert ist.
Die "2. Nonnalfonn"
Redundanzen treten unter anderem dann auf, wenn der IdentifikationsschliisseI aus mehreren Merkmalen aufgebaut ist. Daher sind Tabellen auf ihre "2. Nor- mal form " hin zu untersuchen, die folgendermaBen vereinbart ist:
Eine Tabelle ist dann in der "2. Normalform", wenn sich die Tabelle in der "1.
Normalform" befindet und jede Eigenschaft, die nicht zum Identifikations- schlUssel gehOrt, voll funktionaI abhiingig vom IdentifikationsschIUsseI ist.
Dabei bedeutet die "volle funktionale Abhlingigkeit", daB eine derartige Eigen- schaft von keinem MerkmaI funktionaI abhiingig sein darf, das Bestandteil des IdentifikationsschIUsseIs ist. Dies besagt, daB die foIgende Situation nicht vor- Iiegen darf:
f-Identifikationsschliissel ---i
A
I
In dieser Konstellation ist der IdentifikationsschlUssel aus mehreren SchlUssel- weTten aufgebaut und die Eigenschaft B sowohl funktional abhangig vom Iden- tifikationsschlUssel als auch von der Eigenschaft A als Teil des Identifikations- schlUssels.
Die Tabelle VERTRETER-TAETIGKEIT befindet sich nieht in der "2. Nor- malform" , da gilt:
V_NAME, V _ANSCH, V _PROV und V _KONTO sind sowohl funktional ab- hiingig vom IdentifikationsschlUssel (V _NR,A_NR,DA TUM) als auch vom SchlUsselbestandteil V _NR. A_NAME und A_PREIS sind sowohl funktional abhangig vom IdentifikationsschlUssel (V _NR,A_NR,DATUM) als auch vom SchlUsselbestandteil A_NR. Allein zu A_STUECK existiert kein SchlUsselbe- standteil, von dem A_STUECK funktional abhiingig ist.
Projektion
Bei einer Tabelle, die Dicht in der "2. Normalform" ist, mu6 der zusammenge- setzte IdentifikationsschlUssel geeignet aufgespaltet und die Tabelle entspre- chend zerlegt werden.
Wir stellen uns die Aufgabe, die Tabelle VERTRETER-TAETIGKEIT so zu zergliedern, daB sie aus den resultierenden Basistabellen rekonstruierbar ist (verlustfreie Zerlegung) und sich diese Basistabellen samtlich in der "2. Nor- malform" befinden. Dazu leiten wir die Tabellen VERTRETER, ARTIKEL und UMSATZ aus der Tabelle VERTRETER-TAETIGKEIT durch Projektio- nenab.
Eine Projektion ruhren wir dadurch aus, daB wir neue Tabellen erstellen, wobei wir ausgewahlte Tabellenspalten der Ausgangstabelle weglassen. Dies kenn- zeiehnen wir schematisch durch das Diagramm:
A.I Un tersuchung auf redundanzfreie Speicherung 277 In der resultierenden Tabelle lOschen wir die durch die Projektion evtl. entstan- denen gleichen TabelIenzeiIen, da wir die Redundanzfreiheit der Tabellen an- streben.
In unserem Fall fiihren wir die Projektionen in foIgender Weise durch:
VERTRETER-TAETIGKEIT
Verbuud
Zur Wiederherstellung der Ausgangstabelle aus den Basistabellen muB ein Ver- bund (Join) durchgefiihrt werden. Dazu sind die Identifikationsschliisselwerte abzugleichen und die Werte von korrespondierenden TabeIlenzeiIen zu einer neuen TabelIenzeiIe zusammenzufassen, was sich schematisch durch das fol- gende Diagramm kennzeichnen HiBt:
SoIl die AusgangstabeIle VERTRETER-TAETIGKEIT aus den durch Projek- tionen ermittelten TabeIIen VERTRETER, ARTIKEL und UMSA TZ wieder- gewonnen werden, so ist wie foIgt zu verfahren:
Ausgehend von der 1. TabeIIenzeiIe von UMSA TZ werden tiber die Inhalte von V _NR und A_NR die korrespondierenden TabeIIenzeilen von VERTRETER und ARTIKEL identifiziert. AnschlieBend werden die Werte aus den drei Ta-
bellenzeilen zu einer neuen Tabellenzeile zusammengesteIlt, wobei die SchlUs- selwerte von V _NR und A_NR nur einmal iibernommen werden. Dieses Ver- fahren wird fortgesetzt, bis aIle Zeilen der Tabelle UMSA TZ durchlaufen sind.
Als Resultat dieses Verbunds erhalten wir die Tabelle VERTRETER- TAETIGKEIT, die zuvor durch Projektionen zergliedert wurde.
Die "3. Nonnalfonn"
Durch die oben angegebenen Projektionen haben wir die Tabellen VERTRE- TER, ARTIKEL und UMSATZ in die "2. Normalform" iiberfiihrt. Urn das an- gestrebte Ziel der Redundanzfreiheit zu erreichen, miissen sich die Tabellen in der "3. Normalform" befinden.
Dabei besitzt eine Tabelle dann die "3. Normalform", wenn sie die "2. Normal- form" hat, und jede Eigenschaft, die nicht zum Identifikationsschliissel gehort, nicht transitiv funktional abhangig vom Identifikationsschliissel ist. Dies be- deutet, daB die folgende Situation nicht vorliegen darf:
Wir stellen fest, daB sich alle drei Tabellen VERTRETER, ARTIKEL und UMSATZ in der "3. Normalform" befinden. Dabei ist zu bedenken, daB A_PREIS deswegen nicht funktional abhangig von A_NAME ist, weil Ober- hemden zum Preis von 39,80 DM als auch von 44,20 DM umgesetzt werden.
Auch V _ANSCH ist nicht funktional abhangig von V_NAME, wei! nicht aus- geschlossen werden kann, daB zwei gleichnamige Vertreter mit verschiedenen Anschriften im Unternehmen beschaftigt sein konnen.
Anders ware dies z.B., falls wir in der Tabelle VERTRETER zusatzlich noch Angaben iiber die Gebiete hatten, in denen die Vertreter tatig sind, so daB sich diese Tabelle - zur Unterscheidung nennen wir sie vorubergehend VERTRE- TER-GEBIET - etwa so darstellen wiirde:
A.I Untersuchung auf redundanzfreie Speicherung VERTRETER-GEBIET(V_NR, V_NAME,
8413 Meyer, Emil Wendeweg 10, 2800 Bremen 5016 Meier, Franz Kohlstr. 1, 2800 Bremen 1215 Schulze, Fritz Gemuseweg 3, 2800 Bremen
0,07 725,15 Ostfriesland 0,05 200,00 2 Land Bremen 0,06 50,50 1 Ostfriesland
279
In diesem Fall ware G_NAME von G_NR und G_NR von V _NR funktional abhangig, d.h. G_NAME ware von V _NR transitiv funktional abhangig, so daB die "3. Normalform" Uber Projektionen erreicht werden mUBte. Dabei ware VERTRETER-GEBIET in folgender Weise auf die Tabellen VERTRETER und GEBIET zu projizieren:
VERTRETER-GEBIET
ZUS311ullellfassullg
Wir gelangen durch die Anwendung der Normalformenlehre zu denselben Ta- bel1en, die im Abschnitt 2.1 abgeleitet sind. Es zeigt sich, daB wir durch die Ausfiihrung der Normalisierungen schrittweise eine jeweils redundanzfreiere Strukturierung des Datenbestands erreicht haben und daB letztIich die drei re- sultierenden Tabellen VERTRETER, ARTIKEL und UMSA TZ redundanzfrei aufgebaut sind.
Werden Tabel1en aus inhaltlich orientierten Erwagungen aus einer Ausgangsta- belle abgeleitet, so ist es selbstversmndlich ausreichend, allein diese abgeleite- ten Tabellen - ohne RUckgriff auf die Ausgangstabelle - auf ihre Normalformen
280
hin zu untersuchen. Nur bei den Tabellen, die sich noch nicht in der "3. Nor- malform" befinden, sind dann weitere geeignete Projektionen durchzuflihren, damit die redundanzfreie Speicherung ermoglicht wird.
Hinweis:
Nicht immer garantiert die "3. Normalform" eine vollstiindig redundanzfreie Speicherform. FUr unsere Darstellung solljedoch das Kriterium der "3. Normalform" genUgen.
A.2 Fallbeispiel zur Strukturierung von Auftragsdaten
Datenbestand
Als weiteres Beispiel daflir, wie wir ZugriffsschlUssel festlegen und einen Da- tenbestand redundanzfrei speichern konnen, geben wir die Strukturierung eines Auftragsdatenbestands an. Dabei verstehen wir unter einem Auftragsdatenbe- stand die Gesamtheit aller Auftrage, die durch die folgenden Merkmale gekenn- zeichnet sind:
die Auftragsnummer (AUFNR), das Bestelldatum (DATUM),
den Fertigstellungstermin (TERMIN) und
die Gesamtheit der Auftragspositionen, wobei jede Position eine Positionsnummer (POSNR),
eine Teilenummer (TEILENR),
die Anzahl der Teile (TEILEANZ) enthalt und
die Kundendaten, wobei jeder Kunde gekennzeichnet ist durch eine Kundennummer (KDNR),
den Namen (KDNAME) und die Anschrift (KDANSCH).
Die diesbezUglich vorhandenen Daten sind flir jeden Auftrag in einem Auftrags- formular eingetragen, z.B.:
A.2 Fallbeispiel zur Strukturierung von Auftragsdaten 281
Auftragsnummer: 416 yom: 11.11.88 zum: 05.02.89
Auftragsposition: Teilenunmer: Teileanzah l:
--- --- ---
116 60
2 037 60
3 128 30
fOr: Firma Meyer, Walterweg 10, 2800 Bremen mit Kundennummer: 317
Infonllationswiedergewinnung
Wir stellen uns die Aufgabe, fUr den Auftragsbestand ein Datenmodell zu ent- wickeln und ZugriffsschlUssel festzulegen, so daB die folgenden Fragen im Rahmen der Informationswiedergewinnung beantwortet werden konnen:
- Fl: Ermittlung des Auftragsbestands je Teilenummer (a) - F2: Ermittlung des Auftragsbestands je Kunde (b) - F3: Ermittlung von Datum und Terminje Auftrag (c) - F4: Ermittlung der Teileanzahlenje Auftrag (d) - F5: Ermittlung der Kundendatenje Auftrag (e)
Zunachst geben wir fUr jede einzelne Frage eine geeignete Tabellen-Struktur an, in der wir den. IdentifikationsschlUssel durch das Unterstreichungszeichen
"_" und den jeweils erforderlichen ZugriffsschlUssel durch eine Punktunter- streichung markieren:
(a) F1(TEILENR, AUFNR, POSNR, TEILEANZ, TERMIN)
(b) F2(KDNR, AUFNR, POSNR, TEILENR, TEILEANZ)
(c) F3(AUFNR, DATUM, TERMIN)
(d) F4(AUFNR, POSNR, TEILEANZ)
(e) F5(AUFNR, KDNR, KDNAME, KDANSCH)
Uberfiibrullg ill die "3. Nonllalfonll"
Die unter (a) bis (e) angegebenen Tabellen sind nicht samtlich in der "3. Nor- mal form ". 1m foIgenden geben wir die Defizite stichwortartig an und nehmen die jeweils erforderlichen Projektionen vor, so daB sich abschlieBend aIle resuI- tierenden Tabellen in der "3. Normalform" befinden.
(a) Es besteht keine volle funktionale Abhangigkeit:
F1(TEILENR, AUFNR, POSNR, TEILEANZ, TERMIN)
1
Es resultieren:
F11(TEILENR, AUFNR, POSNR, TEILEANZ) und F12(AUFNR, TERMIN)
(b) Es besteht keine volle funktionale Abhangigkeit:
F2(KDNR, AUFNR, POSNR, TEILENR, TEILEANZ)
n
Es resultieren:
F21(KDNR, AUFNR) und F22(AUFNR, POSNR, TEILENR, TEILEANZ)
(c) F3(AUFNR, DATUM, TERMIN) ist in "3. Normalform"!
A.2 Fallbeispiel zur Strukturierung von Auftragsdaten 283 (d) F4(AUFNR, POSNR, TEILEANZ) ist in "3. Normal form" !
(e) Es liegen transitive Abhangigkeiten vor:
F5(AUFNR, KDNR, KDNAME, KDANSCH)
nn
:::JU
Es resultieren:
F51(AUFNR, KDNR) und F52(KDNR, KDNAME, KDANSCH)
Speicherreduktioll
Die abgeleiteten Tabellen fassen wir jetzt so zusammen, daB die Speicheranfor- derung zur Ablage der Tabellen insgesamt verringert wird.
Dazu verbinden wir die Tabellen F12, F21, F3 und F5I zur Tabelle:
F12_21_3_51(AUFNR, KDNR, DATUM, TERMIN)
Die Tabellen FI1, F22 und F4 verbinden wir zur Tabelle:
F11_22_4(AUFNR, POSNR, TEILENR, TEILEANZ)
Als urspriinglich abgeleitete Tabelle iibernehmen wir:
F52(KDNR, KDNAME, KDANSCH)
Anstelle der bei der Ableitung verwendeten formalen Tabellennamen vergeben wir die durch die Anwendung bestimmten Namen AUFTRAG, AUFPOS und KUNDE. Als Datenmodell filr den Auftragsbestand im Hinblick auf die oben
formulierten Anforderungen fUr die Informationswiedergewinnung erhalten wir somit die folgenden Tabellen:
AUFTRAG(AUFNR, KDNR, DATUM, TERMIN)
AUFPOS(AUFNR, POSNR, TEILENR, TEILEANZ)
KUNDE(KDNR, KDNAME, KDANSCH)
Zergliederullg der Basistabelle
Wir sind bei der oben angegebenen Darstellung von den Fragen Fl bis F5 aus- gegangen und haben anschlieBend die geeignet erscheinenden Tabellen einer Normalisierung unterzogen. Jetzt gehen wir den umgekehrten Weg und fassen als erstes die Merkmale zur Beschreibung des Auftragsbestands wie folgt in ei- ner Tabelle zusammen:
AUFTRAGSBESTAND (AUFNR, DATUM, TERMIN, POSNR, TEILENR, TEILEANZ,
KDNR, KDNAME, KDANSCH)
Unser Ziel besteht zunachst darin, diese Tabelle so zu zergliedern, daB sich die resultierenden Tabellen samtlich in "3. Normalform" befinden.
Funktionale Abhangigkeit besteht jeweils zwischen AUFNR und den Merkma- len DATUM, TERMIN, KDNR, KDNAME und KDANSCH. Daher projizie- ren wir die Tabelle AUFTRAGSBESTAND und erhalten die Tabelle
AUFPOS(AUFNR, POSNR, TEILENR, TEILEANZ)
und die Tabelle:
AUFTRAG_KUNDE(AUFNR, DATUM, TERMIN, KDNR, KDNAME, KDANSCH)
Die Tabelle AUFPOS befindet sich bereits in der "3. Normalform". Dagegen besitzt die Tabelle AUFTRAG_KUNDE nicht die "3. Normalform", da fol- gende transitive Abhangigkeiten bestehen:
A.2 Fallbeispiel zur Strukturierung von Auftragsdaten
AUFTRAG_KUNDE~~~~~~, DATUM, TERMIN, KDNR, KDNAME, KDANSCH) Die beiden erforderlichen Projektionen ergeben die Tabelle
W
AUFTRAG(~~~~~, DATUM, TERMIN, KDNR) und die Tabelle:
KUNDE(~~~~, KDNAME, KDANSCH)
285
Sornit fUhrt die Norrnalisierung zur gleichen Tabellen-Struktur Gedoch noch ohne Zugriffsschliissel!), wie wir sie oben abgeleitet haben.
Bestinullullg der Zugriffsschliissel
Urn mit diesen Tabellen die Fragen FI bis F5 zur Inforrnationswiedergewin- nung beantworten zu konnen, legen wir die Zugriffsschliissel wie folgt fest:
fUr FI: AUFPOS(~~f~~, ~2~~~, !~!~~~~, TEILEANZ)
AUFTRAG(~~[~~, DATUM, TERMIN, KDNR) fUr F2: AUFPOS(~~E~~, ~Q~~~, TEILENR, TEILEANZ)
AUFTRAG(~~f~~,
1
DATUM, TERMIN, ~~~~)Aulhang fUrF3: AUFTRAG(AUFNR, DATUM, TERMIN, KDNR)
fUr F4: AUFPOS(~~~~~, ~~~~~, TEILENR, TEILEANZ)
fUr F5: AUFTRAG(~~~~~, DATUM, TERMIN, KDNR)
KUNDE(~~~~, KDNAME, KDANSCH)
Datel1IllOdell
Insgesamt erhalten wir als Datenmodell fUr den Auftragsbestand die folgende
Tabellen-Struktur: .
AUFTRAG(~~~~~, DATUM, TERMIN, ~~~~)
KUNDE(~~~~, KDNAME, KDANSCH)
Dieses Modell bildet die Grundlage fUr die Aufgaben, die jeweils zum Ab- schluB der Kapitel angegeben sind.
A.3 Die Konfigurations-Datei CONFIG.DB 287
A.3 Die Konfigurations-Datei CONFIG.DB
Sollen die standardmaBigen Voreinstellungen fUr das dBASE-System geandert werden, so muB die Konfigurations-Datei CONFIG.DB in dem Haupt- bzw.
Unterverzeichnis vorhanden sein, von wo aus das dBASE-System gestartet wird. Vor Dialogbeginn wird der Inhalt dieser Datei, die in einer Basisform auf der Installations-Diskette der Firma Ashton-Tate ausgeliefert wird, vom dBASE-System ausgewertet. Unter anderem laBt sich durch geeignete Angaben in die CONFIG.DB-Datei auf die GrOBe von Speicherbereichen und die Vor- einstellung von SET-Befehlen EinfluB nehmen. Die Datei CONFIG.DB ist eine Text-Datei, die sich mit einem Editierprogramm wie z.B. EDLIN bearbeiten laBt. Enthalt diese Datei etwa die beiden Zeilen
COMMAND
=
ASSISTHISTORY = 100
so ist dadurch festgelegt, daB zum Beginn des Dialogs das "Regiezentrum"- Menii angezeigt wird und der interne Befehlsspeicher Platz fUr 100 Befehle hat.
Grundsatzlich besteht jede Zeile von CONFIG.DB aus einer Zuordnung, die folgendermaBen aufgebaut ist:
schLusseLwort
=
wertDie in dieser Form moglichen Zuweisungen geben wir nachfolgend an. Dabei kennzeichnen die Angaben "&&" und "*" Kommentare (siehe Abschnitt 12.1), die zur Erlauterung dienen und beim Eintrag der ausgewahlten Zuweisungen in der Datei CONFIG.DB nicht angegeben werden miissen. Die jeweilige Vorein- stellung bei der Alternative" { ON
I
OFF}" markieren wir durch GroBschrei- bung.ALTERNATE
=
text-dateiname && siehe Abschnitt 5.4 AUTOSAVE= {
on I OFF }BELL
= {
ON I off }&& siehe Abschnitt 6.1
&& akustisches SignaL am FeLd-
* && bei der Dateneingabe
BLOCKSIZE
=
ganzzahL && 512K * ganzzahL (VoreinsteLLung: 1)*
*
BUCKET
=
ganzzahL*
*
*
&& Bytes aLs BLockgroBe fur den
&& Datentransport
&& 1024 * ganzzahL (VoreinsteLLung: 2)
&& Zeichen fur PICTURE-SchabLonen (siehe
&& Abschnitt 6.5) und Bereichsuberprufungen
&& (maximaL 31)
BORDER
=
umrahmungs-angaben && siehe Abschnitt 15.2.1 CARRY= {
on I OFF} && siehe Abschnitt 4.1&& siehe Abschnitt 9.4 CATALOG
=
katalog-dateinameCENTURY
= {
on I OFF } && Ausgabe des Jahrhundertwerts CLOCK=
ganzzahl-1, ganzzahl-2 && Uhrzeit wird an der*
*
COMMAND
*
CONFIRM =
*
* CONSOLE
*
befehl
{ on I OFF}
{ ON I off }
&& gekennzeichneten Position
&& eingeblendet
&& dBASE-Befehl, der bei Dialogbeginn
&& ausgefuhrt werden soll
&& automatische
&& Cursorpositionierung beim
&& Editieren am Feldende
&& stellt die Bildschirmausgabe
&& bei Ausfuhrung einer
* && Befehlsfolge ein bzw. aus CURRENCY
=
zeichenfolge && Wahrungssymbol (1 bis 9 Zeichen) DATE=
schlusselwort*
DEBUG
= {
on I OFF } DECIMALS=
ganzzahl*
&& Format der Datumsanzeige
&& (Voreinstellung: GERMAN)
&& siehe Abschnitt 12.5
&& Stellenzahl (0 bis 8) bei der
&& Augabe numerischer Werte DEFAULT
=
laufwerksbezeichnung && siehe Abschnitt 3.3 DELETED {on I OFF }DELIMITERS
= {
on I OFF }DELIMITERS
=
zwei-zeichen&& siehe Abschnitt 6.4
&& siehe Abschnitt 4.1
&& siehe Abschnitt 4.1
DEVELOPMENT = { ON I off} && die zeitmaBige Zugehorigkeit von
*
*
*
&& Dateien im Hinblick auf ihre
&& Erstellung und ihre Kompilierung
&& wird uberpruft DEVICE
= {
SCREEN I PRINTER I FILE text-dateiname }*
DO
=
ganzzahl*
ECHO
= {
on I OFF } ESCAPE= {
ON I off }&& Ausgabe von @-Befehlen mit SAY
&& erlaubte Verschachtelungstiefe
&& (Voreinstellung:20) von DO-Befehlen
&& siehe Abschnitt 12.5
&& Abbruch bei Druck der Escape-Taste
A.3 Die Konfigurations-Datei CONFIG.DB EXACT
= {
on I OFF }EXPSIZE
=
ganzzahl*
FILES
=
ganzzahl*
*
GETS ganzzahl
*
*
*
&& siehe Abschnitt 5.3
&& Anzahl der Bytes (Voreinstellung: 100)
&& fOr die Kompilierung von AusdrOcken
&& Anzahl der Dateien (Voreinstellung:
&& 99), die gleichzeitig eroffnet
&& werden dOrfen (15 bis 99)
&& ganzzahl @-Befehle mit GET
&& (Voreinstellung: 128) konnen
&& gleichzeitig aktiviert sein
&& (35 bi s 1023) HEADING
= {
ON I off} && siehe Abschnitt 5.4HELP = { ON I off} && Ausgabe einer Anfrage im Fehlerfall HISTORY
=
ganzzahl*
*
HOURS {12 I 24 }
*
INDEXBYTES
=
ganzzahl*
*
&& GroBe (Voreinstellung: 20) des
&& Befehlsspeichers (0 bis 16000)
&& siehe Abschnitt 3.3
&& Festlegung, ob die Zeitangabe im
&& 12- oder 24-Stundenzyklus erfolgen soll
&& 1024 * ganzzahl (Voreinstellung: 2)
&& Bytes stehen zur Speicherung von
&& Indizes zur VerfOgung (maximal 128) INSTRUCT {ON I off} && bei den menO-orientierten Befehlen
* && werden die Meldungszeilen der MenO
* && -Oberfache von dBASE IV angezeigt INTENSITY
= {
ON I off} && siehe Abschnitt 4.1MARGIN
=
ganzzahl*
MEMOYIDTH
=
ganzzahlNEAR
= {
on I OFF } ODOMETER=
ganzzahl*
*
&& Abstand zum linken Druckrand
&& (1 bis 254),Voreinstellung:0
&& siehe Abschnitt 5.4
&& siehe Abschnitt 8.2
&& Intervallange (Voreinstellung: 1),
&& in denen die Satzzahl aktualisiert
&& wird (1 bis 200)
PATH liste-von-pfadnamen && Einstellung des Suchpfads fOr den
* && Zugriff auf vorhandene Dateien
289
*
PAUSE = { on I OFF } PDRIVER
=
dateiname POINT=
zeichen*
PRECISION ganzzahl
*
*
PRINTER
= {
on I OFF}PROMPT
=
zeichenfolge*
SAFETY {ON I off }
*
*
SCOREBOARD {ON I off }
*
SEPARATOR
=
zeichen*
*
SPACE {on I OFF } SQL
= {
on I OFF }&& (maximal 60 Zeichen)
&& siehe Abschnitt 13.2
&& Datei mit Druckertreiber
&& fur Dezimalpunkt
&& (Voreinstellung: ".")
&& Zahl (Voreinstellung: 16) der fur
&& den Vergleich von GraBen des Typs
&& "N" benutzten Ziffern (10 bis 20)
&& siehe Abschnitt 5.4
&& Vereinbarung der Promptzeichen
&& (1 bis 19 Zeichen)
&& Sicherung vorhandener
&& Dateien
&& gegenuber Oberschreiben
&& Ausgabe von Meldungen (z.B. uber
&& eingestellte Insert-Taste)
&& Trennzeichen (Voreinstellung: ",")
&& bei Ausgabe der Ziffern vor dem
&& Dezimalpunkt
&& siehe Abschnitt 14.4
&& siehe Abschnitt 13.1
SQLDATABASE = datenbasisname && diejenige Datenbasis, die beim
* && Wechsel in den SQL-Modus
*
SQLHOME = pfadname
*
*
STATUS
= {
ON I off }STEP
=
{on OFF}TALK
=
{ON off}TRAP
=
{on OFF}*
*
&& automatisch aktiviert werden soll
&& Verzeichnis, in dem die im
&& SQL-Modus erstellten Objekte
&& gespeichert werden
&& siehe Abschnitt 3.3
&& siehe Abschnitt 12.5
&& siehe Abschnitt 12.5
&& Aktivierung des Debug-Menus, falls
&& bei der Ausfuhrung von Befehlen
&& einer Programm- bzw. Prozedur-
A.4 Dateneingabe aus Fremd-Dateien und Datenausgabe in Fremd-Dateien 291
* && Datei ein Fehler auftritt TEDIT
=
editierprogrammname && AusfOhrung bei MODIFY COMMAND TYPEAHEAD=
ganzzahl*
UNIQUE = { on I OFF }
*
*
VIEW
=
view-dateiname WP=
editierprogrammname*
&& PuffergroBe (Voreinstellung: 20)
&& fOr Tastatureingabe (0 bis 32000)
&& Behandlung von Satzen mit
&& gleichem SatzschlOssel bei
&& der Indexierung
&& siehe Abschnitt 9.3 und 10.6
&& AusfOhrung bei Editierung
&& von Memo-Feldern
Bis auf die Schliisselworter BUCKET, COMMAND, DO, EXPSIZE, FILES,
GETS, INDEXBYTES, PDRIVER, PROMPT, SQLDATABASE,
SQLHOME, TEDIT und WP konnen samtliche Voreinstellungen im Dialog mit dem dBASE-System in der Form
I
SET sch lOsselwort TO wertI
bzw. durch
SET schlOsselwort { ON I OFF}
geandert werden. Dariiberhinaus lassen sich die Zuweisungen auch menii-ge- steuert in der Form
SET
I
durchfiihren. Zur Sicherung der vorgenommenen Anderungen ist in diesem Fall die Esc-Taste zu driicken.
A.4 Dateneingabe aus Fremd-Dateien und Datenausgabe in Fremd-Dateien
Zur Dateniibertragung in Tabellen-Dateien konnen Daten aus Text-Dateien (SDF), aus dBASEII-Tabellen-Dateien (DBASEII) bzw. aus Dateien verwendet werden, die zuvor durch die Anwendersysteme VisiCalc (DIF), Framework II (FW2) , Rapid File (RPD) , Multiplan (SYLK) und Lotus 1-2-3 (WKS) zur Tabellenkalkulation aufgebaut wurden. Dazu ist der APPEND FROM-Befehl in der Form
APPEND FROM dateiname
TYPE { SDF I DBASEII I DIF I FW2 I RPD I SYLK I WKS }
einzusetzen. Bei Text-Dateien miissen die Daten in jedem Datensatz gemaB der vereinbarten Struktur der Tabellen-Datei unmittelbar aufeinanderfolgen. Ab-
292
weichungen davon sind nur dann erlaubt, wenn der APPEND FROM-Befehl in derForm
APPEND FROM dateiname
DELIMITED [ WITH { begrenzungssymbol I BLANK } ]
eingegeben wird. 1st allein das SchlUsselwort DELIMITED angegeben, so wird unterstellt, daB die Daten jeweils durch Kommata voneinander getrennt sind.
Liegen etwa die Daten - abgegrenzt durch jeweils ein Komma - in der Form (nichtganzzahlige Werte sind mit Dezimalpunkt zu erfassen)
12,Oberhemd,39.80 22,Mantel,360.00 11,Oberhemd,44.20 13,Hose,110.50
in der Text-Datei ARTIKEL.TXT vor, und ist die Tabellen-Datei ARTIKEL.DBF - wie im Abschnitt 4.1 beschrieben - eingerichtet worden, so wird die DatenUbertragung durch die Befehle
• USE ARTIKEL
• APPEND FROM ARTIKEl.TXT DELIMITED ausgefiihrt.
Werden die Daten durch Leerzeichen abgegrenzt, etwa in der Form 12 Oberhemd 39.80
22 Mantel 360.00 11 Oberhemd 44.20 13 Hose 110.50
so ist die Klausel "DELIMITED WITH BLANK" aufzufiihren, so daB in die- sem Fall die Befehle
• USE ARTIKEL
• APPEND FROM ARTIKEl.TXT DELIMITED WITH BLANK einzugeben sind.
Sollen alphanumerische Werte Ubertragen werden, in denen ein oder mehrere Kommata auftreten - wie etwa bei den in der Form
8413, "Meyer, EmiL","Wendeweg 10, 2800 Bremen",0.07,725.15 5016,"Meier, Franz","Kohlstr. 1, 2800 Bremen",0.05,200.00 1215,"Schulze, Fritz","GemOseweg 3, 2800 Bremen",0.06,50.50
innerhalb der Datei VRTRTR.TXT abgespeicherten Vertreterdaten -, so sind die Zeichenfolgen durch ein Begrenzungssymbol zu markieren. In unserem Fall haben wir das Zeichen (") zur Einleitung und zur Endebegrenzung verwendet,
A.4 Dateneingabe aus Fremd-Dateien und Datenausgabe in Fremd-Dateien 293 so daS wir fUr die DatenUbertragung in die entsprechend eingeriehtete Tabellen- Datei VRTRTR.DBF (siehe Abschnitt 4.1) die Befehle
• USE VRTRTR
• APPEND FROM VRTRTR. TXT DELIMITED WITH II
eingeben mUssen. Liegt ein anderes Begrenzungssymbol vor, so ist dieses Zei- chen - anstelle des AnfUhrungszeiehens (") - hinter dem SchlUsselwort WITH aufzufUhren.
Sind Daten nieht in einer Text-Datei, sondern in einer Datei gemaS dem PFS:FILE-Dateiformat gespeiehert, so muS anstelle des APPEND FROM-Be- fehls der IMPORT FROM-Befehl in der Form
I
IMPORT FROM dateiname TYPE PFSI
eingegeben werden. Dadurch wird eine Tabellen-Datei, eine zugehorige For- mat-Datei und auch eine View-Datei vom dBASE-System eingerichtet.
Zur Erstellung einer Fremd-Datei im PFS:FILE-Dateiformat ist der EXPORT- Befehl in der Form
EXPORT TO dateiname TYPE PFS [ bereich]
[ FIELDS feldname-1 [ feldname-2 ] ••• ] [ WHILE bedingung-1 ] [FOR bedingung-2 ]
einzugeben. Dadurch werden aus der aktuell angemeldeten Tabellen-Datei aIle bzw. die gemaS der Satzauswahl bestimmten Satzinhalte umgewandelt.
AIle anderen moglichen Dateiformate lassen sieh durch den COpy TO-Befehl in der Form
COPY TO dateiname
TYPE { SDF I DBASEII I DIF I FW2 I RPD I SYLK I WKS}
[ bereich] [ FIELDS feldname-1 [ feldname-2 ] ••• ] [ WHILE bedingung-1 1 [ FOR bedingung-2 1
einrichten. Zur Erstellung von Text-Dateien darf dieser Befehl in der folgenden Form verwendet werden:
COPY TO dateiname
DELIMITED [ WITH { begrenzungssymbol I BLANK} 1
[ bereich 1 [ FIELDS feldname-1 [ feldname-2 ] ••• 1 [ WHILE bedingung-1 1 [FOR bedingung-2 1
Dabei ist zu beachten, daS niehtganzzahlige Werte stets mit DezimaJpunkt aus- gegeben werden. 1st aIle in das SchlUsselwort DELIMITED angegeben, so wer- den die Daten jeweils durch ein Komma voneinander getrennt.
294
Somit erhalten wir z.B. durch die Befehle
· USE UMSATZ
· COPY TO UMSATZ.TXT DELIMITED FIELDS V_NR, A_NR, A_STUECK FOR DATUM
=
CTOD(125.06.89")eine Text-Datei, deren Inhalt durch den TYPE-Befehl
• TYPE UMSATZ.TXT
wie folgt angezeigt wird:
1215,11,20 5016,22,35 8413,11,20
A.S Funktionen
Zur Ermittlung von Werten, die sich aus vorgegebenen GroBen ableiten lassen, stellt das dBASE-System eine Reihe von moglichen Funktionsaufrufen zur Ver- fUgung. Jeder FunktionsaufrufmuB in der Form
funktionsname( [argument-1 [, argument-2 1 ••• 1 )
erfolgen. Dabei ist die Anzahl der moglichen Argumente von der jeweiligen Funktion abhangig.
So Iiefert z.B.
STR(725.15, 6, 2)
die Zeichenfolge "725.15", wahrend
STR(725.15,3)
die Zeichenfolge "725" ergibt.
Funktionsaufrufe durfen auch geschachtelt werden, so daB z.B. ein am 26.6.89 durchgefUhrter Aufruf von
DTOC( DATE() )
zur Zeichenkette "26.06.89" fUhrt und der Aufruf
MONTHe DATEO )
den Ergebniswert 6 Iiefert.
Die anschIieBend angegebenen Funktionsaufrufe sind nach Funktionsgruppen gegliedert. AIs Abkurzung fUr "numerischer Ausdruck", "ganze Zahl" und
"Zeichenfolge" verwenden wir die Namen "num-ausdruck", "ganzzahl" und
"zchflg". Bei numerischen Ausdrucken muB - aus syntaktischen Grunden - an- stelle des Dezimalkommas der Dezimalpunkt angegeben werden.
A.5 Funktionen 295 Diejenigen Funktionen, die nicht innerhalb eines SQL-Befehls (siehe Kapitel 13) verwendet werden dUrfen, sind durch einen Stern "*" markiert. Die aHein fUr den Einsatz unter einem Mehrplatzsystem sinnvoHen Funktionen werden nicht angegeben.
Mathematische Funktionen
ABS(num-ausdruck) absoluter Wert
ACOS(num-ausdruck)
Wert (in BogenUingen) der Arcuscosinus-Funktion
ASIN(num-ausdruck) :
Wert (in BogenUingen) der Arcussinus-Funktion
ATAN(num-ausdruck) :
Wert (in BogenUingen) der Arcustangens-Funktion
ATN2(num-ausdruck) :
Wert (in BogenUingen) der Arcussinus- und Arcuscosinus-Funktion
CEILING(num-ausdruck) :
kleinste ganze Zahl, die grOBer oder gleich num-ausdruck ist
COS(num-ausdruck) :
Wert der Cosinusfunktion (num-ausdruck in BogenUingen)
DTOR(num-ausdruck) :
zum Winkelwert num-ausdruck zugehOrige Bogenllinge
EXP(num-ausdruck) :
Wert der Exponentialfunktion
FIXED(num-ausdruck) :
numerischer Wert vom Typ "N", zugehOrig zur Gleitkommazahl num-ausdruck (Typ "F")
FLOAT(num-ausdruck)
Gleitkommazahl (vom Typ "F"), zugehorig zu num-ausdruck (Typ "Nil)
FLOOR(num-ausdruck) :
groSte ganze Zahl, die kleiner oder gleich num-ausdruck ist
FV(num-ausdruck-1, num-ausdruck-2, ganzzahl) :
zuldinftiger Betrag, der sich bei gleichbleibender Zahlung von num-ausdruck-l tiber ganzzahl Perioden bei einem Zinssatz von num-ausdruck-2 ergibt
INT(num-ausdruck) :
Abschneiden von Nachkommastellen
LOG(num-ausdruck) :
Funktionswert des nattirlichen Logarithmus
LOG10(num-ausdruck)
Funktionswert des dekadischen Logarithmus (Basis 10)
MAX(num-ausdruck-1, num-ausdrUck-2) : (*) der gr08ere der beiden Werte
MIN(num-ausdruck-1, num-ausdruck-2) : (*) der kleinere der beiden Werte
MOD(num-ausdruck-1, num-ausdruck-2) : Divisionsrest bei Division von
num-ausdruck-l durch num-ausdruck-2
PAYMENT(num-ausdruck-l, num-ausdruck-2, ganzzahl):
Betrag, der tiber ganzzahl Perioden bei einem Zinssatz von num-ausdruck-2 gleichbleibend gezahlt werden muS, um das Darlehen num-ausdruck-l zu tilgen
PIO :
Wert der Kreiskonstanten Pi (3.14 ... )
A.S Funktionen 297 PV(num-ausdruck-1, num-ausdruck-2, ganzzahl) :
gegenwartiger Wert fUr eine sich bei einem Zinssatz von num-ausdruck-2 fiber ganzzahl Perioden erstreckende gleichbleibende Zahlung von num-ausdruck-l
ROUND(num-ausdruck, ganzzahl) :
auf ganzzahl Nachkommastellen gerun- deter Wert num-ausdruck
RTOD(num-ausdruck) :
Winkelwert von num-ausdruck (in BogenHingen)
SIGN(num-ausdruck) :
Vorzeichen von num-ausdruck (gleich 0 fUr den Wert 0)
SIN(num-ausdruck) :
Wert der Sinusfunktion (num-ausdruck in Bogenlangen)
TAN(num-ausdruck) :
Wert der Tangensfunktion (num-ausdruck in BogenHingen)
SQRT(positiver-num-ausdruck) positive Quadratwurzel
Funktionen zur Zeichenverarbeitung
AT(zchflg-1, { zchflg-2 I memo-feldname } ) :
erste Zeichenposition in zchflg-2 bzw. innerhalb des Memo-Feldinhalts, ab der zchflg-l identisch vorkommt
DIFFERENCE(SOUNDEX(zchflg-1), SOUNDEX(zchflg-2» :
Zahl zwischen 1 (geringste Ubereinstimmung) und 4 (groBte Ubereinstim- mung), die den Grad der phonetischen Ahnlichkeit zwischen zchflg-l und zch- flg-2 angibt
LEFT( { zchflg I memo-feldname } , ganzzahl) :
ganzzahllange Teilzeichenfolge von zchflg bzw. des Memo-Feldinhalts, die ab Zeichenposition 1 beginnt
LEN( { zchflg I memo-feldname } )
Anzahl der Zeichen von zchflg bzw. des Memo-Feldinhalts
LIKE(zchflg-1, zchflg-2) : (*)
zeigt an, ob zchflg-2 dem durch zchflg-l (darf Wildcardzeichen "*" und "?"
enthalten) gekennzeichneten Bildungsgesetz genUgt
Hinweis:
Trifft dies zu, so ergibt sich der logische Wert" .T.· (fUr "true"), andernfaIls ist der Funktions- wert gleich ".F." (fUr "false"). Diese Vereinbarung gilt fUr aIle nachfolgend aufgefiihrten logi- schen Funktionen.
LOWER(zchflg) :
nur aus Kleinbuchstaben bestehende Zeichenfolge
LTRIM(zchflg) :
Zeichenfolge ohne fiihrende Leerzeichen
REPLICATE(zchflg, ganzzahl) :
aus ganzzahl-facher Wiederholung von zchflg entstandene Zeichenfolge
RIGHT( { zchflg I memo-feldname } , ganzzahl)
ganzzahllange Teilzeichenfolge von zchflg bzw. des Memo-Feldinhalts, die mit dem letzten Zeichen von zchflg bzw. des Memo-Feldinhalts endet
RTRIM( zchflg) :
Zeichenfolge ohne Leerzeichen am Zeichen- folgenende
SPACE(ganzzahl)
Zeichenfolge aus ganzzahl Leerzeichen
STUFF(zchflg-1, ganzzahl-1, ganzzahl-2, zchflg-2) die in zchflg-l ab der Position ganzzahl-l enthaltene Teilzeichenfolge der Unge ganzzahl-2 wird ersetzt durch zchflg':2*
SUBSTR( { zchflg I memo-feldname } , ganzzahl-1, ganzzahl-2) :
ganzzahl-2 lange Teilzeichenfolge von zchflg bzw. des Memo-Feldinhalts, die ab Zeichenposition ganzzahl-l beginnt
A.S Funktionen 299 TRANSFORM(zchflg, PICTURE-schablone) :
Zeichenfolge, die durch die Auibereitung
von zchflg durch die PICTURE-Schablone entsteht
TRIM(zchflg) :
Zeichenfolge ohne Leerzeichen am Zeichenfolgenende
UPPER(zchflg) :
nur aus GroBbuchstaben bestehende Zeichenfolge Funktionen zur Menfi-Verarbeitung
BARO : (*)
Zeilennummer des Bars des zuletzt aktivierten Pop-up-MenUs
MENUO : (*)
Name (in GroBbuchstaben) des zuletzt aktivierten MenUs
PAD ( ) : (*)
Name (in GroBbuchstaben) des zuletzt aktivierten Pads
POPUP() : (*)
Name (in GroBbuchstaben) des zuletzt aktivierten Pop-up-MenUs
PROMPTO : (*)
hinter dem SchlUsselwort PROMPT innerhalb des DEFINE BAR- bzw.
DEFINE PAD-Befehls angegebener Text des zuletzt ausgewahlten Bars bzw.
Pads
Funktionen zur Umwandlung des Datenformats
ASC(zchflg) :
ASCII-Kodewert des ersten Zeichens von zchflg
CHR(ganzzahl) :
Zeichen, dessen ASCII-Kodewert gleich ganzzahl ist
CTOO(zchflg) :
der interne Datumswert, welcher dem als Zeichenfolge in der Form "tt.mm.jj" angege-
DMY(datumswert) :
Zeichenfolge mit ausfiihrlicher Monatsangabe in der Reihenfolge
" Tag,Monat,Jahr" , die dem Datumswert entspricht
DTOC(datumswert) :
Zeichenfolge, die dem Datumswert entspricht
DTOS(datumswert) :
8-stellige Zeichenfolge " Jahr,Monat,Tag" , die dem Datumswert entspricht
MDY(datumswert) :
Zeichenfolge mit ausfiihrlicher Monatsangabe in der Reihenfolge "Mo- nat, Tag,Jahr" , die dem Datumswert entspricht
STR(num-ausdruck, ganzzahl-1[, ganzzahl-2]) : Zeichenfolge aus ganzzahl-l Zeichen mit der Zeichendarstellung von num-ausdruck (bei nicht-ganzzahligem Ausdruck werden ganz- zahl-2 Nachkommastellen berQcksichtigt)
VAL(zchflg) :
numerischer Wert, dessen Zeichendarstellung gleich der angegebenen Zeichenfolge ist
Datumsfunktionen
CDOW(datumswert) :
Zeichenfolge mit dem Namen des Wochentags
CMONTH(datumswert) :
Zeichenfolge mit dem Namen des Monats
DATE() :
Zeichenfolge mit dem DOS-Systemdatum in der Form "tt.mm.jj"
DAY(datumswert) :
ganzzahlige Tagesangabe innerhalb des Monats
A.S Funktionen DOW(datumswert) :
ganzzahlige Tagesangabe innerhalb der Woche
MONTH(datumswert) :
ganzzahlige Monatsangabe innerhalb des Jahres
TIMEO :
Zeichenfolge mit der DOS-Systemzeit in der Form "hh:mm:ss"
YEAR(datumswert) :
(vierstellige) ganzzahlige Jahresangabe
Funktionen zur Bearbeitung von Tabellen-Dateien
ALIAS(ganzzahl) :
301
Zeichenfolge mit dem Aliasnamen (in GroBbuchstaben) des durch ganzzahl ge- kennzeichneten Arbeitsbereichs
BOFO :
zeigt an, ob der erste Satz der aktuelle Satz ist
COMPLETED() : (*)
zeigt an, ob die unmittelbar vorausgehende Transaktion erfolgreich beendet wurde
DBFO :
Zeichenfolge mit dem Namen der im aktuellen Arbeitsbereich angemeldeten Tabellen-Datei
DELETEDO :
zeigt an, ob der aktuelle Satz loschmarkiert ist
EOFO :
zeigt an, ob hinter den letzten in der
Tabellen-Datei vorhandenen Satz positioniert wurde
FIELD(ganzzahl) :
Zeichenfolge mit dem Feldnamen, dessen Position innerhalb der Tabellen-Datei-Struktur durch ganz- zahl bestimmt ist
FILE(zchflg) : (*)
zeigt an, ob der als ZeichenfoIge angegebene Dateiname existiert
FOONDO :
zeigt an, ob die vorausgehende Positionierung innerhalb der Tabellen-Datei erfolgreich war
ISMARKED( [ aliasname] ) :
zeigt an, ob die aktuelle (bzw. durch den Aliasnamen gekennzeichnete) Tabel- len-Datei auf Grund einer noch nicht abgeschlossenen Transaktion markiert ist
KEY( [MDX-index-dateiname , ] ganzzahl [ , aliasname] ) :
Zeichenfolge mit dem SchlUsselausdruck, der fUr eine im aktuellen (bzw. durch den Aliasnamen gekennzeichneten) Arbeitsbereich angemeldete Index-Datei bzw. aIs Index-Tag innerhalb einer MDX-Index-Datei durch ganzzahl identifi- ziert wird
LoOKUP(feldname-', ausdruck, feldname-2) :
Inhalt von feldname-l des Datensatzes, fUr den erstmalig der Inhalt von feld- name-2 gleich dem Wert von ausdruck ist
LUPDATE() :
Wert des Datums, an dem die Tabellen-Datei letztmalig verandert wurde
MDX(ganzzahl [ , aliasname] ) :
Zeichenfolge mit dem Namen der im aktuellen (bzw. durch den Aliasnamen ge- kennzeichneten) Arbeitsbereich angemeldeten MDX-Index-Datei, dessen Posi- tion in der Liste des angemeldeten MDX-Index-Dateien durch ganzzahl identi- fiziert wird
NDX(ganzzahl [ , aliasname] ) :
ZeichenfoIge mit dem Namen der im aktuellen (bzw. durch den Aliasnamen ge- kennzeichneten) Arbeitsbereich angemeldeten Index-Datei, dessen Position in der Liste der angemeldeten Index-Dateien durch ganzzahI identifiziert wird
A.5 Funktionen 303 ORDER( [ aliasname] ) :
Zeichenfolge mit dem Namen der im aktuellen (bzw. durch den Aliasnamen ge- kennzeichneten) Arbeitsbereich angemeldeten Index-Datei bzw. mit dem Na- men des Index-Tags, der den aktuellen ZugriffsschlUssel festlegt
RECCOUNT () :
Anzahl der Satze innerhalb der aktuellen Tabellen-Datei
RECNO() : ,
Nummer des aktuellen Satzes
RECSIZEO :
Anzahl der Zeichen, die fUr jeden Satz der aktuellen Tabellen-Datei benotigt werden ROllBACK() : (*)
zeigt an, ob der zuletzt ausgefUhrte ROLLBACK-Befehl erfolgreich ausgefUhrt wurde
SEEK(zchflg [ , aliasname ] ) :
zeigt an, ob innerhalb der im aktuellen (bzw. durch den Aliasnamen gekenn- zeichneten) Arbeitsbereich angemeldeten Tabellen-Datei ein SatzschlUssel mit zchflg Ubereinstimmt
SElECTO :
kleinste ganze Zahl, die gr06er ist als die Nummern der aktuell bearbeitbaren Arbeitsbereiche
TAG( [MDX-index-dateiname , ] ganzzahl [ , aliasname] ) :
Zeichenfolge mit dem Namen des durch ganzzahl gekennzeichneten Index-Tags innerhalb des aktuellen (bzw. durch den Aliasnamen gekennzeichneten) Ar- beitsbereichs
Funktionen fUr Drucker und Bildschirm
COLO: (*)
aktuelle Spaltenposition des Cursors
PCOlO : (*)
aktuelle Spaltenposition des Druckers
PRINTSTATUS() : (*)
zeigt an, ob der angeschlossene Drucker druckbereit ist
PROW() : (*)
aktuelle Zeilenposition des Druckers
ROWO : (*)
aktuelle Zeilenposition des Cursors
DOS-spezrrJSChe Funktionen
DISKSPACEO : (*)
Anzahl der frei verftigbaren Bytes auf dem Standardlaufwerk
GETENV(zchflg) : (*)
Belegung einer durch zchflg gekennzeichneten DOS-Systemvariablen
MEMORYO : (*)
Anzahl der Kilobytes, die bislang innerhalb des Hauptspeichers nicht genutzt wurden
OS() : (*)
Zeichenfolge mit dem Namen der aktuellen DOS-Betriebssystemversion
VERSION() : (*)
ZeichenfoIge mit dem Namen der aktuellen Version von dBASE IV
Sonstige Funktionen
ERRORO : (*) Fehlernummer
FKLABEL(ganzzahl) : (*)
Kennung einer Funktionstaste
A.5 Funktionen
FKMAX() : (*)
Anzahl der belegbaren Funktionstasten
I I F(bedingung, ausdruck-1, ausdruck-2) : (*) ergibt ausdruck -1 bei zutreffender bzw.
ausdruck-2 bei nicht erfiillter Bedingung
INKEYO : (*)
ASCII-Kodewert des unmittelbar zuvor fiber die Tastatur eingegebenen Zeichens
ISALPHA(zchflg) : (*)
zeigt an, ob das erste Zeichen in zchflg alphabetisch ist
ISCOLORO : (*)
zeigt an, ob der Bildschirm im Farbmodus arbeitet (T) oder im Monochrommodus (F)
ISLOWER(zchflg) : (*)
zeigt an, ob das erste Zeichen in zchflg ein Kleinbuchstabe ist
ISUPPER(zchflg) : (*)
zeigt an, ob das erste Zeichen in zchflg ein GroBbuchstabe ist
LASTKEYO : (*)
305
ASCII-Kodewert des letzten fiber die Tastatur eingegebenen Zeichens bei der Ausfiihrung eines menfi-orientierten Befehls
LINENOO : (*)
Nummer der Zeile innerhalb einer Programm- bzw. Prozedur-Datei, in welcher der aktuell ausgefiihrte Befehl eingetragen ist
MEMLINES(memo-feldname) :
Anzahl der Zeilen, die der Inhalt des im aktuellen Datensatz enthaltenen, durch memo-feldname gekennzeichneten Memo-Felds belegen wiirde
MLINE(memo-feldname, ganzzahl) :
Inhalt des Memo-Felds memo-feldname, der innerhalb der durch ganzzahl ge- kennzeichneten Zeile ausgegeben werden wUrde
MESSAGEO : (*)
ergibt eine Zeichenfolge mit der Fehlermeldung
PROGRAMO : (*)
Name der Programm-Datei bzw. der Prozedur, die gerade ausgefUhrt wird
RANDO :
Wert zwischen 0 ud 1 als Ergebnis des Aufrufs eines Pseudo-Zufallszahlen-Ge- nerators
READKEYO : (*)
ASCII-Kodewert des unmittelbar zuvor iiber die Tastatur eingegebenen Zeichens bei der AusfUhrung eines menii-orientierten Befehls
SET(zchflg) : (*)
Zeichenfolge "ON" bzw. "OFF" oder eine ganze Zahl als aktuelle Einstellung des durch das Schliisselwort zchflg gekennzeichneten SET -Befehls
TYPE(zchflg) : (*)
ergibt ein Zeichen, das den Typ des als
Zeichenfolge "zchflg" angegebenen Ausdrucks anzeigt ("C" fUr Zeichen, "N" fUr numerisch,
"L" fUr logisch, "M" fUr den Typ Memo und "U"
fUr eine bislang nicht definierte GroBe)
VARREADO : (*)
Name der Variablen bzw. des Datenfelds (in GroBbuchstaben), das aktuell menii-orientiert bearbeitet wird
308
" Strg + Ende":
Bild-Tief:
Bild-Hoch:
"Strg+K"R:
"Strg+K"W:
beendet die Editierung und sichert aIle Anderungen positioniert um 20 Zeilen nach unten
positioniert um 20 Zeilen nach oben
Anhang
liest den Inhalt einer Datei vor die aktuelle Cursorposi- tionein
kopiert den gesamten bzw. einen (durch die F6-Taste) markierten Dateiinhalt in eine andere Datei
"Strg+ Bild-Hoch": positioniert auf den Anfang
"Strg + Bild-Tief': positioniert auf das Ende
"Strg + Return II : Sicherung des Textes in die Datei
Zum LOschen, Verschieben und Kopieren von Zeichenfolgen, die innerhalb ei- ner Zeile oder in mehreren aufeinanderfolgenden Zeilen eingetragen ist, muS der Cursor auf die erste Zeichenposition dieser Zeichenfolge bewegt werden.
Nach Druck der Funktionstaste F6 ist der Cursor auf das letzte Zeichen der Zeichenfolge zu positionieren. Die Markierung der gesamten Zeichenfo}ge ge- schieht durch den anschlieSenden Druck der Return-Taste. SoIl die markierte Zeichenfolge gel5scht werden, so ist die Entj-Taste zu drUcken und die darauf- hin erfolgende Anfrage mit "Y" zu beantworten. Zum Kopieren bzw. Verschie- ben der markierten Zeichenfolge ist der Cursor an die Position zu bewegen, hinter der die markierte Zeichenfolge einzufiigen ist. Zum Kopieren ist die Funktionstaste F8 und zum Verschieben die Funktionstaste F7 zu betiitigen.
SolI nach dem Kopieren die Markierung der Zeichenfolge entfemt werden, so ist die Esc-Taste zu drUcken.
Zur Editierung k5nnen auch die (in der ersten Bildschirmzeile eingetragenen) Menil-Optionen "Layout", "Text", "Suchen", "Drucken" und "Ende" Uber die FlO-Taste bzw. die Alt-Taste in Kombination mit derjenigen Buchstaben-Taste, die den Anfangsbuchstaben der MenU-Option enthlilt, angewahlt werden. Die Bedeutung der jeweils durch die Cursorstellung gekennzeichneten Option wird stets in der letzten Bildschirmzeile angezeigt. Z.B. sind innerhalb der MenU- Option "Text" die Optionen "Zeilenlineal ausblenden" (zur optischen Anzeige der aktuellen Cursorposition innerhalb der ersten Bildschirmzeile), "automati- scher Absatzeinzug" (automatischer Einzug bei "Shift+Tab"), "Hinzufiigen ei- ner Zeile" (neue Zeile hinter der aktuellen Zeile), "Remove line" (Entfemen ei- ner Zeile) und "Textdatei lesenlschreiben" (Ausgabe und Eingabe von Texten) ansteuerbar:
A.6 Das dBASE-Editierprogramm (MODIFY COMMAND)
Zur Editierung von Memo-Feldinhalten (bei der AusfUhrung des EDIT-Be- fehls), von Programm-, Prozedur-, Format- und Text-Dateien steht das dBASE- Editierprogramm. zur VerfUgung. Zur Bearbeitung von Programm- und Proze- dur-Dateien ist es durch den MODIFY COMMAND-Befehl in der Form
MODIFY COMMAND { programm-dateiname I prozedur-dateiname } [ WINDOW window-name 1
und zur Bearbeitung von Format- und Text-Dateien in der Form MODIFY COMMAND grundname.{ FRM I TXT}
[ WINDOW window-name 1
au fZuru fen. Durch das Schliisselwort WINDOW kann ein zuvor geeignet defi- niertes Window fUr die Bildschirmanzeige vereinbart werden.
Mit dem MODIFY COMMAND-Befehllassen sieh bis zu 32000 Zeilen mit je- weils 1024 Zeichen (Leerzeiehen innerhalb einer Zeile werden mitgezahlt!) be- arbeiten. Aus Griinden der Ubersiehtlichkeit soU ten jedoch nur soviele Zeiehen innerhalb einer Zeile eingetragen werden, wie auf dem Bildschirm angezeigt werden konnen. Ein zu langer BefehIstext ist vor dem Zeilenende - hinter dem letzten Sprachelement auf der Zeile - durch das Trennzeiehen Semikolon ";" zu beenden und in der nachsten Zeile - nach Einriicken urn mindestens eine Zei- chenposition - fortzusetzen. Reieht eine Fortsetzungszeile nieht aus, so kann der Befehl in weiteren Zeilen fortgesetzt werden.
Bei der Texteingabe fUhrt die Return-Taste zum Zeilenwechsel. Zur Editierung konnen die Cursorpositionierungs-Tasten, die Einfg-Taste (zum EinfUgen von Zeiehen) und die Entf- sowie die Backspace-Taste (zum Loschen von Zeiehen) verwendet werden. Ferner wird die Editierung durch die folgenden Tasten bzw.
Tastenkombinationen unterstiitzt:
"Strg+Y" :
"Strg+N" :
"Shift+FS" :
"Shift+ F4" :
Esc:
loscht die aktuelle Zeile
fUhrt vor der aktuellen Cursorposition einen Zeilenwech- sel durch, so daB eine neue Zeile eingerichtet werden kann
durchsucht die Datei (ab der aktuellen Cursorposition) nach einer Zeiehenfolge
durchsucht die Datei (ab der aktuellen Cursorposition) nach der Zeiehenfolge, die durch den zuletzt angegebe- nen Suchbefehl ("Strg+K"F) festgelegt ist
beendet die Editierung ohne Sieherung der Veranderun- gen
Imafil
iiiiiiiiiij.if.j ....
I . , •• 6 .••• , ..•. ? .,. I •••••nDi e SUMMe dell Wellte des Fe 1 ds .. , FELDNRME_U,;
II el'!libt sich zu: .. SUM U SET TRLX ON , - RETURN
_&Llr;"';~A"~
nw
len: N Ausfii pen: I~.~ Menii velilassen: ESCI I
Ja: Zeilenlineal willd ausgeblendetHervorzuheben ist ferner, daB durch die MenU-Option "Drucken" eine kom- fortable Unterstiitzung einer Druckausgabe des aktuell editierten Textes an- gefordert werden kann. Dazu lassen sich unter anderem Angaben zur Ausgabe- steuerung, zur Seitenzahl, zur Schriftart, zur Anzahl der Kopien und zur Strukturierung einer Druckseite machen.
AbschlieBend merken wir an, daB Uber die MenU-Option "Ende" ausgewahlt werden kann, ob unmittelbar nach der Editierung von Befehlszeilen eine Pro- grammausfiihrung (Option "Programmausfiihrung") bzw. eine Bearbeitung in- nerhalb des Debug-MenUs (Option "1m Testmodus ausfiihren") vorgenommen werden solI.
A.7 Wechsel der Farbgebung bei Farb-Bildschirmen
StandardmaBig wird normal darzustellender Text bei Farb-Bildschirmen in der Farbe Weill (auf dunklem Hintergrund) und erhellt anzuzeigender Text in der Farbe Schwarz (auf hellem Hintergrund) ausgegeben. Diese vom dBASE-Sy- stem voreingestellte FarbwahllaJ3t sich durch die Eintragung von
I
COLOR = [ farbwert-1 ] [ , .[ farbwert-2 ] ]innerhalb der Konfigurations-Datei CONFIG.DB abandern. Dabei geben die Farbwerte - in der gegebenen Reihenfolge - die Farben fiir normal bzw. erhellt anzuzeigenden Text an. FUr die Farbwerte sind die folgenden Kennungen zu- gelassen:
Schwarz Blau Grun Cyan Grau Rot Magenta Braun Gelb WeiB
N B G BG N+ R RB GR GR+ W
Sofern der jeweilige Farbbereich blinkend angezeigt werden solI, ist eine Farb- kennungjeweils durch das Zeichen Stern "*" zu erganzen.
Z.B. wird durch COLOR
=
W, Gfestgelegt, daB normal darzustellender Text weiB und erhellt anzuzeigender Text griin dargestellt wird.
Bei leistungsfiihigen Farb-Bildschirmen (mit z.B. einer EGA-Karte), IaBt sich die Hintergrundfarbe danach unterscheiden, ob sie fUr normal bzw. erhellt an- zuzeigenden Text wirksam sein solI. Dabei kann eine Differenzierung dadurch vorgenommen werden, daB "farbwert-l" und "farbwert-2" in der Form "farb- wert-v/farbwert-h" fUr die jeweilige Farbanzeige "farbwert-h" des Hintergrunds angegeben werden diirfen.
Z.B. wird durch COLOR
=
WIB, GR+/Neine weiBe Textanzeige auf blauem Hintergrund vorgenommen, und erhellt an- zuzeigende Texte werden gelb auf schwarzem Hintergrund ausgegeben.
Sollen die Farbangaben nicht generell, sondern differenziert nach der Art der Ausgabe vereinbart werden, so IaBt sich dies innerhalb der Datei CONFIG.DB durch Vereinbarungen yom Typ
COLOR OF { BOX I FIELDS I HIGHLIGHT I INFORMATION
I MESSAGES I NORMAL I TITLES }
=
farbwertefestlegen. Dabei werden durch "BOX" z.B. Menii-Rander, durch "FIELDS"
z.B. angewahlte Felder innerhalb des Browse-Meniis, durch "HIGHLIGHT"
z.B. die Optionen von Auswahl-Meniis, durch "INFORMA nON" z.B. die Status-Zeile, durch "MESSAGES" z.B. Menii-Anzeigen in der letzten Bild- schirrnzeile, durch "NORMAL" z.B. Window-Begrenzungen und durch
"TITLES" z.B. Datei-Skelett-Begrenzungen innerhalb des View-Meniis ge- kennzeichnet.
Die Farbwahl IaBt sich nicht nur statisch innerhalb der Konfigurations-Datei CONFIG.DB festlegen, sondern auch dynamisch durch die Eingabe des SET COLOR-Befehls in der folgenden Form vornehmen:
SET COLOR [ OF { BOX I FIELDS I HIGHLIGHT I INFORMATION
I MESSAGES I NORMAL I TITLES } ] TO [ farbwert-1 ] [ , [ farbwert-2 ] ] So wird z.B. durch den Befehl
• SET COLOR TO W, G
gefordert, daB normale Texte weiB und erhellt darzustellende Texte griin ange- zeigt werden sollen.
LOsungsteil 311
Losungsteil
FUr die folgenden Losungsvorschllige unterstellen wir, daB das benotigte Lauf- werk voreingestellt ist - etwa durch die Ausfiihrung des SET DEFAULT TO- Befehls "SET DEFAULT TO A".
Losung der Aufgabe 4.1:
• CREATE KUNDE
Layout UeJlwal tung Hinzufugen Suc}len Ende NUM Fe
1dnaMe Feldt!lP Lange Dez Index
1
KDNR NUMeJlisch
3 9 N2
KDNAME Zeic}len
29 N3 l:iII;m'l~I- fAlJ'nM_ In!
•
11• APPEND FROM KUNDE. TXT TYPE SDF 3 Datensatze hinzugefugt
Losung der Aufgabe 4.2:
• CREATE AUFPOSKD
La!lout UeX'waltung HinzufUgen Suchen Ende NUM Fe
1dnaMe Feldt!lP Lange Dez Index
1
AUFNR NUMeJli
SC}1 3 9N
2
DATUM DatuM
8N
3
TERMIN DatuM
8N
4
POSNR NUM!!X'i
SCII 1 9N
5
TEILENR NUMeX'isch
3 0N
6
TEILEANZ NUMeX'i
SCII 3 0N
7
IwwTiiiiiiII mI:t4umn
II) E 11I~Jt.J:It'~1
B!lte fJlei: 3947
IIiJt.J:BI~!