Apple II
File Type Notes
_____________________________________________________________________________
                                                  Developer Technical Support

File Type:         $19 (25)
Auxiliary Type:    All

Full Name:     AppleWorks Data Base File
Short Name:    AppleWorks DB File

Revised by:    Matt Deatherage & John Kinder, Claris Corporation    July 1990
Written by:    Bob Lissner    February 1984

Files of this type and auxiliary type contain an AppleWorks(R) Data Base file.
Changes since September 1989:  Corrected the description of offset +337 in the 
header.
_____________________________________________________________________________

Files of type $19 and any auxiliary type contain an AppleWorks Data Base file.  
AppleWorks is published by Claris.  Claris also has additional information on 
AppleWorks files SEG.PR and SEG.ER.  For information on AppleWorks, contact 
Claris at:

                    Claris Corporation
                    5201 Patrick Henry Drive
                    P.O. Box 58168
                    Santa Clara, CA 95052-8168

                    Technical Support
                    Telephone:  (408) 727-9054
                    AppleLink:  Claris.Tech

                    Customer Relations
                    Telephone:  (408) 727-8227
                    AppleLink:  Claris.CR

AppleWorks was created by Bob Lissner.  AppleWorks 2.1 was done by Bob Lissner 
and John Kinder of Claris.  AppleWorks 3.0 was done by Randy Brandt, Alan Bird 
and Rob Renstrom of Beagle Bros Software with John Kinder of Claris.


Definitions

The following definitions apply to AppleWorks files in addition to those 
defined for all Apple II file types:

    MRL   Data base multiple record layout
    SRL   Data base single record layout
    RAC   Review/Add/Change screen
    DB    AppleWorks or /// E-Z Pieces Data Base
    SS    AppleWorks or /// E-Z Pieces Spreadsheet
    WP    AppleWorks or /// E-Z Pieces Word Processor
    AW    AppleWorks or /// E-Z Pieces


Auxiliary Type Definitions

The volume or subdirectory auxiliary type word for this file type is defined 
to control uppercase and lowercase display of filenames.  The highest bit of 
the least significant byte corresponds to the first character of the filename, 
the next highest bit of the least significant byte corresponds to the second 
character, etc., through the second bit of the most significant byte, which 
corresponds to the fifteenth character of the filename.

AppleWorks performs the following steps when it saves a file to disk:

  1.  Zeros all 16 bits of the auxiliary type word.
  2.  Examines the filename for lowercase letters.  If one is found, it 
      changes the corresponding bit in the auxiliary type word to 1 and 
      changes the letter to uppercase.
  3.  Examines the filename for spaces.  If one is found, it changes the 
      corresponding bit in the auxiliary type word to 1 and changes the 
      space to a period.

When files are read from disk, the filename and auxiliary type information 
from the directory file entry are used to determine which characters should be 
lowercase and which periods should be displayed as spaces.  If you use the 
auxiliary type bytes for a different purpose, AppleWorks will still display 
the filenames, but the wrong letters are likely lowercase.


File Version Changes

Certain features present in AppleWorks 3.0 files are not backward-compatible 
to 2.1 and earlier versions.  Such features are noted in the text.  AppleWorks 
Data Base files which may not be loaded by versions prior to 3.0 are 
identified by a non-zero byte at location +218, referred to as location 
DBMinVers.

Those features added for AppleWorks 2.0, 2.1 and 3.0 not previously documented 
are indicated with that version number in the margin.


Data Base Files

Data base files start with a variable length header, followed by 600 bytes for 
each report format (if any), the standard values record, then variable length 
information for each record.

Header Record

The header contains category names, record selection rules, counts, screen 
positioning information, and all other non-record specific information.

       +000 to +001    Word    The number of bytes in the remainder 
                               of the header record.  Use this 
                               count for your next ProDOS read from 
                               the disk.
       +002 to +029            Ignore these bytes.
       +030            Byte    Cursor direction when the Return key 
                               is pressed in SRL.  $01: Order in 
                               which you defined categories or $02: 
                               Left to right, top to bottom.
       +031            Byte    What direction should the cursor go 
                               when you press the Return key in the 
                               MRL?  D)own or  R)ight.
       +032 to +033            Ignore these bytes.
       +034            Byte    Style of display that 
                               Review/Add/Change was using when the 
                               file was saved:  R: SRL.  Slash (/): MRL.
       +035            Byte    Number of categories per record.  
                               Values from $01 to $1E.
