      33
       ORDER     744
   Shareware    1619
     General    2460
        Keys    4311
     Formats    5441
    Printing    6432
  PrintCodes    7561
      Column    9060
      Graphs    9745
   GraphType   10308
    GraphOpt   12161
      Macros   13151
   MacroKeys   14114
  MacroWords   14951
       Range   18374
       @Math   20411
    @Finance   22337
    StatsGen   24504
      @Stats   25436
  @LogicFunc   27646
     @String   28733
@Date/Time     31140
     Sorting   32238
   DataQuest   33025
      F-Keys   34387
Parsing        39241
   3D-Panels   40058
MacroExample   41582
    Querying   44061
     Answers   46433
     Linking   49550
         End   50543
   Future...   50590
!ORDER
    <<<<<<<       O R D E R      F O R M       >>>>>>>
 Register and get the LATEST version of  AS-EASY-AS, a
 PRINTED manual, technical support, etc.

 Disk Size                Name: __________________________
 5.25"____    3.5"____
 ┌────────────────────┐   Address: _______________________
 │TRIUS, Inc.         │
 │231 Sutton Street,  │   City:___________________________
 │Suite 2D-3          │
 │N. Andover, MA 01845│   State:_____  Zip:_______________
 └────────────────────┘

 Copies ____  @ $50.00 + $5.00 S&H each     Total ________

 Check ____     VISA ____      MC _____      Other _______

 # ________________________________  Exp.Date ____/_______

 Signature ________________________  Date ____/____/______
 * CALL 508-794-9377 for Latest Version/Price and Orders *
 *   Call us for a foreign distributor in your country   *
!Shareware
                     S H A R E W A R E 
══════════════════════════════════════════════════════════
The shareware concept has made it possible for you to 
obtain extremely powerful software at a price you can 
afford, and it gives you the opportunity to try the 
software before you register. 
  
Shareware is kept alive by YOUR support.  

Evaluate the program for 30-days and give copies to your 
friends for evaluation.  If, after the 30 days, you think 
that you will use the program, then register it by sending 
us the registration form included in this help file or by 
calling 508-794-9733. You will receive the Latest version, 
Printed manual, Technical support, ...... 

Help support new developments in AS-EASY-AS, register 
your copy today!

Thank you for your support,
The people at TRIUS, Inc.
 
!General
                *** A S - E A S Y - A S ***
══════════════════════════════════════════════════════════ 
■ Commands are accessed by pressing the slash [/] key.   
■ To exit from any menu press the [ESC] key.
■ Options can be invoked when starting the program.

   The form is  ASEASY /Switch1/Switch2/... [ENTER]
    /H     - Enables graphics for Hercules
    /H2    - Enables graphics for Hercules, Video Pg. 2
    /E     - Enables graphics for EGA
    /Q     - Quick screen updating for CGA
    /P     - Set the default to Panel-type menus
    /CT    - Centers the column identifiers
    /MY=x  - Sets the Currency sign to x (instead of $)
    /BK=x  - Set screen blankout period to x seconds
    /TP=x  - Set column header character to x
    /DV=x  - Set column division character to x
    /MONO  - Changes colors to white on black (CGA card)
    /SP    - Suppress the column and row borders
    /DIR=Path  -  Set the Path to the WKS files

■ To Start AS-EASY-AS from any DOS disk/directory:

   1. The drive and directory where ASEASY.EXE is located 
      should be in the DOS Path (see your DOS manual).

   2. The environment variable ASEASY should be set to 
      point to the AS-EASY-AS disk/directory.
      (At the dos prompt, type 'SET ASEASY=D:\Directory'
      where D:\Directory is where ASEASY.PRT, ASEASY.HLP
      and ASEASY.MSG are located).  This command could 
      also be included in your AUTOEXEC.BAT file.

  Once the above two steps are completed, you can start 
  AS-EASY-AS from any disk/directory by simply typing 
  ASEASY and pressing [ENTER].

■ Graphs can be printed to a file, a Dot Matrix or a laser 
  printer by accessing the Graph sub-menu. 

■ Menu driven and other automatic operations can be 
  developed in AS-EASY-AS, using its powerful macro 
  commands. 
!Keys
                M O V I N G       A R O U N D
══════════════════════════════════════════════════════════
    Up: Move up one row          Home: Move to cell A1  
  Down: Move down one row        Pgdn: Move down 20 rows     
  Left: Move left one column     Pgup: Move up 20 rows     
 Right: Move right one column     TAB: Move right one page   
                            Shift TAB: Move left one page   
    F5: Goto specified cell 
        or named range

  Pressing the End key, followed by one of arrow keys, 
  moves the cursor to the end of the current block.    

    ┌........A/.......B/.......C/.......D/........E/
  1 │       12        7     1212
  2 │        9      123      343
  3 │       10               876
  4 │                12       74
  5 │       21       55       34
  6 │     1124       91       29
  7 │       33                11
  8 │
     
   If Cursor at A1:  [END] [DOWN]    ---> Cursor at A3
                     [END] [RIGHT]   ---> Cursor at C1

   If Cursor at B3:  [END] [DOWN]    ---> Cursor at B6
                     [END] [RIGHT]   ---> Cursor at D3

!Formats
                   F O R M A T T I N G
══════════════════════════════════════════════════════════
The  appearance  of  a block of cells can be set with the 
/Range, Format command: 
            
                EXAMPLE
                DISPLAY
   TYPE         FORMAT      STATUS   
   ----         ------      ------   
   Fixed         123.12      [F2]  - Fixed, 2 decimals   
   Science     1.245E+8      [S3]  - Science, 2 decimals   
   ,            1,500.0      [,1]  - Comma, 1 decimal   
   Currency     $523.52      [C2]  - Currency, 2 decimals
   Percent          34.      [%0]  - Percent, no decimals
   General                            
   Text          +A1+B2      [T]   - Text   
   +/-            +++++      [+/-]   
   Date       20 May,87      [D1]  - Date, Type 1  
   Hide                      [H]     
   Reset      Return to                   
              General               

