Format von DBase III Plus Dateien


        +---------+--------< DBF III+ - HEADER >------------------------+
        | Offset  |   BYTE            | Bedeutung des/ der Byte(s)      |
        |---------|-------------------|---------------------------------|
        |  0      |  1 byte           | Dbase III Versions Nummer       |
        |         |                   |                                 |
        |---------|-------------------|---------------------------------|
        |  1-3    |  3 bytes          | Datum des letzten Updates       |
        |         |                   | (JJ MM DD) binaer               |
        |---------|-------------------|---------------------------------|
        |  4-7    |  32 bit (Longint) | Anzahl der Records              |
        |---------|-------------------|---------------------------------|
        |  8-9    |  16 bit (Word)    | Laenge des Haeders              |
        |---------|-------------------|---------------------------------|
        |  10-11  |  16 bit (Word)    | Laenge eines Records            |
        |---------|-------------------|---------------------------------|
        |  12-31  |  20 bytes         | wird nicht beutzt               |
        |---------|-------------------|---------------------------------|
        | Folgende Anzahl Bytes Bytes beschreiben die benutzten Felder. |
        | Jede Umschreibung umfasst 32 Bytes. Die maximale Anzahl der   |
        | Felder betraegt 128. Das Ende der Tabelle markiert ein #13.   |
        |---------|-------------------|---------------------------------|
        |  0-10   |  11 bytes         | Feldname (ASCIIZ)               |
        |---------|-------------------|---------------------------------|
        |  11     |  1 byte           | Feldtype :                      |
        |         |                   |            'C' = character      |
        |         |                   |            'D' = datum          |
        |         |                   |            'M' = memo           |
        |         |                   |            'L' = integer        |
        |         |                   |            'R' = real           |
        |---------|-------------------|---------------------------------|
        |  12-15  |  32 bit (Longint) | Feld data-adress                |
        |---------|-------------------|---------------------------------|
        |  16     |  1 byte           | die laenge des Feldes           |
        |---------|-------------------|---------------------------------|
        |  17     |  1 byte           | Anzahl der Nachkommastellen.    |
        |---------|-------------------|---------------------------------|
        |  18-31  |  14 bytes         | wird nicht benutzt              |
        |---------|-------------------|---------------------------------|
        |                         Etc......                             |

+0000  03 5E 02 0D 02 00 00 00-61 00 47 00 00 00 00 00   .^......a.G.....
      !  !______! !_________! !___! !___! !_________!
      !  !        !           !     !     !
      !  !        !           !     !     Reserviert
      !  !        !           !     Satzlaenge (hier 71 Bytes)
      !  !        !           Laenge des Headers (hier 97 Bytes)
      !  !        Anzahl der Datensaetze (hier 2)
      !  Datum der letzten Aenderung (JJ-MM-TT, hier 13.02.94)
      dBase-Version (03 = dBase III, 04 = dBase IV)

0010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
      !_____________________________________________!
      !
      Reserviert

0020  49 44 00 00 00 00 00 00-00 00 00 4E 00 00 00 00   ID.........N....
      !______________________________! !  !_________!
      !                                !  !
      !                                !  Reserviert
      !                                Feldtyp (hier N = Numeric)
      Name des 1. Felds (hier "ID", max. 11 Zeichen, mit 00 aufgefuellt)

0030  14 05 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
      !  !______! !  !______________________________!
      !  !        !  !
      !  !        !  Reserviert
      !  !        Arbeitsbereichs-ID (am besten ignorieren)
      !  Reserviert
      Feldlaenge (hier 20 Stellen)

0040  47 52 55 50 50 45 00 00-00 00 00 43 00 00 00 00   GRUPPE.....C....
      !______________________________! !  !_________!
      !                                !  !
      !                                !  Reserviert
      !                                Feldtyp (hier C = Character)
      Name des 2. Felds ("GRUPPE", max. 11 Zeichen, mit 00 aufgefuellt)

0050  32 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   2...............
      !  !______! !  !______________________________!
      !  !        !  !
      !  !        !  Reserviert
      !  !        Arbeitsbereichs-ID (am besten ignorieren)
      !  Reserviert
      Feldlaenge (hier 50 Zeichen)

