<< Inhaltsverzeichnis Suchen >>

Verwalten Datei-Beschreibungen

Die Erfassung der Dateibeschreibung gliedert sich in folgende Teile:

a) Eingabe des Datei-Namens und des Dateityps
b) Erfassen der Dateifelder
c) Erfassen der Schlüssel

 

a) Eingabe des Datei-Namens und des Dateityps

 

Datei-Name

Der Datei-Name besteht aus 1 bis 8 Zeichen. Er muß mit einem Buchstaben beginnen und darf nachfolgend nur Buchstaben und/oder Ziffern enthalten. Er wird vom EBUS-GENERATOR-C zur Identifizierung dieser Datei und von den generierten Programmen als Dateiname verwendet.

 

Nach einer leeren Eingabe oder mit <F2> bei Datei-Name werden die vorhandenen Datei­beschreibungen am Bildschirm angezeigt. Die Anzeige kann mit <ESC> verlassen werden. Bei Auswahl eines Datei-Namens durch <RETURN> wird der ausgewählte Datei-Name als Eingabe übernommen.

Dateityp

Folgende Formate stehen zur Auswahl:

 

<E>:

Die Datensätze werden vom EBUS-Programm im EBUS-Format auf besonders effiziente Weise abgelegt. Dadurch steht der volle Funktionsumfang der EBUS-Indexdatei-Verwaltung zur Verfügung.

 

<D>:

Die Datensätze werden nach DBASE-Konventionen abgelegt. Die Datendateien sind voll DBASE-kompatibel. Die Indexdatei <dateiname>.i1 wird im EBUS-Format angelegt.

 

<B>:

BTRIEVE-Datei

 

<C>:

C-ISAM-Datei

 

<O>:

ODBC-Datei: Dieser Dateityp ist nur bei WINDOWS-Programmen möglich. Über ODBC können beliebige Datenbanken angesteuert werden.

 

Für den Datei-Typ <D> gelten folgende Konventionen und Einschränkungen:

 

·      Der Feldname darf maximal 10 Stellen lang sein. (Das $-Zeichen bei alphanumerischen Feldern wird nicht mitgerechnet.)

 

·      Punkte im Feldnamen werden beim Eintrag in den Header der DBASE-Datei in Unterstreichungszeichen <_> umgewandelt.

 

·      Memo-Felder besitzen den Typ <A> (alphanumerisch) und haben genau die Länge 10. Unter Bemerkung muß am Anfang in Großbuchstaben <MEMO> stehen, dahinter kann beliebiger Text folgen. Im EBUS-Programm können Memo-Felder nur mit der Anweisung PUTMEMO geschrieben und mit der Funktion GETMEMO$ gelesen werden.

Beschreibung

Text von maximal 35 Zeichen, der nur zur Dokumentation dient und für die Programmgenerierung und Datenspeicherung ohne Bedeutung ist.

 


Beispiel:

 

Feldname            Typ        Feldlänge           NKS       Bemerkung

TEXT$                 A            10                                        MEMO

 

 

·      Logische Felder besitzen den Typ <A> (alphanumerisch) und haben genau die Feldlänge 1. Unter Bemerkung­ muß am Anfang in Großbuchstaben <LOGIC> stehen, dahinter kann beliebiger Text folgen.

 

        Logische Felder besitzen die Werte <T> für logisch wahr (true) und <F> für logisch falsch (false).

 

 

 

 


Beispiel:

 

Feldname            Typ        Feldlänge           NKS       Bemerkung

OK$                     A            1                                          LOGIC

 

 

·      Gepackte numerische Felder sind nicht zulässig. (Typ <P>)

 

·      Datumsfelder haben immer die Länge 8.

 

·      Bei numerischen Feldern mit Nachkommastellen wird der Dezimalpunkt ebenfalls abgespeichert. Deshalb müssen Masken- und Reportfelder eine Stelle kürzer sein als bei Feldlänge angegeben.

 