(NOTE: The cell value does not change when formatted)
!Printing
                      P R I N T I N G
══════════════════════════════════════════════════════════
    RANGE: Specify the area to be printed.  
 LINEFEED: Advance paper in printer a single line upwards.
  PAGEADV: Advance paper to the top of next page.
   ADJUST: Reset line and page counter to 0.   
   OPTION: Access the Print, Options menu.
  MARGINS: Set the print Margins.   Top and bottom margins 
           are in # of lines and in addition to the header 
           and footer lines.  Left and right margins are 
           in characters and the maximum is 240.
PG-LENGTH: Set the length of a page. Up to 1024 lines.
   HEADER: String on top line of every page.  Three 
           available fields, separated by |. 
           #=Embed Page   @=Embed Date
   FOOTER: String on bottom line of every page.
           Same fields as for header.
    SETUP: Send control codes to the printer (see topic).
     TYPE: AS-SEEN=Values, etc.   CONTENTS=Equations, etc.
       GO: Finally when ready to print, select go.
Note: You can STOP the printer at any time by pressing 
      the [ESC] key. 
!PrintCodes
                P R I N T     C O D E S
══════════════════════════════════════════════════════════
Generally, for EPSON type printers, the printer setup code  
is made up of the ASCII decimal code for the ESC character 
followed by ASCII codes for other, specific characters.  
(These codes can be found in your printer's manual). 

All printer control codes must be placed in a SETUP 
string.  AS-EASY-AS will accept codes as THREE DIGIT 
decimal ASCII character codes, preceded by the back-slash 
character [\], or as ASCII characters.  For example you 
may type either one of the following two equivalent codes 
in response to the prompt for the setup string: 
 
           \027\069   [ENTER]        
           \027E      [ENTER]  (069 is the code for E)
 

If  you  want to change the string you can edit it by 
re-selecting the SETUP option.  Commonly used codes 
for EPSON  type  printers are: 
  
┌─────────────────────────┬─────────────────────────────┐
│\027\070  Emphasized OFF │ \027\071  Double Strike on  │
│\015      Condensed  ON  │ \027\072  Double Strike off │
│\018      Condensed  OFF │ \027\048  1/8"  line spacing│
│\014      Enlarged   ON  │ \027\049  7/72" line spacing│
│\020      Enlarged   OFF │ \027\050  1/6"  line spacing│
└─────────────────────────┴─────────────────────────────┘
 
Pressing \ and then F1, will open a secondary window 
containing the setup codes available in the printer setup 
file (see user's manual). 


!Column
             C O L U M N    O P E R A T I O N S
══════════════════════════════════════════════════════════
■  To Set Current Column Width - /WCSxx[ENTER] 
   (Arrow keys can be used to shrink/expand columns)

■  To Set Global Column Width  - /WGCxx[ENTER]  
   (Only affects column widths not set individually)

■  xx can be replaced by a formula which can be evaluated 
   using the F9 (Calc) key before [ENTER] is pressed
  
■  Delete Columns - /WDCrange[ENTER]
     
■  Insert Columns - /WICrange[ENTER]

        range = any valid range; can be typed in
                or highlighted using the arrow
                keys in the pointing method.


   
!Graphs
             G R A P H S   I N   G E N E R A L
══════════════════════════════════════════════════════════
STEPS you need to follow in defining a graph: 

   a).  Define the X-Range 
   b).  Define one or more Y-ranges (A through G) 
   c).  Specify the format of the X and Y axes 
   d).  Specify the Graph, X-axis and Y-axis titles 
   e).  Finally, View or Print the graph. 
  
Up to 6 different curves can be included on a single 
graph.    

See the following topics for more information:

                 GraphType, GraphOpt


!GraphType
   
                  G R A P H      T Y P E S 
══════════════════════════════════════════════════════════
LINE: 
   All x values are treated as labels and plotted in the 
   order they occur in the X-range. 
X-Y: 
   All X values treated as numbers.  Y-values are plotted 
   as functionals, assuming continuous functional 
   relationship. 
BAR: 
   All X values treated as labels and they are plotted at 
   equal intervals on the axis.                           
PIE: 
   All Y values plotted as percent of sum of Y values.  X 
   contents are treated as labels and plotted next to 
   percent Y values. To generate an exploding pie chart 
   (with one or more slices of the pie separated from the 
   rest), in the column to the right of the Y-range enter 
   the number of pixels that you want that slice removed 
   from the rest of the pie. Remember that a pie chart can 
   only have one Y-range.  If more than one Y-ranges are 
   defined, then the A-range is used in generating the pie 
   chart. 
STACK: 
   Stacked Bar Graph. Each specified Y range is plotted as 
   an incremental bar, on top of the previous one. 
CUM: 
   This type of graph is very useful in depicting 
   continuous increasing functions and their cumulative 
   values at each function evaluation point.  
RADAR: 
   A polar type of graph.  The X-Axis are plotted as 
   coeccentric circles.  Data range points are then 
   connected with radial lines in a manner similar to that 
   in a polar graph. 
AREA: 
   Select an 'Area' type graph.  This type of graph uses 
   lines to plot one defined graph range on top of the 
   other, with the area between each of the graph lines 
   filled with a different pattern. 
DELTA: 
   This type of graph is used to plot the user defined 
   ranges as step functions. 

!GraphOpt
          O T H E R    G R A P H     O P T I O N S
══════════════════════════════════════════════════════════
SPLIT
  Show two graphs on the same screen.  One occupies the 
  top half of the screen and the other the bottom half 
  (Similar to the Graph, Name, Merge Option).  The first 
  graph ins the graph currently defined and the second is 
  a named graph. 
