PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #303)

[PCjs Machine "ibm5150"]

Waiting for machine "ibm5150" to load....

Information about “LOTUS WORKSHEETS #4”

LOTUS WORKSHEETS 4 contains the OptionWare demo for solving
mathematical problems.  Reports and graphs can be printed from the
demo.  This disk also contains tips on converting Lotus 1-2-3
worksheeks to Symphony worksheets, a 1984 Federal Income Tax template
and a template to create letters and labels.  Documentation is included
for all worksheets.

System Requirements: 256K, two disk drives, LOTUS 1-2-3 v2.0

How to Start:  Access through LOTUS 1-2-3

Suggested Registration:  $25.00

File Descriptions:

DIR-LIST      Listing of included files
MAGEE    DOC  Documentation file for MAGEE.WKS
AUTO123  WKS  Demo of OptionWare 1-2-3 models - self start with 1-2-3
WSFF3    TXT  Worksheet File Format 1-2-3/Symphony:Appendix A
WSFF2    TXT  Worksheet File 1-2-3/Symphony:Summary of record types
WSFF1    TXT  Worksheet File Format 1-2-3/Symphony:Intro & quick ref.
TAX1984  WKS  Individual tax planning model
TAX1984  DOC  Documentation file for TAX1984.WKS
PREVIEW  WKS  Part of demo for OptionWare - used with AUTO123.WKS
MAIL     WKS  123 template to form letters/labels
MAGEE    WKS  Ledger/database date math + reports - menu driven
WSFF4    TXT  Worksheet File Format 1-2-3/Symphony:Appendix B

