home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / d / decode10.zip / 123.RUL next >
Text File  |  1992-12-07  |  19KB  |  1,006 lines

  1. ############################################################################
  2. #                                                                          #
  3. # 123.rul -- Decode It! rule file for Lotus Worksheet files                #
  4. #                                                                          #
  5. #                                                                          #
  6. # Please note: This rule file is provided as an example only.  While       #
  7. #              every effort has been made to validate the information      #
  8. #              presented here, Axiom Innovations takes no responsibility   #
  9. #              for the integrity of the data that results from using       #
  10. #              this example.                                               #
  11. #                                                                          #
  12. ############################################################################
  13.  
  14.  
  15. RECORD RECORD_123
  16.  
  17. # 123 Record Header
  18.  
  19. SHORT   RecordType
  20.  
  21. SHORT   RecordLength
  22.  
  23.  
  24. # Beginning of File
  25. WHILE  RECORD_123.RecordType  <=>  0
  26. RECORD  BeginOfFile
  27.  
  28.     # Id should equal 1028 or 1030
  29.     XSHORT  Id
  30.  
  31.     WHILE  RECORD_123.BeginOfFile.Id  <>  1028 
  32.     BEGIN
  33.  
  34.         WHILE  RECORD_123.BeginOfFile.Id  <>  1030
  35.           EXIT
  36.  
  37.     END
  38.  
  39.     RETURN
  40.  
  41. END
  42.  
  43.  
  44. # End of file
  45. WHILE  RECORD_123.RecordType  <=>  1
  46. RECORD  EndOfFile
  47.  
  48.     # Decode bytes after Lotus EOF
  49.     ASCII  AfterEOF  -1
  50.  
  51.     EXIT
  52.  
  53. END
  54.  
  55.  
  56. # Calculation method
  57. WHILE  RECORD_123.RecordType  <=>  2
  58. BEGIN
  59.  
  60.     # 0 = manual mode, FF = automatic
  61.     XTINY  CalcMode
  62.  
  63.     RETURN
  64.  
  65. END
  66.  
  67.  
  68. # Calculation order
  69. WHILE  RECORD_123.RecordType  <=>  3
  70. BEGIN
  71.  
  72.     # 0 = natural, 1 = by column, FF = by row
  73.     XTINY  CalcOrder
  74.  
  75.     RETURN
  76.  
  77. END
  78.  
  79.  
  80. # Split window type
  81. WHILE  RECORD_123.RecordType  <=>  4
  82. BEGIN
  83.  
  84.     # 0 = not split, 1 = vertical split, FF = horizontal split
  85.     XTINY  SplitType
  86.  
  87.     RETURN
  88.  
  89. END
  90.  
  91.  
  92. # Split window sync
  93. WHILE  RECORD_123.RecordType  <=>  5
  94. BEGIN
  95.  
  96.     # 0 = not synchronized, FF = synchronized
  97.     XTINY  SyncType
  98.  
  99.     RETURN
  100.  
  101. END
  102.  
  103.  
  104. # Active worksheet range (start col, start row, end col, end row)
  105. WHILE  RECORD_123.RecordType  <=>  6
  106. BEGIN
  107.  
  108.     SHORT  ActiveRange  4
  109.  
  110.     RETURN
  111.  
  112. END
  113.  
  114.  
  115. # Window 1 and 2
  116. BEGIN
  117.  
  118.     WHILE  RECORD_123.RecordType  <>  7
  119.     BEGIN
  120.  
  121.         WHILE  RECORD_123.RecordType  <>  9
  122.             RESCIND
  123.  
  124.     END
  125.  
  126.     RECORD  Window
  127.  
  128.         SHORT  CursorPosition  2
  129.  
  130.         #####################################################################
  131.         #                                                                   #
  132.         #  Each bit of the cell format byte is used as follows:             #
  133.         #                                                                   #
  134.         #  Bit  Description     Value   Meaning                             #
  135.         #  ---  -----------     -----   -------                             #
  136.         #   7   protection        1     protected                           #
  137.         #                         0     unprotected                         #
  138.         #                                                                   #
  139.         #  4-6  format type       0     fixed                               #
  140.         #                         1     scientific notation                 #
  141.         #                         2     currency                            #
  142.         #                         3     percent                             #
  143.         #                         4     comma                               #
  144.         #                        5-6    unused                              #
  145.         #                         7     ** special ** (see below)           #
  146.         #                                                                   #
  147.         #  0-3  decimal places   0-15   ** Only if format type = 0-6 **     #
  148.         #       special format          if format type = 7 :                #
  149.         #                         0       +/-                               #
  150.         #                         1       general                           #
  151.         #                         2       day-month-year                    #
  152.         #                         3       day-month                         #
  153.         #                         4       month-year                        #
  154.         #                         5       text                              #
  155.         #                         6       hidden                            #
  156.         #                         7       date : hour-min-sec               #
  157.         #                         8       date : hour-min                   #
  158.         #                         9       date : international 1            #
  159.         #                        10       date : international 2            #
  160.         #                        11       time : international 1            #
  161.         #                        12       time : international 2            #
  162.         #                       13-14     not used                          #
  163.         #                        15       default                           #
  164.         #                                                                   #
  165.         #####################################################################
  166.          
  167.         XTINY  Format
  168.  
  169.         TINY   Unused1
  170.  
  171.         SHORT  DefaultWidth
  172.  
  173.         SHORT  ScreenSize  2
  174.  
  175.         SHORT  StartPosition  2
  176.  
  177.         SHORT  TitleSize  2
  178.  
  179.         SHORT  TitleStart  2
  180.  
  181.         SHORT  TopLeftPosition  2
  182.  
  183.         SHORT  NumberCols
  184.  
  185.         TINY   Unused2  2
  186.  
  187.         RETURN
  188.  
  189.     END  RECORD_123.RecordLength
  190.  
  191. END
  192.  
  193.  
  194. # Column width (for window 1)
  195. WHILE  RECORD_123.RecordType  <=>  8
  196. RECORD  ColWidth1
  197.  
  198.     XSHORT  Id
  199.  
  200.     XTINY   Width
  201.  
  202.     RETURN
  203.  
  204. END
  205.  
  206.  
  207. # Column width (for window 2)
  208. WHILE  RECORD_123.RecordType  <=>  10
  209. RECORD  ColWidth2
  210.  
  211.     XSHORT  Id
  212.  
  213.     XTINY   Width
  214.  
  215.     RETURN
  216.  
  217. END
  218.  
  219.  
  220. # Named range (start col, start row, end col, end row)
  221. WHILE  RECORD_123.RecordType  <=>  11
  222. RECORD  NamedRange
  223.  
  224.     ASCII  Name  16
  225.     (OMIT0)  RECORD_123.NamedRange.Name
  226.  
  227.     SHORT  Range  4
  228.  
  229.     RETURN
  230.  
  231. END
  232.  
  233.  
  234. # Blank Cell
  235. WHILE  RECORD_123.RecordType  <=>  12
  236. RECORD  BlankCell
  237.  
  238.     # Cell Format (see above)
  239.     XTINY  Format
  240.  
  241.     SHORT  Column
  242.  
  243.     SHORT  Row
  244.  
  245.     RETURN
  246.  
  247. END
  248.  
  249.  
  250. # Integer number cell
  251. WHILE  RECORD_123.RecordType  <=>  13
  252. RECORD  Integer
  253.  
  254.     # Cell Format (see above)
  255.     XTINY  Format
  256.  
  257.     SHORT  Column
  258.  
  259.     SHORT  Row
  260.  
  261.     SHORT  Value
  262.  
  263.     RETURN
  264.  
  265. END
  266.  
  267.  
  268. # Floating point number
  269. WHILE  RECORD_123.RecordType  <=>  14
  270. RECORD  Number
  271.  
  272.     # Cell Format (see above)
  273.     XTINY   Format
  274.  
  275.     SHORT   Column
  276.  
  277.     SHORT   Row
  278.  
  279.     DFLOAT  Value
  280.  
  281.     RETURN
  282.  
  283. END
  284.  
  285.  
  286. # Label cell
  287. WHILE  RECORD_123.RecordType  <=>  15
  288. RECORD  Label
  289.  
  290.     # Cell Format (see above)
  291.     XTINY  Format
  292.  
  293.     SHORT  Column
  294.  
  295.     SHORT  Row
  296.  
  297.     # Label format prefix:
  298.     #   | = printer command, \ = repeating, ' = left alignment,
  299.     #   " = right alignment, ^ = centered.                    
  300.     ASCII  LabelPrefix
  301.  
  302.     ASCII  Label  -1
  303.  
  304.     RETURN
  305.  
  306. END  RECORD_123.RecordLength
  307.  
  308.  
  309. # Formula cell
  310. WHILE  RECORD_123.RecordType  <=>  16
  311. RECORD  Formula
  312.  
  313.     # Cell Format (see above)
  314.     XTINY   Format
  315.  
  316.     SHORT   Column
  317.  
  318.     SHORT   Row
  319.  
  320.     DFLOAT  Value
  321.  
  322.     SHORT   Size
  323.  
  324.     # Formulas are stored in postfix (reverse polish) notation
  325.     RECORD  Postfix  -1
  326.  
  327.       #### The most frequently used operations are indicated ####
  328.  
  329.       XTINY  OpCode
  330.  
  331.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  0
  332.         DFLOAT  Constant
  333.  
  334.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  1
  335.       RECORD  Variable
  336.  
  337.         # A '1' in bit 15 indicates relative cell reference
  338.         # A '0' in bit 15 indicates absolute cell reference
  339.         XSHORT  Coordinate  2
  340.  
  341.       END
  342.  
  343.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  2
  344.  
  345.         # (start col, start row, end col, end row)
  346.         XSHORT  Range  4
  347.  
  348.  
  349.       #### Use RECORDs to indicate the type of operation ####
  350.  
  351.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  3
  352.       RECORD  __Return__
  353.  
  354.         RETURN
  355.  
  356.       END
  357.  
  358.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  4
  359.       RECORD  __Parenthesis__
  360.  
  361.         BREAK
  362.  
  363.       END
  364.  
  365.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  5
  366.         SHORT  Integer
  367.  
  368.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  6
  369.       RECORD  StringConstant
  370.  
  371.         UNDEFINE  RECORD_123.Formula.Postfix.StringConstant.Data
  372.  
  373.         WHILE  RECORD_123.Formula.Postfix.StringConstant.Data  <>  0
  374.           ASCII  Data  -1
  375.  
  376.       END
  377.  
  378.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  8
  379.       RECORD __Negate__
  380.  
  381.         BREAK
  382.  
  383.       END
  384.  
  385.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  9
  386.       RECORD __Add__
  387.  
  388.         BREAK
  389.  
  390.       END
  391.  
  392.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  10
  393.       RECORD __Subtract__
  394.  
  395.         BREAK
  396.  
  397.       END
  398.  
  399.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  11
  400.       RECORD __Multiply__
  401.  
  402.         BREAK
  403.  
  404.       END
  405.  
  406.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  12
  407.       RECORD __Divide__
  408.  
  409.         BREAK
  410.  
  411.       END
  412.  
  413.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  13
  414.       RECORD __Exponent__
  415.  
  416.         BREAK
  417.  
  418.       END
  419.  
  420.  
  421.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  14
  422.       RECORD __Equal__
  423.  
  424.         BREAK
  425.  
  426.       END
  427.  
  428.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  15
  429.       RECORD __NotEqual__
  430.  
  431.         BREAK
  432.  
  433.       END
  434.  
  435.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  16
  436.       RECORD __LessOrEqual__
  437.  
  438.         BREAK
  439.  
  440.       END
  441.  
  442.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  17
  443.       RECORD __GreatOrEqual__
  444.  
  445.         BREAK
  446.  
  447.       END
  448.  
  449.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  18
  450.       RECORD __LessThan__
  451.  
  452.         BREAK
  453.  
  454.       END
  455.  
  456.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  19
  457.       RECORD __GreaterThan__
  458.  
  459.         BREAK
  460.  
  461.       END
  462.  
  463.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  20
  464.       RECORD __And__
  465.  
  466.         BREAK
  467.  
  468.       END
  469.  
  470.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  21
  471.       RECORD __Or__
  472.  
  473.         BREAK
  474.  
  475.       END
  476.  
  477.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  22
  478.       RECORD __Not__
  479.  
  480.         BREAK
  481.  
  482.       END
  483.  
  484.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  47
  485.       RECORD __Mod__
  486.  
  487.         BREAK
  488.  
  489.       END
  490.  
  491.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  55
  492.       RECORD __Today__
  493.  
  494.         BREAK
  495.  
  496.       END
  497.  
  498.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  59
  499.       RECORD __If__
  500.  
  501.         BREAK
  502.  
  503.       END
  504.  
  505.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  80
  506.       RECORD __Sum__
  507.  
  508.         BREAK
  509.  
  510.       END
  511.  
  512.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  81
  513.       RECORD __Avg__
  514.  
  515.         BREAK
  516.  
  517.       END
  518.  
  519.       WHILE  RECORD_123.Formula.Postfix.OpCode  <=  47
  520.         NEXT
  521.  
  522.  
  523.       #### Filter variable argument opcodes ####
  524.       BEGIN
  525.  
  526.         BEGIN
  527.  
  528.           # CHOOSE
  529.           WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  48
  530.             BREAK
  531.  
  532.           # Statistical functions
  533.           WHILE  RECORD_123.Formula.Postfix.OpCode  >=  80
  534.           BEGIN
  535.  
  536.             WHILE  RECORD_123.Formula.Postfix.OpCode  <=  84
  537.               RESCIND
  538.  
  539.           END
  540.  
  541.           # VAR
  542.           WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  87
  543.             BREAK
  544.  
  545.           # STD
  546.           WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  88
  547.             BREAK
  548.  
  549.           # INDEX
  550.           WHILE  RECORD_123.Formula.Postfix.OpCode  <=>  98
  551.             BREAK
  552.  
  553.           # All non-variable argument functions
  554.           RESCIND
  555.  
  556.         END
  557.  
  558.         XTINY  ArgCount
  559.  
  560.       END
  561.  
  562.     END
  563.  
  564.     RETURN
  565.  
  566. END  RECORD_123.RecordLength
  567.  
  568.  
  569. # Table range (start col, start row, end col, end row)
  570. WHILE  RECORD_123.RecordType  <=>  24
  571. RECORD  TableRange
  572.  
  573.     # 0 = no table, 1 = table 1, 2 = table 2
  574.     XTINY  TableID
  575.  
  576.     SHORT  Range  4
  577.  
  578.     SHORT  InputCell1  4
  579.  
  580.     SHORT  InputCell2  4
  581.  
  582.     RETURN
  583.  
  584. END
  585.  
  586.  
  587. # Query range (start col, start row, end col, end row)
  588. WHILE  RECORD_123.RecordType  <=>  25
  589. RECORD  QueryRange
  590.  
  591.     SHORT  InputRange  4
  592.  
  593.     SHORT  OutputRange  4
  594.  
  595.     SHORT  CriteriaRange  4
  596.  
  597.     #  0 = no command, 1 = find, 2 = extract, 3 = delete, 4 = unique
  598.     XTINY  Command
  599.  
  600.     RETURN
  601.  
  602. END
  603.  
  604.  
  605. # Print Range (start col, start row, end col, end row)
  606. WHILE  RECORD_123.RecordType  <=>  26
  607. BEGIN
  608.  
  609.     SHORT  PrintRange  4
  610.  
  611.     RETURN
  612.  
  613. END
  614.  
  615.  
  616. # Sort Range (start col, start row, end col, end row)
  617. WHILE  RECORD_123.RecordType  <=>  27
  618. BEGIN
  619.  
  620.     SHORT  SortRange  4
  621.  
  622.     RETURN
  623.  
  624. END
  625.  
  626.  
  627. # Fill Range (start col, start row, end col, end row)
  628. WHILE  RECORD_123.RecordType  <=>  28
  629. BEGIN
  630.  
  631.     SHORT  FillRange  4
  632.  
  633.     RETURN
  634.  
  635. END
  636.  
  637.  
  638. # Primary and secondary sort key range (start col, start row, end col, end row)
  639. BEGIN
  640.  
  641.     WHILE  RECORD_123.RecordType  <>  29
  642.     BEGIN
  643.  
  644.       WHILE  RECORD_123.RecordType  <>  35
  645.           RESCIND
  646.  
  647.     END
  648.  
  649.     SHORT  KeyRange  4
  650.  
  651.     # 0 = descending, FF = ascending order
  652.     XTINY  SortOrder
  653.  
  654.     RETURN
  655.  
  656. END
  657.  
  658.  
  659. # Distribution Range (start col, start row, end col, end row)
  660. WHILE  RECORD_123.RecordType  <=>  32
  661.   RECORD  DistributeRange
  662.  
  663.     SHORT  ValuesRange  4
  664.  
  665.     SHORT  BinRange  4
  666.  
  667.     RETURN
  668.  
  669.   END
  670.  
  671.  
  672. # Global protection
  673. WHILE  RECORD_123.RecordType  <=>  36
  674. BEGIN
  675.  
  676.     # 0 = off, 1 or FF = on
  677.     XTINY  ProtectFlag
  678.  
  679.     RETURN
  680.  
  681. END
  682.  
  683.  
  684. # Print footer
  685. WHILE  RECORD_123.RecordType  <=>  37
  686. RECORD  PrintFooter
  687.  
  688.     ASCII  Data  242
  689.  
  690.     RETURN
  691.  
  692. END
  693. (OMIT0)  RECORD_123.PrintFooter
  694.  
  695.  
  696. # Print header
  697. WHILE  RECORD_123.RecordType  <=>  38
  698. RECORD  PrintHeader
  699.  
  700.     ASCII  Data  242
  701.  
  702.     RETURN
  703.  
  704. END
  705. (OMIT0)  RECORD_123.PrintHeader
  706.  
  707.  
  708. # Printer setup string
  709. WHILE  RECORD_123.RecordType  <=>  39
  710. RECORD  PrintSetUp
  711.  
  712.     ASCII  Data  40
  713.  
  714.     RETURN
  715.  
  716. END
  717. (OMIT0)  RECORD_123.PrintSetUp
  718.  
  719. # Margins (left, right, page length, top, bottom)
  720. WHILE  RECORD_123.RecordType  <=>  40
  721. BEGIN
  722.  
  723.     SHORT  Margins  5
  724.  
  725.     RETURN
  726.  
  727. END
  728.  
  729.  
  730. # Global label alignment
  731. WHILE  RECORD_123.RecordType  <=>  41
  732. BEGIN
  733.  
  734.     # 27h = left, 22h = right, 5Eh = center
  735.     XTINY  LabelAlignment
  736.  
  737.     RETURN
  738.  
  739. END
  740.  
  741.  
  742. # PrintBorders (start col, start row, end col, end row)
  743. WHILE  RECORD_123.RecordType  <=>  42
  744. RECORD  PrintBorders
  745.  
  746.     SHORT  RowRange  4
  747.  
  748.     SHORT  ColRange  4
  749.  
  750.     RETURN
  751.  
  752. END
  753.  
  754.  
  755. # Graph settings (named or current)
  756. WHILE  RECORD_123.RecordType  >=  45
  757. BEGIN
  758.  
  759.   WHILE  RECORD_123.RecordType  <=  46
  760.     RECORD  GraphSettings
  761.  
  762.       # Label of Named Graph Setting
  763.       WHILE  RECORD_123.RecordType  <=>  46
  764.         ASCII  Name  16
  765.       (OMIT0)  RECORD_123.GraphSettings.Name
  766.  
  767.       #### Ranges are of the form: (start col, start row, end col, end row) ####
  768.  
  769.       RECORD  Ranges  7
  770.  
  771.         SHORT  Range  4
  772.  
  773.       END
  774.  
  775.       RECORD  Labels  6
  776.  
  777.         SHORT  LabelRange  4
  778.  
  779.       END
  780.  
  781.       # 0 = XY, 1 = bar, 2 = pie, 4 = line, 5 = stacked bar
  782.       XTINY  GraphType
  783.  
  784.       # 0 = none, 1 = horizontal, 2 = vertical, 3 = both
  785.       XTINY  Grid
  786.  
  787.       XTINY  ColorFlag
  788.  
  789.       # 0 = none, 1 = line, 2 = symbol, 3 = line-symbol
  790.       XTINY  LineFormats  6
  791.  
  792.       # 0 = center, 1 = right, 2 = below, 3 = left, 4 = above
  793.       XTINY  Alignments  6
  794.  
  795.       RECORD  XYAxis  2
  796.  
  797.         # 0 = auto, FF = manual
  798.         XTINY  ScaleFlag
  799.  
  800.         DFLOAT  Limits  2
  801.  
  802.       END
  803.  
  804.       RECORD  Titles  4
  805.  
  806.         ASCII  Title  40
  807.  
  808.       END
  809.       (OMIT0)  RECORD_123.GraphSettings.Titles
  810.  
  811.       RECORD  Legends  6
  812.  
  813.         ASCII  Legend  20
  814.  
  815.       END
  816.       (OMIT0)  RECORD_123.GraphSettings.Legends
  817.  
  818.       # Cell Format (see above)
  819.       XTINY  XFormat
  820.  
  821.       # Cell Format (see above)
  822.       XTINY  YFormat
  823.  
  824.       SHORT  SkipFactor
  825.  
  826.       XTINY  Extra -1
  827.  
  828.       RETURN
  829.  
  830.     END  RECORD_123.RecordLength
  831.  
  832. END
  833.  
  834.  
  835. # Iteration count
  836. WHILE  RECORD_123.RecordType  <=>  47
  837. BEGIN
  838.  
  839.     TINY  CalcCount
  840.  
  841.     RETURN
  842.  
  843. END
  844.  
  845.  
  846. # Print format mode
  847. WHILE  RECORD_123.RecordType  <=>  48
  848. BEGIN
  849.  
  850.     # 0 = formatted, 1 or FF = unformatted
  851.     XTINY  PrintFormat
  852.  
  853.     RETURN
  854.  
  855. END
  856.  
  857.  
  858. # Cursor location
  859. WHILE  RECORD_123.RecordType  <=>  49
  860. BEGIN
  861.  
  862.     # 1 = window 1, 2 = window 2
  863.     XTINY  CursorWindow
  864.  
  865.     RETURN
  866.  
  867. END
  868.  
  869.  
  870. # String formula
  871. WHILE  RECORD_123.RecordType  <=>  51
  872. RECORD  StringFormula
  873.  
  874.     # Cell Format (see above)
  875.     XTINY  Format
  876.  
  877.     SHORT  Column
  878.  
  879.     SHORT  Row
  880.  
  881.     ASCII  Label  -1
  882.  
  883.     RETURN
  884.  
  885. END  RECORD_123.RecordLength
  886.  
  887.  
  888. # Symphony named range (start col, start row, end col, end row)
  889. WHILE  RECORD_123.RecordType  <=>  71
  890. RECORD  SymphonyRange
  891.  
  892.     ASCII  Name  16
  893.     (OMIT0)  RECORD_123.SymphonyRange.Name
  894.  
  895.     SHORT  Range  4
  896.  
  897.     # 0 = single cell, 1 or FFh = range
  898.     XTINY  RangeType
  899.  
  900.     RETURN
  901.  
  902. END
  903.  
  904.  
  905. # Worksheet password
  906. WHILE  RECORD_123.RecordType  <=>  75
  907. RECORD  Password
  908.  
  909.     XTINY  Encrypt  -1 
  910.  
  911.     RETURN
  912.  
  913. END  RECORD_123.RecordLength
  914.  
  915.  
  916. # Hidden columns 1 and 2
  917. WHILE  RECORD_123.RecordType  >=  100
  918. BEGIN
  919.  
  920.     WHILE  RECORD_123.RecordType  <=  101
  921.     RECORD  HiddenColumns
  922.  
  923.       # Each bit indicates if a column is hidden (1) or not (0)
  924.       XTINY  HiddenFlags  32
  925.  
  926.       RETURN
  927.  
  928.     END
  929.  
  930. END
  931.  
  932.  
  933. # Parse ranges (start col, start row, end col, end row)
  934. WHILE  RECORD_123.RecordType  <=>  102
  935. RECORD  ParseRanges
  936.  
  937.     SHORT  InputRange  4
  938.  
  939.     SHORT  OutputRange  4
  940.  
  941.     RETURN
  942.  
  943. END
  944.  
  945.  
  946. # Linear regression ranges (start col, start row, end col, end row)
  947. WHILE  RECORD_123.RecordType  <=>  103
  948. RECORD  LinearRegression
  949.  
  950.     SHORT  DependVarRange  4
  951.  
  952.     SHORT  IndependVarRange  4
  953.  
  954.     SHORT  OutputRange  4
  955.  
  956.     # 0 = no forced zero-intercept, FFh = forced intercept at origin
  957.     XTINY  ZeroInterceptFlg
  958.  
  959.     RETURN
  960.  
  961. END
  962.  
  963.  
  964. # Matrix mathematics ranges (start col, start row, end col, end row)
  965. WHILE  RECORD_123.RecordType  <=>  105
  966. RECORD  MatrixRanges
  967.  
  968.     SHORT  InversionSource  4
  969.  
  970.     SHORT  InversionDest  4
  971.  
  972.     SHORT  Multiplicand  4
  973.  
  974.     SHORT  MultiplierRange  4
  975.  
  976.     SHORT  ProductRange  4
  977.  
  978.     RETURN
  979.  
  980. END
  981.  
  982.  
  983. # Cell pointer index
  984. WHILE  RECORD_123.RecordType  <=>  150
  985. RECORD  CellPointerIndex
  986.  
  987.     REPEAT
  988.  
  989.         SHORT  Column
  990.  
  991.         SHORT  FirstRow
  992.  
  993.         SHORT  LastRow
  994.  
  995.     END
  996.  
  997.     RETURN
  998.  
  999. END  RECORD_123.RecordLength
  1000.  
  1001.   
  1002. # Unknown (maybe Symphony?) record
  1003. TINY  unknown  RECORD_123.RecordLength
  1004.  
  1005. END
  1006.