MERGE
  Show two graphs on the same screen.  This is useful for 
  two different ranges with the same X-values but 
  different Y-values.  The left vertical axis displays the 
  scale for the current graph, while the right vertical 
  axis displays the scale for the named graph being 
  merged. The steps for merging two graphs are shown 
  below: 

    1) Assume you have a graph named "GraphOne".
    2) Define a new current graph.
    3) Invoke the Name, Merge, Select option.
    4) Select "GraphOne" from the list that appears.
    5) Press View to display both graphs at the same time.

!Macros
                      M  A  C  R  O  S
══════════════════════════════════════════════════════════
A macro is a sequence of keystrokes or commands which can 
be  performed automatically, just like a program.  Macros 
can be defined by assigning a range name a single letter 
[A..Z] preceded by a  [\]  backslash. 

The macro will continue to execute downward from the 
first row until a blank  row  is  reached or the [ESC] key 
is pressed. 

AutoExecute macros start executing immediately after  a  
spreadsheet  is loaded.  To define an autoexecute macro, 
apply  a range name of \0 to the first macro cell to be 
executed. 

All macro keys and substitute function keys must be 
enclosed in braces {}. Try the following simple macro 
which moves the cursor right 2 cells. 

Type the following in cell A1:   {RT}{RT}        [ENTER]

Give cell A1 a range name of \A.  Now press [alt] and the 
letter A.  See, your first macro! 
!MacroKeys
                  M A C R O      K E Y S
══════════════════════════════════════════════════════════
When encountered in a macro statement, they make ASEASY
behave as if the corresponding key was pressed.

   {LT}     - cursor left       {PGLT} -  one page left
   {RT}     - cursor right      {PGRT} -  one page right
   {UP}     - cursor up         {PGUP} -  one page up
   {DN}     - cursor down       {PGDN} -  one page down

   {HOME}   - cursor to A1      {NAME}
   {EDIT}   - F2                {GOTO} -  F5
   {CALC}   - F9                    ~  -  Sub for [ENTER]
   {ESC}    - Escape            {BAS}  -  F4   
   {WINDOW} - {GRAPH}           {END}  -  End Key

   {?}  - Pause for input       

                                          
  See MacroKeys topic for more info on macro language.

!MacroWords
                M A C R O    L A N G U A G E
══════════════════════════════════════════════════════════
These commands are only available from within executing
macros.

 {Beep}           - A single beep sound.
 {Blank  RANGE}   - Erase the specified range
 {Bordcolor x}    - Sets the Border color to x
 {BorderOff}      - Turn OFF the row and column borders
 {BorderOn}       - Turn ON the row and column borders
 {Botcolor x}     - Sets color of bottom line to x
 {Bs}             - Backspace, delete one character left
 {Call}           - CALL routine at following cell and
                    execute until {Ret}
 {ClrScr}         - Clear the entire screen
 {Curscolor x}    - Sets color of cursor to x
 {Default "Ann"}  - Sets Panel menu position to line nn
 {Default "Enn"}  - Sets Cell Echo area to line nn
 {Default "Fnn"}  - Sets Bottom row position to line nn
 {Default "Hnn"}  - Sets Column Heading lineto nn
 {Default "Tnn"}  - Sets Top line position to line nn
 {Delay x}        - Delay an action, waiting for pressing
                    any key.
 {Get Cell}       - Accepts the next key pressed and places 
                    it in Cell.
 {GotoXy A1,A2}   - Position character cursor at col,row
 {If Test}        - IF  true then execute at following 
                    command else execute next row
 {InLabel "Msg",A1}  - Input a LABEL and place in cell
 {InValue "Msg",A2}  - Input a NUMBER and place in cell
 {Indxy m,n}      - Place status indicator in col m, row n
 {Inkey cell}     - Place the next key pressed in cell
 {Jump}           - JUMP to cell following instruction and 
                    start executing.
 {Let cell,Arg}   - Replaces the contents of cell with Arg
                    (value equation, etc.)
 {MenuCall NAME}  - Similar to above but a subroutine call
 {MenuJump NAME}  - Define your own menu and branch to it
 {MenuOff}        - Turn off menu updating
 {MenuOn}         - Turn on menu updating
 {MenuWidth A1}   - Set the width of menu, Max=30 cols.
 {MenuXy A1,A2}   - Set the col,row position of the menu.
 {Menucolor x}    - Sets the color of the menu to x
 {Option "BLx"}   - Sets left border character to x
 {Option "BRx"}   - Sets right border character to x
 {Option "C"}     - Center character on column header
 {Option "Dx"}    - Changes column dots to character x
 {Option "L"}     - Selects panel menu
 {Option "Vx"}    - Sets column divider character to x
 {Quit}           - QUIT, stop executing the macro
 {Recalc RANGE}   - Calculate only the specified range
 {Ret}            - RETURN from a called subroutine
 {ScrnOff}        - Turn off the screen display update
 {ScrnOn}         - Turn on the screen display update
 {TextColor x}    - Changes the text color to X
                    (see manual for colors)
 {Tone A1,A2}     - Play a tone of duration, frequency
 {Topcolor x}     - Sets color of tip line to x
 {Update}         - Refresh screen with new cell values
 {Window}         - Toggles cursor between two windows
 {Write "Msg"}    - Place msg at character cursor position
 {WriteLn "Msg"}  - Same as above, with CR/LF
 {InRange "Msg",Cell}
                  - Prompt for range using "Msg". The 
                    range is specified using the pointing 
                    method, and terminated by [ENTER].  
                    The resulting range is placed in Cell. 
!Range
                      R A N G E
══════════════════════════════════════════════════════════ 
Ranges may be specified in two ways. The first way starts 
by specifying the first call of the range.  At this point 
use the cursor keys to move the pointer out of the cell,  
and move it to one corner of the desired range you wish to 
highlight. 