MAGEE.DOC








                         The 123 Ledger (tm), Version 1.6

         (C) Copyright 1984  by Patrick T. Magee.  All Rights Reserved.

         You are free to share unmodified copies of The 123 Ledger and
         this documentation with others.

         Should you find this application useful, and wish to receive the
         following:

           1) A disk containing the following applications:

             - Cash Flow application with several built in macros.
             - Menu-driven Tutorial for the Cash Flow application.
             - Advanced spreadsheet generator macro application for
               analyzing loans.
             - Menu driven Quote Generator.
             - Menu driven Tax Planner.
             - IRA/Annuity Analyzer
             - Sophisticated Integrated Business Plan (demonstrates how
               to integrate projected income statements, balance sheets,
               cash flow statements, cost of sales analysis, and ratio
               analysis, into a single worksheet for maximum "what-if"
               capabilities).

           2) The ProKey macro file I use to build my 1-2-3 macro
              applications.  Using this file in conjunction with ProKey
              from RoseSoft cut my macro development time in half.

           3) You get on my mailing list (unless you indicate otherwise)
              giving you timely notice of my new products as they
              become available.


         To receive all this, just send $25 (plus $2 S&H) to:

             Patrick Magee
             1711 143rd Place SE, Suite C1
             Bellevue, WA  98007

         (Washington State residents add sales tax.)

























                                     Preface

         The 123 Ledger is an advanced Lotus 1-2-3(tm) application making
         extensive use of 1-2-3's macro, database, and date-arithmetic
         features.  The end result is a general purpose transaction processo
         that can be used for summarizing checks or maintaining simple gener
         ledgers.  The application was designed to allow for up to 1700
         transactions and over 100 account numbers, on a computer having
         only 256k of memory.

         This application is managed by over 30k of macros which give
         even the most novice users easy access to the upper limits of
         1-2-3's power.


         This documentation is organized as follows:

              Getting Started
              The On-line Help System
              The Modify Data Options
              The Summarize Data Options  (The most useful & informative)
              The Query Data Options


         In case some of you are wondering who Patrick Magee is:

              He is a CPA based in Bellevue, WA who devotes all his time
              to the mastering of Lotus 1-2-3 and Symphony.  He acquired
              his Lotus knowledge by helping over 40 businesses implement
              Lotus products.  He teaches beginning, advanced, and macro
              classes for 1-2-3 and Symphony.  He writes a monthly column
              for Absolute Reference - The Journal for 1-2-3 and Symphony
              Users (1-800-428-5331).  And last May, he started the
              Pacific NW Lotus Users Group.
































    GETTING STARTED

         Begin by loading The 123 Ledger as you would a normal worksheet.

         /File Retrieve <LEDGER> <RETURN>

         After scanning the Copyright screen, press RETURN to continue on to
         the main menu which looks as follows:


    ========================================================================
                               The Winning Company                   Apr-84
    ========================================================================




                             1     Modify Data
                             2     Query Data
                             3     Summarize Data
                             4     Setup Options
                             5     Online Help
                             6     Save/Exit Options


                               Enter Selection ......



    ======== Copyright 1984 (C) =========== by Patrick T. Magee, CPA =======





































    THE ONLINE HELP SYSTEM

         As you can see, there are six main menu options.  Select option
         number 5 by pressing the 5 key.  This takes you to the main help
         screen which gives you an overview of all the command options as
         shown below.

    ========================================================================
                             Directory of Menu Options
    ========================================================================

        1           2                 3             4       5        6

     MODIFY       QUERY           SUMMARIZE       SETUP    HELP   SAVE/EXIT

     1.1 Add      2.1 Account     3.1 All         4.1 Recalc       6.1 Save
     1.2 Edit     2.2 Date_Range  3.2 Date_Range  4.2 Company      6.1 123
     1.3 Sort     2.3 Both        3.3 Xtract      4.3 Date         6.3 Exit
     1.4 Balance  2.4 Freeform    3.4 Scan        4.4 Initialize   6.4 Load
     1.5 Date     2.5 Scan        3.5 Print       4.5 Formfix      6.5 Dir.
     1.6 Print    2.6 Print       3.6 Help        4.6 Help         6.6 Help
     1.7 Help     2.7 Help        3.7 Quit        4.7 Quit         6.7 Quit
     1.8 Quit     2.8 Quit




         Note that you can view help on any command option by selecting an
         option from the menu appearing on the command line.  Note that all
         menus that appear on the command line work exactly like 1-2-3's
         menus.  You can select options by either typing the first letter,
         or pointing and pressing RETURN.

         There are 13 help screens in all.  Type a 3 to view the help for
         the Summarize options.  This takes you immediatly to a help screen
         for these options.  Pressing RETURN once takes you to the second
         screen, and pressing RETURN a last time takes you back to the main
         help menu.



























    THE MODIFY DATA OPTIONS

         Type in a 1 to select the Modify Data option.  This takes you to
         the top of the transactions database and brings up the Modify menu.

         This is the only place in the system that you can alter the
         content or structure of the database.

         There are two ways to add records; the first is under complete
         macro control using the Add option, the second is with little or no
         assistance from the macros under the Edit option.


         THE ADD OPTION

         Type an A to select the Add option.  You will be taken to the
         bottom of the database and prompted for the required information.
         The sample transaction you will enter here is as follows:

            05-Apr-84   577  Office supplies           655     (75.00)

         The first prompt that appears is:
              Enter Day of Month(2nd as 2) :

         Note that the current month and year appear in the upper left hand
         corner of the screen (this is changed by the month option).  All
         have to do is type in the day.

         Type in 5 and press ENTER

         Note that the entire date is entered, the cell is formatted, and
         the cell pointer is moved to the next cell.

         The next prompt to appear is:

              Enter Transaction Number:

         Type in 577 and press ENTER.

         The next prompt is:

              Enter Payee/Description:

         Type in "Office Supplies" and press ENTER.

         The next prompt is:

              Enter Account Number:

         Type in 655 and press ENTER

         And the final prompt is:

              Enter Amount:











         Checks are entered as negative amounts so type in -75 and press
         ENTER.

         The cell is formatted currency with two decimal places and the cell
         pointer is positioned for entering the next transaction.


         Although this method of data entry is simple and straight forward,
         most people will find it too slow and cumbersome.  This application
         was designed primarily for quick and dirty transaction processing,
         and thats where the EDIT option comes in.  As the message indicates
         at the top of the screen, you can enter a 0 for the day of month to
         return to the main menu.  Note that the message dissappears as the
         menu reappears.


         THE EDIT OPTION

         Select the Edit option now by typing the letter E.  Note that two
         messages appear in the message area before the macros return you to
         READY mode.  In READY mode, you are free to move around with the
         direction keys and issue regular 1-2-3 commands to alter the
         contents of the database.  At this point, transactions can be
         manually, or with the aid of the Alt-A macro, which is the
         recommended method of transaction entry.  To illustrate this macro,
         you will enter the following transaction.

            22-Apr-84   578  Business Periodicals     675     (25.00)

         Move the cell pointer to the next blank row in the database and
         move to the Date column.  Hold down the Alt key and tap the A key.

         Type in the number 22 and press ENTER.
         Type in the number 578 and press ENTER.
         Type in "Business Periodicals" and Press ENTER.
         Type in the number 675 and press ENTER.
         And lastly, type in the number -25 and press ENTER.

         Note that the macros handle all cursor movement and cell
         formatting as before.  The advantages to this method are that
         only the Date entry is required - the rest can be skipped
         simply by  pressing ENTER.  It's also much easier to break out
         of a macro(by pressing Control-Break) make a correction, and
         resume.  Or you may just want to enter a  single transaction,
         copy it down several rows and modify it.  Often  my clients
         simply enter the date, account #, and amount.


         CHANGING THE CURRENT MONTH OR YEAR

         To do this, return to the main menu by holding down the Alt key and
         tapping the R key.  Select the Date option, enter the new year and
         month numbers as prompted, and you're ready to do the next period.












         OTHER MENU OPTIONS

         The following briefly summarizes the remaining options available
         from this submenu.

          Sort -  lets you quickly sort the database on any field with only
                  a couple keystrokes (Pressing S, D, and ENTER) is all that
                  is required to sort the database by date in ascending
                  order.

          Balance-displays the total of all transactions up to and
                  including a specified date.  If The 123 Ledger is being
                  used as a checkbook ledger, this will display your
                  balance on any given date.  You simply select the
                  option, enter a year, month, and day, and the balance
                  is calculated and displayed.

          Print - Prints a listing of the entire database.

          Help -  takes you immediatly to the help screens for the Modify
                  Database menu options.

          Quit -  Returns you to the main menu.


         You've been familiarized with the database and how it is modified.
         Now you're ready to see what this application is really all about.
         Select the Quit option to return to the main menu.







































    THE SUMMARIZE DATA OPTIONS

         You can select the summarize option by typing the number 3.  To see
         all of the transactions totaled by account number, select the All
         option by typing an A.  A few moments later, you will see a list of
         account numbers appear and their current balances.  The macro that
         does this uses a combination of Data Query Unique, Data Table 1,
         Data Table Sort, and a single @DSUM formula to produce this
         summary.  This technique allows you to have over 100 account
         numbers, and enter over 1700 transactions, with a 256k computer.

         The Date_Range option does the same thing but only includes
         transactions that fall within a specified date range.  This is
         useful when more than one months data is entered into a single
         database.

         The Print option in this submenu gives you 3 choices:  The first
         simply prints the summary section as it currently appears on the
         screen;  The second produces the equivalent of a G/L listing - it
         takes one account number at a time, prints it's balance, and all
         the transactions that make up that balance;  The third does the
         same thing as the second, except for a specified date range.












































    THE QUERY DATA OPTIONS

         Select the Query Data option from the main menu now by typing 2.
         This section lets you quickly review the transactions for a given
         account number, date range, or both.  For example, if you wanted to
         see all of the transactions for account number 665, you would
         select the Account option by typing an A, type in the number 665,
         and press the ENTER key.  In a second or two, you should see a list
         of all the transactions for that account number.

         To see all the transactions for account number 665 for the month of
         May, select the Both option by typing a B, type in 665 and press
         ENTER.  A menu will appear with two options: Dates_Ok and
         Change_Dates.  The current beginning and ending dates are displayed
         on the screen, to leave them unchanged for this command, select
         the Dates_Ok option.  You will probably want to change them
         however, so select Change_Dates.  You will be asked for two sets
         of dates.  For each, you must enter a year, month, and day.  The
         exact keystrokes are as follows:

           84 <ENTER>
           4  <ENTER>
           1  <ENTER>

           84 <ENTER>
           4  <ENTER>
           30 <ENTER>

         After pressing the last ENTER, you should see the list of
         transactions appear on the screen.


         That's all for now.  I will update this documentation as time
         permits.  Your suggestions for improvement of either The 123
         Ledger or this documentation are welcome.  You are welcome to
         leave questions or messages for me on The World of Lotus
         (ID#  76044,273).  I will try to answer them at least once every
         week.  Thank you.


TAX1984.DOC

				 B. JOSEPH KENNEDY, CPA
				   PETRO BANK BUILDING
			  11,111 KATY FREEWAY, SUITE 310
				  HOUSTON, TEXAS 77079
					(713) 973-6475


THANK YOU FOR YOUR INTEREST IN THE INDIVIDUAL TAXPLANNING MODEL.


CAUTION:

YOU SHOULD MAKE A COPY OF THE ORIGINAL DISKETTE AND FILE IT FOR
BACK-UP PURPOSES.  THE DISKETTE CAN BE USED BY YOU FOR YOUR
PERSONAL USE WITHOUT LIMITATION.  IF YOU CHOOSE TO USE THE MODEL
(OVERLAY OR TEMPLATE, ETC.) FOR OTHER OFFICES OR FOR ESTIMATING
TAX LIABILITY FOR OTHERS, I REQUEST A FEE OF $25.00.   IF YOU
ADVISE ME OF YOUR USE OF THIS TEMPLATE FOR PROFESSIONAL USE, I
WILL KEEP YOU APPRAISED OF ALL CHANGES/MODIFICATIONS OF THE
PROGRAM.  OBVIOUSLY, THIS IS ON THE HONOR SYSTEM, BUT I BELIEVE
YOU WILL AGREE IT IS LESS COSTLY THAN TRYING TO DEVELOP AND INPUT
THE MODEL INTO YOUR LOTUS SYSTEM.  THANK YOU FOR YOUR
COOPERATION.  I HOPE THIS HELPS KEEP YOUR TAXES TO A MINIMUM!!!!!

  THIS PROGRAM IS NOT TO BE SOLD OR OTHERWISE DISTRIBUTED TO ANY
  OTHER PARTIES WITHOUT THE EXPRESS WRITTEN PERMISSION OF THE
  AUTHOR OR A REPRESENTATIVE FROM HIS COMPANY.

		   * * * WHAT THE MODELS CAN DO * * *

TAXPLAN:

The TAXPLAN model will calculate the following taxes:
			MARRIED FILING JOINT INCOME TAX Return
			SINGLE TAXPAYER INCOME TAX Return
			ALTERNATIVE MINIMUM TAX
			TEN YEAR AVERAGING ON LUMP-SUM DISTRIBUTIONS
			SELF EMPLOYMENT TAXES

How the TAXPLAN model works:

The user must be familiar with the Internal Revenue Code and the
individual income tax return, FORM 1040.  The model asks the user
to input information regarding items for the alternative minimum
tax computation, amounts for the various lines on Form 1040 and
Schedule A of the tax return.  (The input is not accumulated as
it is in the various tax return preparation software packages,
such as the Microtax tax return processing package.)

Amounts that would transfer from other schedules; interest income,
income from self-employment, partnership income (loss), etc.,
would have to be separately calculated or the amounts from the
prior year's return used to compute the taxpayer's 1984 projected
tax liability.

The model is set up to print a recap of the income items, the
Schedule A deductions and the tax amounts (regular, AMT, 10 year
averaging, self employment and tax credits) for your client's
analysis.  You can print the full detail if you wish, by modifying
the print command, although this may just confuse your clients.
I have set in a macro command for the printing function, after you
have input all the data for a client, press the "F9" function key
to compute the tax liability.  After the tax is computed, just
press the "ALT" key and the "P" key, printing will begin.  You
can separately request a written report of any and all fields of
the model by using the printing commands outlined in your LOTUS
123 tm manual.

UPDATES TO THE EXISTING MODEL:  Tentatively, I would like to
receive a business card from anyone interested in learning of any
updates to the original model.  I may add provisions for
calculating taxes for head of household and, possibly, for
married filing separately.  I am also planning to add the tax
rate schedules for 1985 in the near future, however, the 1984
rates can be used in the interim to compare alternatives for 1984
vs. 1985 without much distortion.

PLEASE SEND YOUR BUSINESS CARD TO ME IF YOU ARE INTERESTED!!!!
--------------------------------------------------------------


NOTE TO USERS:

If you wish to increase or decrease the number of comparisons,
using the COPY command in LOTUS to copy column B of the model to
the next available, unused column will provide that flexibility
to make simultaneous comparisons of tax choices.

You may wish to add other comparisons or tax schedules
(married/separate, or head of household) on your own and are
invited to use the formulations in this model as a guide.  Good luck!







WSFF1.TXT

                            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
                                                       print
 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
                                                       print
 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

WSFF2.TXT

                            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

WSFF3.TXT

                            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.

WSFF4.TXT

                            WORKSHEET FILE FORMAT
                                  FROM LOTUS

                      APPENDIX B - THE FORMULA COMPILER

               Copyright(c) 1984, Lotus Development Corporation
                               161 First Street
                        Cambridge, Massachusetts 02142
                                (617) 492-7171
                      Electronic Edition, December, 1984
                             All Rights Reserved
























































                      APPENDIX B:  The Formula Compiler

 This appendix describes the internal workings of the formula compiler.  The
 compiler transforms an ASCII string of characters representing a formula to
 its Reverse Polish code.  The basic algorithm utilizes and SR parser (SR =
 shift and reduce).  The aim of the parser is to apply a set of reduction
 rules which embody the syntax of the compiler to an input string.  Formula
 code is compiled to a temporary buffer.

 Lexicon Analysis

 A lexical analyzer breaks up the input string into lexical units called
 tokens.  A token is a substring of the original input string operand,
 operator, or special symbol (such as comma, parentheses, etc.) In addition,
 the lexical analyser supplies two special tokens, "beginning of formula"
 (boform) and "end of formula" (eoform), to facilitate the compilation
 process.  The lexical analyzer identifies and processes literals (both
 number and string), cell and range references, operators, and function
 calls.  It assigns a unique code to each distinct operator, function, or
 type of operand.

 A function with no arguments is treated like a number.

 Syntax Analysis

 The syntactical analysis of a formula is accomplished by processing a list
 of tokens in left-to-right order.  A stack called the syntax is also used
 during the syntactical scan.  The basic algorithm is as follows:

 Repeat the following steps:

 1) Get the next token

 2) If the token is a literal or cell reference:
       a) Push the number code on the syntax stack
       b) Push the number code on the syntax stack

 3) If the token is a range reference:
       a) Compile code to push the range reference
       b) Push the range code on the syntax stack

 4) Otherwise push the token code for the token on the syntax stack.

 For each syntax rule, if the pattern on the top of the  syntax matches the
 rule pattern take the action associated with the rule and start scanning
 from the beginning for any additional rules which may apply.

 When a token code is pushed on the syntax stack, an additional word of
 zeros is also pushed on the stack.  This is used when compiling function
 calls to hold the function's argument count.





 Rule Matching

 A relatively small number of rules are used to process formulas of arbitrary
 complexity.  If a rule matches the top of the syntax stack, then the
 compiler takes a specific action and rule scanning starts again with the
 first rule.  Each rule matches certain patterns on the syntax stack.  A
 typical rule might be: if the top of the stack is the token for right
 parenthesis, and the next-to-top is a number, and the second form the top
 is a left parenthesis, then pop the top three items from the syntax stack
 and push the number on the syntax stack.

 This rule can be more succinctly represented as:

                        Stack

          Before                      After                 Action
          )
          number
          (                           number                none



 The Rules


 The following are the syntax rules used to process formulas.  Note that the
 order of the rules is important.  The rules for compilation of operators
 used additional tables which assign a precedence number and opcode to each
 legal unary and binary operator.  Thus, for example, there is a single
 token code for minus sign (-), but there are two opcodes one for unary
 minus and one for binary minus.  In addition, these two operators, while
 lexically identical, also have different precedence.  In general, operators
 of higher precedence will be performed before operators of lower precedence
 are performed left-to-right.  All special operators (boform, eoform,
 parentheses, comma, etc.) are implicitly assigned a precedence of zero.

 Rule 1  Termination test

                  Stack

         Before           After       Action
         eoform                       Output a return code to compile buffer
         number                       Return, indicating successful compile
         boform

 Rule 2  Function argument processing

                 Stack
         Before          After       Action
         '                           Error if range argument illegal for
         number or range             function.
         (               (           Increment argument count on stack
         function        function

 Rule 3  Process final function argument

                 Stack
         Before         After        Action
         )                           Error if range argument illegal for
         number or range             function.
         (                           Increment argument count on stack
         function       number       Compile function opcode
                                     If list function, compile argument
                                     count; otherwise error is wrong
                                     argument count.




 Rule 4  Parenthesis removal

                Stack
        Before         After        Action
        )                           Compile parenthesis opcode
        number
        (              number
        operator       operator



 Rule 5  Binary operators

               Stack
        Before         After        Action
        op2                         If binary op<binary op, rule does
        number                      not match.  Otherwise, compile opcode
        op1            op2          for operator op1.


 Rule 6  Unary operators

               Stack
        Before      After           Action
        op2                         I unary op<binary op, rule does
        number      op2             not match.  Otherwise, compile opcode.
        op1         number          for operator op 1.


 Rule 7  Error detection

              Stack
       Before       After          Action
       eoform                      Return indicating unsuccessful compile





 Table 9   Operator Precedence Table

 Operator              Unary Precedence       Binary Precedence
 +                             6                      4
 -                             6                      4
 *                            na                      5
 /                            na                      7
 ^                            na                      3
 =                            na                      3
 < >                          na                      3
 < =                          na                      3
 > =                          na                      3
 <                            na                      3
 >                            na                      3
 #and#                        na                      1
 #or#                         na                      1
 #not#                        2                      na











 Example:

 Using the above rules, we can now see how a particular formula is
 compiled.  Let us consider the following formula:

                  3+5*6

 This is broken up by the lexical analyzer into seven tokens.

                  boform
                  3
                  +
                  5
                  *
                  6
                  eoform

 The syntax scans proceed as follows until a matching rule is found:

 Stack

 boform           number         +            number
                  boform         number       +
                                 boform       number
                                              boform

 Compile buffer

                  push 3         push 3       push 3
                                              push 5

 At this point, rule 5 is invoked, but since the precedence of boform is
 zero, no action is taken.

 Stack

 *                number
 number           *
 +                number
 number           +
 boform           number
                  boform

 Compile buffer

 push 3           push 3
 push 5           push 5
                  push 6







 At this  point, since the binary precedence of + is lower than the binary
 precedence of *, rule 5 does apply, and the opcode for * is compiled.  The
 stack is reduced by replacing number * number by number and scan is made,
 but no further rule applies.


 Stack

 number          eoform
 +               number
 number          +
 boform          number
                 boform

 Compile buffer

 push 3          push 3
 push 5          push 5
 push 6          push 6



 Rule 5 applies again, and the opcode for + is compiled, reducing the stack
 to boform, number, eoform.  Rescanning finds a match on rule 1 which
 compiles a return opcode and terminates.  The final compiled code is thus:

 push 3
 push 5
 push 6
 *
 +
 return

 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 Reverse Polish, P.J. Brown,
 Software Practice and Experience, Vol 7, 545-551 (1977).










 WORKSHEET COLUMN DESIGNATORS

 Most records within the 1-2-3 Condensed Worksheet format are specified
 with column/row designators (for example, column 0, row 0 equals A1).  When
 determining the column designator, the table below will help make
 conversion easier.


 Column   Hex   Dec        Column   Hex   Dec        Column   Hex   Dec
   A       0     1           BA     34     52          DA     68    104
   B       1     1           BB     35     53          DB     69    105
   C       2     2           BC     36     54          DC     6A    106
   D       3     3           BD     37     55          DD     6B    107
   E       4     4           BE     38     56          DE     6C    108
   F       5     5           BF     39     57          DF     6D    109
   G       6     6           BG     3A     58          DG     6E    110
   H       7     7           BH     3B     59          DH     6F    111
   I       8     8           BI     3C     60          DI     70    112
   J       9     9           BJ     3D     61          DJ     71    113
   K       A    10           BK     3E     62          DK     72    114
   L       B    11           BL     3F     63          DL     73    115
   M       C    12           BM     40     64          DM     74    116
   N       D    13           BN     41     65          DN     75    117
   O       E    14           BO     42     66          DO     76    118
   P       F    15           BP     43     67          DP     77    119
   Q      10    16           BQ     44     68          DQ     78    120
   R      11    17           BR     45     69          DR     79    121
   S      12    18           BS     46     70          DS     7A    122
   T      13    19           BT     47     71          DT     7B    123
   U      14    20           BU     48     72          DU     7C    124
   V      15    21           BV     49     73          DV     7D    125
   W      16    22           BW     4A     74          DW     7E    126
   X      17    23           BX     4B     75          DX     7F    127
   Y      18    24           BY     4C     76          DY     80    128
   Z      19    25           BZ     4D     77          DZ     81    129
  AA      1A    26           CA     4E     78          EA     82    130
  AB      1B    27           CB     4F     79          EB     83    131
  AC      1C    28           CC     50     80          EC     84    132
  AD      1D    29           CD     51     81          ED     85    133
  AE      1E    30           CE     52     82          EE     86    134
  AF      1F    31           CF     53     83          EF     87    135
  AG      20    32           CG     54     84          EG     88    136
  AH      21    33           CH     55     85          EH     89    137
  AI      22    34           CI     56     86          EI     8A    138
  AJ      23    35           CJ     57     87          EJ     8B    139
  AK      24    36           CK     58     88          EK     8C    140
  AL      25    37           CL     59     89          EL     8D    141
  AM      26    38           CM     5A     90          EM     8E    142
  AN      27    39           CN     5B     91          EN     8F    143
  AO      28    40           CO     5C     92          EO     90    144
  AP      29    41           CP     5D     93          EP     91    145
  AQ      2A    42           CQ     5E     94          EQ     92    146
  AR      2B    43           CR     5F     95          ER     93    147
  AS      2C    44           CS     60     96          ES     94    148
  AT      2D    45           CT     61     97          ET     95    149
  AU      2E    46           CU     62     98          EU     96    150
  AV      2F    47           CV     63     99          EV     97    151
  AW      30    48           CW     64    100          EW     98    152
  AX      31    49           CX     65    101          EX     99    153
  AY      32    50           CY     66    102          EY     9A    154
  AZ      33    51           CZ     67    103          EZ     9B    155








 (CONTINUED)




               Column   Hex    Dec         Column    Hex    Dec

                 FA     9C     156           HA      DO     208
                 FB     9D     157           HB      D1     209
                 FC     9E     158           HC      D2     210
                 FD     9F     159           HD      D3     211
                 FE     AO     160           HE      D4     212
                 FF     A1     161           HF      D5     213
                 FG     A2     162           HG      D6     214
                 FH     A3     163           HH      D7     215
                 FI     A4     164           HI      D8     216
                 FJ     A5     165           HJ      D9     217
                 FK     A6     166           HK      DA     218
                 FL     A7     167           HL      DB     219
                 FM     A8     168           HM      DC     220
                 FN     A9     169           HN      DD     221
                 FO     AA     170           HO      DE     222
                 FP     AB     171           HP      DF     223
                 FQ     AC     172           HQ      EO     224
                 FR     AD     173           HR      E1     225
                 FS     AE     174           HS      E2     226
                 FT     AF     175           HT      E3     227
                 FU     BO     176           HU      E4     228
                 FV     B1     177           HV      E5     229
                 FW     B2     178           HW      E6     230
                 FX     B3     179           HX      E7     231
                 FY     B4     180           HY      E8     232
                 FZ     B5     181           HZ      E9     233
                 GA     B6     182           IA      EA     234
                 GB     B7     183           IB      EB     235
                 GC     B8     184           IC      EC     236
                 GD     B9     185           ID      ED     237
                 GE     BA     186           IE      EE     238
                 GF     BB     187           IF      EF     239
                 GG     BC     188           IG      FO     240
                 GH     BD     189           IH      F1     241
                 GI     BE     190           II      F2     242
                 GJ     BF     191           IJ      F3     243
                 GK     CO     192           IK      F4     244
                 GL     C1     193           IL      F5     245
                 GM     C2     195           IM      F6     246
                 GN     C3     195           IN      F7     247
                 GO     C4     196           IO      F8     248
                 GP     C5     197           IP      F9     249
                 GQ     C6     198           IQ      FA     250
                 GR     C7     199           IR      FB     251
                 GS     C8     200           IS      FC     252
                 GT     C9     201           IT      FD     253
                 GU     CA     202           IU      FE     254
                 GV     CB     203           IV      FF     255
                 GW     CC     204
                 GX     CD     205
                 GY     CE     206
                 GZ     CF     207




 ANALYSIS OF 1-2-3  WORKSHEET FILE

 The worksheet shown below was created in 1-2-3 and saved to disk.



                                              Key:

                                              A2..A5 Named Range (code 11)
          EXAMPLE                                 A2: Label (code 15)
             100                                  A3: Integer (code 13)
            12.5                                  A4: Number (code 14)
            87.5                                  A5: Formula (+A3-A4)
                                                      (code 16)


 The example shown below is a partial hex dump of this worksheet file.  By
 reading each record header, you can determine the type of record you are
 encountering.  The record header will also tell you the length of that
 follows the header.  By analyzing the record header, you can read the
 records you want and skip unrelated records.


    362B:0100                           06 00 08 00 00 00 00 00 00 00
    362B:0110        04 00 2F 00 01 00  01 02 00 01 00 FF 03 00 01 00
    362B:0120        00 04 00 01 00 00  05 00 01 00 FF 07 00 1F 00 00
    362B:0130        00 01 00 71 00 09  00 08 00 14 00 00 00 00 00 00
    362B:0140        00 00 00 00 00 00  00 04 00 04 00 48 00 00 0B 00
    362B:0150        18 00 54 45 53 54  00 00 00 00 00 00 00 00 00 00
    362B:0160        00 00 00 00 01 00  00 00 04 00 18 00 19 00 00 FF
    362B:0170        FF 00 00 FF FF 00  00 FF FF 00 00 FF FF 00 00 FF
    362B:0180


    362B:05C0
    362B:05D0        00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00
    362B:05E0        00 00 00 00 00 00  00 00 00 00 00 00 00 00 00 00
    362B:05F0        00 00 00 00 71 71  01 00 0F 00 0E 00 FF 00 00 01
    362B:0600        00 27 45 58 41 4D  50 4C 45 00 0D 00 07 00 FF 00
    362B:0610        00 02 00 64 00
    362B:0620                           10 00 1B 00 FF 00 00 04 00 00
    362B:0630        00 00 00 00 E0 55  40 0C 00 01 00 80 FE BF 01 00
    362B:0640        80 FF BF 0A 03

Directory of PC-SIG Library Disk #0303

 Volume in drive A has no label
 Directory of A:\

MAGEE    WKS     44160   1-05-85   5:48p
MAGEE    DOC     15488   1-05-85   5:33p
WSFF1    TXT     14464   1-03-85   6:56p
WSFF3    TXT      3712   1-03-85   7:20p
TAX1984  WKS     37888  12-08-84   2:21p
TAX1984  DOC      3983  12-08-84  12:09a
MAIL     WKS      8320  12-15-84   5:11p
AUTO123  WKS     57216  10-05-84   4:47p
PREVIEW  WKS     60544  10-05-84   4:49p
WSFF4    TXT     19968   1-03-85   7:35p
WSFF2    TXT     79872   1-05-85   5:16p
DIR-LIST          1408   1-05-85   8:14p
       12 file(s)     347023 bytes
                        9216 bytes free