Created
December 15, 2017 22:28
-
-
Save SheetJSDev/6fe869edc9541b7f42dc15d3e52b005c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
WORKSHEET FILE FORMAT | |
FROM LOTUS | |
INTRODUCTION AND QUICK REFERENCE | |
Copyright(c) 1984, Lotus Development Corporation | |
161 First Street | |
Cambridge, Massachusetts 02142 | |
(617) 492-7171 | |
Electronic Edition, December, 1984 | |
All Rights Reserved | |
PREFACE | |
Lotus Development Corporation's 1-2-3(TM) and Symphony(TM) perform user | |
selected operations upon a data matrix that is termed a "worksheet". | |
Worksheet files are such matrices stored on disk. | |
A worksheet file is an unbroken sequence of binary coded records defining a | |
single worksheet. | |
Both 1-2-3 and Symphony accept externally created data files if the files | |
are in the worksheet file format. Other programs can decode and process | |
worksheet files created by 1-2-3 or Symphony. | |
The following document provides information required to create or access a | |
worksheet file by describing the records used to create a worksheet file. | |
It is assumed that the reader is familiar with Lotus products and has ready | |
access to 1-2-3 or Symphony documentation. | |
Note that the worksheet files for 1-2-3 and Symphony are similar, but not | |
necessarily interchangeable. 1-2-3 and Symphony share some record types, | |
but also have record types unique to that product. Symphony can read 1-2-3 | |
records, but 1-2-3 cannot read Symphony records. | |
The information contained in this document has been released into the | |
public domain and is not considered to be confidential or proprietary | |
although still the copyright and property of Lotus Development Corporation. | |
All efforts have been made to ensure that this information is clear and | |
useful since Lotus will not be providing customer assistance with this | |
booklet. Lotus will, however, incorporate any necessary corrections if | |
they are reported in writing to: | |
Lotus Development Corporation | |
Worksheet File Format | |
161 First Street | |
Cambridge, MA 02142 | |
WORKSHEET FILE FORMAT | |
Worksheet files are organized as an unbroken sequence of variable length | |
binary records. Each record consists of a 4-byte header followed by the | |
record body. The header defines the record's type and length, as the | |
example below shows. | |
The header's composition is as follows: | |
Byte Number Byte Description | |
0,1 Record type code | |
2,3 Record body length (bytes) | |
Example: Record Header | |
Record Header | |
Record Record | |
Type Length | |
Byte Number 0 1 2 3 | |
Hex Code 1C 00 20 00 | |
Decimal Equivalent 28 32 | |
The record body can be of many different types; most have predetermined | |
length, but some vary in length. | |
The record type code is 28. | |
In a hex dump of the file, the record type appears as 1C 00h, noting that | |
the 8086/88 stores the most significant byte of word in the higher memory | |
address. | |
The record length is 32 bytes. | |
In a hex dump of the file, the record length appears as 20 00h. | |
Record types with Column/Row Coordinates | |
Some record types contain column/row coordinates to identify a cell, or one | |
of the two points that define a range. Numbering starts at zero in the | |
upper left corner of the worksheet. | |
For example: | |
Cell A1 = column 0, row 0 | |
SUMMARY OF RECORD TYPES | |
This section describes the different record types found in 1-2-3 and | |
Symphony. | |
There are to Quick Reference tables ordered by Opcode and by Product, | |
followed by a detailed reference section ordered by Opcode. In the | |
reference section, there are examples for the more commonly used records. | |
It is assumed that the reader is familiar with 1-2-3 or Symphony and has | |
access to Lotus' documentation. | |
Quick Reference by Opcode | |
Type Code (hex) Length (bytes) Description | |
BOF 0 2 Beginning of file | |
EOF 1 0 End of file | |
CALCMODE 2 1 Calculation mode | |
CALCORDER 3 1 Calculation order | |
SPLIT 4 1 Split window type | |
SYNC 5 1 Split window sync | |
RANGE 6 8 Active worksheet range | |
WINDOW1 7 31 Window 1 record | |
COLW1 8 3 Column width, | |
window 1 | |
WINTWO 9 31 Window 2 record | |
COLW2 A 3 Column width, | |
window 2 | |
NAME B 24 Named range | |
BLANK C 5 Blank cell | |
INTEGER D 7 Integer number cell | |
NUMBER E 13 Floating point number | |
LABEL F variable Label cell | |
FORMULA 10 variable Formula cell | |
TABLE 18 25 Data table range | |
ORANGE 19 25 Query range | |
PRANGE 1A 8 Print range | |
SRANGE 1B 8 Sort range | |
FRANGE 1C 8 Fill range | |
KRANGE1 1D 9 Primary sort key range | |
HRANGE 20 16 Distribution range | |
KRANGE2 23 9 Secondary sort key | |
range | |
PROTEC 24 1 Global protection | |
FOOTER 25 242 Print footer | |
HEADER 26 242 Print header | |
SETUP 27 40 Print setup | |
MARGINS 28 10 Print margins code | |
Quick Reference by Opcode (continued) | |
Type code (hex) Length (bytes) Description | |
LABELFMT 29 1 Label alignment | |
TITLES 2A 16 Print borders | |
GRAPH 2D 437 Current graph settings | |
NGRAPH 2E 453 Named graph settings | |
CALCCOUNT 2F 1 Iteration count | |
UNFORMATTED 30 1 Formatted/unformatted | |
CURSORW12 31 1 Cursor location | |
WINDOW 32 144 Symphony window | |
settings | |
STRING 33 variable Value of string | |
formula | |
PASSWORD 37 4 File lockout (CHKSUM) | |
LOCKED 38 1 Lock flag | |
QUERY 3C 127 Symphony query | |
settings | |
QUERYNAME 3D 16 Query name | |
PRINT 3E 679 Symphony print record | |
PRINTNAME 3F 16 Print record name | |
GRAPH2 40 499 Symphony graph | |
record | |
GRAPHNAME 41 16 Graph record name | |
ZOOM 42 9 Orig coordinates | |
expanded window | |
SYMSPLIT 43 2 Nos. of split windows | |
NSROWS 44 2 Nos. of screen rows | |
NSCOLS 45 2 Nos. of screen columns | |
RULER 46 25 Named ruler range | |
NNAME 47 25 Named sheet range | |
ACOMM 48 65 Autoload.comm code | |
AMACRO 49 8 Autoexecute macro | |
address | |
PARSE 4A 16 Query parse | |
information | |
Quick Reference by Product: 1-2-3 only | |
Type Code (hex) Length (bytes) Description | |
SPLIT 4 1 Split window type | |
SYNC 5 1 Split window sync | |
WINDOW 1 7 31 Window 1 record | |
WINTWO 9 31 Window 2 record | |
COLW2 A 3 Column width, | |
window 2 | |
NAME B 24 Named range | |
QRANGE 19 25 Query range | |
PRANGE 1A 8 Print range | |
SRANGE 1B 8 Sort range | |
KRANGE1 1D 9 Primary sort key range | |
KRANGE2 23 9 Secondary sort key | |
range | |
FOOTER 25 242 Print footer | |
HEADER 26 242 Print header | |
SETUP 27 40 Print setup | |
MARGINS 28 10 Print margins code | |
TITLES 2A 16 Print borders | |
GRAPH 2D 437 Current graph settings | |
NGRAPH 2E 453 Named graph settings | |
Quick Reference by Product: 1-2-3 and Symphony | |
Type Code (hex) Length (bytes) Description | |
BOF 0 2 Beginning of file | |
EOF 1 0 End of file | |
CALCMODE 2 1 Calculation mode | |
CALCORDER 3 1 Calculation order | |
RANGE 6 8 Active worksheet range | |
COLW1 8 3 Column width | |
BLANK C 5 Blank cell | |
INTEGER D 7 Integer number cell | |
NUMBER E 13 Floating point number | |
LABEL F variable Label cell | |
FORMULA 10 variable Formula cell | |
TABLE 18 25 Data table range | |
FRANGE 1C 8 Fill range | |
HRANGE 20 16 Distribution range | |
PROTEC 24 1 Global protection | |
LABELFMT 29 1 Label alignment | |
CALCCOUNT 2F 1 Iteration count | |
UNFORMATTED 30 1 Formatted/unformatted | |
CURSORW12 31 1 Cursor location | |
Quick Reference by Product: Symphony only | |
Type Code (hex) Length (bytes) Description | |
WINDOW 32 144 Symphony window | |
settings | |
STRING 33 variable Value of string | |
formula | |
PASSWORD 37 4 File lockout (CHKSUM) | |
LOCKED 38 1 Lock flag | |
QUERY 3C 127 Symphony query | |
settings | |
QUERYNAME 3D 16 Query name | |
PRINT 3E 679 Symphony print record | |
PRINTNAME 3F 16 Print record name | |
GRAPH2 40 499 Symphony graph | |
record | |
GRAPHNAME 41 16 Graph rocord name | |
ZOOM 42 9 Orig coordinates | |
expanded window | |
SYMSPLIT 43 2 Nos. of split windows | |
NSROWS 44 2 Nos. of screen rows | |
NSCOLS 45 2 Nos. of screen columns | |
RULER 46 25 Named ruler range | |
NNAME 47 25 Named sheet range | |
ACOMM 48 65 Autoload. comm code | |
AMACRO 49 8 Autoexecute macro | |
address | |
PARSE 4A 16 Query parse | |
information |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
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 -- | |
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
WORKSHEET FILE FORMAT | |
FROM LOTUS | |
APPENDIX A - CELL FORMAT ENCODING | |
Copyright(c) 1984, Lotus Development Corporation | |
161 First Street | |
Cambridge, Massachusetts 02142 | |
(617) 492-7171 | |
Electronic Edition, December, 1984 | |
All Rights Reserved | |
APPENDIX A: Cell Format Encoding | |
The first byte of a content-related record contains a cell format code. | |
Format is determined at the bit level. | |
Table 8 Cell Format Encoding | |
Bit number Description Code Meaning | |
7 protection 1 protected | |
0 unprotected | |
4,5,6 format type 0 fixed | |
1 scientific | |
notation | |
2 currency | |
3 percent | |
4 comma | |
5 unused | |
6 unused | |
7 special | |
0,1,2,3 number of decimal 0-15 | |
places decoded | |
(if format type = 0-6) | |
special format type 0 +/- | |
(if format type = 7) 1 general | |
2 day-month-year | |
3 day-month | |
4 month-year | |
5 text | |
(Symphony only) 6 hidden | |
(Symphony only) 7 date;hour-min-sec | |
(Symphony only) 8 date;hour-min | |
(Symphony only) 9 date;intnt'l1 | |
(Symphony only) 10 date;intnt'l1 | |
(Symphony only) 11 time;intnt'l1 | |
(Symphony only) 12 time;intnt'l2 | |
13-14 unused | |
15 default | |
EXAMPLE | |
Currency format, two decimal places, unprotected cell | |
Bit Number 7 6 5 4 3 2 1 0 | |
Binary Code 0 0 1 0 0 0 1 0 | |
--------- | |
Format Type --------------- | |
Protection Number of Decimal Places | |
or Special Format | |
The byte number is 0. | |
The hex code is 22. | |
Example | |
Special format, month-year, protected cell | |
Bit Number 7 6 5 4 3 2 1 0 | |
Binary Code 1 1 1 1 0 1 0 0 | |
--------- | |
Format Type ------------- | |
Protection Number of Decimal Places | |
or Special Format | |
The byte number is 0. | |
The hex code is F4. | |