home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / bbs / may94 / biz / misc / asc.lha / ASC / sc.txt < prev    next >
Encoding:
Text File  |  1993-11-11  |  76.4 KB  |  1,849 lines

  1.  
  2.  
  3.  
  4. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  5.  
  6.  
  7. NNAAMMEE
  8.        pname - spreadsheet calculator
  9.  
  10. SSYYNNOOPPSSIISS
  11.        ppnnaammee [ --cc ] [ --mm ] [ --nn ] [ --rr ] [ --xx ] [ _f_i_l_e ]
  12.  
  13. DDEESSCCRRIIPPTTIIOONN
  14.        The  spreadsheet  calculator _p_n_a_m_e is based on rectangular
  15.        tables much like a financial spreadsheet.  When invoked it
  16.        presents you with a table organized as rows and columns of
  17.        cells.  If invoked without a _f_i_l_e argument, the  table  is
  18.        initially  empty.   Otherwise _f_i_l_e is read in (see the _G_e_t
  19.        command below).  Each cell may have associated with  it  a
  20.        numeric  value, a label string, and/or an expression (for-
  21.        mula) which evaluates to a numeric value or label  string,
  22.        often based on other cell values.
  23.  
  24.        For a on-line tutorial, type the command:
  25.  
  26.               pname #LIBDIR#/tutorial.pname
  27.  
  28.        To print a quick reference card, type the command:
  29.  
  30.               pnameqref | [your_printer_commmand]
  31.  
  32. OOPPTTIIOONNSS
  33.        --cc     Start the program with the recalculation being done
  34.               in column order.
  35.  
  36.        --mm     Start the program with automatic recalculation dis-
  37.               abled.   The  spreadsheet will be recalculated only
  38.               when the ``@'' command is used.
  39.  
  40.        --nn     Start the program in quick numeric entry mode  (see
  41.               below).
  42.  
  43.        --rr     Start the program with the recalculation being done
  44.               in row order (default option).
  45.  
  46.        --xx     Cause the _G_e_t  and  _P_u_t  commands  (see  below)  to
  47.               encrypt and decrypt data files.
  48.  
  49.        --RR     Start the program with automatic newline action set
  50.               to increment the row (see below).
  51.  
  52.        --CC     Start the program with automatic newline action set
  53.               to increment the column (see below).
  54.  
  55.        All of these options can be changed with the _^_T and _S com-
  56.        mands (see below) while _p_n_a_m_e is running.  Options  speci-
  57.        fied  when  _p_n_a_m_e is invoked override options saved in the
  58.        data file.
  59.  
  60.  
  61.  
  62.  
  63.  
  64.                                                                 1
  65.  
  66.  
  67.  
  68.  
  69.  
  70. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  71.  
  72.  
  73.    GGeenneerraall IInnffoorrmmaattiioonn
  74.        The screen is divided into four regions.  The top line  is
  75.        for  entering  commands  and  displaying cell values.  The
  76.        second line is for messages from _p_n_a_m_e.   The  third  line
  77.        and  the  first  four columns show the column and row num-
  78.        bers, from which are derived cell addresses, e.g.  _A_0  for
  79.        the  cell  in column A, row 0.  Note that column names are
  80.        case-insensitive: you can enter _A_0 or _a_0.
  81.  
  82.        The rest of the screen forms a window looking at a portion
  83.        of  the  table.   The  total  number  of  display rows and
  84.        columns available, hence the  number  of  table  rows  and
  85.        columns displayed, is set by _c_u_r_s_e_s(3) and may be overrid-
  86.        den by setting the LINES  and  COLUMNS  environment  vari-
  87.        ables, respectively.
  88.  
  89.        The  screen has two cursors: a cell cursor, indicated by a
  90.        highlighted cell and a ``<'' on the screen, and a  charac-
  91.        ter  cursor,  indicated by the terminal's hardware cursor.
  92.        The cell and character cursors are often the  same.   They
  93.        differ when you type a command on the top line.
  94.  
  95.        If  a  cell's numeric value is wider than the column width
  96.        (see the _f command), the cell is  filled  with  asterisks.
  97.        If  a  cell's label string is wider than the column width,
  98.        it is truncated at the start of the next non-blank cell in
  99.        the row, if any.
  100.  
  101.        Cursor control commands and row and column commands can be
  102.        prefixed by a numeric argument which  indicates  how  many
  103.        times  the  command  is  to  be executed.  You can type _^_U
  104.        before a repeat count  if  quick  numeric  entry  mode  is
  105.        enabled  or if the number is to be entered while the char-
  106.        acter cursor is on the top line.
  107.  
  108.        Commands which use the terminal's control key, such as _^_N,
  109.        work both when a command is being typed and when in normal
  110.        mode.
  111.  
  112.    CChhaannggiinngg OOppttiioonnss
  113.  
  114.        ^^TT_o    Toggle options.  This command allows you to  switch
  115.               the  state  of  one  option selected by _o.  A small
  116.               menu lists the choices for _o when you type _^_T.  The
  117.               options selected are saved when the data and formu-
  118.               las are saved so that you will have the same  setup
  119.               next time you enter the spreadsheet.
  120.  
  121.               aa      Automatic  Recalculation.   When  set,  each
  122.                      change in the spreadsheet causes the  entire
  123.                      spreadsheet  be recalculated.  Normally this
  124.                      is  not  noticeable,  but  for  very   large
  125.                      spreadsheets,  it  may  be  faster  to clear
  126.                      automatic recalculation mode and update  the
  127.  
  128.  
  129.  
  130.                                                                 2
  131.  
  132.  
  133.  
  134.  
  135.  
  136. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  137.  
  138.  
  139.                      spreadsheet  via  explicit  ``@''  commands.
  140.                      Default is automatic recalculation on.
  141.  
  142.               cc      Current cell highlighting.  If enabled,  the
  143.                      current  cell is highlighted (using the ter-
  144.                      minal's  standout  mode,  if  available)  in
  145.                      addition to being marked by the cell cursor.
  146.  
  147.               ee      External function execution.  When disabled,
  148.                      external  functions  (see  _@_e_x_t() below) are
  149.                      not called.  This saves a  lot  of  time  at
  150.                      each  screen update.  External functions are
  151.                      disabled  by  default.   If  disabled,   and
  152.                      external  functions  are  used  anywhere,  a
  153.                      warning is printed each time the  screen  is
  154.                      updated,  and  the  result  of _@_e_x_t() is the
  155.                      value from the previous call, if any,  or  a
  156.                      null string.
  157.  
  158.               ll      Autolabeling.   If enabled, using the define
  159.                      command (/d) causes a label to be  automati-
  160.                      cally  generated  in the cell to the left of
  161.                      the defined cell.  This is only done if  the
  162.                      cell  to  the  left  is  empty.   Default is
  163.                      enabled.
  164.  
  165.               nn      Quick numeric entry.  If  enabled,  a  typed
  166.                      digit  is  assumed  to  be  the  start  of a
  167.                      numeric value for the current  cell,  not  a
  168.                      repeat  count,  unless  preceded by _^_U.  The
  169.                      cursor controls (_^_P, _^_N,  _^_B,  _^_F)  in  this
  170.                      mode will end a numeric entry.
  171.  
  172.               tt      Top  line display.  If enabled, the name and
  173.                      value of the current cell  is  displayed  on
  174.                      the  top  line.   If  there is an associated
  175.                      label string, the  first  character  of  the
  176.                      string value is ``|'' for a centered string,
  177.                      ``<'' for a leftstring or ``>'' for a right-
  178.                      string (see below), followed by "_s_t_r_i_n_g" for
  179.                      a constant string or  {_e_x_p_r}  for  a  string
  180.                      expression.   A  constant string may be pre-
  181.                      ceeded with a backslash (`\').  In this case
  182.                      the  constant  string  will  be  used  as  a
  183.                      ``wheel'' to fill a column, e.g. "\-" for  a
  184.                      line   in   a   column,   and   "\Yeh "  for
  185.                      "Yeh Yeh Ye".  If the  cell  has  a  numeric
  186.                      value, it follows as [_v_a_l_u_e], which may be a
  187.                      constant or expression.
  188.  
  189.               xx      Encryption.  See the --xx option.
  190.  
  191.               $$      Dollar prescale.  If  enabled,  all  numeric
  192.                      ccoonnssttaannttss  (not expressions) which you enter
  193.  
  194.  
  195.  
  196.                                                                 3
  197.  
  198.  
  199.  
  200.  
  201.  
  202. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  203.  
  204.  
  205.                      are multipled by 0.01 so you don't  have  to
  206.                      keep  typing  the decimal point if you enter
  207.                      lots of dollar figures.
  208.  
  209.               rr      Newline action.  This option toggles between
  210.                      three  cases.  The default is no action.  If
  211.                      this option is used once, after each command
  212.                      which  is  terminated by a newline character
  213.                      is completed, the current cell will be moved
  214.                      down one row.  If this option is used again,
  215.                      after each command which is terminated by  a
  216.                      newline  character is completed, the current
  217.                      cell  will  be  moved  right   one   column.
  218.                      Another  use of this option will restore the
  219.                      default action.
  220.  
  221.               zz      Set newline action limits.  This option sets
  222.                      limits  to  the newline action option above.
  223.                      When this option is  invoked,  the  row  and
  224.                      column  of  the current cell are remembered.
  225.                      If a later newline  action  would  take  the
  226.                      current  cell to the right of the remembered
  227.                      column, then the  current  cell  is  instead
  228.                      moved  to  the first column of the next row.
  229.                      If a newline action would take  the  current
  230.                      cell below the remembered row, then the cur-
  231.                      rent cell is instead moved to the top row of
  232.                      the next column.
  233.  
  234.               The  quick  numeric  entry,  newline action and set
  235.               newline action limits options can  be  combined  to
  236.               allow  very  quick  entry of large amounts of data.
  237.               If all the data to be entered is in a single row or
  238.               column then setting the quick numeric entry and the
  239.               appropriate newline action will allow  the  numbers
  240.               to  be  entered  without  any  explicit commands to
  241.               position the current cell or enter a number.
  242.  
  243.               If the data entry involves several entries in  each
  244.               row  for  many rows, then setting the quick numeric
  245.               entry option, setting the newline  action  to  move
  246.               right  after  each  entry  and  setting the newline
  247.               action limits on the  last  column  on  which  data
  248.               should  be  entered  will allow the data to entered
  249.               quickly.  If necessary, columns which do  not  need
  250.               data  to  be  entered can be hidden with the zz com-
  251.               mand.  Similar arrangements can be made for  enter-
  252.               ing several rows of data in each column.
  253.  
  254.        SS      Set  options.  This command allows you to set vari-
  255.               ous options.  A small menu lists the  options  that
  256.               cannot be changed through _^_T above.
  257.  
  258.  
  259.  
  260.  
  261.  
  262.                                                                 4
  263.  
  264.  
  265.  
  266.  
  267.  
  268. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  269.  
  270.  
  271.               bbyyrroowwss/bbyyccoollss
  272.                      Specify   the  order  cell  evaluation  when
  273.                      updating.  These  options  also  affect  the
  274.                      order in which cells are filled (see _/_f) and
  275.                      whether a row or column is cleared by  an  _x
  276.                      command.
  277.  
  278.               iitteerraattiioonnss_=_n
  279.                      Set  the  maximum  number  of recalculations
  280.                      before the screen is displayed again.  _I_t_e_r_-
  281.                      _a_t_i_o_n_s is set to 10 by default.
  282.  
  283.               ttbbllssttyyllee_=_s
  284.                      Control  the output of the _T command.  _s can
  285.                      be: 00  (default)  to  give  colon  delimited
  286.                      fields,  with  no  _t_b_l control lines; ttbbll to
  287.                      give colon  delimited  fields,  with  _t_b_l(1)
  288.                      control lines; llaatteexx to give a _L_a_T_e_X tabular
  289.                      environment; ssllaatteexx to give a _S_L_a_T_e_X  _(_S_c_a_n_-
  290.                      _d_i_n_a_v_i_a_n  _L_a_T_e_X_) tabular environment; tteexx to
  291.                      give a  _T_e_X  simple  tabbed  alignment  with
  292.                      ampersands  as delimiters; and ffrraammee to give
  293.                      a tblstyle output for FrameMaker.
  294.  
  295.               Other _S_e_t options are normally used only  in  _p_n_a_m_e
  296.               data  files  since  they  are available through _^_T.
  297.               You can also use them interactively
  298.  
  299.               aauuttooccaallcc/!!aauuttooccaallcc
  300.                      Set/clear auto recalculation mode.
  301.  
  302.               nnuummeerriicc/!!nnuummeerriicc
  303.                      Set/clear numeric mode.
  304.  
  305.               pprreessccaallee/!!pprreessccaallee
  306.                      Set/clear numeric prescale mode.
  307.  
  308.               eexxttffuunn/!!eexxttffuunn
  309.                      Enable/disable external functions.
  310.  
  311.               cceellllccuurr/!!cceellllccuurr
  312.                      Set/clear current cell highlighting mode.
  313.  
  314.               ttoopprrooww/!!ttoopprrooww
  315.                      Set/clear top row display mode.
  316.  
  317.               rrnnddiinnffiinniittyy/!!rrnnddiinnffiinniittyy
  318.                      default: round-to-even (banker's round), *.5
  319.                      will round to the closest even number; doing
  320.                      a 'set rndinfinity' will round *.5 up to the
  321.                      next integer (rounding to infinity).
  322.  
  323.               ccrraaccttiioonn_=_n
  324.                      Set   the  newline  action.   _n  can  be:  00
  325.  
  326.  
  327.  
  328.                                                                 5
  329.  
  330.  
  331.  
  332.  
  333.  
  334. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  335.  
  336.  
  337.                      (default) to give no action; 11 to move  down
  338.                      after  each  entry; or 22 to move right after
  339.                      each entry.
  340.  
  341.               rroowwlliimmiitt_=_n
  342.                      Set the remembered limit for the maximum row
  343.                      below  which  the current cell will be moved
  344.                      to the top of the next column if the newline
  345.                      action is set to move the current cell down.
  346.                      _n can be --11 (default) to disable this facil-
  347.                      ity.
  348.  
  349.               ccoolllliimmiitt_=_n
  350.                      Set  the  remembered  limit  for the maximum
  351.                      column to the right  of  which  the  current
  352.                      cell  will  be moved to the left of the next
  353.                      row if the newline action is set to move the
  354.                      current  cell  right.  _n can be --11 (default)
  355.                      to disable this facility.
  356.  
  357.    CCuurrssoorr CCoonnttrrooll CCoommmmaannddss
  358.  
  359.        ^^PP     Move the cell cursor up to the previous row.
  360.  
  361.        ^^NN     Move the cell cursor down to the next row.
  362.  
  363.        ^^BB     Move the cell cursor backward one column.
  364.  
  365.        ^^FF     Move the cell cursor forward one column.
  366.  
  367.        hh,, jj,, kk,, ll
  368.               If the character cursor is not  on  the  top  line,
  369.               these are alternate, _v_i-compatible cell cursor con-
  370.               trols (left, down, up, right).  Space is just  like
  371.               l (right).
  372.  
  373.        HH,, JJ,, KK,, LL
  374.               If  the  character  cursor  is not on the top line,
  375.               these move the cursor by half  pages  (left,  down,
  376.               up, right).
  377.  
  378.        ^^HH     If  the character cursor is not on the top line, _^_H
  379.               is the same as _^_B.
  380.  
  381.        SSPPAACCEE  If the character cursor is not on the top line, the
  382.               space bar is the same as _^_F.
  383.  
  384.        TTAABB    If  the  character  cursor  is on the top line, TAB
  385.               starts a range (see below).  Otherwise, it  is  the
  386.               same as _^_F.
  387.  
  388.        AArrrrooww KKeeyyss
  389.               The terminal's arrow keys provide another alternate
  390.               set of cell cursor controls if they exist  and  are
  391.  
  392.  
  393.  
  394.                                                                 6
  395.  
  396.  
  397.  
  398.  
  399.  
  400. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  401.  
  402.  
  403.               supported  in  the appropriate _t_e_r_m_c_a_p entry.  Some
  404.               terminals have arrow keys which conflict with other
  405.               control  key  codes.  For example, a terminal might
  406.               send _^_H when the back arrow  key  is  pressed.   In
  407.               these cases, the conflicting arrow key performs the
  408.               same function as the key combination it mimics.
  409.  
  410.        ^^      Move the cell cursor up to row  0  of  the  current
  411.               column.
  412.  
  413.        ##      Move  the cell cursor down to the last valid row of
  414.               the current column.
  415.  
  416.        00      Move the cell cursor backward to column  A  of  the
  417.               current row.  This command must be prefixed with _^_U
  418.               if quick numeric entry mode is enabled.
  419.  
  420.        $$      Move the cell cursor forward to the last valid col-
  421.               umn of the current row.
  422.  
  423.        bb      Scan  the cursor backward (left and up) to the pre-
  424.               vious valid cell.
  425.  
  426.        ww      Scan the cursor forward (right  and  down)  to  the
  427.               next valid cell.
  428.  
  429.        ^^EE_d    Go to end of range.  Follow _^_E by a direction indi-
  430.               cator such as _^_P or _j.  If the cell  cursor  starts
  431.               on  a  non-blank  cell,  it  goes  in the indicated
  432.               direction until the last non-blank  adjacent  cell.
  433.               If  the cell cursor starts on a blank cell, it goes
  434.               in the indicated direction  until  the  first  non-
  435.               blank cell.  This command is useful when specifying
  436.               ranges of adjacent cells  (see  below),  especially
  437.               when the range is bigger than the visible window.
  438.  
  439.        gg      Go  to  a cell.  _p_n_a_m_e prompts for a cell's name, a
  440.               regular expression surrounded by quotes, or a  num-
  441.               ber.   If a cell's name such as _a_e_1_2_2 or a the name
  442.               of a defined range is given, the cell  cursor  goes
  443.               directly to that cell.  If a quoted regular expres-
  444.               sion such as " _T_a_x _T_a_b_l_e " or " _^_J_a_n _[_0_-_9_]_*_$  "  is
  445.               given,  _p_n_a_m_e  searches  for  a  cell  containing a
  446.               string  matching  the  regular   expression.    See
  447.               _r_e_g_e_x_(_3_)  or  _e_d_(_1_) for more details on the form of
  448.               regular expressions.  If a number is  given,  _p_n_a_m_e
  449.               will  search  for  a  cell  containing that number.
  450.               Searches for either strings or numbers proceed for-
  451.               ward  from the current cell, wrapping back to a0 at
  452.               the end of the table, and terminate at the  current
  453.               cell if the string or number is not found.  You may
  454.               also go to a cell with an ERROR  (divide  by  zero,
  455.               etc  in  this  cell)  or INVALID (references a cell
  456.               containing an ERROR).  _g _e_r_r_o_r will take you to the
  457.  
  458.  
  459.  
  460.                                                                 7
  461.  
  462.  
  463.  
  464.  
  465.  
  466. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  467.  
  468.  
  469.               next  ERROR,  while  _g _i_n_v_a_l_i_d take you to the next
  470.               invalid.  The last _g command is saved, and  can  be
  471.               re-issued by entering _g_<_r_e_t_u_r_n_>.
  472.  
  473.    CCeellll EEnnttrryy aanndd EEddiittiinngg CCoommmmaannddss
  474.        Cells can contain both a numeric value and a string value.
  475.        Either value can be the result of an expression,  but  not
  476.        both  at once, i.e. each cell can have only one expression
  477.        associated with it.  Entering a valid  numeric  expression
  478.        alters  the  cell's  previous  numeric  value, if any, and
  479.        replaces the cell's previous string  expression,  if  any,
  480.        leaving   only  the  previously  computed  constant  label
  481.        string.  Likewise,  entering  a  valid  string  expression
  482.        alters  the  cell's the previous label string, if any, and
  483.        replaces the cell's previous numeric expression,  if  any,
  484.        leaving  only  the  previously  computed  constant numeric
  485.        value.
  486.  
  487.        ==      Enter a numeric constant  or  expression  into  the
  488.               current  cell.  _p_n_a_m_e prompts for the expression on
  489.               the top line.  The usual way to enter a number into
  490.               a  cell  is to type ``='', then enter the number in
  491.               response to the prompt on the top line.  The  quick
  492.               numeric entry option, enabled through the --nn option
  493.               or _^_T command, shows the prompt when you enter  the
  494.               first  digit  of  a  number  (you  can  skip typing
  495.               ``='').
  496.  
  497.        <<      Enter a label string into the current  cell  to  be
  498.               flushed left against the left edge of the cell.
  499.  
  500.        ""      Enter  a  label  string into the current cell to be
  501.               centered in the column.
  502.  
  503.        >>      Enter a label string into the current  cell  to  be
  504.               flushed right against the right edge of the cell.
  505.  
  506.        FF      Enter  a format string into the current cell.  This
  507.               format string  overrides  the  precision  specified
  508.               with the ``f'' command.  The format only applies to
  509.               numeric values.  The following  characters  can  be
  510.               used to build a format string:
  511.  
  512.               ##      Digit  placeholder.  If the number has fewer
  513.                      digits on either side of the  decimal  point
  514.                      than   there  are `#' characters in the for-
  515.                      mat, the extra `#' characters  are  ignored.
  516.                      The number is rounded to the number of digit
  517.                      placeholders as there are to  the  right  of
  518.                      the decimal point.  If there are more digits
  519.                      in the number than there  are  digit  place-
  520.                      holders  on  the  left  side  of the decimal
  521.                      point, then those digits are displayed.
  522.  
  523.  
  524.  
  525.  
  526.                                                                 8
  527.  
  528.  
  529.  
  530.  
  531.  
  532. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  533.  
  534.  
  535.               00      Digit placeholder.  Same as for  `#'  except
  536.                      that  the  number  is  padded with zeroes on
  537.                      either side of the decimal point.  The  num-
  538.                      ber  of zeroes used in padding is determined
  539.                      by the number of  digit  placeholders  after
  540.                      the  `0'  for digits on the left side of the
  541.                      decimal point and by  the  number  of  digit
  542.                      placeholders  before  the  `0' for digits on
  543.                      the right side of the decimal point.
  544.  
  545.               ..      Decimal point.  Determines how  many  digits
  546.                      are  placed  on  the right and left sides of
  547.                      the decimal point in the number.  Note  that
  548.                      numbers  smaller  than  1  will begin with a
  549.                      decimal point if the left side of the  deci-
  550.                      mal  point  contains only a `#' digit place-
  551.                      holder.  Use a  `0'  placeholder  to  get  a
  552.                      leading zero in decimal formats.
  553.  
  554.               %%      Percentage.   For  each `%' character in the
  555.                      format, the actual number gets multiplied by
  556.                      100  (only for purposes of formatting -- the
  557.                      original number is left unmodified) and  the
  558.                      `%' character is placed in the same position
  559.                      as it is in the format.
  560.  
  561.               ,,      Thousands separator.  The presence of a  `,'
  562.                      in  the  format (multiple commas are treated
  563.                      as one) will cause the number to be  format-
  564.                      ted  with a `,' separating each set of three
  565.                      digits in the integer  part  of  the  number
  566.                      with  numbering beginning from the right end
  567.                      of the integer.
  568.  
  569.               \\      Quote.  This character causes the next char-
  570.                      acter  to  be  inserted  into  the formatted
  571.                      string directly with no special  interpreta-
  572.                      tion.
  573.  
  574.               EE-- EE++ ee-- ee++
  575.                      Scientific  format.   Causes  the  number to
  576.                      formatted in scientific notation.  The  case
  577.                      of  the  `E'  or `e' given is preserved.  If
  578.                      the format uses a  `+',  then  the  sign  is
  579.                      always given for the exponent value.  If the
  580.                      format uses a `-', then  the  sign  is  only
  581.                      given  when  the exponent value is negative.
  582.                      Note that if there is no  digit  placeholder
  583.                      following  the `+' or `-', then that part of
  584.                      the formatted number is left out.   In  gen-
  585.                      eral,  there  should  be  one  or more digit
  586.                      placeholders after the `+' or `-'.
  587.  
  588.               ;;      Format  selector.   Use  this  character  to
  589.  
  590.  
  591.  
  592.                                                                 9
  593.  
  594.  
  595.  
  596.  
  597.  
  598. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  599.  
  600.  
  601.                      separate  the  format into two distinct for-
  602.                      mats.  The format to the  left  of  the  `;'
  603.                      character  will  be used if the number given
  604.                      is zero or  positive.   The  format  to  the
  605.                      right  of  the  `;' character is used if the
  606.                      number given is negative.
  607.  
  608.               Some example formats are integer (``0'' or  ``#''),
  609.               fixed (``0.00''), percentage (``0%'' or ``0.00%''),
  610.               scientific     (``0.00E+00''),     and     currency
  611.               (``$#,0.00;($#,0.00)'').
  612.  
  613.        Strings  you  enter  must start with ".  You can leave off
  614.        the trailing " and _p_n_a_m_e will add it  for  you.   You  can
  615.        also  enter  a  string  expression by backspacing over the
  616.        opening " in the prompt.
  617.  
  618.        ee      Edit the value associated with  the  current  cell.
  619.               This  is identical to ``='' except that the command
  620.               line starts out containing the old numeric value or
  621.               expression  associated  with the cell.  The editing
  622.               in this mode is vi-like.
  623.  
  624.               ^^hh     Move back a character
  625.  
  626.               ++      Forward through history (neat) (same as j)
  627.  
  628.               --      Backward through history (neat) (same as k)
  629.  
  630.               EESSCC    Done editing
  631.  
  632.               TTAABB    Mark && append a range (ex: A0:A0)
  633.                      TAB, move around within a range; TAB, append
  634.                      range string.
  635.  
  636.               CCRR     Save
  637.  
  638.               $$      Goto last column
  639.  
  640.               ..      Insert current dot buffer
  641.  
  642.               //      Search for a string in the history
  643.                      EESSCC  edit the string you typed
  644.                      CCRR   search
  645.                      ^^hh   backspace
  646.  
  647.               00      Goto column 0
  648.  
  649.               DD      Delete to send
  650.  
  651.               II      Insert  at column 0; ESC revert back to edit
  652.                      mode
  653.  
  654.               RR      Replace mode; ESC revert back to edit mode
  655.  
  656.  
  657.  
  658.                                                                10
  659.  
  660.  
  661.  
  662.  
  663.  
  664. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  665.  
  666.  
  667.               XX      Delete the char to the left
  668.  
  669.               aa      Append after cursor; ESC revert back to edit
  670.                      mode
  671.  
  672.               bb      Move back a word
  673.  
  674.               cc      Change mode; ESC revert back to edit mode
  675.  
  676.               dd      Delete ...
  677.                      bb    back word
  678.                      ff    forward (right)
  679.                      hh    back char
  680.                      ll    forward
  681.                      tt    delete forward up to a given char (next
  682.                      char typed)
  683.                      ww    delete next word forward
  684.  
  685.               ff      Find the next char typed
  686.  
  687.               hh      Move left a char
  688.  
  689.               ii      Insert before cursor;  ESC  revert  back  to
  690.                      edit mode
  691.  
  692.               jj      Forward through history (neat) (same as +)
  693.  
  694.               kk      Backward through history (neat) (same as -)
  695.  
  696.               ll      Move right a char
  697.  
  698.               nn      Continue search
  699.  
  700.               qq      Stop editing
  701.  
  702.               rr      Replace char
  703.  
  704.               tt      Goto a char
  705.  
  706.               uu      Undo
  707.  
  708.               ww      Forward a word
  709.  
  710.               xx      Delete  the  current  char  (moving  to  the
  711.                      right)
  712.  
  713.        EE      Edit the string associated with the  current  cell.
  714.               This  is identical to ``<'', ``"'', or ``>'' except
  715.               that the command line starts out containing the old
  716.               string  value  or  expression  associated  with the
  717.               cell.  SEE ee ABOVE.
  718.  
  719.        To enter and edit a cell's number part, use the ``=''  and
  720.        _e  commands.   To enter and edit a cell's string part, use
  721.  
  722.  
  723.  
  724.                                                                11
  725.  
  726.  
  727.  
  728.  
  729.  
  730. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  731.  
  732.  
  733.        the ``<'', ``"'', ``>'', and _E commands.  See the sections
  734.        below  on numeric and string expressions for more informa-
  735.        tion.
  736.  
  737.        xx      Clear the current cell.  Deletes the numeric value,
  738.               label  string, and/or numeric or string expression.
  739.               You can prefix this command with  a  count  of  the
  740.               number  of  cells on the current row to clear.  The
  741.               current column  is  used  if  column  recalculation
  742.               order  is set.  Cells cleared with this command may
  743.               be recalled with any  of  the  _p_u_l_l  commands  (see
  744.               below).
  745.  
  746.        mm      Mark  a  cell to be used as the source for the _c_o_p_y
  747.               command.
  748.  
  749.        cc      Copy the last marked  cell  to  the  current  cell,
  750.               updating  row  and column references in its numeric
  751.               or string expression, if any.
  752.  
  753.        ++      If not in numeric mode,  add  the  current  numeric
  754.               argument  (default  1)  to the value of the current
  755.               cell.  In numeric  mode,  ``+''  introduces  a  new
  756.               numeric expression or value, the same as ``=''.
  757.  
  758.        --      If  not  in  numeric  mode,  subtract  the  current
  759.               numeric argument (default 1) from the value of  the
  760.               current  cell.  In numeric mode, ``-'' introduces a
  761.               new, negative, numeric expression  or  value,  like
  762.               ``=''.
  763.  
  764.        RREETTUURRNN If  you are not editing a cell (top line is empty),
  765.               pressing RETURN will make _p_n_a_m_e enter insert  mode.
  766.               At  this  point  you  may type any valid command or
  767.               press EESSCC once to edit.
  768.  
  769.    FFiillee CCoommmmaannddss
  770.  
  771.        GG      Get a new database from a file.  If  encryption  is
  772.               enabled,  the file is decrypted before it is loaded
  773.               into the spreadsheet.
  774.  
  775.        PP      Put the current database into a file.   If  encryp-
  776.               tion is enabled, the file is encrypted before it is
  777.               saved.
  778.  
  779.        WW      Write a listing of the current database into a file
  780.               in  a  form  that  matches  its  appearance  on the
  781.               screen.  This differs from the _P_u_t command in  that
  782.               its  files  are  intended  to be reloaded with _G_e_t,
  783.               while _W_r_i_t_e produces a file for people to look  at.
  784.               Hidden  rows or columns are not shown when the data
  785.               is printed.
  786.  
  787.  
  788.  
  789.  
  790.                                                                12
  791.  
  792.  
  793.  
  794.  
  795.  
  796. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  797.  
  798.  
  799.        TT      Write a listing of the current database to a  file,
  800.               but  include  delimiters suitable for processing by
  801.               the _t_b_l,  _L_a_T_e_X,  or  _T_e_X  table  processors.   The
  802.               delimiters  are  controlled by the _t_b_l_s_t_y_l_e option.
  803.               See _S_e_t above.  The delimiters are are a  colon (:)
  804.               for  style  _0 or _t_b_l and an ampersand (&) for style
  805.               _l_a_t_e_x or _t_e_x.
  806.  
  807.        With the _P_u_t, _W_r_i_t_e,  and  _T_a_b_l_e  commands,  the  optional
  808.        range  argument  writes a subset of the spreadsheet to the
  809.        output file.
  810.  
  811.        With the _W_r_i_t_e and _T_a_b_l_e commands, if you try to write  to
  812.        the  last  file  used with the _G_e_t or _P_u_t commands, or the
  813.        file specified on the command line when _p_n_a_m_e was invoked,
  814.        you  are asked to confirm that the (potentially) dangerous
  815.        operation is really what you want.
  816.  
  817.        The three output commands, _P_u_t, _W_r_i_t_e, and _T_a_b_l_e, can pipe
  818.        their (unencrypted only) output to a program.  To use this
  819.        feature, enter ``| program'' to the prompt  asking  for  a
  820.        filename.   For  example,  to  redirect  the output of the
  821.        _W_r_i_t_e command to the printer,  you  might  enter  ``|  lpr
  822.        -p''.
  823.  
  824.        MM      Merge  the  database  from  the named file into the
  825.               current database.  Values and  expressions  defined
  826.               in the named file are read into the current spread-
  827.               sheet overwriting the existing entries at  matching
  828.               cell locations.
  829.  
  830.        RR      Run  macros.   Since _p_n_a_m_e files are saved as ASCII
  831.               files, it is possible  to  use  them  as  primitive
  832.               macro definition files.  The _R_u_n command makes this
  833.               easier.  It's like the _M_e_r_g_e command, but prints  a
  834.               saved  path  name  as  the start of the filename to
  835.               merge in.  The string to use is set with the _D_e_f_i_n_e
  836.               command.   To  write  macros,  you must be familiar
  837.               with the file format written by  the  _P_u_t  command.
  838.               This  facility is still primitive and could be much
  839.               improved.
  840.  
  841.        DD      Define a path for the _R_u_n command to use.
  842.  
  843.        All file operations take a filename as the first  argument
  844.        to the prompt on the top line.  The prompt supplies a " to
  845.        aid in typing in the filename.  The filename can  also  be
  846.        obtained  from a cell's label string or string expression.
  847.        In this case, delete the leading " with the backspace  key
  848.        and enter a cell name such as _a_2_2 instead.  If the result-
  849.        ing string starts with ``|'', the rest of  the  string  is
  850.        interpreted as a UNIX command, as above.
  851.  
  852.  
  853.  
  854.  
  855.  
  856.                                                                13
  857.  
  858.  
  859.  
  860.  
  861.  
  862. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  863.  
  864.  
  865.    RRooww aanndd CCoolluummnn CCoommmmaannddss
  866.        These commands can be used on either rows or columns.  The
  867.        second letter of the command is either  a  row  designator
  868.        (one of the characters _r, _^_B, _^_F, _h, _l) or a column desig-
  869.        nator (one of _c, _^_P, _^_N, _k, _j).  A small  menu  lists  the
  870.        choices for the second letter when you type the first let-
  871.        ter of one of these commands.  Commands which move or copy
  872.        cells  also  modify  the  row  and  column  references  in
  873.        affected cell expressions.  The references may  be  frozen
  874.        by  using  the  _f_i_x_e_d operator or using the _$ character in
  875.        the reference to the cell (see below).
  876.  
  877.        iirr,, iicc Insert a new row (column) by moving the  row  (col-
  878.               umn)  containing the cell cursor, and all following
  879.               rows (columns), down (right) one row (column).  The
  880.               new row (column) is empty.
  881.  
  882.        aarr,, aacc Append a new row (column) immediately following the
  883.               current row (column).  It is initialized as a  copy
  884.               of the current one.
  885.  
  886.        ddrr,, ddcc Delete the current row (column).
  887.  
  888.        pprr,, ppcc,, ppmm
  889.               Pull  deleted  rows (columns) back into the spread-
  890.               sheet.  The last deleted set of cells is  put  back
  891.               into  the  spreadsheet at the current location.  _p_r
  892.               inserts enough rows to hold the data.   _p_c  inserts
  893.               enough  columns  to hold the data.  _p_m (merge) does
  894.               not insert rows or columns; it overwrites the cells
  895.               beginning at the current cell cursor location.
  896.  
  897.        vvrr,, vvcc Remove   expressions   from   the   affected   rows
  898.               (columns), leaving only the values  which  were  in
  899.               the cells before the command was executed.
  900.  
  901.        zzrr,, zzcc Hide  (``zap'')  the  current  row  (column).  This
  902.               keeps a row (column) from being displayed but keeps
  903.               it  in  the  data base.  The status of the rows and
  904.               columns is saved with the data base so hidden  rows
  905.               and columns will be still be hidden when you reload
  906.               the spreadsheet.  Hidden rows or  columns  are  not
  907.               printed by the _W command.
  908.  
  909.        ssrr,, sscc Show  hidden rows (columns).  Enter a range of rows
  910.               (columns) to be revealed.  The default is the first
  911.               range  of  rows  (columns)  currently hidden.  This
  912.               command ignores the repeat count, if any.
  913.  
  914.        ff      Set the output format to be used for  printing  the
  915.               numeric  values in each cell in the current column.
  916.               Enter three numbers: the total width in  characters
  917.               of the column, the number of digits to follow deci-
  918.               mal points, and the format type.  Format types  are
  919.  
  920.  
  921.  
  922.                                                                14
  923.  
  924.  
  925.  
  926.  
  927.  
  928. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  929.  
  930.  
  931.               0 for fixed point, 1 for scientific notation, 2 for
  932.               engineering notation, and 3 for dates.  Values  are
  933.               rounded  off  to  the  least significant digit dis-
  934.               played.  The total column width affects displays of
  935.               strings  as well as numbers.  A preceding count can
  936.               be used to affect more than one column.  This  com-
  937.               mand  has only a column version (no second letter).
  938.  
  939.        @@mmyyrrooww,, @@mmyyccooll
  940.               Are functions that return the row or column of  the
  941.               current  cell  respectively.  ex: The cell directly
  942.               above a cell in the D column could then be accessed
  943.               by  @nval("d",@myrow-1).   NOTE:  @myrow and @mycol
  944.               can't be used in specifying ranges.
  945.  
  946.    RRaannggee CCoommmmaannddss
  947.        Range operations affect a rectangular region on the screen
  948.        defined  by  the  upper  left and lower right cells in the
  949.        region.  All of the commands in this class  start  with  a
  950.        slash;  the  second  letter of the command indicates which
  951.        command.  A small menu lists the choices  for  the  second
  952.        letter  when  you  type  ``/''.   _p_n_a_m_e prompts for needed
  953.        parameters for each command.  Phrases surrounded by square
  954.        brackets  in  the prompt are informational only and may be
  955.        erased with the backspace key.
  956.  
  957.        Prompts requesting variable names may  be  satisfied  with
  958.        either  an  explicit variable name, such as _A_1_0, or with a
  959.        variable name previously defined  in  a  _/_d  command  (see
  960.        below).   Range  name  prompts  require either an explicit
  961.        range such as _A_1_0_:_B_2_0, or a range name previously  defined
  962.        with  a  _/_d  command.  A default range shown in the second
  963.        line is used if you omit the range  from  the  command  or
  964.        press  the  TAB key (see below).  The default range can be
  965.        changed by moving the cell cursor via the control commands
  966.        (_^_P,  _^_N,  _^_B,  _^_F)  or  the arrow keys.  The cells in the
  967.        default range are highlighted (using the terminal's stand-
  968.        out mode, if available).
  969.  
  970.        //xx     Clear a range.  Cells cleared with this command may
  971.               be recalled with any of the _p_u_l_l commands.
  972.  
  973.        //vv     Values only.  This command removes the  expressions
  974.               from  a  range of cells, leaving just the values of
  975.               the expressions.
  976.  
  977.        //cc     Copy a source range to a  destination  range.   The
  978.               source and destination may be different sizes.  The
  979.               result is always one or more  full  copies  of  the
  980.               source.   Copying  a  row  to  a  row yields a row.
  981.               Copying a column  to  a  column  yields  a  column.
  982.               Copying  a range to anything yields a range.  Copy-
  983.               ing a row to a column or a column to a row yields a
  984.               range  with  as  many copies of the source as there
  985.  
  986.  
  987.  
  988.                                                                15
  989.  
  990.  
  991.  
  992.  
  993.  
  994. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  995.  
  996.  
  997.               are cells in the destination.  This command can  be
  998.               used to duplicate a cell through an arbitrary range
  999.               by making the source a single cell  range  such  as
  1000.               _b_2_0_:_b_2_0.
  1001.  
  1002.        //ff     Fill  a  range with constant values starting with a
  1003.               given value and increasing by  a  given  increment.
  1004.               Each row is filled before moving on to the next row
  1005.               if row order recalculation is  set.   Column  order
  1006.               fills  each column in the range before moving on to
  1007.               the next column.  The start and  increment  numbers
  1008.               may  be  positive  or  negative.  To fill all cells
  1009.               with the same value, give an increment of zero.
  1010.  
  1011.        //dd     Use this command to assign a  symbolic  name  to  a
  1012.               single  cell or a rectangular range of cells on the
  1013.               screen.  The parameters are the name, surrounded by
  1014.               "",  and either a single cell name such as _A_1_0 or a
  1015.               range such as _a_1_:_b_2_0.  Names defined in this  fash-
  1016.               ion  are used by the program in future prompts, may
  1017.               be entered in response to prompts requesting a cell
  1018.               or  range  name, and are saved when the spreadsheet
  1019.               is saved with the _P_u_t command.  Names defined  must
  1020.               be more than two alpha characters long to differen-
  1021.               tiate them from a column names, and must  not  have
  1022.               embedded special characters.  Names may include the
  1023.               character ``_'' or numerals as long as  they  occur
  1024.               after the first three alpha characters.
  1025.  
  1026.        //ll     Use  this  command  to  lock  the current cell or a
  1027.               range of cells, i.e make them immune to any type of
  1028.               editing.  A  locked cell can't be changed in anyway
  1029.               until it is unlocked.
  1030.  
  1031.        //UU     This command is the opposite of the _/_l command  and
  1032.               thus unlocks a locked cell and makes it editable.
  1033.  
  1034.        //ss     This  command  lists  (shows) the currently defined
  1035.               range names.  If there are no defined range  names,
  1036.               then  a message is given, otherwise it pipes output
  1037.               to _s_o_r_t, then to _l_e_s_s.  If the environment variable
  1038.               PAGER is set, its value is used in place of _l_e_s_s_.
  1039.  
  1040.        //uu     Use  this  command to undefine a previously defined
  1041.               range name.
  1042.  
  1043.        //FF     Use this command to assign a  value  format  string
  1044.               (see  the  ``F''  cell entry command) to a range of
  1045.               cells.
  1046.  
  1047.    MMiisscceellllaanneeoouuss CCoommmmaannddss
  1048.  
  1049.        QQ
  1050.        qq
  1051.  
  1052.  
  1053.  
  1054.                                                                16
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  1061.  
  1062.  
  1063.        ^^CC     Exit from _p_n_a_m_e.  If you made any changes since the
  1064.               last  _G_e_t or _P_u_t, _p_n_a_m_e asks about saving your data
  1065.               before exiting.
  1066.  
  1067.        ^^GG
  1068.        EESSCC    Abort entry of the current command.
  1069.  
  1070.        ??      Enter an interactive help facility.  Lets you  look
  1071.               up brief summaries of the main features of the pro-
  1072.               gram.  The help facility is  structured  like  this
  1073.               manual  page so it is easy to find more information
  1074.               on a particular topic.
  1075.  
  1076.        !!      Shell escape.  _p_n_a_m_e prompts for a shell command to
  1077.               run.  End the command line with the RETURN key.  If
  1078.               the environment variable  SHELL  is  defined,  that
  1079.               shell  is  run.  If not, /bin/sh is used.  Giving a
  1080.               null command line starts the shell  in  interactive
  1081.               mode.  A second ``!'' repeats the previous command.
  1082.  
  1083.        ^^LL     Redraw the screen.
  1084.  
  1085.        ^^RR     Redraw the  screen  with  special  highlighting  of
  1086.               cells  to be filled in.  This is useful for finding
  1087.               values you need to provide or update in a form with
  1088.               which you aren't familiar or of which you have for-
  1089.               gotten the details.
  1090.  
  1091.               It's also useful for checking a form you are creat-
  1092.               ing.  All cells which contain constant numeric val-
  1093.               ues (not the result of a  numeric  expression)  are
  1094.               highlighted  temporarily,  until  the  next  screen
  1095.               change, however minor.   To  avoid  ambiguity,  the
  1096.               current  range  (if  any)  and current cell are not
  1097.               highlighted.
  1098.  
  1099.        ^^XX     This command is similar to _^_R, but highlights cells
  1100.               which  have  expressions.   It  also  displays  the
  1101.               expressions  in  the  highlighted  cells  as  left-
  1102.               flushed  strings,  instead  of  the  numeric values
  1103.               and/or label strings of those cells.  This  command
  1104.               makes it easier to check expressions, at least when
  1105.               they fit in their cells or  the  following  cell(s)
  1106.               are  blank  so  the expressions can slop over (like
  1107.               label strings).  In the latter case, the slop  over
  1108.               is  not  cleared  on the next screen update, so you
  1109.               may want to type _^_L after the _^_X in order to  clean
  1110.               up the screen.
  1111.  
  1112.        @@      Recalculates the spreadsheet.
  1113.  
  1114.        ^^VV     Type,  in the command line, the name of the current
  1115.               cell (the one at the cell cursor).  This is  useful
  1116.               when  entering  expressions  which  refer  to other
  1117.  
  1118.  
  1119.  
  1120.                                                                17
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  1127.  
  1128.  
  1129.               cells in the table.
  1130.  
  1131.        ^^WW     Type, in the command line, the expression  attached
  1132.               to  the current cell.  If there is none, the result
  1133.               is ``?''.
  1134.  
  1135.        ^^AA     Type, in the command line, the numeric value of the
  1136.               current cell, if any.
  1137.  
  1138.        The  _^_V,  _^_W, and _^_A commands only work when the character
  1139.        cursor is on the command line and beyond the first charac-
  1140.        ter.
  1141.  
  1142.        TTAABB    When  the  character  cursor  is  on  the top line,
  1143.               defines a range of cells  via  the  cursor  control
  1144.               commands  or  the  arrow  keys.  The range is high-
  1145.               lighted, starts at the cell where  you  typed  TAB,
  1146.               and  continues  through  the  current  cell cursor.
  1147.               Pressing TAB again causes the highlighted range  to
  1148.               be entered into the command line and the highlight-
  1149.               ing to be turned off.   This  is  most  useful  for
  1150.               defining   ranges  to  functions  such  as  _@_s_u_m().
  1151.               Pressing ``)'' acts just like typing  the  TAB  key
  1152.               the  second  time and adds the closing ``)''.  Note
  1153.               that when you give a range command, you don't  need
  1154.               to  press  the  first TAB to begin defining a range
  1155.               starting with the current cell.
  1156.  
  1157.    VVaarriiaabbllee NNaammeess
  1158.        Normally, a variable name is just the name of a cell, such
  1159.        as  _K_2_0.   The value is the numeric or string value of the
  1160.        cell, according to context.
  1161.  
  1162.        When a cell's expression (formula) is  copied  to  another
  1163.        location  via  _c_o_p_y or _r_a_n_g_e_-_c_o_p_y, variable references are
  1164.        by default offset by the amount the formula  moved.   This
  1165.        allows  the new formula to work on new data.  If cell ref-
  1166.        erences are not to change, you can either  use  the  _f_i_x_e_d
  1167.        operator  (see  below), or one of the following variations
  1168.        on the cell name.
  1169.  
  1170.        _K_2_0    References cell _K_2_0; the reference changes when the
  1171.               formula is copied.
  1172.  
  1173.        $$_K$$_2_0  Always  refers  to  cell  _K_2_0;  the reference stays
  1174.               fixed when the formula is copied.
  1175.  
  1176.        $$_K_2_0   Keeps the column fixed at column K; the row is free
  1177.               to vary.
  1178.  
  1179.        _K$$_2_0   Similarly, this fixes the row and allows the column
  1180.               to vary.
  1181.  
  1182.        These conventions also  hold  on  defined  ranges.   Range
  1183.  
  1184.  
  1185.  
  1186.                                                                18
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  1193.  
  1194.  
  1195.        references  vary when formulas containing them are copied.
  1196.        If the range is defined with  fixed  variable  references,
  1197.        the references do not change.
  1198.  
  1199.        ffiixxeedd  To  make a variable not change automatically when a
  1200.               cell moves, put the word _f_i_x_e_d in front of the ref-
  1201.               erence, for example: B1 * fixed C3.
  1202.  
  1203.    NNuummeerriicc EExxpprreessssiioonnss
  1204.        Numeric  expressions  used  with  the ``='' and _e commands
  1205.        have a fairly conventional  syntax.   Terms  may  be  con-
  1206.        stants,  variable  names,  parenthesized  expressions, and
  1207.        negated terms.  Ranges may be  operated  upon  with  range
  1208.        functions  such  as  sum  (_@_s_u_m())  and  average (_@_a_v_g()).
  1209.        Terms may be combined using binary operators.
  1210.  
  1211.        --e     Negation.
  1212.  
  1213.        e++e    Addition.
  1214.  
  1215.        e--e    Subtraction.
  1216.  
  1217.        e**e    Multiplication.
  1218.  
  1219.        e//e    Division.
  1220.  
  1221.        e1%%e2  e1 mod e2.
  1222.  
  1223.        e^^e    Exponentiation.
  1224.  
  1225.        e<<e
  1226.        e<<==e
  1227.        e==e
  1228.        e!!==e
  1229.        e>>==e
  1230.        e>>e    Relationals: true (1) if and only if the  indicated
  1231.               relation  holds, else false (0).  Note that ``<='',
  1232.               ``!='', and ``>='' are converted to  their  ``~()''
  1233.               equivalents.
  1234.  
  1235.        ~~e     Boolean operator NOT.
  1236.  
  1237.        e&&e    Boolean operator AND.
  1238.  
  1239.        e||e    Boolean operator OR.
  1240.  
  1241.        @if((ee,,e,ee))
  1242.        e??e::e  Conditional:  If  the first expression is true then
  1243.               the value of the second is returned, otherwise  the
  1244.               value of the third.
  1245.        Operator precedence from highest to lowest is:
  1246.               -, ~
  1247.               ^
  1248.               *, /
  1249.  
  1250.  
  1251.  
  1252.                                                                19
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  1259.  
  1260.  
  1261.               +, -
  1262.               <, <=, =, !=, >=, >
  1263.               &
  1264.               |
  1265.               ?:
  1266.    BBuuiilltt--iinn RRaannggee FFuunnccttiioonnss
  1267.        These functions return numeric values.
  1268.        @@ssuumm(r)           Sum  all valid (nonblank) entries in the
  1269.                          region whose two corners are defined  by
  1270.                          the two variable names (e.g.  _c_5_:_e_1_4) or
  1271.                          the range name specified.
  1272.        @@pprroodd(r)          Multiply together all  valid  (nonblank)
  1273.                          entries in the specified region.
  1274.        @@aavvgg(r)           Average  all valid (nonblank) entries in
  1275.                          the specified region.
  1276.        @@ccoouunntt(r)         Count all valid  (nonblank)  entries  in
  1277.                          the specified region.
  1278.        @@mmaaxx(r)           Return  the  maximum value in the speci-
  1279.                          fied region.  See also the  multi  argu-
  1280.                          ment version of _@_m_a_x below.
  1281.        @@mmiinn(r)           Return  the  minimum value in the speci-
  1282.                          fied region.  See also the  multi  argu-
  1283.                          ment version of _@_m_i_n below.
  1284.        @@ssttddddeevv(r)        Return  the sample standard deviation of
  1285.                          the cells in the specified region.
  1286.        @@llooookkuupp(e,r)
  1287.        @@llooookkuupp(se,r)     Evaluates the expression  then  searches
  1288.                          through  the  range  _r  for  a  matching
  1289.                          value.  The range  should  be  either  a
  1290.                          single  row  or  a  single  column.  The
  1291.                          expression  can  be  either   a   string
  1292.                          expression  or a numeric expression.  If
  1293.                          it is a numeric expression, the range is
  1294.                          searched  for  the  the  last value less
  1295.                          than or equal to _e.  If  the  expression
  1296.                          is  a string expression, the string por-
  1297.                          tions of the  cells  in  the  range  are
  1298.                          searched for an exact string match.  The
  1299.                          value returned is the numeric value from
  1300.                          the  next row and the same column as the
  1301.                          match, if the range was a single row, or
  1302.                          the  value  from the next column and the
  1303.                          same row as the match if the range was a
  1304.                          single column.
  1305.  
  1306.        @@hhllooookkuupp(e,r,n)
  1307.        @@hhllooookkuupp(se,r,n)  Evaluates  the  expression then searches
  1308.                          through the first row in the range _r for
  1309.                          a matching value.  The expression can be
  1310.                          either a string expression or a  numeric
  1311.                          expression.   If it is a numeric expres-
  1312.                          sion, the row is searched  for  the  the
  1313.                          last  value less than or equal to _e.  If
  1314.                          the expression is a  string  expression,
  1315.  
  1316.  
  1317.  
  1318.                                                                20
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  1325.  
  1326.  
  1327.                          the  string portions of the cells in the
  1328.                          row are searched  for  an  exact  string
  1329.                          match.    The   value  returned  is  the
  1330.                          numeric value from  the  same  column  _n
  1331.                          rows below the match.
  1332.  
  1333.        @@vvllooookkuupp(e,r,n)
  1334.        @@vvllooookkuupp(se,r,n)  Evaluates  the  expression then searches
  1335.                          through the first column in the range  _r
  1336.                          for  a  matching  value.  The expression
  1337.                          can be either a string expression  or  a
  1338.                          numeric  expression.  If it is a numeric
  1339.                          expression, the column is  searched  for
  1340.                          the the last value less than or equal to
  1341.                          _e.   If  the  expression  is  a   string
  1342.                          expression,  the  string portions of the
  1343.                          cells in the column are searched for  an
  1344.                          exact  string match.  The value returned
  1345.                          is the numeric value from the same row _n
  1346.                          columns to the right of the match.
  1347.  
  1348.        @@iinnddeexx(e,r)       Use  the  value  of  the expression _e to
  1349.                          index into the  range  _r.   The  numeric
  1350.                          value at that position is returned.  The
  1351.                          value 1 selects the first  item  in  the
  1352.                          range,  2  selects the second item, etc.
  1353.                          _R should be either a  single  row  or  a
  1354.                          single column.
  1355.  
  1356.        @@ssttiinnddeexx(e,r)     Use  the  value  of  _e to index into the
  1357.                          range _r.  The string value at that posi-
  1358.                          tion  is  returned.  The value 1 selects
  1359.                          the first item in the range,  2  selects
  1360.                          the  second item, etc.  The range should
  1361.                          be either a single row or a single  col-
  1362.                          umn.
  1363.  
  1364.    BBuuiilltt--iinn NNuummeerriicc FFuunnccttiioonnss
  1365.        All  of  these functions operate on floating point numbers
  1366.        (doubles) and return numeric values.   Most  of  them  are
  1367.        standard system functions more fully described in _m_a_t_h(3).
  1368.        The trig functions operate with angles in radians.
  1369.  
  1370.        @@ssqqrrtt(e)          Return the square root of _e.
  1371.  
  1372.        @@eexxpp(e)           Return the exponential function of _e.
  1373.  
  1374.        @@llnn(e)            Return the natural logarithm of _e.
  1375.  
  1376.        @@lloogg(e)           Return the base 10 logarithm of _e.
  1377.  
  1378.        @@fflloooorr(e)         Return the largest integer  not  greater
  1379.                          than _e.
  1380.  
  1381.  
  1382.  
  1383.  
  1384.                                                                21
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  1391.  
  1392.  
  1393.        @@cceeiill(e)          Return  the  smallest  integer  not less
  1394.                          than _e.
  1395.  
  1396.        @@rrnndd(e)           Round  _e   to   the   nearest   integer.
  1397.                          default: round-to-even (banker's round),
  1398.                          *.5 will round to the closest even  num-
  1399.                          ber; 'set rndinfinity' will round *.5 up
  1400.                          to the next integer.
  1401.  
  1402.        @@rroouunndd(e,n)       Round _e to _n decimal places.  n  may  be
  1403.                          positive  to round off the right side of
  1404.                          the decimal, and negative to  round  off
  1405.                          the  left  side.  See  @rnd(e) above for
  1406.                          rounding types.
  1407.  
  1408.        @@aabbss(e)
  1409.        @@ffaabbss(e)          Return the absolute value of _e.
  1410.        @@ppooww(e1,e2)       Return _e_1 raised to the power of _e_2.
  1411.        @@hhyyppoott(e1,e2)     Return sqrt(e1*e1+e2*e2), taking precau-
  1412.                          tions against unwarranted overflows.
  1413.        ppii  @@ppii           A constant quite close to pi.
  1414.        @@ddttrr(e)           Convert _e in degrees to radians.
  1415.        @@rrttdd(e)           Convert _e in radians to degrees.
  1416.        @@ssiinn(e)
  1417.        @@ccooss(e)
  1418.        @@ttaann(e)           Return trigonometric functions of radian
  1419.                          arguments.  The magnitude of  the  argu-
  1420.                          ments are not checked to assure meaning-
  1421.                          ful results.
  1422.  
  1423.        @@aassiinn(e)          Return the arc sine of _e  in  the  range
  1424.                          -pi/2 to pi/2.
  1425.  
  1426.        @@aaccooss(e)          Return  the arc cosine of _e in the range
  1427.                          0 to pi.
  1428.  
  1429.        @@aattaann(e)          Return the arc tangent of _e in the range
  1430.                          -pi/2 to pi/2.
  1431.  
  1432.        @@aattaann22(e1,e2)     Returns  the arc tangent of _e_1/_e_2 in the
  1433.                          range -pi to pi.
  1434.  
  1435.        @@mmaaxx(e1,e2,...)   Return the maximum of the values of  the
  1436.                          expressions.   Two  or  more expressions
  1437.                          may be specified.  See  also  the  range
  1438.                          version of _@_m_a_x above.
  1439.  
  1440.        @@mmiinn(e1,e2,...)   Return  the minimum of the values of the
  1441.                          expressions.  Two  or  more  expressions
  1442.                          may  be  specified.   See also the range
  1443.                          version of _@_m_i_n above.
  1444.  
  1445.        @@ssttoonn(se)         Convert  string  expression  _s_e   to   a
  1446.                          numeric value.
  1447.  
  1448.  
  1449.  
  1450.                                                                22
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  1457.  
  1458.  
  1459.        @@eeqqss(se1,se2)     Return  1  if  string expression _s_e_1 has
  1460.                          the same value as string expression _s_e_2,
  1461.                          0 otherwise.
  1462.  
  1463.        @@nnvvaall(se,e)       Return  the  numeric  value  of  a  cell
  1464.                          selected by name.  String expression  _s_e
  1465.                          must   evaluate   to   a   column   name
  1466.                          (``A''-``AE'') and _e must evaluate to  a
  1467.                          row  number  (0-199).  If _s_e or _e is out
  1468.                          of bounds, or the cell  has  no  numeric
  1469.                          value,  the  result  is  0.  You can use
  1470.                          this for simple table lookups.  Be  sure
  1471.                          the  table  doesn't  move  unexpectedly!
  1472.                          See also _@_s_v_a_l() below.
  1473.  
  1474.    SSttrriinngg EExxpprreessssiioonnss
  1475.        String expressions are made up of constant strings  (char-
  1476.        acters  surrounded  by  double quotation marks), variables
  1477.        (cell names, which refer to the cells's label  strings  or
  1478.        expressions),  and  string  functions.   Note  that string
  1479.        expressions are only allowed when entering a cell's  label
  1480.        string,  not  its  numeric  part.   Also  note that string
  1481.        expression results may be left or right  flushed  or  cen-
  1482.        tered, according to the type of the cell's string label.
  1483.  
  1484.        ##      Concatenate   strings.   For  example,  the  string
  1485.               expression
  1486.  
  1487.                    A0 # "zy dog"
  1488.  
  1489.               displays the string ``the lazy dog'' in the cell if
  1490.               the value of _A_0's string is ``the la''.
  1491.  
  1492.    BBuuiilltt--iinn SSttrriinngg FFuunnccttiioonnss
  1493.  
  1494.        @@ssuubbssttrr(se,e1,e2) Extract  and  return from string expres-
  1495.                          sion _s_e the substring indexed by charac-
  1496.                          ter  number  _e_1 through character number
  1497.                          _e_2 (defaults to the size of _s_e if beyond
  1498.                          the end of it).  If _e_1 is less than 1 or
  1499.                          greater than _e_2, the result is the  null
  1500.                          string.  For example,
  1501.  
  1502.                               @substr ("Nice jacket", 4, 7)
  1503.  
  1504.                          returns the string ``e jac''.
  1505.  
  1506.        @@ffmmtt(se,e)        Convert a number to a string.  The argu-
  1507.                          ment _s_e must be a valid _p_r_i_n_t_f(3) format
  1508.                          string.  _e is converted according to the
  1509.                          standard  rules.    For   example,   the
  1510.                          expression
  1511.  
  1512.                               @fmt ("**%6.3f**", 10.5)
  1513.  
  1514.  
  1515.  
  1516.                                                                23
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  1523.  
  1524.  
  1525.                          yields  the string ``**10.500**''.  _e is
  1526.                          a double, so applicable formats  are  e,
  1527.                          E,  f, g, and G.  Try ``%g'' as a start-
  1528.                          ing point.
  1529.  
  1530.        @@ssvvaall(se,e)       Return  the  string  value  of  a   cell
  1531.                          selected  by name.  String expression _s_e
  1532.                          must   evaluate   to   a   column   name
  1533.                          (``A''-``AE'')  and _e must evaluate to a
  1534.                          row number (0-199).  If _s_e or _e  is  out
  1535.                          of  bounds,  or  the  cell has no string
  1536.                          value, the result is  the  null  string.
  1537.                          You   can  use  this  for  simple  table
  1538.                          lookups.  Be sure the table doesn't move
  1539.                          unexpectedly!
  1540.  
  1541.        @@uuppppeerr(e)         and   @@lloowweerr(e)  will  case  the  string
  1542.                          expression to upper or lower.
  1543.  
  1544.        @@ccaappiittaall(e)       will convert the first letter  of  words
  1545.                          in  a  string  into upper case and other
  1546.                          letters to lower case (the latter if all
  1547.                          letters of the string are upper case).
  1548.  
  1549.        @@uuppppeerr(e)         and   @@lloowweerr(e)  will  case  the  string
  1550.                          expression to upper or lower.
  1551.  
  1552.        @@ccaappiittaall(e)       will convert the first letter  of  words
  1553.                          in a string into upper case.
  1554.  
  1555.        @@eexxtt(se,e)        Call  an  external  function (program or
  1556.                          script).  The purpose is to allow  arbi-
  1557.                          trary  functions  on  values, e.g. table
  1558.                          lookups  and   interpolations.    String
  1559.                          expression  _s_e  is  a command or command
  1560.                          line to call with _p_o_p_e_n(3).   The  value
  1561.                          of  _e  is  converted  to  a  string  and
  1562.                          appended to the command line as an argu-
  1563.                          ment.  The result of _@_e_x_t() is a string:
  1564.                          the first line printed to standard  out-
  1565.                          put  by the command.  The command should
  1566.                          emit exactly  one  output  line.   Addi-
  1567.                          tional  output,  or  output  to standard
  1568.                          error, messes  up  the  screen.   _@_e_x_t()
  1569.                          returns  a  null  string  and  prints an
  1570.                          appropriate warning  if  external  func-
  1571.                          tions  are  disabled, _s_e is null, or the
  1572.                          attempt to run the command fails.
  1573.  
  1574.                          External functions can be slow  to  run,
  1575.                          and if enabled are called at each screen
  1576.                          update, so they are disabled by default.
  1577.                          You  can  enable  them  with _^_T when you
  1578.                          really want them called.
  1579.  
  1580.  
  1581.  
  1582.                                                                24
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  1589.  
  1590.  
  1591.                          A simple example:
  1592.  
  1593.                               @ext ("echo", a1)
  1594.  
  1595.                          You  can  use  _@_s_t_o_n()  to  convert  the
  1596.                          _@_e_x_t()  result  back  to  a number.  For
  1597.                          example:
  1598.  
  1599.                               @ston (@ext  ("form.sc.ext",  a9  +
  1600.                          b9))
  1601.  
  1602.                          Note  that  you can built a command line
  1603.                          (including more argument values) from  a
  1604.                          string  expression  with  concatenation.
  1605.                          You can also "hide" the second  argument
  1606.                          by  ending the command line (first argu-
  1607.                          ment) with `` #'' (shell comment).
  1608.  
  1609.        @@ccoollttooaa(e)        Returns a string name for a column  from
  1610.                          the numeric argument.  For example:
  1611.  
  1612.                               @coltoa(@mycol-1)
  1613.                               @nval(coltoa(@mycol-1), @myrow+1)
  1614.  
  1615.  
  1616.  
  1617.    BBuuiilltt--iinn FFiinnaanncciiaall FFuunnccttiioonnss
  1618.        Financial functions compute the mortgage  (or  loan)  pay-
  1619.        ment, future value, and the present value functions.  Each
  1620.        accepts three arguments, an amount,  a  rate  of  interest
  1621.        (per  period), and the number of periods.  These functions
  1622.        are the same as those commonly found in other spreadsheets
  1623.        and financial calculators
  1624.  
  1625.        @@ppmmtt(e1,e2,e3)    _@_p_m_t(60000,.01,360) computes the monthly
  1626.                          payments for a $60000  mortgage  at  12%
  1627.                          annual  interest  (.01 per month) for 30
  1628.                          years (360 months).
  1629.  
  1630.        @@ffvv(e1,e2,e3)     _@_f_v(100,.005,36)  computes  the   future
  1631.                          value for of 36 monthly payments of $100
  1632.                          at 6% interest  (.005  per  month).   It
  1633.                          answers  the  question: "How much will I
  1634.                          have in 36 months if I deposit $100  per
  1635.                          month  in  a  savings  account paying 6%
  1636.                          interest compounded monthly?"
  1637.  
  1638.        @@ppvv(e1,e2,e3)     _@_p_v(1000,.015,36) computes  the  present
  1639.                          value  of  an  a  ordinary annuity of 36
  1640.                          monthly payments of $1000 at 18%  annual
  1641.                          interest.  It answers the question: "How
  1642.                          much can I borrow at 18% for 30 years if
  1643.                          I pay $1000 per month?"
  1644.  
  1645.  
  1646.  
  1647.  
  1648.                                                                25
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  1655.  
  1656.  
  1657.    BBuuiilltt--iinn DDaattee aanndd TTiimmee FFuunnccttiioonnss
  1658.        Time  for _p_n_a_m_e follows the system standard: the number of
  1659.        seconds since 1970.  All date and  time  functions  except
  1660.        _@_d_a_t_e() return numbers, not strings.
  1661.  
  1662.        @@nnooww              Return  the  current time encoded as the
  1663.                          number of seconds since the beginning of
  1664.                          the  epoch (December 31, 1969, midnight,
  1665.                          GMT.)
  1666.  
  1667.        @@ddttss(e1,e2,e3)    _@_d_t_s(9,14,1988)   converts   the    date
  1668.                          September 14, 1988 to the number of sec-
  1669.                          onds from the epoch to the first  second
  1670.                          of  9/14/88,  local  time.  For example,
  1671.                          _@_d_a_t_e(_@_d_t_s(12,14,1976)) yields
  1672.  
  1673.                               _T_u_e _D_e_c _1_4 _0_0_:_0_0_:_0_0 _1_9_7_6
  1674.  
  1675.                          The month should be range from  1 to 12,
  1676.                          the  day should range from 1 to the num-
  1677.                          ber of days in the specified month,  and
  1678.                          the year should range from 1970 to 1999.
  1679.  
  1680.        @@ttttss(e1,e2,e3)    _@_t_t_s(8,20,45) converts the time  8:40:45
  1681.                          to the number of seconds since midnight,
  1682.                          the night before.  The hour should range
  1683.                          from  0  to  23; the minutes and seconds
  1684.                          should range from 0 to 59.
  1685.  
  1686.        The following functions take the  time  in  seconds  (e.g.
  1687.        from  _@_n_o_w) as an argument and return the specified value.
  1688.        The functions all convert from GMT to local time.
  1689.  
  1690.        @@ddaattee(e)          Convert the time in seconds  to  a  date
  1691.                          string 24 characters long in the follow-
  1692.                          ing form:
  1693.  
  1694.                               _S_u_n _S_e_p _1_6 _0_1_:_0_3_:_5_2 _1_9_7_3
  1695.  
  1696.                          Note that you can extract parts of  this
  1697.                          fixed-format string with _@_s_u_b_s_t_r().
  1698.  
  1699.        @@yyeeaarr(e)          Return the year.  Valid years begin with
  1700.                          1970.  The last  legal  year  is  system
  1701.                          dependent.
  1702.  
  1703.        @@mmoonntthh(e)         Return the month, encoded as 1 (January)
  1704.                          to 12 (December).
  1705.  
  1706.        @@ddaayy(e)           Return the day of the month, encoded  as
  1707.                          1 to 31.
  1708.  
  1709.        @@hhoouurr(e)          Return  the  number  of hours since mid-
  1710.                          night, encoded as 0 to 23.
  1711.  
  1712.  
  1713.  
  1714.                                                                26
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  1721.  
  1722.  
  1723.        @@mmiinnuuttee(e)        Return the number of minutes  since  the
  1724.                          last full hour, encoded as 0 to 59.
  1725.  
  1726.        @@sseeccoonndd(e)        Return  the  number of seconds since the
  1727.                          last full minute, encoded as 0 to 59.
  1728.  
  1729.    SSpprreeaaddsshheeeett UUppddaattee
  1730.        Re-evaluation of spreadsheet expressions is done by row or
  1731.        by  column  depending  on  the selected calculation order.
  1732.        Evaluation is repeated up to  _i_t_e_r_a_t_i_o_n_s  times  for  each
  1733.        update if necessary, so forward references usually work as
  1734.        expected.  See _s_e_t above.  If  stability  is  not  reached
  1735.        after  ten iterations, a warning is printed.  This is usu-
  1736.        ally due to a long series of  forward  references,  or  to
  1737.        unstable  cyclic references (for example, set _A_0's expres-
  1738.        sion to ``A0+1'').
  1739.  
  1740.        @@nnuummiitteerr          Returns the number  of  iterations  per-
  1741.                          formed so far.
  1742.  
  1743. FFIILLEESS
  1744.        #LIBDIR#/tutorial.pname                 tutorial   spread-
  1745.                                                sheet
  1746.  
  1747. SSEEEE AALLSSOO
  1748.        bc(1), dc(1), crypt(1), ppname(1)
  1749.  
  1750. BBUUGGSS
  1751.        Top-to-bottom, left-to-right evaluation of expressions  is
  1752.        silly.   A  proper  following of the dependency graph with
  1753.        (perhaps) recourse to relaxation should be implemented.
  1754.  
  1755.        Only one previous value is saved from any call of  _@_e_x_t().
  1756.        If it is used more than once in a spreadsheet and external
  1757.        functions  are  enabled  and  later  disabled,  the   last
  1758.        returned value pops up in several places.
  1759.  
  1760.        On  some  systems,  if the cell cursor is in column 0 with
  1761.        topline enabled (so the current cell is  highlighted),  or
  1762.        if  any cell in column 0 is highlighted, the corresponding
  1763.        row number gets displayed and then blanked during a screen
  1764.        refresh.  This looks like a bug in _c_u_r_s_e_s.
  1765.  
  1766.        Many  commands  give  no indication (a message or beep) if
  1767.        they have null effect.  Some should give  confirmation  of
  1768.        their action, but they don't.
  1769.  
  1770. AAUUTTHHOORRSS
  1771.        This  is a much modified version of a public domain spread
  1772.        sheet originally authored by  James  Gosling,  and  subse-
  1773.        quently modified and posted to USENET by Mark Weiser under
  1774.        the name _v_c.  The program was subsequently renamed _s_c, and
  1775.        further  modified  by numerous contributors, Jeff Buhrt of
  1776.        Proslink,  Inc.   ({sequent,  uunet}!sawmill!prslnk!buhrt)
  1777.  
  1778.  
  1779.  
  1780.                                                                27
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786. PNAME #REVISION# (1)                         PNAME #REVISION# (1)
  1787.  
  1788.  
  1789.        and  Robert  Bond of Sequent, prominent among them.  Other
  1790.        contributors include: Tom Anderson, Glenn T.  Barry,  Gre-
  1791.        gory  Bond,  Stephen (Steve) M. Brooks, Peter Brower, John
  1792.        Campbell, Lawrence Cipriani,  Jim  Clausing,  Dave  Close,
  1793.        Chris Cole, Jonathan Crompron, David I. Dalva, Glen Ditch-
  1794.        field, Sam Drake, James P. Dugal, Paul Eggert, Andy  Fyfe,
  1795.        Jack Goral, Piercarlo "Peter" Grandi, Henk Hesselink, Jef-
  1796.        frey C Honig, Kurt Horton, Jonathan I. Kamens, Peter King,
  1797.        Tom  Kloos,  Casey  Leedom,  Jay Lepreau, Dave Lewis, Rick
  1798.        Linck, Soren Lundsgaard, Tad Mannes,  Rob  McMahon,  Chris
  1799.        Metcalf,  Mark  Nagel, Ulf Noren, Marius Olafsson, Gene H.
  1800.        Olson, Henk P. Penning, Rick  Perry,  Larry  Philps,  Eric
  1801.        Putz,   Jim  Richardson,  Michael  Richardson,  R.  P.  C.
  1802.        Rodgers, Kim Sanders,  Mike  Schwartz,  Alan  Silverstein,
  1803.        Lowell  Skoog,  Herr Soeryantono, Tim Theisen, Tom Tkacik,
  1804.        Andy Valencia, Adri Verhoef, Rick Walker,  Petri  Wessman,
  1805.        and Tim Wilson.
  1806.  
  1807.  
  1808.  
  1809.  
  1810.  
  1811.  
  1812.  
  1813.  
  1814.  
  1815.  
  1816.  
  1817.  
  1818.  
  1819.  
  1820.  
  1821.  
  1822.  
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833.  
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.                                                                28
  1847.  
  1848.  
  1849.