• Keine Ergebnisse gefunden

A.I Untersuchung auf redundanzfreie Speicherung

N/A
N/A
Protected

Academic year: 2022

Aktie "A.I Untersuchung auf redundanzfreie Speicherung"

Copied!
85
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

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.

(2)

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

(3)

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:

(4)

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-

(5)

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:

(6)

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

(7)

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.:

(8)

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)

(9)

(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"!

(10)

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

(11)

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:

(12)

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, ~~~~)

(13)

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.

(14)

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

=

ASSIST

HISTORY = 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

=

wert

Die 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

(15)

&& siehe Abschnitt 9.4 CATALOG

=

katalog-dateiname

CENTURY

= {

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

(16)

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.4

HELP = { 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.1

MARGIN

=

ganzzahl

*

MEMOYIDTH

=

ganzzahl

NEAR

= {

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

(17)

*

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-

(18)

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 wert

I

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-

(19)

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,

(20)

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 PFS

I

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.

(21)

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.

(22)

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")

(23)

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 ... )

(24)

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

(25)

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

(26)

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-

(27)

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

(28)

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

(29)

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

(30)

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

(31)

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

(32)

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

(33)

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

(34)

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:

(35)

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

(36)

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: ESC

I I

Ja: Zeilenlineal willd ausgeblendet

Hervorzuheben 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

(37)

Sofern der jeweilige Farbbereich blinkend angezeigt werden solI, ist eine Farb- kennungjeweils durch das Zeichen Stern "*" zu erganzen.

Z.B. wird durch COLOR

=

W, G

festgelegt, 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+/N

eine 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 }

=

farbwerte

festlegen. 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.

(38)

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

1

dnaMe Feldt!lP Lange Dez Index

1

KDNR NUMeJlisch

3 9 N

2

KDNAME Zeic}len

29 N

3 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

1

dnaMe Feldt!lP Lange Dez Index

1

AUFNR NUMeJli

SC}1 3 9

N

2

DATUM DatuM

8

N

3

TERMIN DatuM

8

N

4

POSNR NUM!!X'i

SCII 1 9

N

5

TEILENR NUMeX'isch

3 0

N

6

TEILEANZ NUMeX'i

SCII 3 0

N

7

IwwTiiiiiiII mI:t4umn

II) E 11

I~Jt.J:It'~1

B!lte fJlei: 3947

IIiJt.J:BI~!

B!lte fJlei: 3971

Referenzen

ÄHNLICHE DOKUMENTE

En mode DAB+, appuyez sur la touche MENU ou appuyez et maintenez la touche de la télécommande enfoncée pour afficher le menu DAB+.. À partir de là, vous avez la

4 Menu / Enter button w Info / Scan button 5 Preset / Save button e VOL+ button 6 Audio port (3.5mm) r VOL- button 7 Microphone1. Charging

Es war seitens der KommAustria darauf zu achten, dass bei einer künftigen Programmbelegung auch der ORF Programme bei entsprechender Nachfrage und Interesse als

Wenn das Gerät längere Zeit nicht betrieben wird, entnehmen Sie alle Batterien der Fernbedienung, da diese auslaufen und das Gerät beschädigen können.. Das Gerät verwendet

ausschalten Die Weckfunktion kann sowohl in Standby aktiviert werden (dazu Taste MODE / ALARM 2 kurz drücken) als auch bei eingeschaltetem Gerät (Taste MODE / ALARM 2 lang

Für wichtiger als eine Diskussion um einen UKW-Abschalttermin hält der Radiomanager die Entwicklung von Kriterien, nach denen über eine Abschaltung entschieden werden kann?.

Wenn das Gerät längere Zeit nicht betrieben wird, entnehmen Sie alle Batterien, da diese auslaufen und Gerät beschädigen können.. Zu hohe Lautstärke, besonders bei Kopfhörern, kann

Aber auch die CEPT-Festlegung für das L-Band in Thüringen entsprach nicht den Bedürfnissen des Landes, da die Blockgrenzen gegenüber der Anmel- dung des Landes verändert wurden.