notes/lotus/WSFF2.TXT

2554 lines
76 KiB
Plaintext

WORKSHEET FILE FORMAT
FROM LOTUS
SUMMARY OF RECORD TYPES
Copyright(c) 1984, Lotus Development Corporation
161 First Street
Cambridge, Massachusetts 02142
(617) 492-7171
Electronic Edition, December, 1984
All Rights Reserved
BOF
Record Type Code Body length
BOF 0 (00H) 2 bytes
Record Description
Beginning of file
Used by both 1-2-3 and Symphony.
Byte Number Byte Description
0-1 file format revision number
1028 (0404h) = 1-2-3 file
1029 (0405h) = Symphony file
Example
Record Header Record Body
Record Record BOF
Type Length
Byte Number 0 1 2 3 0 1
Hex Code 00 00 02 00 04 04
Dec.Equivalent 0 2 1028
EOF
Record Type Code Body length
EOF 1 (01H) 0 bytes
Record Description
End of file
Used by both 1-2-3 and Symphony
Byte Number Byte Description
-no record body-
Example
Record Header
Record Record
Type Length
Byte Number 0 1 2 3
Hex Code 01 00 00 00
Decimal Equivalent 1 0
Note: End of file is ony a header. EOF has a record
length of 0; therefore, no record body follows.
CALCMODE
Record Type Code Body length
CALCMODE 2 (02h) 1 byte
Record Description
Calculation method
Used by both 1-2-3 and Symphony.
Byte Number Byte Description
0 0 = Manual mode
FF = automatic
CALCORDER
Recrod Type Code Body length
CALCORDER 3 (03H) 1 BYTE
Record Description
Calculation order
Used by both 1-2-3 and Symphony
Byte Number Byte Description
0 0 = natural
1 = by column
FF = by row
SPLIT
Record Type Code Body length
SPLIT 4(04h) 1 byte
Record Description
Split window type
Used in 1-2-3 only.
Byte Number Byte Description
0 0 = not split
1 = vertical split
FF = horizontal split
SYNC
Record Type Code Body length
SYNC 5(05h) 1 byte
Record Description
Split window sync
This determines whether the two screens in 1-2-3's split-screen feature
will move together with the cursor.
Used in 1-2-3 only.
Byte Number Byte Description
0 0 = not synchronized
FF = synchronized
RANGE
Record Type Code Body length
RANGE 6(06h) 8 bytes
Record Description
Range of cells written to worksheet file.
If the worksheet file was created using a File Save command, then this
range describes the active area with trailing blank columns and rows
removed. If the worksheet file was created using a File Xtract command,
then this range describes the extract range with trailing blank columns and
rows removed. If there is no data in the range, the starting column is set
to -1.
Used by both 1-2-3 and Symphony.
Byte Number Byte Description
0-1 starting column
2-3 starting row
4-5 ending column
6-7 ending row
Example
Record Header rt_range Record Body
Record Record Starting Starting Ending Ending
Type Length Column Row Column Row
Byte Number 0 1 2 3 0 1 2 3 4 5 6 7
Hex Code 06 00 08 00 00 00 00 00 01 00 03 00
Dec.Equivalent 6 8 0 0 1 3
The record displays the worksheet range as A1...B4.
WINDOW1
Record Type Code Body length
WINDOW1 7(07h) 31 bytes
Record Description
Window 1 record
Used in 1-2-3 only.
Byte Number Byte Description
0-1 cursor column position
2-3 cursor row position
4 format (see Appendix A, Cell Format Encoding)
5 unused (0)
6-7 column width
8-9 number of columns on screen
10-11 number of rows on screen
12-13 left column
14-15 top row
16-17 number of title columns
18-19 number of title rows
20-21 left title column
22-23 top title row
24-25 border width column
26-27 border width row
28-29 window width
30 unused (0)
COLW1
Record Type Code Body length
COLW1 8(08h) 3 bytes
Record Type Description
Column width
Used by both 1-2-3 and Symphony.
In 1-2-3, this record contains the width of a column Window 1.
In symphony, it contains width information for the Window Record that it
follows.
Byte Number Byte Description
0-1 column
2 width
WINTWO
Record Type Code Body length
WINTWO 9(09h) 31 bytes
Record Description
Window 2 record
Used in 1-2-3 only.
Byte Number Byte Description
0-1 cursor column position
2-3 cursor row position
4 format (see Appendix A, Cell Format Encoding)
5 unused (0)
6-7 column width
8-9 number of columns on screen
10-11 number of rows on screen
12-13 left column
14-15 top row
16-17 number of title columns
18-19 number of title rows
20-21 left titile column
22-23 top title row
24-25 border width column
26-27 border width row
28-29 window width
30 unused (0)
COLW2
Record Type Code Body length
COLW2 10(0Ah) 3 bytes
Record Description
Column width, Window 2
Used in 1-2-3 only.
Byte Number Byte Description
0-1 column
2 width
NAME
Record Type Code Body length
NAME 11 (OBh) 24 bytes
Record Description
Name of range
The worksheet contains one record for each range name.
Used in 1-2-3 only.
Byte Number Byte Description
0-15 NULL terminated ASCII string
16-17 Starting column
18-19 Starting row
20-21 Ending column
22-23 Ending row
Example
Record Header
Record Record
Type Length
Byte Number 0 1 2 3
Hex Code 0B 00 18 00
Decimal Equivalent 11 24
(cont.)
Record Body
Range Name (Text)
Decimal Equivalent Expressed in ASCII Text
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
52 45 56 45 4E 55 45 53 00 00 00 00 00 00 00 00
R E V E N U E S / Unfilled Names Area
(cont.) Record Body
Starting Starting Ending Ending
Column Row Column Row
16 17 18 19 20 21 22 23
00 00 00 00 01 00 03 00
0 0 1 3
Range name is REVENUES (encompasses A1 to B4).
BLANK
Record Type Code Body length
BLANK 12(0Ch) 5 bytes
Record Description
Blank cell
Blank cell records appear only for those cells that are protected, or do
not have the default format.
Unprotected blank cells with the default format are omitted from the
worksheet file.
Used by both 1-2-3 and Symphony.
Byte Number Byte Description
0 format (see Appendix A, Cell Format Encoding)
1-2 column
3-4 row
Example
Record Header Record Body
Record Record
Type Length Format Column Row
Byte Number 0 1 2 3 0 1 2 3 4
Hex Code 0C 00 05 00 22 05 00 0A 00
Dec. Equivalent 12 5 34 5 10
This record displays cell in location F11 (column 5, row 10).
INTEGER
Record Type Code Body length
INTEGER 13(ODh) 7 bytes
Record Description
Integer number cell
An integer cell holds a single integer value
in the range -32767....+32767 (decimal).
Used by both 1-2-3 and Symphony.
Byte Number Byte Description
0 format (see Appendix A, Cell Format Encoding)
1-2 column
3-4 row
5-6 integer value
Example
Record Header Record Body
Record Record
Type Length Format Column Row Integer
Byte Number 0 1 2 3 0 1 2 3 4 5 6
Hex Code 0D 00 07 00 00 00 00 00 00 DD 04
Dec. Equivalent 13 7 0 0 0 1245
This example displays the integer 1245 located in cell A1 (column 0, row
0). When reading a 2-byte integer, the lower byte appears first. For
example, DD04h is actually 04DDh (1245 decimal).
NUMBER
Record Type Code Body length
NUMBER 14 (0Eh) 13 bytes
Record Description
Floating point number
Used by both 1-2-3 and Symphony
Byte Number Byte Description
0 format
1-2 column
3-4 row
5-12 value (IEEE long real; 8087 double-precision floating-
point format)
Example
The following describes a 64-bit long real format.
S Exponent Fraction
63 62 52 51 0
MSB LSB
S 1-bit Sign field
0 = +
1 = -
Exponent 11-bit Exponent field
Exponent is binary, excess 1023(base 10). Thus, the true
exponent is: 2^(exponent -1023).
Fraction 52-bit Fraction field
An implied leading 1 bit is at the beginning of the
fraction. The implied binary point is between the implied
1 bit and the Most Significant Bit (MSB) of the fraction
field.
Special NA: S = 1 Exponent = 7FF Fraction = 0
Values ERR: S = 0 Exponent = 7FF Fraction = 0
STRING: S = 0 Exponent = 7FF Fraction = non-zero
(Symphony only)
LABEL
Record Type Code Body length
LABEL 15(0Fh) variable
Record Description
Label cell
Used by both 1-2-3 and Symphony.
Byte Number Byte Description
0 format (see Appendix A, Cell Format Encoding)
1-2 column
3-4 row
5+ NULL terminated ASCII string;
240 bytes maximum
Example
Record Header Record Body
Record Record
Type Length Format Column Row Label
Byte Number 0 1 2 3 0 1 2 3 4 5 6 7 8 9 10
Hex Code 0F 00 0B 00 F5 00 00 00 00 27 50 41 55 4C 00
Dec. Equivalent 15 11 245 0 0 P A U L
This example is a label record located at A1 (column 0, row 0).
This record contains the word 'PAUL.
Byte 5 is always one of the following format prefixes:\'"^.
This record varies in relation to the amount of text stored in the cell.
A user can enter up to 240 characters in one cell.
FORMULA
Record Type Code Body length
FORMULA 16(10H) variable
Record Description
Formula cell
Used by both 1-2-3 and Symphony.
Formulas are compiled in Reverse Polish Internal Notation. By creating
formulas in 1-2-3 or Symphony, and dumping them as hex bytes, the formula
compilation logic can be deciphered.
Table 1 describes the available Opcodes and functions. The functions are
discussed in greater detail in the 1-2-3 and Symphony documentation.
Appendix B discusses Lotus' proprietary formula compiler in greater
detail.
Byte Number Byte Description
0 format (see Appendix A, Cell Format Encoding
1-2 column
3-4 row
5-12 formula numeric value (IEEE long real; see NUMBER)
13-14 formula size (bytes)
15+ for code (see Table 1, Formula Opcodes); Reverse
Polish Internal Notation; 2048 bytes maximum
FORMULA
Table 1-a Formula Compiler Opcode Table, Format
Dec Hex Operation Description
0 0 constant Code is followed by an 8 byte
IEEE Long Real Floating Point
Number
1 1 variable Code followed by 4 byte coor-
dinate Byte 0,1 = Column
Byte 2,3 = Row
2 2 range Code followed by 8 byte range
Byte 0,1 = Start column
Byte 2,3 = Start row
Byte 4,5 = End column
Byte 6,7 = End row
3 3 return End of formula
4 4 parentheses Indicates presence of paren-
theses in original formula.
It is ignored during recal-
culation.
5 5 2 byte integer Followed by 2 byte signed
constant integer.
The above Opcodes will define the type and length of information that
follows the Opcode. Opcode 3 defines the end of the formula.
For example, Opcode 0 is followed by an 8 byte floating point number.
Opcode 1 is followed by a 4 byte coordinate.
Opcode 2 is followed by an 8 byte range specifier.
Opcode 5 is followed by a 2 byte signed integer.
FORMULA
Table 1-b Formula Compiler Opcode Table, Operations
Dec Hex Operation Description
8 8 unary - Negation
9 9 + Addition
10 A - Subtraction
11 B * Multiplication
12 C / Division
13 D ^ Exponentiation;
ie. 3^2 is(3x3)
14 E = Equal to
15 F < > Not equal to
16 10 < = Less than or equal to
17 11 > = Greater than or equal to
18 12 < Less than
19 13 > Greater than
20 14 #AND# Logical AND
21 15 #OR# Logical OR
22 16 #NOT# Logical NOT
23 17 unary + (Ignored during recalculation
31 1F na @Na not applicable
32 20 err @Err error
33 21 abs @abs (x) Absolute value of x
34 22 int @int (x) Integer value of x
35 23 sqrt @sqrt (x) Square root of x
36 24 log @log (x) Log base 10 of x
37 25 ln @ln (x) Log base e of x
38 26 pi @pi
39 27 sin @sin (x) Sine of x
40 28 cos @cos (x) Cosine of x
41 29 tan @tan (x) Tangent of x
42 2A atan2 @atan2 (x) 4 quadrant arc tangent
of x
43 2B atan @atan (x) 2 quadrant arc tangent
of x
44 2C asin @asin (x) Arc sine of x
45 2D acos @acos (x) Arc cosine of x
46 2E exp @exp (x) Exponential anti-log of x
47 2F mod @mod (x,y)X Mod Y
48 30 sel @Choose (x,v0,v1...vN)
Match a list item.
49 31 isna @isna (x)x = NA then 1 (true)
FORMULA
Table 1-b (continued) Formula Compiler Opcode Table, Operations
Dec Hex Operation Description
51 33 false @false Return 0
52 34 true @true Return 1
53 35 rand @rand Generate random number
between 0 and 1
54 36 date @date (Y,M,D) Generate the days
since 1/1/1900 (Y = 0-199,
M = 1-12, D = 1-31)
55 37 today @today Output serial date number
from cpu's clock
56 38 pmt @pmt (princ, int, term)Payment
57 39 pv @pv (pmt, int, term) Present value
58 3A fv @fv (pmt, int, term) Future Value
59 3B if @if (argument, them else) Boolean
if
60 3C day @day (x) Print day of the month from
a serial date number
61 3D month @month (x) Print month of the year
from a serial date number
62 3E round @round (x,d) Round number x to d
decimal places
The above Opcodes are variable, constant and argument related.
For example: @sqrt (9) is the square root of the constant 9
@sqrt (A1) is the square root of the variable A1
@sqrt ((A1*2)/3) is the square root of the argument (A1*2)/3
(Note that the argument ((A1*2)/3) will be processed before
the @sqrt function.)
FORMULA
Table 1-c Formula Compiler Opcode Table, Multiple Arguments
Dec Hex Operation Description
80 50 sum @sum (range and/or cell and/or
constant) Use commas to separate
arguments
81 51 avg @avg (range and/or cell and/or constant)
Use commas to separate arguments
82 52 cnt @cnt (range and/or cell and/or constant)
Use commas to separate arguments
83 53 min @min (range and/or cell and/or constant)
Use commas to separate arguments
84 54 max @max (range and/or cell and/or constant
Use commas to separate arguments
85 55 vlookup @Vlookup (x, range, offset) X = Cell
address or constant, range = Table,
Offset = Row in Table
86 56 npv @npv (int, range) Net present value;
Int = interest, Range = cash flows
87 57 var @var (range) Variance of all items in
list
88 58 std @std (range) Standard deviation of all
items in list
89 59 irr @irr (guess,range) Guess = % estimate;
Range = range of cash flows
90 5A hlookup @hlookup, (x, range, offset) X = Cell
address or constant, range = Table,
Offseet = row in Table
91 5B dsum Database statistical functions
92 5C avg Database statistical functions
93 5D dcnt Database statistical functions
94 5E dmin Database statistical functions
95 5F dmax Database statistical functions
96 60 dvar Database statistical functions
97 61 dstd Database statistical functions
The above Opcodes deal specifically with ranges and multiple arguments.
For example: @sum (A1...A10, B25, 9) contains a range, a variable and a
constant as the arguments.
All function Opcodes which accept a variable number of arguments
are followed by a 1-byte argument count.
FORMULA
Table 1-d Operator Precedence Table
Operator Unary Precedence Binary Precedence
+ 6 4
- 6 4
* na 5
/ na 5
^ na 7
= na 3
< > na 3
< = na 3
> = na 3
< na 3
> na 3
#and# na 1
#or# na 1
#not# 2 na
A Note on the Decompiler
The algorithm for the formula decompiler was taken verbatim from:
Writing Interactive Compilers and Interpreters, P.J. Brown, John Wiley
and Sons, 1979. See chapter 6.2. The algorithm itself is described on
pages 216 and 217.
This algorithm is also described in the following article:
More on the Re-creation of Source Code from Reserve Polish, P.J. Brown,
Software Practice and Experience, Vol 7, 545-551 (1977).
TABLE
Record Type Code Body length
TABLE 24 (18h) 25 bytes
Record Description
Table range
Used by both 1-2-3 and Symphony.
In 1-2-3, the record refers to Data Tables 1 and 2.
In Symphony, it refers to What-if Tables 1 and 2.
Byte Number Byte Description
0 0 = no table
1 = Table 1
2 = Table 2
1-2 Table Range; starting column
3-4 starting row
5-6 ending column
7-8 ending row
9-10 Input Cell 1; starting column
11-12 starting row
13-14 ending column
15-16 ending row
17-18 Input Cell 2; starting column
19-20 starting row
21-22 ending column
23-24 ending row
QRANGE
Record Type Code Body length
QRANGE 25 (19h) 25 bytes
Record Description
Query range
Used in 1-2-3 only.
Byte Number Byte Description
0-1 Input ranges; starting column
2-3 starting row
4-5 ending column
6-7 ending row
8-9 Output ranges starting column
10-11 starting row
12-13 ending column
14-15 ending row
16-17 Criteria; starting column
18-19 starting row
20-21 ending column
22-23 ending row
24 Command; 0 = no command
1 = find
2 = extract
3 = delete
4 = unique
PRANGE
Record Type Code Body length
PRANGE 26 (1Ah) 8 bytes
Record Description
Print range
Used in 1-2-3 only.
Byte Number Byte Description
0-1 starting column
2-3 starting row
4-5 ending column
6-7 ending row
SRANGE
Record Type Code Body length
SRANGE 27 (1Bh) 8 bytes
Record Description
Sort range
Used in 1-2-3 only.
Byte Number Byte Description
0-1 starting column
2-3 starting row
4-5 ending column
6-7 ending row
FRANGE
Record Type Code Body length
FRANGE 28 (1Ch) 8 bytes
Record Description
Fill range
Used by both 1-2-3 and Symphony.
Byte Number Byte Description
0-1 starting column
2-3 starting row
4-5 ending column
6-7 ending row
KRANGE
Record Type Code Body length
KRANGE 29 (1Dh) 9 bytes
Record Description
Primary sort key range
Used in 1-2-3 only.
Byte Number Byte Description
0-1 starting column
2-3 starting row
4-5 ending column
6-7 ending row
8 Order: 0 = descending order
FF = ascending order
HRANGE
Record Type Code Body length
HRANGE 32 (20h) 16 bytes
Record Description
Distribution range
Used by both 1-2-3 and Symphony.
Byte Number Byte Description
0-1 Values range; starting column
2-3 starting row
4-5 ending column
6-7 ending row
8-9 Bin range starting column
10-11 starting row
12-13 ending column
14-15 ending row
KRANGE2
Record Type Code Body length
KRANGE2 35(23h) 9 bytes
Record Description
Secondary sort key range
Use in 1-2-3 only.
Byte Number Byte Description
0-1 starting column
2-3 starting row
4-5 ending column
6-7 ending row
8 Order; 0 = descending order
FF = ascending order
PROTEC
Record Type Code Body length
PROTEC 36(24h) 1 byte
Record Description
Global protection
Used by both 1-2-3 and Symphony.
Byte Number Byte Description
0 0 = global protection OFF
1 = global protection ON
FOOTER
Record Type Code Body length
FOOTER 37(25h) 242 bytes
Record Description
Print footer
Used in 1-2-3 only.
Byte Number Byte Description
0-242 NULL termination ASCII string
HEADER
Record Type Code Body length
HEADER 38(26h) 242 bytes
Record Description
Print header
Used in 1-2-3 only.
Byte Number Byte Description
0-242 NULL termination ASCII string
SETUP
Record Type Code Body length
SETUP 39(27h) 40 bytes
Record Description
Print setup
Used in 1-2-3 only.
Byte Number Byte Description
0-40 NULL terminated ASCII string
MARGINS
Record Type Code Body length
MARGINS 40(28h) 10 bytes
Record Description
Print margins code
Used in 1-2-3 only.
Byte Number Byte Description
0-1 left margin
2-3 right margin
4-5 page length
6-7 top margin
8-9 bottom margin
LABELFMT
Record Type Code Body length
LABELFMT 41 (29h) 1 byte
Record Description
Label alignment
Used by both 1-2-3 and Symphony
Byte Number Byte Description
0 27h = left
22h = right
5Eh = center
TITLES
Record Types Code Body length
TITLES 42(2Ah) 16 bytes
Record Description
Print borders
Used in 1-2-3 only.
Byte Number Byte Description
0-1 Row border; starting column
2-3 starting row
4-5 ending column
6-7 ending row
8-9 Column border; starting column
10-11 starting row
12-13 ending column
14-15 ending row
GRAPH
Record Type Code Body length
GRAPH 45(2Dh) 437 bytes
Record Description
Current graph settings
Used in 1-2-3 only.
Byte Number Byte Description
-- see Table 2 Graph Record Structure --
GRAPH
Table 2 Graph Record Structure
Byte Number Byte Description
0-1 X Range; starting column
2-3 starting row
4-5 ending column
6-7 ending row
8-9 A Range; starting column
10-11 starting row
12-13 ending column
14-15 ending row
16-17 B Range; starting column
18-19 starting row
20-21 ending column
22-23 ending row
24-25 C Range; stating column
26-27 starting row
28-29 ending column
30-31 ending row
32-33 D Range; starting column
34-35 starting row
36-37 ending column
38-39 ending row
40-41 E Range; starting column
42-43 starting row
44-45 ending column
46-47 ending row
48-49 F Range; starting column
50-51 starting row
52-53 ending column
54-55 ending row
56-57 A Labels; starting column
58-59 starting row
60-61 ending column
62-63 ending row
64-65 B Labels; starting column
66-67 starting row
68-69 ending column
70-71 ending row
72-73 C Labels; starting column
74-75 starting row
76-77 ending column
78-79 ending row
80-81 D Labels; starting column
82-83 starting row
84-85 ending column
86-87 ending row
GRAPH
Table 2 (continued) Graph Record Structure
Byte Number Byte Description
88-89 E Labels; starting column
90-91 starting row
92-93 ending column
94-95 ending row
96-97 F Labels; starting column
98-97 starting row
100-101 ending column
102-103 ending row
104 Graph type 0 = XY, 1 = bar, 2 = pie,
4 = line, 5 = stacked bar
105 Grid; 0 = none, 1 = horizontal,
2 = vertical, 3 = both
106 Color 0 = black-white, FF = color
107 A Range line format; 0 = none, 1 = line,
2 = symbol, 3 = line-symbol
108 B Range line format; 0 = none, 1 = line,
2 = symbol, e = line-symbol
109 C Range line format; 0 = none, 1 = line,
2 = symbol, 3 = line-symbol
110 D Range line format; 0 = none, 1 = line,
2 = symbol, 3 = line-symbol
111 E Range line format; 0 = none, 1 = line,
2 = symbol, 3 = line-symbol
112 F Range line format; 0 = none, 1 = line,
2 = symbol, 3 = line-symbol
113 A Range data label 0 = center, 1 = right,
alignment; 2 = below, 3 = left,
4 = above
114 B Range data label 0 = center, 1 = right
alignment; 2 = below, 3 = left
4 = above
115 C Range data label 0 = center, 1 = right
alignment; 2 = below, 3 = left
4 = above
116 D Range data label 0 = center, 1 = right
alignment; 2 = below, 3 = left
4 = above
117 E Range data label 0 = center, 1 = right
alignment; 2 = below, 3 = left
4 = above
118 F Range data label 0 = center, 1 = right
alignment; 2 = below, 3 = left
4 = above
GRAPH
Table 2 (continued) Graph Record Structure
Byte Number Byte Description
119 Scale 0 = auto
FF = manual
120-127 X lower limit in floating point format
128-135 X upper limit in floating point format
136 Y scale; 0 = automatic
FF = manual
137-144 Y lower limit in floating point format
145-152 Y upper limit in floating point format
153-192 First title
193-232 Second title
233-272 X title
273-312 Y title
313-332 A legend
333-352 B legend
353-372 C legend
373-392 D legend
393-412 E legend
413-432 F legend
433 X format
434 Y format
435-436 Skip factor
NGRAPH
Record Type Code Body length
NGRAPH 46 (2EH) 453 bytes
Record Description
Named current graph settings
Used in 1-2-3 only.
Bytes Number Byte Description
-- see Table 3 Ngraph Record Structure --
NGRAPH
Table 3 NGraph Record Structure
Byte Number Byte Description
0-15 Name; NULL terminated ASCII string
16-17 X Range; starting column
18-19 starting row
20-21 ending column
22-23 ending row
24-25 A Range; starting column
26-27 starting row
28-29 ending column
30-31 ending row
32-33 B Range; starting column
34-35 starting row
36-37 ending column
38-39 ending row
40-41 C Range; starting column
42-43 starting row
44-45 ending column
46-47 ending row
48-49 D Range; starting column
50-51 starting row
52-53 ending column
54-55 ending row
56-57 E Range; starting column
58-59 starting row
60-61 ending column
62-63 ending row
64-65 F Range; stating column
66-67 starting row
68-69 ending column
70-71 ending row
72-73 A Labels; starting column
74-75 starting row
76-77 ending column
78-79 ending row
80-81 B Labels; starting column
82-83 starting row
84-85 ending column
86-87 ending row
88-89 C Labels; starting column
90-91 starting row
92-93 ending column
94-95 ending row
96-97 D Labels; starting column
98-99 starting row
100-101 ending column
102-103 ending row
NGRAPH
Table 3 (continued) NGraph Record Structure
Byte Number Byte Description
104-105 E Labels; starting column
106-107 starting row
108-109 ending column
110-111 ending row
112-113 F Labels; starting column
114-115 starting row
116-117 ending column
118-119 ending row
120 Graph type; 0 = XY, 1 = bar, 2 = pie,
4 = line, 5 = stacked bar
121 Grid 0 = none, 1 = horizontal,
2 = vertical, 3 = both
122 Color; 0 = black-white, FF = color
123 A Range line format; 0 = none, l = line,
2 = symbol, 3 = line-symbol
124 B Range line format; 0 = none, 1 = line,
2 = symbol, 3 = line-symbol
125 C Range line format; 0 = none, 1 = line 2 = symbol, 3 = line-symbol
2 = symbol, 3 = line-symbol
126 D Range line format; 0 = none, 1 = line
2 = symbol, 3 = line-symbol
127 E Range line format; 0 = none, 1 = line
2 = symbol, 3 = line-symbol
128 F Range line format; 0 = none, 1 = line
2 = symbol, 3 = line-symbol
129 A Range data label 0 = center, 1 = right
alignment 2 = below, 3 = left,
4 = above
130 B Range data label 0 = center, 1 = right
alignment 2 = below, 3 = left
4 = above
131 C Range data label 0 = center, 1 = right
alignment 2 = below, 3 = left
4 = above
132 D Range data label 0 = center, 1 = right
alignment 2 = below, 3 = left
4 = above
133 E Range data label 0 = center, 1 = right
alignment 2 = below, 3 = left
4 = above
134 F Range data label 0 = center, 1 = right
alignment 2 = below, 3 = left
135 Scale 0 = auto
FF = manual
NGRAPH
Table 3 (continued) NGraph Record Structure
Byte Number Byte Description
136-143 X lower limit in floating point format
144-151 X upper limit in floating point format
152 Y scale; 0 = automatic
FF = manual
153-160 Y lower limit in floating point format
161-168 Y upper limit in floating point format
209-224 First title
225-248 Second title
249-288 X title
289-328 Y title
329-348 A legend
349-368 B legend
369-388 C legend
389-408 D legend
409-428 E legend
429-448 F legend
449 X format
450 Y format
451-452 Skip factor
CALCCOUNT
Record Type Code Body length
CALCCOUNT 47(2Fh) 1 byte
Record Description
Iteration count
Used in 1-2-3 and Symphony.
Byte Number Byte Description
0 Iteration count
UNFORMATTED
Record Type Code Body length
UNFORMATTED 48(30h) 1 byte
Record Description
Formatted/unformatted print
Used in 1-2-3 only.
Byte Number Byte Description
0 0 = formatted
1 = unformatted
CURSORW12
Record Type Code Body length
CURSORW12 49(31h) 1
Record Description
Cursor location
Used in 1-2-3 only.
Byte Number Byte Description
0 1 = cursor in Window 1
2 = cursor in Window 2
WINDOW
Record Type Code Body length
WINDOW 50(32h) 144 bytes
Record Description
Window record structure
Used in Symphony only.
Byte Number Byte Description
-- see Table 4 Window Record Structure --
WINDOW
Table 4 Window Record Structure
Byte Number Byte Description
0-15 Window name NULL terminated ASCII
string
16-17 Cursor position; column
18-19 row
20 Format (see Appendix A,
Cell Format Encoding)
21 Unused
22-23 Column width
24-25 Total number of columns
26-27 Total number of rows
28-29 Non-Title Home Position; column
30-31 row
32-33 Number of title columns
34-35 Number of title rows
36-37 Left title column
38-39 Top title row
40-41 Home position column
42-43 Home position row
44-45 Number of screen columns
46-47 Number of screen rows
48 Hidden Status; 0 = hidden
FF = not hidden
49 Previous window; 0 = SHEET
1 = DOC
2 = GRAPH
3 = COMM
4 = FORM
5 = APPLICATION
50 Border display; 0 = cell
FF = no cell
51 Border display lines; 0 = lines
FF = no lines
52-53 Window Range starting column
54-55 starting row
56-57 ending column
58-59 ending row
60-61 Offset
62 Insert mode flag; 0 = OFF
non-zero = ON
63-78 Graph name
WINDOW
Table 4 (continued) Window Record Structure
Byte Number Byte Description
79 Window type; 0 = SHEET
1 = DOC
2 = GRAPH
3 = COMM
4 = FORM
5 = APPLICATION
80 Automatic display mode "a" = automatic (ASCII
flag; lower case "a")
else = manual
81 Forms filter; 0 = filter
non-zero = no filter
82-97 Associated form name
98-99 Forms current record
100 Space display; 0 = no spaces
non-zero = spaces
101 Line spacing; 1 = 1 space
2 = 2 spaces
3 = 3 spaces
102 Justify type "1" = left (ASCII lower
case "1")
"r" = right (ASCII lower
case "r")
"c" = center (ASCII
lower case "c"
"e" = even (ASCII lower
case "e"
103-104 Right Margin 0 = FOh characters
= right margin
FF = no user-defined
right margin; use
default value
105-106 Left Margin 0-FOh characters = left
margin
107-108 Tab interval
109 CR display; 0 = soft
non-zero = hard
110 Auto-justify on copy/ 0 = no
move; non-zero = yes
111-126 Associated application
name
127-143 Reserved Application Area
STRING
Record Type Code Body length
STRING 51(33h) variable
Record Description
Value of string formula
Used in Symphony only.
Byte Number Byte Description
0 format (see Appendix A, Cell Format Encoding)
1-2 column
3-4 row
5+ NULL terminated ASCII string
PASSWORD
Record Type Code Body length
PASSWORD 55(37h) 4 byte
Record Description
File lockout (CHKSUM)
This is proprietary information.
Used in Symphony only.
Byte Number Byte Description
-- not available --
LOCKED
Record Type Code Body length
LOCKED 56(38h) 1 byte
Record Description
Lock Flag
Used in Symphony only.
Byte Number Byte Description
0 0 = OFF
1 = ON
QUERY
Record Type Code Body length
QUERY 60(Ch) 127 bytes
Record Description
Query settings
Used in Symphony only.
Byte Number Byte Description
-- see Table 5 Query Record Structure --
QUERY
Table 5 Query Record Structure
Byte Number Byte Description
0-15 Name; NULL termination ASCII string
16-17 Input range; starting column
18-19 starting row
20-21 ending column
22-23 ending row
24-25 Output Range; starting column
26-27 starting row
28-29 ending column
30-31 ending row
32-33 Criteria Range; starting column
34-35 starting row
36-37 ending column
38-39 ending row
40-41 Form Entry; starting column
42-43 starting row
44-45 ending column
46-47 ending row
48-49 Form Def. Range; starting column
50-51 starting row
52-53 ending column
54-55 ending row
56-57 Report Output; starting column
58-59 starting row
60-61 ending column
62-63 ending row
64-65 Report Header; starting column
66-67 starting row
68-69 ending column
70-71 ending row
72-73 Report Footer; starting column
74-75 starting row
76-77 ending column
78-79 ending row
80-81 Table Range; starting column
82-83 starting row
84-85 ending column
86-87 ending row
88-89 Input Cell; starting column
90-91 starting row
92-93 ending column
94-95 ending row
QUERY
Table 5 (continued) Query Record Structure
Byte Number Byte Description
96-97 1st Key range; starting column
98-99 starting row
100-101 ending column
102-103 ending row
104-105 2nd Key range; starting column
106-107 starting row
108-109 ending column
110-111 ending row
112-113 3rd Key range; starting column
114-115 starting row
116-117 ending column
118-119 ending row
120 Last command; 0 = no command
1 = find
2 = extract
3 = delete
4 = unique
121 1st Key order; 0 = descending order
FF = ascending order
122 2nd Key order; 0 = descending order
FF = ascending order
123 3rd Key order 0 = descending order
FF = ascending order
124 Report number of records; 0 = multiple
FF = single
125 Number of records; 0 = multiple
FF = single
126 Marks; 0 = yes
FF = no
QUERYNAME
Record Type Code Body length
QUERYNAME 61(3Dh) 16 bytes
Record Description
Current Query Name
Used in Symphony only.
Byte Number Byte Description
0-15 NULL terminated ASCII string
PRINT
Record Type Code Body length
PRINT 62(3Eh) 679 bytes
Record Description
Print record
Used in Symphony only.
Byte Number Byte Description
-- see Table 6 Print Record Structure --
PRINT
Table 6 Print Record Structure
Byte Number Byte Description
0-15 Print setting name; NULL terminated ASCII string
16-17 Source range; starting column
18-19 starting row
20-21 ending column
22-23 ending row
24-25 Row border; starting column
26-27 starting row
28-29 ending column
30-31 ending row
32-33 Column border; starting column
34-35 starting row
36-37 ending column
38-39 ending row
40-41 Destination; starting column
42-43 starting row
44-45 ending column
46-47 ending row
48 Print format; 0 = as displayed
non-zero = formulas
49 Page breaks 0 = yes
non-zero = no
50 Line spacing
51-52 Left Margin
53-54 Right Margin
55-56 Page length
57-58 Top
59-60 Bottom of page
61-101 Setup string; NULL terminated ASCII string
102-342 Header; NULL terminated ASCII string
343-584 Footer; NULL terminated ASCII string
585-600 Source database name; NULL terminated ASCII string
601 Attribute; 0 = no
non-zero = yes
602 Space compression; 0 = no
non-zero = yes
603 Print destination 0 = printer
1 = file
2 = range
604-605 Starting page
606-607 Ending page
608-677 Destination filename; NULL terminated ASCII string
678 Wait; 0 = no
non-zero = yes
PRINTNAME
Record Type Code Body length
PRINTNAME 63(3Fh) 16 bytes
Record Description
Current Print Record Name
Used in Symphony only.
Byte Number Byte Description
0-15 NULL terminated ASCII string
GRAPH2
Record Type Code Body length
GRAPH2 64(40h) 499 bytes
Record Description
Graph record
Used in Symphony only.
Byte Number Byte Description
-- see Table 7 Symphony Graph Record Structure --
GRAPH2
Table 7 Symphony Graph Record Structure
Byte Number Byte Description
0-15 Name; NULL terminated ASCII string
16-17 XRange; starting column
18-19 starting row
20-21 ending column
22-23 ending row
24-25 A Range; starting column
26-27 starting row
28-29 ending column
30-31 ending row
32-33 B Range; starting column
34-35 starting row
36-37 ending column
38-39 ending row
40-41 C Range; starting column
42-43 starting row
44-45 ending column
46-47 ending row
48-49 D Range; starting column
50-51 starting row
52-53 ending column
54-55 ending row
56-57 E Range; starting column
58-59 starting row
60-61 ending column
62-63 ending row
64-65 F Range; starting column
66-67 starting row
68-69 ending column
70-71 ending row
72-73 A Labels; starting column
74-75 starting row
76-77 ending column
78-79 ending row
80-81 B Labels; starting column
82-83 starting row
84-85 ending column
86-87 ending row
88-89 C Labels; starting column
90-91 starting row
92-93 ending column
94-95 ending row
GRAPH2
Table 7 (continued) Symphony Graph Record Structure
Byte Number Byte Description
96-97 D Labels; starting column
98-99 starting row
100-101 ending column
102-103 ending row
104-105 E Labels; starting column
106-107 starting row
108-109 ending column
110-111 ending row
112-113 F Labels; starting column
114-115 starting row
116-117 ending column
118-119 ending row
120 Graph type; 0 = XY, 1 = bar, 2 = pie,
4 = line, 5 = stacked
bar
121 Grid; 0 = none, 1 = horizontal,
2 = vertical, 3 = both
122 Color; 0 = black-white,
FF = color
123 A Range line format; 0 = none, 1 = line,
2 = symbol,
3 = line-symbol
124 B Range line format; 0 = none, 1 = line,
2 = symbol,
3 = line-symbol
125 C Range line format; 0 = none, 1 = line,
2 = symbol,
3 = line-symbol
126 D Range line format; 0 = none, 1 = line
2 = symbol,
3 = line-symbol
127 E Range line format; 0 = none, 1 = line
2 = symbol,
3 = line-symbol
128 F Range line format; 0 = none, 1 = line
2 = symbol
3 = line-symbol
129 A Range data label alignment; 0 = center, 1 = right,
2 = below, 3 = left,
4 = above
130 B Range data label alignment; 0 = center, 1 = right
2 = below, 3 = left
4 = above
131 C Range data label alignment; 0 = center, 1 = right
2 = below, 3 = left
4 = above
132 D Range data label alignment; 0 = center, 1 = right
2 = below, 3 = left
4 = above
133 E Range data label alignment; 0 = center, 1 = right
2 = below, 3 = left
4 = above
134 F Range data label alignment; 0 = center, 1 = right
2 = below, 3 = left
4 = above
GRAPH2
Table 7 (continued) Symphony Graph Record Structure
Byte Number Byte Description
135 X Scale 0 = auto
136-143 X lower limit in floating point format FF = manual
144-151 X upper limit in floating point format
152 Y scale; 0 = automatic
FF = manual
153-160 Y lower limit in floating point format
161-168 Y upper limit in floating point format
169-208 First title
209-248 Second title
249-288 X title
289-328 Y title
329-348 A legend
349-368 B legend
369-388 C legend
389-408 D legend
409-428 E legend
429-448 F legend
449 X format
450 Y format
451-452 Skip factor
453 X scale flag; (x1K) 0 = ON
FF = OFF
454 Y scale flag;(x1K) 0 = ON
FF = OFF
455 suppress; 0 = no
else = yes
456-463 Bar origin (float)
464-471 X linear scale (float)
472-479 Y linear scale (float)
480 X log scale
481 Y log scale
482 graph region color; X hue code
483 A hue code
484 B hue code
485 C hue code
487 D hue code
488 F hue code
489-490 Y width
491-498 Aspect (float)
GRAPHNAME
Record Type Code Body length
GRAPHNAME 65 (41h) 16 bytes
Record Description
Current Graph Record Name
Used in Symphony only.
Byte Number Byte Description
0-15 NULL terminated ASCII string
ZOOM
Record Type Code Body length
ZOOM 66 (42h) 9 bytes
Record Description
Original coordinates expanded window
Used in Symphony only.
Byte Number Byte Description
0 iszoom? 0 = no
1 = yes
1-2 X coordinates
3-4 Y coordinates
5-6 column depth
7-8 row depth
SYMSPLIT
Record Type Code Body length
SYMSPLIT 67 (43h) 2 bytes
Record Description
Number of split windows
Used in Symphony only.
Byte Number Byte Description
0-1 number of split windows
NSROWS
Record Type Code Body length
NSROWS Code Body length
NSROWS 68 (44h) 2 bytes
Record Description
Number of screen rows
Used in Symphony only.
Byte Number Byte Description
0-1 number of screen rows
NSCOLS
Record Type Code Body length
NSCOLS 69 (45h) 2 bytes
Record Description
Number of screen columns
Used in Symphony only.
Byte Number Byte Description
0-1 Number of screen columns
RULER
Record Type Code Body length
RULER 70 (46h) 25 bytes
Record Description
Name ruler range
Used in Symphony only.
Byte Number Byte Description
0-15 Name; NULL terminated ASCII string
16-17 Range; starting column
18-19 starting row
20-21 ending column
22-23 ending row
24 Range type; 0 = single cell
1 = range
NNAME
Record Type Code Body length
NNAME 71 (47h) 25 bytes
Record Description
Named sheet range
Used in Symphony only.
Byte Number Byte Description
0-15 Name; NULL terminated ASCII string
16-17 Range; starting column
18-19 starting row
20-21 ending column
22-23 ending row
24 Range type; 0 = single cell
1 = range
ACCOM
Record Type Code Body length
ACOMM 72 (48h) 65 bytes
Record Description
Autoload communications file
Used in Symphony only.
Byte Number Byte Description
0-64 Path name to Autoload file;
NULL terminated ASCII string
AMACRO
Record Type Code Body length
AMACRO 73 (49h) 8 bytes
Record Description
Autoexecute macro address
Used in Symphony only.
Byte Number Byte Description
0-1 starting column
2-3 starting row
4-5 ending column
6-7 ending row
PARSE
Record Type Code Body length
PARSE 74 (4Ah) 16 bytes
Record Description
Query parse information
Used in Symphony only.
Byte Number Byte Description
0-1 Parse range; starting column
2-3 starting row
4-5 ending column
6-7 ending row
8-9 Review range; starting column
10-11 starting row
12-13 ending column
14-15 ending row