Press the '.' key.  This  anchors  the  pointer  so  that  
additional pointer movements highlights more than just a 
single cell. 

Expand the pointer until the desired range is completely 
highlighted. If  the  range  is bigger than that area 
displayed on the screen then press the '.' anchor key to 
examine each of the corners of the range. A little 
flashing cursor will indicate  the  current  corner.  It  
is also this side of the pointer which may be moved by the 
cursor keys. 

When the range is completely highlighted press any other 
key to return to your original cell and continue with your 
work. Or if your finished  with  the formula press the 
[enter] key.  Your formula will be entered into the 
spreadsheet at the current cell position. 

The second way to specify a range is simply to type the 
range name by specifying the corners of the range as 
individual cells separated  by two periods. i.e.  A1..B2 


The Range commands allow you to operate on a block of 
cells.  For example, consider all the cells bounded by 
cell  A1  and cell  D2, and assume that the cursor is 
currently at A1.  To format all the cells within the  
above block, to FIXED FORMAT with two decimals, enter the 
following keystrokes: 

 /r ff 2 [ENTER] [LEFT] [LEFT] [DOWN] [DOWN] [ENTER]
 ││ ││ │    │      │      │      │       │     └─── Finish
 ││ ││ │    │      │      │      │       └─ Operation
 ││ ││ │    │      │      │      └──  Move to D2
 ││ ││ │    │      │      └──  Move to D1
 ││ ││ │    │      └── Move to C1
 ││ ││ │    └─  Move to B1
 ││ ││ └── 2 Decimals
 ││ │└─ Fixed
 ││ └─ Format
 │└─ Range
 └─ Invoke Menu



!@Math
    M A T H E M A T I C A L       F U N C T I O N S
══════════════════════════════════════════════════════════ 
The  following functions act upon the argument 'x' within 
the parenthesis.  The argument may be a value or a formula 
which references other cells within the spreadsheet. 


Function     Description/Example
─────────────────────────────────────────────────────────
@ABS(x)      Returns the absolute value of argument.
             Example.  @ABS(-10) = 10

@ACOS(x)     Arc cosine, returns radians     
             @ACOS(0.5) = 1.0471

@ASIN(x)     Arc Sine, returns radians       
             @ASIN(0.866) = 1.0471

@ATAN(x)     Arc Tangent, returns radians    
             @ATAN(1.732) = 1.047

@COS(x)      Cosine of angle, x in radians.  
             @COS(1.047) = 0.5

@EXP(x)      Raise 'e' to the 'x' power      
             @EXP(5) = 148.4131591

@INT(x)      Integer value of argument. The fractional 
             part of the number is truncated  and  the  
             integer remainder is returned. Example: 
             @INT(10.6) = 10 

@LN(x)       Natural Logarithm to base 'e'  
             @LN(6) = 1.791...

@LOG(x)      Logarithm to base '10'          
             @LOG(10) = 1

@MOD(x,y)    Modulo division,                
             @MOD(10,3) = 1

@PI          Constant which has a value of   
             @PI = 3.14159...

@RAND        Returns a new random number after each CALC.

@ROUND(x,y)  Rounds value x to y digits right of decimal
             @ROUND(123.123,1) = 123.1
             Negative value y rounds to left.
             @ROUND(123.123,-2)= 100

@SIN(x)      Sine of angle, x in radians.    
             @SIN(1.047) = 0.866

@SQRT(x)     Square root of argument.       
             @SQRT(2) = 1.4142135624

@TAN(x)      Tangent of angle, x in radians  
             @TAN(1.047) = 1.732

!@Finance
     F I N A N C I A L   F U N C T I O N S