·      Die Datei, die die Daten enthält, hat die Erweiterung .dbf (z.B. kunden.dbf). Diese Datei ist voll DBASE-kompatibel und kann auch von DBASE aus angesprochen werden.

 

 

 

Für den Datei-Typ <C> gelten folgende Konventionen:

 

Die EBUS-Datentypen numerisch, Datum und alphanumerisch werden bei C-ISAM als CHARTYPE gespeichert.

Die C-ISAM-spezifischen Datentypen INTTYPE, LONGTYPE, FLOAT­TYPE, DOUBLETYPE und DECIMALTYPE werden ebenfalls unterstützt. Diese Datentypen sind als numerische Felder zu erfassen. Bei Bemerkung muß am Anfang in Großbuchstaben der C-ISAM-Datentyp angegeben werden.

 

 


Beispiel:

 

Feldname            Typ        Feldlänge           NKS       Bemerkung

H1                        N            2                                          INTTYPE

H2                        N            4                                          LONGTYPE

H3                        N            4                           2             FLOATTYPE

H4                        N            8                           3             DOUBLETYPE

H5                        N            11                         2             DECIMALTYPE

 

 

 

 

 

Bei DECIMALTYPE handelt es sich um gepackte Daten. Bei Feldlänge ist die Länge anzugeben, die im Datensatz belegt werden soll. NKS bezeichnet die Anzahl der realen Nachkommastellen. Mit dem Datentyp DECIMALTYPE wird im Programm aber nicht gerechnet. Die Feldwerte werden nach dem Einlesen eines Datensatzes nach double konvertiert.

 

Änderung des Dateityps

Die Änderung des Dateityps ist jederzeit möglich. Lediglich bei der Änderung von <E>, <B>, <C> oder <O> nach <D> (DBASE) müssen folgende Bedingungen erfüllt sein:

·        Die Feldnamen dürfen nur aus maximal 10 Zeichen bestehen. Das $-Zeichen bei alphanumerischen Feldern wird dabei nicht mitgezählt.

·        Die Datei-Beschreibung darf keine Datumsfelder der Länge 6 enthalten.

·        Die Datei-Beschreibung darf keine gepackten numerischen Felder enthalten.

 

 

Achtung: Die Änderung des Dateityps bezieht sich nur auf die Datei-Beschreibung. Versucht nach der Änderung des Dateityps von <E> nach <D> ein neu generiertes EBUS-Programm auf eine bereits existierende Indexdatei zuzugreifen, wird das Programm mit Fehler abgebrochen (Dateityp EBUS/DBASE stimmt nicht überein, OK2 = 916).

 

 

 

 

b) Erfassen der Dateifelder

 

Steuertasten

Mit den Tasten <RETURN> bzw. <®|> und <> wird feldweise vorwärts bzw. rückwärts gesprungen. Mit den Tasten <¯> und <­> kann die Zeile gewechselt werden. Mit <F3> und <F4> kann jeweils 6 Zeilen vorwärts bzw. rückwärts geblättert werden. Mit <PGDN> bzw. <PGUP> wird 1 Seite vorwärts bzw. rückwärts geblättert.

 

Beschreibung der Eingabefelder

Eingabefeld

Bedeutung

Feldname

Hier ist der Name des Dateifeldes einzugeben. Beliebige Kombinationen aus Buchstaben, Ziffern und Punkten sind zulässig.

 

Ein alphanumerisches Feld muß mit dem Zeichen <$> enden, Typ wird dann automatisch mit <A> belegt.

 

Mit <ESC> wird die Erfassung der Feldnamen beendet.

 

Wird auf der 1. Position bei Feldname ein Punkt gefolgt von weiteren Zeichen eingegeben, so geschieht folgendes:

 

Enthält der eine Zeile zuvor eingegebene Feldname keinen Punkt, so wird die neu eingegebene Zeichenfolge an den vorherigen Feldnamen angehängt und im aktuellen Eingabefeld angezeigt. Andernfalls werden die Zeichen nach dem letzten Punkt des vorherigen Eingabefeldes durch die neu eingegebenen Zeichen ersetzt. Mit <RETURN> oder <¯> kann der angezeigte Feldname übernommen werden. Diese Methode kann dazu verwendet werden, gleichartige Feldnamen schneller zu erfassen ohne immer den vollen Namen ausschreiben zu müssen.

 

 


