home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / pocketbk / utilsr / sprfil / SPRFILES.TXT
Text File  |  1992-10-06  |  25KB  |  855 lines

  1.  
  2.  
  3.             
  4.                        Series 3/MC Spreadsheet File Format
  5.             
  6.  
  7.             This document describes the structure of .SPR files used
  8.             by the MC and Series 3 spreadsheets. It is based around a
  9.             similar document produced specifically for V1.07f and
  10.             1.08f of the MC spreadsheet.
  11.  
  12.  
  13.             
  14.              Header
  15.             
  16.  
  17.             The spreadsheet starts with the following header:
  18.  
  19.                  TEXT fid[16]="SPREADSHEET" packed with zeros
  20.                  UWORD vers=0
  21.                  UWORD offset=0
  22.                  UWORD rtvers=0
  23.  
  24.             This header must be supplied exactly for current versions
  25.             of the spreadsheet to load the file.
  26.  
  27.  
  28.             
  29.              Records
  30.             
  31.  
  32.             The remainder of the file consists of type/length
  33.             records:
  34.  
  35.                  UWORD type     the type of the following record
  36.                  UWORD len   the length of the following record
  37.                  Record Data    len bytes
  38.  
  39.             The structure of the record data is dependent on the
  40.             record type and currently the following types are defined
  41.  
  42.                       1         Formula
  43.                       2         Cell contents
  44.                       3         Column width
  45.                       4         Default column width
  46.                       5         Status information
  47.                       6         Display information
  48.                       7         Named range
  49.                       8         Print range
  50.                       9         Database/criteria ranges
  51.                       10        Table
  52.                       11        Print setup (MC)
  53.                       12        Font (MC)
  54.                       13        Graph (S3)
  55.                       14        Current graph index (S3)
  56.                       15        Font palette (S3)
  57.                       16        Print data (S3)
  58.                       17        Printer model (S3)
  59.  
  60.  
  61.  
  62.                                         Page - 1
  63.  
  64.  
  65.        Series3/MC spreadsheet file format
  66.  
  67.                       18        Header text (S3)
  68.                       19        Footer text (S3)
  69.                       20        Screen extras (S3)
  70.                       
  71.  
  72.             As indicated some of the above types are specific to the
  73.             MC version and some to the Series 3.
  74.  
  75.             By and large records can appear in any order, there are
  76.             currently just two exceptions to this. All formulae
  77.             records (type 1) must appear before the cells (type 2)
  78.             that access them, and the order in which they appear
  79.             should be preserved. The Screen Extras record (type 20),
  80.             when present, should immediately precede the Display
  81.             information record (type 6), if not it will be ignored.
  82.  
  83.             Some record types may appear many times and not all
  84.             record types need be present, an indication of which are
  85.             which is given in the following sections.
  86.  
  87.             Withinrecords range references specify top left, botton
  88.             right cells in terms of columns and rows. These refernces
  89.             are inclusive, i.e. {{0,0},{1,2}} is a range A1:B3.
  90.  
  91.  
  92.             
  93.              Formula record (type 1, length variable)
  94.             
  95.  
  96.             Formulae are stored seperately from the cells that use
  97.             them. This allows memory savings to be made by storing
  98.             only one copy of a commonly used formula.
  99.  
  100.             The record data for a formula is structured as follows:
  101.  
  102.               UWORD   use       usage count
  103.               UBYTE   len       formula length
  104.               UBYTE   form[len]
  105.  
  106.             The formula is stored in Reverse Polish Notation. All
  107.             operands are preceeded by a byte that identifies their
  108.             type. There is no difference between the way functions
  109.             and operators are treated; both are identified by a
  110.             single byte following the operands they act on.
  111.  
  112.             Brackets are stored as entered and are ignored when
  113.             evaluating formulae. They are supplied only so that
  114.             formulae can be reproduced as typed in.
  115.  
  116.             The RPN structure is broken for one set of functions.
  117.             These are the functions acting upon variable length lists
  118.             (AVG, COUNT, MAX, MIN, STD, SUM and VAR). The have Start
  119.             and End tokens either side of the arument list and each
  120.             operand within the list is preceded by a special token.
  121.  
  122.             The tokens used in formulae are as follows:
  123.  
  124.  
  125.  
  126.  
  127.  
  128.                                         Page - 2
  129.  
  130.  
  131.        Series3/MC spreadsheet file format
  132.  
  133.             Operators
  134.  
  135.                  0x01 Less than
  136.                  0x02 Less than or equal
  137.                  0x03 Greater than
  138.                  0x04 Greater than or equal
  139.                  0x05 Not equal
  140.                  0x06 Equal
  141.                  0x07 Add
  142.                  0x08 Subtract
  143.                  0x09 Multiply
  144.                  0x0a Divide
  145.                  0x0b Power
  146.                  0x0c Unary plus
  147.                  0x0d Unary minus
  148.                  0x0e Logical not
  149.                  0x0f Logical and
  150.                  0x10 Logical or
  151.                  0x11 String concatinate
  152.  
  153.  
  154.             Delimiters
  155.  
  156.                  0x12 Open bracket
  157.                  0x13 Close bracket
  158.                  0x14 Comma
  159.                  0x15 End of formula
  160.  
  161.  
  162.             Operands
  163.  
  164.                  0x16 Double constant (IEEE floating point number)
  165.                  0x17 Integer constant (WORD)
  166.                  0x18 Text string (Leading byte counted string)
  167.                  0x19 Cell reference (WORD col, WORD row)
  168.                  0x1a Range reference (WORD tlCol, WORD tlRow, WORD
  169.             brCol, WORD brRow)
  170.  
  171.             Column or row references can either be absolute or
  172.             relatuve, dependent on the top bit of the WORD. If the
  173.             top bit is set (TRUE) the reference is relative,
  174.             otherwise, the reference is absolute. Relative references
  175.             are treated as a signed offset (ignoring the top bit)
  176.             from the cell which uses the formula. NOTE cell A1 is
  177.             0,0.
  178.  
  179.  
  180.             Functions
  181.  
  182.             In the following, 'x' refers to a numeric argument, 'str'
  183.             a string and 'range' a range reference.
  184.  
  185.                  0x1b Err
  186.                  0x1c False
  187.                  0x1d Na
  188.                  0x1e Pi
  189.                  0x1f Rand
  190.                  0x20 Now
  191.  
  192.  
  193.  
  194.                                         Page - 3
  195.  
  196.  
  197.        Series3/MC spreadsheet file format
  198.  
  199.                  0x21 True
  200.                  0x22 Abs(x)
  201.                  0x23 Acos(x)
  202.                  0x24 Asin(x)
  203.                  0x25 At(str)
  204.                  0x26 Atan(x)
  205.                  0x27 Cellpointer(x)
  206.                  0x28 Char(x)
  207.                  0x29 Code(str)
  208.                  0x2a Cols(range)
  209.                  0x2b Cos(x)
  210.                  0x2c Datevalue(str)
  211.                  0x2d Day(x)
  212.                  0x2e Exp(x)
  213.                  0x2f Hour(x)
  214.                  0x30 Int(x)
  215.                  0x31 Iserr(range)
  216.                  0x32 Isna(range)
  217.                  0x33 Isnum(range)
  218.                  0x34 Isstr(range)
  219.                  0x35 Len(str)
  220.                  0x36 Ln(x)
  221.                  0x37 Log(x)
  222.                  0x38 Lower(str)
  223.                  0x39 Minute(x)
  224.                  0x3a Month(x)
  225.                  0x3b N(range)
  226.                  0x3c Proper(str)
  227.                  0x3d Rows(range)
  228.                  0x3e S(range)
  229.                  0x3f Second(x)
  230.                  0x40 Sin(x)
  231.                  0x41 Sqrt(x)
  232.                  0x42 Tan(x)
  233.                  0x43 Timevalue(str)
  234.                  0x44 Trim(str)
  235.                  0x45 Upper(str)
  236.                  0x46 Value(str)
  237.                  0x47 Year(x)
  238.                  0x48 Atan2(x,x)
  239.                  0x49 Cell(x,range)
  240.                  0x4a Exact(str,str)
  241.