3.0    +036 to +037    Word    Number of records in file.
                               If DBMinVers is non-zero, the high 
                               bit of this word may be set.  If it 
                               is, there are more than eight 
                               reports and the remaining 15 bits 
                               contain the true number of records 
                               defined.
3.0    +038            Byte    Number of reports in a file, maximum 
                               of 8 (20 for 3.0).
       +039 to +041            Ignore these bytes.
       +042 to +071    Bytes    For each of up to 30 columns, 
                               showing the number of spaces used 
                               for this column on the MRL.  Be sure 
                               you understand that categories may 
                               have been rearranged on the MRL.  
                               Byte +042 refers to the leftmost 
                               column on the MRL.
       +072 to +077            Ignore six bytes.
       +078 to +107    Bytes   For up to 30 categories on the MRL, 
                               the defined category that appears in 
                               each position.  Byte +078 is the 
                               leftmost column of the MRL and has a 
                               value from $01 to $1E that defines 
                               which of the category names appears 
                               in this position.  These numbers 
                               change as a result of changing the 
                               layout of the MRL.
       +108 to +113            Ignore six bytes.
       +114 to +143    Bytes   For up to 30 categories on the SRL, 
                               the horizontal screen position.  
                               These are changed as a result of 
                               changing the layout of the SRL.  
                               AppleWorks makes sure that these 
                               entries, and the vertical screen 
                               positions, are kept in order from 
                               left to right within top to bottom.
       +144 to +149            Ignore these six bytes.
       +150 to +179    Bytes   For up to 30 categories on the SRL, 
                               the vertical screen position.
       +180 to +185            Ignore six bytes.
       +186 to +215    Bytes   For up to 30 categories on the SRL, 
                               which of the category names appears 
                               in this position. These change as a 
                               result of changing the SRL.  This 
                               number refers to the category names 
                               listed below.
       +216 to +217            Ignore two bytes.
3.0    +218            Byte    DBMinVers.  The minimum version of 
                               AppleWorks needed to read this file.  
                               This will be $00 unless there are 
                               more than 8 report formats; it will 
                               then contain the version number 30 
                               ($1E) or greater.
3.0    +219            Byte    The first frozen column in the titles.
3.0    +220            Byte    If this is zero, no titles are 
                               present.  If non-zero, this is the 
                               last frozen column.
3.0    +221            Byte    Leftmost active column.  This is 
                               zero-based; if this value is zero, 
                               it means column one, etc.
       +222            Byte    Number of categories on MRL.  Will 
                               be less than or equal to the number 
                               of categories in the file.  SRL 
                               displays all categories, so there is 
                               no equivalent number for SRL.
       +223 to +224    Word    For the first line of RAC selection 
                               rules.  Zero means no selection 
                               rules, while any other value refers 
                               to the category name that is tested.  
                               The high byte will always be zero.
       +225 to +226    Word    Category name for the second line of 
                               RAC selection rules.  Zero means 
                               that there is only one line.
       +227 to +228    Word    Category name for the third line of 
                               RAC selection rules.  Zero means 
                               that there is no third line.
       +229 to +230    Word    For the first line of RAC rules, 
                               which of the tests is to be applied.  
                               1 means equals, 2 means greater than 
                               and so on.
       +231 to +232    Word    Test for the second line of rules, 
                               if any.
       +233 to +234    Word    Test for the third line, if any.
       +235 to +236    Word    Continuation code for the first 
                               line:  1: And, 2: Or, 3: Through.
       +237 to +238    Word    Continuation code for the second line.
       +239 to +240    Word    Continuation code for the third line.  
                               Not possible, so it is always zero.
       +241 to +272    String  Maximum length of 30 bytes.  
                               Comparison information for the first 
                               line RAC selection rules.
       +273 to +304    String  Comparison for the second line.
       +305 to +336    String  Comparison for the third line.
       +337 to +356            Ignore these twenty bytes.
       +357 to +378    String  Name of the first category.  Maximum 
                               length of 20 bytes.  If the file has 
                               only one category, the header record 
                               will end here.
       +379 to +400    String  Name of the second category, if any.  
                               This area will not be on the header 
                               record if there is only one category.
       +401            22 Bytes  Additional 22 byte entries for all 
                               remaining categories.  The size of 
                               the header record depends on the 
                               number of categories.  Space is not 
                               maintained past the last category.