══════════════════════════════════════════════════════════ 
@CTERM((Interest,FutureValue,PresentValue)
  The number of compounding periods required for an 
  investment of PV (present value) to grow to FV (future 
  value), if the investment is earning INT interest per 
  compounding period. 

@DDB(Cost,Salvage,Life,Period)
  Accelerated depreciation value for an asset, given the 
  initial cost, the life expectancy, the end value and the 
  depreciation period.  The depreciation is calculated 
  using the double declining balance method. 

@FV(Annuity,interest rate,period)  
  Returns the future value corresponding to  an  annuity  
  occurring over the specified period.  Reverse of the 
  above. 
  ex.  @FV(700,0.0925,30) = 99979.77 

@IRR(Interest rate,Range)                 
  Returns the Rate of Return per period associated with a  
  cash flow.  More than one solution may be possible if 
  cash flow changes between positive and negative values 
  throughout range. 
  ex.  @IRR(0.11,H1..H5) 

@NPV(Interest rate,Range)                 
  Returns  the  Net  present  value  of a cash flow over 
  interest period.
  ex.  @NPV(0.1,A1..D1)

@PMT(Principal,interest,period)   
  Returns the amount of an annuity equal to the  
  principal amortized over the period.
  ex.  @PMT(75000,0.0925,30) = 7462.61

@PV(Annuity,interest rate,period)  
  Returns the present value corresponding  to  an  annuity  
  occurring over the specified period.  Reverse of the 
  above. 
  ex.  @PV(700,0.0925,30) = 7035.08 

@RATE(FutureValue,PresentValue,N)    
 Interest rate required for an investment of PVAL to be 
 worth FVAL, in N compounding periods.

@SLN(Cost,Salvage,Life)    
 Straight line depreciation of an asset over ONE period
 of LIFE.

@SYD(Cost,Salvage,Life,Period)    
 Depreciation of an asset using the Sum-of-Years 
 depreciation method.

@TERM(Payment,Interest,FutureValue)   
 Number of periods required to accumulate an investment 
 of FVAL making regular payments of PMT and accruing 
 interest at the rate of INT per period.

!StatsGen
        S T A T I S T I C A L   F U N C T I O N S 
══════════════════════════════════════════════════════════ 
Statistical  functions  operate  on  a  range  of  values.   
A range specifies a rectangular block of data in the  
spreadsheet.  Only  ONE range may be used as an argument.  
i.e.  Range = A1..B10 defines the block of data from: 

                      a1...b1
                     a10...b10

Presented  below  are  the  statistical  functions  
available  within AS-EASY-AS.  To illustrate the use  of  
each  function  an  example  is included. 

All  examples will operate on the numbers contained in the 
portion of the spreadsheet duplicated below, A1..C3. 

           /........A/.......B/.......C/
          1       1.1      5.6      8.2
          2       2.3      7.5       10
          3       3.5      4.4        2
          4

See @Statistics topic for function specifics.

!@Stats
     S T A T I S T I C A L   F U N C T I O N S (4)
══════════════════════════════════════════════════════════ 
@AVG(Range)   Average value of the range          
    Ex. @Avg(A1..B2) = 4.955555

@COUNT(Range) Count the number of elements       
              in the range.  Blank cells ignored.
    Ex. @Count(A1..B2) = 9
        @Count(A1..A4) = 3

@FACT(x)  Factorial of X (0<X<23)
    Ex. @Fact(4) = 24

@INDEX(Range,Col,Row)  Returns the element in position 
                       Row,Col of Range.
    Ex. @Index(A1..C3,2,2) = 7.5

@MAX(Range)   Maximum value in the range          
    Ex. @Max(A1..B2) = 10
 
@MIN(Range)   Minimum value in the range          
    Ex. @Min(A1..B2) = 1.1

@STD(Range)   Standard deviation of the range     
    Ex. @Std(A1..B2) =  2.904827

@SUM(Range)   Sum of values in the range                    
    Ex. @Sum(A1..C3) = 44.6

@VAR(Range)   Returns the population variance of  
              the range.
    Ex. @Var(A1..B2) = 8.438024

@ROWS(CellOne,CellTwo) Number of rows between the two 
                       cells.
    Ex.   @Rows(A1..D10) = 10

@COLS((CellOne,CellTwo) Number of cols between the two 
                       cells.
    Ex.   @Cols(A1..F10) = 6 

@HTABLE(compare,range,ofs)
    Returns the value at vertical offset in the column
    that matches the  compare value.
    Ex.  @HTABLE(5.6,A1..C3,1) = 4.4

@VTABLE(compare,range,ofs)
    Returns the value at horizontal offset in the row
    that matches the compare value.
    Ex. @VTABLE(2.3,A1..C3,2) = 10

@HTERP(x,range,offset)
    Returns the f(x) value based on a horizontal 
    interpolation of a table.  The first (top) row of 
    'range' is contains the x-values.  The 'offset' row 
    contains the f(x) values.  
    Ex. @HTERP(1.2,A1..C3,1) = 2.415555
    Ex. @HTERP(5.5,A1..C3,2) = 4.38

@VTERP(x,range,offset)
    Returns the f(x) value based on a vertical 
    interpolation of a table.  The first (left) column of 
    'range' is contains the x-values.  The 'offset' column 
    contains the f(x) values.                  
    @VTERP(1.2,A1..C3,1) = 5.758333
    @VTERP(3.4,A1..C2,2) = 2.666666


!@LogicFunc
           L O G I C A L   F U N C T I O N S                   
══════════════════════════════════════════════════════════ 
@IF(Condition,arg1,arg2)  
    Value of arg1 if Condition is true
    value of arg2 if the Condition is false. Allowable 
    logical operators >,<,=,<>,>=,<= #OR#, #AND#. 
    Ex.  @if(10>2,3*2,4+5) = 6
         +(a1>2)*3+(a1<=2)*4   This formula will yield a 
         result of 3 if the value stored in cell A1  
         is greater than 2 and will yield a 4 if the 
         value is less than or equal to 2. 

@ISSTR(Cell) 
   Returns 1 if the referenced cell contains a
   label, 0 otherwise.

@ISNUM(Cell)
   Returns 1 if the referenced cell contains a
   value, 0 otherwise.

@ISERRCell)
   Returns 1 if Cell contains ERR, 0 otherwise.

@TRUE
   Returns the value of 1 (logical true).

@FALSE
   Returns the value of 0 (logical false).

@NOT(Cell)
   Logically negates the value of cell.  0 becomes 1 and 1 
   becomes 0.

@CASE(N,Arg1,Arg2,Arg3,......)
   Returns the Nth argument from the Argument list.


!@String
            S T R I N G     F U N C T I O N S
══════════════════════════════════════════════════════════ 
@CHR(X)               
  The ASCII character corresponding to decimal code X.

@ASCII(String)        
  Returns the Decimal ASCII code of the first
  character in String.

@EXACT(String1,String2)
  One (True)if String1 and String2 are exactly the same,
  zero (False) if they are not.

@LEFT(String,N)       
  First N characters in String.

@LENGTH(String)       
  Number of characters in String.

@LOWER(String)        
  All letters in String in lower case.

@MID(String,N1,N2)    
  N2 characters from string, starting with N1.

@N(Cell)              
  the numeric value in Cell, 0 if string.

@PROPER(String)       
  All words in string with the first letter in 
  upper case and the rest in lower case.

@REPEAT(String,N)     
  String, repeated N times.

@RIGHT(String,N)      
  The last N characters in String.

@S(Cell)              
  The string value in Cell, null string if numeric.

@VAL(X,N)             
  Numeric value X as a string, N decimals.

@TRIM(String)         
  String with no leading, trailing or multiple spaces.

@UPPER(String)        
   All letters in String in upper case.

@CELLPT(String)       
   Returns information about the CURRENT cell (i.e., the 
   cell that the pointer is currently located on).  Type 
   of information depends on String. 

   String = "FORM"  returns the format of current cell.
   String = "ADDRESS" returns the address of current cell  
             as a string .
   String = "CONTENTS" the contents of cell are returned 
             as a string, e.g.  A1+3 is returned as "A1+3"
   String = "ROW" returns the current cell row address.
   String = "COLUMN" returns the current cell col address.
   String = "WIDTH" returns the current cell column width.
   String = "PREFIX" returns the current cell label prefix
   STRING = "TYPE" returns an integer depending on the 
             contents of the current cell.
               
              0 - String Formula
              1 - Value formula
              2 - Integer/Value
              3 - Integer/Value
              4 - String/Label
              5 - Blank Cell
              6 - Virgin Blank Cell
              8 - String Formula error
              9 - Value Formula error


!@Date/Time          
      D A T E / T I M E      F U N C T I O N S
══════════════════════════════════════════════════════════ 
@DATE(YY,MM,DDD)   
   Serial number of days from Jan 1,1900 to Year = YY, 
   Month = MM, Day = DD. 
   Ex. @DATE(87,5,20) = 31917
(Note: Cell need to be in date format to display dates)

@DATEVALUE(String) 
   Serial number of days in String "MM/DD/YY".

@TODAY                
   Returns the serial number of days to now.

@TIME(HR,MIN,SEC)     
   Fraction of day corresponding to HR:MIN:SEC

@TIMEVALUE(String)    
   Fraction of day corresponding to String "MM/DD/YY"

@DAY(X)              
   The Day in X.   @DAY(31917) = 20.

@HOUR(X)              
   The Hours in the fractional part of X

@MINUTE(X)            
   The Minutes in the fractional part of X

@MONTH(X)             
   The Month in X.   @MONTH(31917) = 5 (May)

@SECOND(X)            
   The Seconds in the fractional part of X

@YEAR(X)              
   The Year in X.  @YEAR(31917) = 87

@TODAY
   Returns the unique integer corresponding to 
   today's date.


!Sorting
                      S O R T I N G
══════════════════════════════════════════════════════════ 
Sorting a data base of records by any field ( a column ) 
may be done by performing the following sequence of 
keystrokes. 

1.   Get into the Data Sort menu by typing   /DS

2.   Define the INPUT range, This includes all records in 
     the data base.
     ( i.e. all rows and columns, excluding the headings)

3.   Define the PRIMARY key

4.   Optional: Define the SECONDARY key or tie breaker

5.   Select GO to initiate the sort.

6.   WAIT! 
     The sort will be completed shortly and a beep will
     sound.

Please note that sorting is done according the the ASCII 
values of the characters, therefore, numbers are placed 
before characters..

!DataQuest
             Q U E S T I O N I N G
══════════════════════════════════════════════════════════ 
Find or extract records which matching selected criteria.  

1.  Criterion and Output range headings should be 
    identical to same-column headings in Input range.
 
2.  Criteria are specified using a logical operator and 
    the corresponding field in the first record (row) of 
    the input range. 

3.  Wildcards are allowed in strings criteria
    *   - match all characters to right of *
    ?   - match single character in position of ?.
    ~   - match anything <> to criterion (but not =)
    ... - match if following string is in field

    Criterion Examples:
    -------------------
        A*  =  Match any record whose respected field 
               starts with A regardless of what follows. 
               (Arc, Apron, Allston, Acton, ...) 
        ?at =  Match any record whose respected field 
               starts with any character and has 'at' as 
               the second and third characters. (Cat, Bat, 
               Rat,...) 
     ...are =  Match any record whose respected field 
               contains the characters 'are'. (Shareware, 
               software, beware,...) 
        ~At =  Match any record whose respected field is 
               not 'At'. (This, that, James,...) 




!F-Keys
              F U N C T I O N    K E Y S 
══════════════════════════════════════════════════════════ 

┌───╖  * HELP *
│F1 ║  In the ready mode invokes Help (that's how you
╘═══╝  got here).                                          

       A. After a left curly bracket has been entered, it 
          brings up a list containing all the macro 
          command names. 

       B. After an operator has been entered (+,-,/,....), 
          it brings up a list containing all the range 
          names in the worksheet. 

       C. After the @ key has been entered, it brings up a 
          list containing all the function names. 

       D. After a backslash has been entered, it brings up 
          a list with all the printer setup codes 
          contained in the external file ASEASY.PRT. 

          When one of the above screens is displayed, move 
          to the desired selection and press [ENTER]. Your 
          choice is placed in the command area and you are 
          returned to the edit mode. 

              
┌───╖  * EDIT *
│F2 ║  Places the contents of the cell the cursor is 
╘═══╝  currently  on, in the command area and enters the 
       edit mode.  After you finish editing, press [ENTER] 
       to accept the changes and return to the ready mode. 
                                                            
                                                            
                                                            
┌───╖  * NAME *                                                                 
│F3 ║  Pressing F3 you are prompted for a macro to execute.                
╘═══╝  You can either type the name or hit ESCAPE.  If you  
       hit ESCAPE, a window appears with all the range      
       names.  Select the one corresponding to the macro 
       you want to execute and press [ENTER].                   

       While in the Edit mode, pressing F3 places you in 
       the Control-Code-Bypass mode which allows you to 
       enter printer control codes (lower than 032 ASCII)
       using the Alt-Numeric keypad combination. 
       For Example, the folllowing key sequence,

       This is F3 Alt-015 Condensed F3 Alt-018 print,

       will result in the word 'Condensed' printed in 
       condesed mode (on an EPSON compatible printer).
      
             
                                                                     
┌───╖  * ABSOLUTE *
│F4 ║  If you are entering a formula using the pointing 
╘═══╝  mode, pressing F4 will make the last entered cell 
       reference absolute.  Repeatedly pressing F4 will 
       cycle through making column, row and both 
       coordinates absolute
       
       
                                                               
┌───╖  * GOTO *                                                                
│F5 ║  When you press F5, you are prompted for a 
╘═══╝  destination cell.  You can either type the cell or 
       range name you want to go to, or press ESCAPE.  If 
       you press ESCAPE, a window appears containing all 
       the range names in the worksheet.  Select the 
       range name you want and press [ENTER].        
       
       
                                                                           
┌───╖  * WINDOW *
│F6 ║  If two windows are currently open, F6 toggles the               
╘═══╝  cursor between them.  If only one window is open,               
       pressing F6 toggles the cursor between the current 
       and last cursor cell location.                     


┌───╖  * WORD PROCESSOR *
│F7 ║  Enter the word processor mode.  Rows and column 
╘═══╝  disappear and a ruler line is displayed at the top 
       of the screen.  Press ESC to return to the 
       worksheet mode after you are finished.  If not 
       enough memory is available to enter the word 
       processing mode, an apppropriate error will be 
       displayed.

┌───╖                        
│F8 ║ * CURRENTLY NOT USED * 
╘═══╝  
       
┌───╖  * RECALC *
│F9 ║  Pressing F9 re-calculates all cells that contain an
╘═══╝  equation. While in the edit mode, pressing F9      
       replaces the equation that is displayed in the     
       commands area with its calculated value.           


┌───╖  * GRAPH *
│F10║  F10 re-displays the currently defined graph.  This    
╘═══╝  function key is useful for viewing graphs while       
       performing what-if analyses. Using F10 you do not     
       have to go through the /GV and then Quit sequence     
       every time you change the values of the defined X 
       and Y ranges.                                                         
                                                                             



!Parsing     
                     P A R S I N G
══════════════════════════════════════════════════════════ 
Parsing is used to convert a string (a collection of 
characters) into equivalent strings or values in adjacent 
columns in the same row.  Parsing is used, for example, to 
convert a file which was imported as text, to its 
equivalent text and values.  It should be noted that 
certain characters are used as delimiters in parsing. 

            [;]  [,]  [+]  [']  

Examples:
  
     Ab 12 50+15   --->    Ab     12    50    15
     Ab 2E3 5;10   --->    Ab   2000     5    10
     Ab '1'2 20    --->    Ab   1     2       20
                                │     │
                                └──┬──┘
                                   │
                                 Labels 


!3D-Panels
         P A N E L S  -  D I M E N S I O N S 
══════════════════════════════════════════════════════════ 
The Wsheet, Global, Dimensions command allows you to 
simulate a 3-D environment.  When the command is invoked,  
you are prompted for the number of panels (up to 100 
allowed). 

The generated panels are 256 columns wide and (1048/N) 
rows high, where N is the number of panels specified.  
Panels are named sequentially (A, B, C, ....).   The 
current panel is indicated by its letter, positioned on 
the upper left corner of the screen, directly above the 
column numbers. 

You can go from the current panel to another as follows: 

  1. Use the GOTO (F5) function key.
  2. Press Ctrl-PgDn.  This makes the next panel in the
     sequence the current panel.
  3. Press Ctrl-PgUp.  This makes the previous panel in 
     the sequence the current panel.

Cells from any panel can be accessed as though they were 
in the current one.   When the Dimensions option is on, 
the cells are referenced by the panel letter(s), followed 
by a colon and the cell reference: 

Examples:
      A:A1    -  Panel A, Cell A1
     +AA:W34  -  Add cell W34 from panel AA

When the number of panels is reset to one, all information 
in the rest of the panels is retained in the worksheet.  
For example if two panels had been selected, and 
information was entered in cell B:A1, when the number of 
panels is reset to one, the information in B:A1 is now 
located in cell A1025. 

!MacroExample
            M A C R O    E X A M P L E S   
══════════════════════════════════════════════════════════ 
Example #1
----------
Enter the information presented below in the indicated 
cells: (Finish each entry by pressing the [ENTER] key). 

 Cell         Contents               Explanation
 ----       -------------       ------------------------
  A1         {GOTO}A21~         Place cursor in cell A21
  A2            {?}             Pause and wait for input
                                (Terminated by [ENTER])
  A3         {GOTO}A1~          Place cursor in cell A1.


Now move to cell A1 and press  /rnc\b[ENTER][ENTER].

Pressing Alt-B, will now move the cursor to cell A21 and 
pause for input.  Type anything you want (including 
nothing) and press [ENTER].  The cursor will now move to 
cell A1, and execution of the macro will stop. 


Example #2
----------
Enter the information presented below in the indicated 
cells: (Finish each entry by pressing the [ENTER] key). 

 Cell         Contents               Explanation
 ----       -------------        ---------------------
  A1          {HOME}             Place cursor in A1.

  A2        {INVALUE "A=",B1}    Display "A=" in the 
                                 panel area of the 
                                 worksheet, place the
                                 entered value in B1.

  A3        {if B1>10}{JUMP QT}  If the value in B1 is 
                                 greater than 10, start 
                                 executing the macro 
                                 named QT.

  A4        {LET B2,B1*10}       Multiply value in B1 
                                 by 10, and place the
                                 result in B2.

  A5                             Leave this cell blank.

  A6         {LET B2,B1*100}     Multiply value in B1 by 
                                 100,and place result in 
                                 cell B2.

  A7                             Leave this cell blank.

Now name the required ranges using the following 
keystrokes: 

   /rnc\aa1[ENTER]     -  Name the first macro cell
   /rncQTa6[ENTER]     -  Name the second macro cell.

Press Alt-A.  The program will display "A=" in the panel 
area and pause for input.   anter a value and press 
[ENTER].  If the value is less than 10, 100 times the 
value appears in B2, if not, 10 times  the value appears 
in B2. 

!Querying
      Q U E S T I O N I N G   A   D A T A B A S E 
══════════════════════════════════════════════════════════ 
1. Define the database Input range:   /DQIA1..C6 [ENTER]
   (Includes the field names).
 
2. Define the Output range: OA21..C24 [ENTER]
   The first row of the output range contains the field 
   names - EXACT copies.
        
3. Define the Criterion range:  CA11.A12 [ENTER]
   The first row contains an EXACT cop of the field name.

4. Extract the records that meet the criretia:  E


  Database Input Range
  --------------------
  ┌..............A/......B/..........C/........D/......
1 │Name                 Age   Height(m)  <- Field Names
2 │Bill Johnson          19        1.82  ┐
3 │Wayne Williams        41        1.79  │
4 │John Jones            29        1.88  ├─ Records
5 │James Carlson         33        1.74  │
6 │Bob Robinson          18        1.91  ┘
7 │

  Database Criterion Range (1)
  ----------------------------
  ┌..............A/......B/..........C/........D/.....
11│Name         <-- Field Name          
12│J*           <-- Criterion  (This Criterion will
13│                 filter out all records where the
14│                 first letter of field 'Name' is not J)

  Database Output Range (1)
  -------------------------
  ┌..............A/......B/..........C/........D/.......
21│Name                 Age   Height(m)  <-- Field Names
22│John Jones            29        1.88 ┐
23│James Carlson         33        1.74 ┴ Extracted 
24│                                       Records



Modify the criterion range, this time using the ages as a 
filter.  Then repeat the Extract (/DQE) command to 
extract the new records.


  Database Criterion Range (2)
  ----------------------------
  ┌..............A/......B/..........C/........D/.....
1 │Age          <-- Field Name          
2 │+B2>30       <-- Criterion  (This Criterion will
3 │                 filter out all records where the
4 │                 field 'Age' is greater than 30)

  Database Output Range (2)
  -------------------------
  ┌..............A/......B/..........C/........D/.......
1 │Name                 Age   Height(m)  <-- Field Names
2 │Wayne Williams        41        1.79 ┐ 
3 │James Carlson         33        1.74 ┴ Extracted 
                                          Records

!Answers
                      A N S W E R S
══════════════════════════════════════════════════════════ 
 The following are answers to some common questions. 


Q1.  I see ASTERISKS where my number used to be. 

A1.  Number is to wide to be displayed in the column.  
     Expand column until Number appears or change format , 
     /Wsheet Column Set 
_______________________

Q2.  Not all of my print range prints, part is cut off.                         

A2.  Your print margins are not, probably, wide enough.  
     Expand margin with, /PrintTo Printer Options Margin.
_______________________

Q3.  How do I get an AUTOEXEC macro?         
   
A3.  Give your macro a range name of \0 (zero not O),and 
     save your file.  Next time the file is retrieved it 
     will start executing that macro. 
_______________________

Q4.  Can I have a worksheet file loaded automatically when 
     I start the program? 

A4.  Yes, there are two ways you can do that.

     1. Name your worksheet AUTOEXEC.WKS. Also, remember 
        to set the default  directory, to the one where 
        this file is located, when you start the program. 

     2. Start AS-EASY-AS using the DOS command Line:

                ASEASY /AUTO=FileName.WKS

       where FileName is the desired worksheet.
_______________________

Q5.  I have a CGA card with a black and white monitor, and 
     I can't see the graphs when they are displayed. 

A5.  Use the /MONO switch when you start the AS-EASY-AS 
     program. 
_______________________

Q6   I tried to view a graph that I had defined, and I 
     only got the axes, no data points.                    

A6.  This symptom usually occurs when the X-axis is 
     defined as range of labels, and the graph type is X-
     Y. 
_______________________

Q7.  I imported a file into AS-EASY-AS using the File, 
     Import, Values command, and I got the values but not 
     any of the labels.                   
   
A7.  When importing an ASCII file as values, the only 
     labels that are retained are those enclosed in double 
     quotes. 
_______________________

Q8.  How can I hide columns?                  
   
A8.  Columns can be hidden by specifying column width 
     zero. 
_______________________

Q9.  How can I prevent (hide) rows from printing?

A9.  Place a piping character (|) in the leftmost cell of 
     the row you want to hide. 
_______________________

Q10. Dates do not sort properly, August comes before June! 

A10. Dates entered as June 10, 1989, for example, are 
     labels.  Therefore, August 22, 1989 comes before June 
     10, 1989 since August starts with an A and June with 
     a J.  To properly sort dates, they should be entered 
     using one of the AS-EASY-AS Date or String-to-Date 
     functions. 
_______________________

Q11. My footer does not print on the last page of my 
     printout. 

A11. Footers are only printed if the available information 
     completes the page.  To force a footer to print, use 
     the PageAdv command. 

!Linking
                      L I N K I N G
══════════════════════════════════════════════════════════ 
The worksheet currently im memory can be linked to 
worksheets on disk using the @LINK function of AS-EASY-AS.

              @LINK("FileName>Cell")

         Ex.  @LINK("c:\SAMPLE.WKS>A231")

 - The Double Quotes and the '>' character are necessary
 - The file specified by 'FileName' should be in the 
   current data directory.  The 'WKS' extension is 
   optional.

When this function is entered, the cell will display 'ERR' 
indicating that no linking has taken place.  When the 
/File, Uplink command is executed, the contents of the 
referenced 'Cell' in 'FileName' are retrieved and placed 
in the calling cell.   Note that all 'Linked' cells are 
updated when a file is retrieved (i.e., as if a /File, 
Uplink command was executed right after the file was 
retrieved).  Also note that no recalculation of the 
referenced cell takes place before uplinking. 

!End
                     * The End *
! Future...