0060  0D 20 20 20 20 20 20 20-20 20 20 20 20 20 32 37   .             27
      !  !  !_______________________________________!...
      !  !  !
      !  !  Feld Nr. 1 (20 Stellen numerisch, s.o.)
      !  Status 1. Datensatz (20h = ' ' = OK, 2Ah = '*' = geloescht)
      Ende des Headers (0Dh = CR = Carriage Return)

0070  2E 30 30 30 30 30 41 6E-74 69 20 56 69 72 75 73   .00000Anti Virus
   ...!_______________! !___________________________!...
      !                 !
      !                 Feld Nr. 2 (50 Stellen Text, s.o.)
      Feld Nr. 1 (Fortsetzung)

0080  20 20 20 20 20 20 20 20-20 20 20 20 20 20 20 20
   ...!_____________________________________________!...
      !
      Feld Nr. 2 (Fortsetzung)

0090  20 20 20 20 20 20 20 20-20 20 20 20 20 20 20 20
   ...!_____________________________________________!...
      !
      Feld Nr. 2 (Fortsetzung)

00A0  20 20 20 20 20 20 20 20-20 20 20 20 20 20 20 20
   ...!_____________________! !  !__________________!...
      !                       !  !
      !                       !  Feld Nr. 1 (s.o.)
      !                       Status 2. Datensatz
      Feld Nr. 2 (Fortsetzung)

00B0  20 20 20 20 20 32 38 2E-30 30 30 30 30 42 65 74        28.00000Bet
   ...!____________________________________! !______!
      !                                      !
      !                                      Feld Nr. 2 (s.o.)
      Feld Nr. 1 (Fortsetzung)

00C0  72 69 65 62 73 73 79 73-74 65 6D 20 20 20 20 20   riebssystem
   ...!_____________________________________________!...
      !
      Feld Nr. 2 (Fortsetzung)

00D0  20 20 20 20 20 20 20 20-20 20 20 20 20 20 20 20
   ...!_____________________________________________!...
      !
      Feld Nr. 2 (Fortsetzung)

00E0  20 20 20 20 20 20 20 20-20 20 20 20 20 20 20 1A
   ...!__________________________________________! !
      !                                            !
      !                                            Dateiende (1Ah = EOF)
      Feld Nr. 2 (Fortsetzung)



                               Zusammenfassung
                              -----------------

 Byte    Inhalt
------------------------------------------------------------
    0    gueltige dBase-Datei
         Bits 0-2 enthalten die dBASE-Versionsnummer
  1-3    Datum der letzten Aktualisierung (im Format JJMMTT)
  4-7    Anzahl der Datensaetze (als 32-Bit-Zahl)
  8-9    Anzahl der Bytes im Dateivorspann (als 16-Bit-Zahl)
10-11    Datensatzgroesse in Byte (als 16-Bit-Zahl)
12-13    Reserviert (fuer was auch immer)
   14    Markierung fuer nicht beendete Transaktion
   15    Markierung fuer Verschluesselung
16-27    Reserviert fuer Netzwerkbetrieb
   28    Markierung fuer MDX-Index (0 = kein Index / 1 = Arbeitsindex)
29-31    Reserviert (fuer was auch immer)
 32-n    Feldbeschreibungen zu je 32 Byte wie folgt:


                               Feldbeschreibung
                              ------------------
 Byte    Inhalt
------------------------------------------------------------
 0-10    Dateiname im ASC-Code (aufgefuellt mit 00H)
   11    Dateityp
         C - Zeichen
         D - Datum
         F - Fliesskommazahl
         L - Logisch (Ja/Nein - Wahr/Falsch)
         M - Memofeld
         N - Numerisch
12-15    Reserviert
   16    Feldlaenge
   17    Anzahl der Dezimalstellen
18-19    Reserviert
   20    Nummer des Arbeitsbereiches
21-30    Reserviert
   31    Markierung fuer MDX-Index (0 = kein / 1 = Arbeitsindex)