Report Records

Report records follow the header record.  One of the header record categories 
tells you how many report records to expect.  The number will be from zero to 
eight.  Each report record is 600 bytes, and contains:

       +000 to +019    String  Report name.  Maximum length of 19 characters.
       +020 to +052    Bytes   Column width for up to 33 columns in 
                               a tables-style report format.  Byte 
                               +020 is for the leftmost column on a 
                               tables-style report.  There can be 
                               up to 30 categories from the file, 
                               plus 3 more calculated columns.
                               For labels-style report formats, the 
                               value is a byte that has the 
                               horizontal position of this 
                               category, relative to the left 
                               margin.
       +053 to +055            Skip 3 bytes.
       +056 to +088    Bytes   For tables-style:  Number of spaces 
                               to be printed at the right of 
                               justified columns.
                               For labels-style:  Vertical position 
                               on the report for each of up to 30 
                               categories.  A value of 1 means that 
                               category is on the first line of 
                               labels-style report.
       +089 to +091            Skip 3 bytes.
       +092 to +124    Bytes   For up to 33 columns of tables-
                               style:  Values from 1 to 30 refer to 
                               which category name appears in this 
                               column on the report.  Values of 
                               $80, $81 and $82 are the three 
                               calculated categories, from left to 
                               right.
                               For labels-style:  Same as tables-
                               style, minus the calculated categories.
       +125 to +127            Skip these three bytes.
       +128 to +160    Bytes   For up to 33 columns of tables-
                               style:  $99 means no foot totals, 0 
                               through 4 means the number of 
                               decimal places for a foot total.
                               For labels-style:  For up to 30 
                               categories on report, Boolean bytes 
                               whether or not category names are to 
                               be printed.
       +161 to +163            Skip these three bytes.
       +164 to +196    Bytes   For up to 33 columns of tables-
                               style:  $99 means left justified, 0 
                               through 4 means right justified with 
                               0 to 4 decimal places.
                               For up to 30 categories of labels-
                               style:  Boolean bytes whether or not 
                               to float (OA-J) this category up 
                               against the category to its left.
       +197 to +199            Skip three bytes.
       +200            Byte    Number of categories on report.  
                               Includes calculated categories, if any.
       +201            Byte    Tables-style.  If there is at least 
                               one calculated category, this 
                               contains values from 1 to 33: which 
                               column of the report.
                               Labels-style:  Values from 3 to 21.  
                               Position of the line on the screen 
                               that says "Each record will print nn lines."
       +202            Byte    Tables-style:  Same as +201, but for 
                               the second calculated category, if any.
                               Labels-style:  Unused.
       +203            Byte    Tables-style:  Same as +201, but for 
                               the third calculated category, if any.
                               Labels-style:  Unused
       +204            Byte    Tables-style only:  If there is a 
                               group total column, this byte states 
                               which of the category names is used 
                               as a basis.  Values from 1 to 30.
       +205            Byte    Platen width value, in 10ths of an 
                               inch.  For example, a value of 8.0 
                               inches entered by the user will show 
                               as 80 or $50.
       +206            Byte    Left margin value.  All inches 
                               values are in 10ths.
       +207            Byte    Right margin value.
       +208            Byte    Characters per inch.
       +209            Byte    Paper length value, in 10ths of an inch.
       +210            Byte    Top margin value.
       +211            Byte    Bottom margin value.
       +212            Byte    Lines per inch.  6 or 8.
       +213            Byte    Not relevant.  Probably always a "C."
       +214            Byte    Type of report format.  
                               H: tables-style, V: labels-style.
       +215            Byte    Spacing:  S(ingle, D(ouble, or 
                               T(riple.  Expect these three 
                               letters, even in European versions.
       +216            Byte    Print report header.  Boolean.
       +217            Byte    Tables-style:  If user has specified 
                               group totals, Boolean, just print 
                               the group totals.
       +218            Byte    Labels-style:  Boolean, omit the 
                               line when all entries on the line 
                               are blank.
       +219            Byte    Labels-style:  Boolean, keep the 
                               number of lines the same within each record.
       +220 to +301    String  80-byte string.  Title line, if any.
       +302 to +323    String  Tables-style.  20-byte string.  Name 
                               of the first calculated category, if any.
       +324 to +355    String  Tables-style.  30-byte string.  
                               Calculation rules for first 
                               calculated category, if any.
       +356 to +409    String  Tables-style.  Name and rules for 
                               second calculated category, if any.
       +410 to +463    String  Tables-style.  Name and rules for 
                               third calculated category, if any.
       +464 to +477    String  If user has specified "Send special 
                               codes to printer," this is a 13 byte 
                               string containing those codes.
       +478            Byte    Boolean:  Print a dash when an entry 
                               is blank.
       +479 to +592    Words & Strings
                               Record selection rules.  Exact same
                               format as described in the header record.
       +593 to +599            Unused

Data Records

Data records follow the report records.  The first data record contains the 
standard values.  Each following data record corresponds to one data base 
record.

These records contain all of the categories within one stream of data.  The 
category entries are in the same order that the category names appear in the 
header record.

Bytes +0 and +1 are a word that contains a count of the number of bytes in the 
remainder of the record.

Byte +2 of each record will always be a control byte.  Other control bytes 
within each record define the contents of the record.  Control bytes may be:

       $01-$7F    This is a count of the number of following bytes 
                  that are the contents of a category.
       $81-$9E    This (minus $80) is a count of the number of 
                  categories to be skipped.  For example, $82 
                  means skip two categories.
       $FF        This indicates the end of the record.

The information in individual categories may have some special coding so that 
date and time entries can be arranged (sorted).

Date entries have the following format:

       +000            Byte    $C0 (192).  Identifies a date entry.
       +001 to 002     Two bytes
                               ASCII year code, like "84" ($38 $34).
       +003            Byte    ASCII month code.  A means January, 
                               L means December.
       +004 to +005    Two bytes
                               ASCII day of the month, like "31" ($33 $31).

Time entries have the following format:

       +000            Byte    $D4 (212).  Identifies a time entry.
       +001            Byte    ASCII hour code.  A means 00 (the 
                               hour after midnight).  X means 23, 
                               the hour before midnight.
       +002 to +003    Two bytes
                               ASCII minute code.  Values from 00 to 59.


File Tags

All AppleWorks files normally end with two bytes of $FF; tags are 
anything after that.  Although File Tags were primarily designed by 
Beagle Bros, they can be used by any application that needs to create or 
modify an AppleWorks 3.0 file.

Because versions of AppleWorks before 3.0 stop at the double $FF, they 
simply ignore tags.

The File Tag structure is as follows:

       +000            Byte    Tag ID.  Should be $FF.
       +001            Byte    2nd ID byte.  These values will be 
                               defined and arbitrated by Beagle 
                               Bros Software.   Beagle may be 
                               reached at:

                                       Beagle Bros Inc
                                       6215 Ferris Square, #100
                                       San Diego, CA  92121

       +002 to +003    Word    Data length.  If this is the last 
                               tag on the file, the low byte (+002) 
                               will be a count of the tags in this 
                               file, and the high byte (+003) will 
                               be $FF.
       +004 to nnn    Bytes    Actual tag data, immediately 
                               followed by the next four-byte tag 
                               ID.  These bytes do not exist for 
                               the last tag.

There is a maximum of 64 tags per file.  Each tag may be no larger than 
2K.

_____________________________________________________________________________
AppleWorks is a registered trademark of Apple Computer, Inc. licensed to 
Claris Corporation.