Beispiel:

 

                              Feldname           

letzte Eingabe:    TELEFONNR
neue Eingabe:      .ALT
angezeigt wird:    TELEFONNR.ALT

 

 


Beispiel:

 

                              Feldname

letzte Eingabe:    TELEFONNR.ALT
neue Eingabe:      .NEU
angezeigt wird:    TELEFONNR.NEU

 

 

Die Felder einer Indexdatei werden in der Programmiersprache des EBUS-GENERATOR-C mit

 

<DATEINAME>.<FELDNAME>

 

angesprochen. Wenn also die Datei im obigen Beispiel ADRESSEN heißt, so heißen die oben verwendeten Felder:

 

ADRESSEN.TELEFONNR
ADRESSEN.TELEFONNR.ALT
ADRESSEN.TELEFONNR.NEU

Typ

<A>

alphanumerisch (wird automatisch belegt, wenn der Feldname mit <$> endet)

 

<N>

numerisch

 

<P>

numerisch gepackt

 

<D>

Datum

Feldlänge

Feldlänge
Folgende Feldlängen sind zulässig:

 

Typ

Feldlänge

 

 

<A>
<N>
<P>
<D

1 bis 999 Zeichen
1 bis 15 Ziffern
1 bis 15 Ziffern
6 oder 8 Ziffern

 

NKS

Nachkommastellen

 

Die Nachkommastellen sind nur bei numerischen Feldern (Typ <N> oder <P>) von Bedeutung und werden sonst automatisch mit 0 belegt.

Bemerkung

Kommentar von maximal 35 Zeichen, der nur zur Dokumentation dient und für die Programmgenerierung und Datenspeicherung ohne Bedeutung ist.

 

Ist die Datei vom Dateityp <D> (DBASE), werden Memo­felder durch <MEMO> und Logic-Felder durch <LOGIC> am Beginn der Bemerkung gekennzeichnet. Dabei sind die weiteren Regeln für Memo- und logische Felder unter Abschnitt a) zu beachten. Analoges gilt für Dateityp <C> (s.o.).

 

c) Erfassen der Schlüssel

Um in die Schlüssel-Verwaltung zu gelangen, muß sich der Cursor in der Kopfzeile der Datei-Verwaltung befinden, z.B. im Feld "Datei-Name". Aus der Feldbeschreibung gelangt man dorthin durch die Taste ESC. Danach kann die Schlüssel-Verwaltung mit der Taste <F6> angesprungen werden.

Jede Indexdatei muß einen Haupt-Schlüssel (Primär-Key) besitzen. Daneben können optional bis zu 20 Neben-Schlüssel (Sekundär-Keys) definiert werden.

Jeder Schlüssel kann aus mehreren Einzelfeldern (maximal neun) zusammengesetzt sein. Dabei darf die Länge des Schlüssels, das ist die Summe aller zugehörigen Feldlängen, 100 Bytes nicht überschreiten. Die Reihenfolge der Neben-Schlüssel ist für die Programm-Generierung ohne Bedeutung.

Mit <F2> werden alle Feldnamen in einem Fenster aufgelistet. Mit <F3> und <F4> bzw. <PGDN> und <PGUP> kann innerhalb der bereits erfaßten Schlüssel geblättert werden. Mit <F5> können vorhandene Neben-Schlüssel gelöscht werden.

Enthält der Schlüssel alphanumerische Felder, muß die Frage, ob bei der Schlüsselauswertung Groß- und Kleinschreibung berücksichtigt werden soll, mit <J> oder <N> beantwortet werden. Wird <J> eingegeben, so wird im Schlüssel zwischen Groß- und Kleinbuchstaben unterschieden: In der Sortierreihenfolge erscheinen alle Großbuchstaben vor den Kleinbuchstaben. Bei Eingabe von <N> ist Groß- oder Kleinschreibung eines Buchstabens für die Sortierreihenfolge unerheblich.

Einfügen Schlüssel

Zusätzliche Schlüssel können nur nach dem letzten Schlüssel angefügt werden.

Auswirkung von Änderungen auf bereits existierende EBUS-Indexdateien

Wurde die Datensatzlänge oder die Anzahl der Schlüssel oder die Zusammensetzung der Schlüssel einer bereits existierenden EBUS-Indexdatei geändert, wird beim Start eines Programms, das mit der geänderten Dateibeschreibung generiert wurde, abgefragt, ob die alte Indexdatei reorganisiert werden soll. Falls ja, werden die vorhandenen Datensätze durch Auffüllen mit Leerzeichen (Blanks) bzw. durch Abschneiden der überzähligen Zeichen auf die neue Datensatzlänge gebracht. Der Inhalt der Datensätze wird nicht verändert. Alle Schlüssel werden neu aufgebaut. Deshalb können Schlüssel beliebig geändert werden.

 

 

Achtung: Dateifelder können am Ende eines Datensatzes angefügt oder gelöscht werden, ohne daß der alte Datei-Inhalt zerstört wird. Die Reihenfolge der Felder in einem Datensatz ist für den Programmlauf unerheblich, deshalb sollten zusätzliche Felder immer am Ende angefügt werden. Werden dagegen Längen-Änderungen von Dateifeldern in der Mitte des Datensatzes vorgenommen, werden die alten Datensätze unbrauchbar, da sich die Position der nachfolgenden Felder im Datensatz verschiebt. In diesem Fall muß ein Hilfsprogramm geschrieben werden, in dem die Daten Feld für Feld einer Indexdatei mit neuem Namen zugewiesen werden.

 

 


Beispiel:

 

Falsch:

Alte Indexdatei                                 geänderte Indexdatei ADRESSEN
ADRESSEN                                      nach der Reorganisation

Länge    Feld      Inhalt                   Länge    Feld      Inhalt
5             Nr          00010                  5             Nr          00010
7             NAME$ Huber__                             10          NAME$ Huber__800
4             PLZ       8000                     4             PLZ       0Mün
10          ORT$     München___       10          ORT$     chen______

 


Richtig:

/* Macro zur Umwandlung der Indexdatei ADRESSEN in die Indexdatei ADRNEU

INITIALIZE ADRESSEN
SATZ_GELESEN = 1
START ADRESSEN
               ON ERROR
                              ERRORMES = "Index-Datei ADRESSEN ist leer!"
                              SATZ_GELESEN = 0
               END

WHILE SATZ_GELESEN
DO         ADRNEU.NR = ADRESSEN.NR
               ADRNEU.NAME$ = ADRESSEN.NAME$
               ADRNEU.PLZ = ADRESSEN.PLZ
               ADRNEU.ORT$                = ADRESSEN.ORT$
               WRITE ADRNEU
                              ON ERROR ERRORMES = "Fehler beim Schreiben:"
                                                                              +STR$(OK)+STR$(OK2)
                                                  QUIT
                              END
               READ-NEXT ADRESSEN ON ERROR SATZ_GELESEN = 0 END
ENDDO

Neue Indexdatei ADRNEU

Länge    Feld                     Inhalt
5             Nr                         00010
10          NAME$               Huber_____
4             PLZ                      8000
10          ORT$                   München___

 

 

Löschen Datei-Beschreibung

 

Mit <F5> kann die aktuelle Datei-Beschreibung gelöscht werden.

 

 

Achtung: Beim Löschen einer Datei-Beschreibung wird die Beschreibung der Indexdatei gelöscht, nicht etwa bereits vorhandene Daten in der Indexdatei, die mit einem früher generierten Programm erzeugt wurden. Die Indexdateien selbst müssen mit Betriebssystem-Kommandos (MS-DOS: del <dateiname>.*, UNIX: rm <dateiname>.*) gelöscht werden.