sc man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

SC(1)									 SC(1)

NAME
       sc - spreadsheet calculator

SYNOPSIS
       sc  [-a]	 [-c]  [-e]  [-m]  [-n] [-o] [-q] [-r] [-v] [-x] [-C] [-R] [-P
       range[/address] | /address] [-W range] [file...]

DESCRIPTION
       The spreadsheet calculator sc is based on rectangular tables much  like
       a  financial  spreadsheet.   When invoked, it first looks for a file in
       the user's home directory called .scrc and if found,  reads  that  file
       into  memory.  If that file contains the command ``set scrc'', sc looks
       for a file called .scrc in the current directory, and if	 found,	 reads
       that  file  into memory, too.  Next, it reads the options from the com‐
       mand line, and finally, it reads in the file or files specified on  the
       command	line  and  presents  the data in a table organized as rows and
       columns of cells.  If invoked without a file  argument,	the  table  is
       initially  empty,  unless it is running in a pipeline, in which case it
       will read its data from the standard input.  If more than one  file  is
       specified,  all files except the first one will be merged.  The default
       filename for saving a file with the Put command will be the same as the
       first  file  specified,	and the other files will be treated as macros.
       If you want to use advanced macros from the  command  line,  the	 ``|''
       must be quoted to prevent it from being expanded by the shell.

       Options	begin  with  -.	  However,  an	argument of a single - will be
       interpreted to mean that spreadsheet data will be taken from the	 stan‐
       dard  input.  This is useful for including sc in a pipeline if the sys‐
       tem supports pipes.  However, if standard input is not a terminal,  the
       -  is  only necessary if there are multiple files and standard input is
       not the last to be read, since standard input is automatically read  in
       after  all other files in such cases if it is not specified explicitly,
       or if there are no other filenames on  the  command  line.   If	sc  is
       included	 in  a pipeline, and a filename of ``-'' is not specified, the
       standard input will be merged in after all of  the  other  named	 files
       have been processed.

       The first argument not beginning with a -, or a single - by itself, and
       any subsequent arguments will all be interpreted as filenames (a	 file‐
       name  of	 -  meaning  standard  input as noted above).  In addition, an
       argument of -- may be used to signify  that  all	 subsequent  arguments
       should  be treated as filenames even if they begin with a -, but unlike
       -, -- won't be treated as a filename itself.

       Each cell may have associated with it a numeric value, a label  string,
       and/or  an  expression  (formula) which evaluates to a numeric value or
       label string, often based on other cell values.

       For an online tutorial, type the command:

	      sc /wrkdirs/math/sc/work/stage/usr/local/share/sc/tutorial.sc

       To print a quick reference card, type the command:

	      scqref | [your_printer_commmand]

OPTIONS
       -a     Do not run the autorun macro, if one is specified in the file.

       -c     Start the program with the recalculation being  done  in	column
	      order.

       -e     Start   the   program  with  round-to-even  (banker's  rounding)
	      enabled.

       -m     Start the program with automatic	recalculation  disabled.   The
	      spreadsheet  will be recalculated only when the ``@'' command is
	      used.

       -n     Start the program in quick numeric entry mode (see below).

       -o     Start the program with  automatic	 optimization  of  expressions
	      enabled.

       -q     Quit  after  loading all files, but before becoming interactive.
	      This is useful in shell scripts for getting information  from  a
	      file,  for  example, or using sc as a non-interactive calculator
	      using the eval command.

       -r     Start the program with the recalculation being done in row order
	      (default option).

       -v     When  piping  data  out  using the -P option (below), change all
	      expressions to values.  The -v option must precede the -P option
	      to  have	an  effect.   If the -P option is used more than once,
	      there must be a separate -v option for each instance of  the  -P
	      option.

       -x     Cause  the  Get  and  Put	 commands  (see	 below) to encrypt and
	      decrypt data files.

       -C     Start the program with automatic newline action set to increment
	      the column (see below).

       -P range[/address]
       -P /address
	      Pipe  a range to standard output.	 The output is similar to that
	      of the Put command (below), except that only cell data and  for‐
	      matting  information  for cells in the range are output, without
	      all of the colors, range definitions,  column  formatting,  etc.
	      The  optional  /address  is  used to adjust all addresses in the
	      range to a new starting point.  This is useful for copying  data
	      from  one	 file  to another, especially when used in conjunction
	      with the -v option (above), using something like merge  "|sc  -v
	      -Prange/address  filename"  (note the pipe symbol).  This option
	      may be used more than once to specify  multiple  ranges.	 Note,
	      however,	that  the  -v option must precede the -P option on the
	      command line, and there must be a separate -v  option  for  each
	      instance	of  the -P option.  Any instance of -P not preceded by
	      its own -v option will output unevaluated expressions.

	      A range of ``%'' may be used to refer to the entire spreadsheet.
	      If  the range is left out, as shown in the second form above, sc
	      will be started interactively in navigate mode, allowing you  to
	      navigate	the  spreadsheet  and  highlight the range you want to
	      output.  Pressing ESC, ^G, or  q	will  terminate	 without  out‐
	      putting any data.

       -R     Start the program with automatic newline action set to increment
	      the row (see below).

       -W     Pipe a range to standard output.	The  output  is	 identical  to
	      that of the Write command (below).  This option may be used more
	      than once to specify multiple ranges.  A range of ``%''  may  be
	      used to refer to the entire spreadsheet.

       All  of	these  options	can be changed with the ^T and S commands (see
       below) while sc is running.  Options specified when sc is invoked over‐
       ride options saved in the data file.

   Personal Initialization File
       When  sc first starts, it looks for a file in the user's home directory
       called .scrc and if found, loads it into memory.	 The  format  of  this
       file  is the same as any other sc file, but should be reserved for set‐
       ting certain defaults.  Any options set which have  equivalent  command
       line  options may be overridden by the command line.  If that file con‐
       tains the command ``set scrc'', sc will then look  for  a  file	called
       .scrc  in the current directory, and if found, load that file into mem‐
       ory, too (this is analogous to the ``set exrc'' command used by vi/ex).
       These ``dotfiles'' may be created by any text editor.  Several commands
       exist specifically for setting default  file  name  extensions  in  the
       .scrc  file,  although  they  may  also	be  used from macros, ordinary
       spreadsheet files, or from within sc at the command  line.   They  will
       not,  however,  be saved along with the file.  The extensions should be
       quoted, and should not include the preceding `.' (e.g., scext "sc" will
       add the extension .sc ).	 These commands are:

       scext  This is the default extension for normal sc files (those created
	      with the Put command).  If this command  is  not	used,  all  sc
	      files  will  be  saved  without  an  extension, and any existing
	      extension will not be removed.  Setting this option  causes  all
	      sc  files to be saved with the specified extension added, unless
	      it is already present.  If the file name already has  an	exten‐
	      sion of .sc, it will first be removed.  Any other extension will
	      not be removed.

       ascext This is the default extension for plain text files created  with
	      the  Write  command.  The file name will first be checked to see
	      if it already has an extension of either .sc  or	the  extension
	      specified	 with  scext  above, and if either one exists, it will
	      first be removed before  adding  the  new	 extension.   If  this
	      option is not set, a default of .asc will be used.

       tbl0ext
	      This  is	the  default  extension for files created with the Tbl
	      command if tblstyle is set to 0 (default).  The file  name  will
	      first be checked to see if it already has an extension of either
	      .sc or the extension specified with scext above, and  if	either
	      one  exists,  it	will  first  be	 removed before adding the new
	      extension.  If this option is not set, a default of .cln will be
	      used.

       tblext This  is	the  default  extension for files created with the Tbl
	      command if tblstyle is set to tbl.  The file name will first  be
	      checked  to  see if it already has an extension of either .sc or
	      the extension specified with scext  above,  and  if  either  one
	      exists,  it  will	 first be removed before adding the new exten‐
	      sion.  If this option is not set, a  default  of	.tbl  will  be
	      used.

       latexext
	      This  is	the  default  extension for files created with the Tbl
	      command if tblstyle is set to latex.  The file name  will	 first
	      be  checked  to see if it already has an extension of either .sc
	      or the extension specified with scext above, and if  either  one
	      exists,  it  will	 first be removed before adding the new exten‐
	      sion.  If this option is not set, a  default  of	.lat  will  be
	      used.

       slatexext
	      This  is	the  default  extension for files created with the Tbl
	      command if tblstyle is set to slatex.  The file name will	 first
	      be  checked  to see if it already has an extension of either .sc
	      or the extension specified with scext above, and if  either  one
	      exists,  it  will	 first be removed before adding the new exten‐
	      sion.  If this option is not set, a  default  of	.stx  will  be
	      used.

       texext This  is	the  default  extension for files created with the Tbl
	      command if tblstyle is set to tex.  The file name will first  be
	      checked  to  see if it already has an extension of either .sc or
	      the extension specified with scext  above,  and  if  either  one
	      exists,  it  will	 first be removed before adding the new exten‐
	      sion.  If this option is not set, a  default  of	.tex  will  be
	      used.

   General Information
       The  screen is divided into four regions.  The top line is for entering
       commands and displaying cell values.  The second line is	 for  messages
       from sc.	 The third line and the first four columns show the column and
       row numbers, from which are derived cell addresses, e.g.	  A0  for  the
       cell  in column A, row 0.  Note that column names are case-insensitive:
       you can enter A0 or a0.

       The rest of the screen forms a window looking at a portion of  the  ta‐
       ble.  The total number of display rows and columns available, hence the
       number of table rows and columns displayed, is set by curses(3) and may
       be  overridden  by setting the LINES and COLUMNS environment variables,
       respectively.

       The screen has two cursors: a cell cursor, indicated by either a	 high‐
       lighted	cell  or  a ``<'' on the screen, and a character cursor, indi‐
       cated by the terminal's hardware cursor.

       If a cell's numeric value is wider than the column  width  (see	the  f
       command),  the cell is filled with asterisks.  If a cell's label string
       is wider than the column width, it is truncated at  the	start  of  the
       next non-blank cell in the row, if any.

       Cursor  control commands and row and column commands can be prefixed by
       a numeric argument which indicates how many times the command is to  be
       executed.  You can type ^U before a repeat count if quick numeric entry
       mode is enabled.

   Changing Options

       ^To    Toggle options.  This command allows you to switch the state  of
	      one  option selected by o.  A small menu lists the choices for o
	      when you type ^T.	 Unless otherwise noted, the options  selected
	      are  saved when the data and formulas are saved so that you will
	      have the same setup next time you enter the spreadsheet.

	      a	     Automatic Recalculation.  When set, each  change  in  the
		     spreadsheet  causes  the  entire  spreadsheet be recalcu‐
		     lated.  Normally this is not  noticeable,	but  for  very
		     large  spreadsheets,  it may be faster to clear automatic
		     recalculation  mode  and  update  the   spreadsheet   via
		     explicit ``@'' commands.  Default is automatic recalcula‐
		     tion on.

	      b	     Braille enhancement mode.	See the braille section	 under
		     the  Set  command below for a complete description of how
		     to use this mode.	This option is not saved when saving a
		     file,  to	allow  blind and sighted users to easily share
		     files.  It is intended for use in a user's .scrc file.

	      c	     Current cell highlighting.	 If enabled, the current  cell
		     is	 highlighted  (using  the terminal's standout mode, if
		     available) and the cell  pointer  ``<''  is  turned  off.
		     This is enabled by default.

	      e	     External  function	 execution.   When  disabled, external
		     functions (see @ext() below) are not called.  This	 saves
		     a	lot of time at each screen update.  External functions
		     are disabled by default.  If disabled, and external func‐
		     tions  are	 used anywhere, a warning is printed each time
		     the screen is updated, and the result of  @ext()  is  the
		     value from the previous call, if any, or a null string.

	      i	     Automatic	insertion of rows/columns.  If this is enabled
		     and craction is set to move the cell cursor  either  down
		     or	 to the right after entering data into a cell, and the
		     last cell in a row/column in the scrolling portion	 of  a
		     framed  range was just filled, causing the cell cursor to
		     move outside of this range,  a  new  column/row  will  be
		     inserted,	thus  enlarging	 the range and allowing you to
		     continue entering data into the row/column without	 over‐
		     writing  the frame (which may contain expressions of some
		     sort, such as totals).  If autowrap is also  enabled,  it
		     will  take	 precedence, and a new row/column will only be
		     inserted after entering data in the very last cell	 (bot‐
		     tom right corner) of the scrolling range.	The default is
		     no automatic insertion.

	      w	     Automatic wrap to next row/column.	 If  this  is  enabled
		     and  craction  is set to move the cell cursor either down
		     or to the right after entering data into a cell, and  the
		     last  cell	 in a row/column in the scrolling portion of a
		     framed range was just filled, causing the cell cursor  to
		     move  outside of this range, the cell cursor will move to
		     the first cell in the next row/column in this range.   If
		     this would also take the cursor out of the scrolling por‐
		     tion of the range, the cursor will remain in last	edited
		     cell instead, unless autoinsert is also enabled, in which
		     case a new row/column will be added so  that  the	cursor
		     can wrap.	The default is no autowrap.

	      l	     Autolabeling.   If enabled, using the define command (rd)
		     causes a label to be automatically generated in the  cell
		     to	 the  left  of the defined cell.  This is only done if
		     the cell to the left is empty.  Default is enabled.

	      n	     Quick numeric  entry.   If	 enabled,  a  typed  digit  is
		     assumed  to  be the start of a numeric value for the cur‐
		     rent cell, not a repeat count,  unless  preceded  by  ^U.
		     Also,  the	 `+'  and  `-' keys will enter insert mode and
		     append a `+' or `-' to the existing contents of the cell,
		     allowing  the  user to easily add to or subtract from the
		     current numeric contents of the cell.   The  cursor  con‐
		     trols  (^P,  ^N,  or  any of the arrow keys) in this mode
		     will end a numeric entry if  the  entry  was  started  by
		     pressing  `+',  `-',  or  a digit.	 Switching from insert
		     mode to edit mode	will  cause  the  cursor  controls  to
		     revert to their normal functions.

	      o	     Automatic	 optimization  of  expressions.	  If  this  is
		     enabled, expressions which evaluate  to  a	 constant  are
		     automatically  optimized upon entry.  For example, if you
		     enter @pow(2,32) into a cell, the value  4294967296  will
		     be stored in that cell, whereas if optimization is turned
		     off, the calculated value	will  be  displayed,  but  the
		     actual  expression	 will  be  stored in the cell instead.
		     This allows you to edit the  expression  instead  of  re-
		     entering  it  from	 scratch  when you just want to make a
		     minor change.  Default is automatic optimization off.

	      t	     Top line display.	If enabled, the name and value of  the
		     current  cell  is displayed on the top line.  If there is
		     an associated label string, the first  character  of  the
		     string  value is ``|'' for a centered string, ``<'' for a
		     leftstring or ``>'' for a rightstring (see	 below),  fol‐
		     lowed  by	"string" for a constant string or {expr} for a
		     string expression.	 A constant string  may	 be  preceeded
		     with a backslash (`\').  In this case the constant string
		     will be used as a ``wheel'' to fill a column,  e.g.  "\-"
		     for a line in a column, and "\Yeh " for "Yeh Yeh Ye".  If
		     the cell has a numeric  value,  it	 follows  as  [value],
		     which may be a constant or expression.

	      $	     Dollar  prescale.	If enabled, all numeric constants (not
		     expressions) which you enter are multipled by 0.01 so you
		     don't  have to keep typing the decimal point if you enter
		     lots of dollar figures.

	      r	     Newline action.  This is a 3-way toggle which  determines
		     which  direction to move after pressing the RETURN key to
		     enter data into a cell.  It has the same effect as	 using
		     the  set (S) command to set the value of craction.	 After
		     selecting this option,  you  will	be  prompted  for  the
		     direction	you  want  to move.  Valid directions are down
		     (craction=1) and to the right (craction=2).  Pressing  j,
		     ^N,  or the cursor-down key will cause the cursor to move
		     down a cell each time you press the RETURN key and press‐
		     ing  l, the cursor-right key, or the space bar will cause
		     the cursor to move one cell to the right.	 Pressing  the
		     RETURN  key  at the prompt selects no action (craction=0,
		     which means that the cursor will remain  in  the  current
		     cell).   No  action  is  the default unless sc is started
		     with either the -R or -C option.  This option is  ignored
		     if	 the  cell into which data is being entered is not the
		     current cell.

	      s	     Enable/disable color slop.	 If a cell's label  string  is
		     wider  than  the column width, it will slop over into the
		     next cell to the right if that cell is  empty.   However,
		     if	 that  cell  is	 in  a	different color range than the
		     first, this slopover  will	 be  disabled,	regardless  of
		     whether the colors assigned to the two ranges are differ‐
		     ent or not.  If cslop is enabled, strings may  slop  over
		     even if the next cell is in a different color range, car‐
		     rying their color with them, which	 may  cause  a	ragged
		     boundary between the ranges, but may allow the strings to
		     be seen in their entirety.	 Cslop is disabled by default.

	      x	     Encryption.  See the -x option.

	      z	     Set newline action limits.	 This option  sets  limits  to
		     the  newline  action  option  above.  When this option is
		     invoked, the row and  column  of  the  current  cell  are
		     remembered.   If  a  later	 newline action would take the
		     current cell to the right of the remembered column,  then
		     the  current cell is instead moved to the first column of
		     the next row.  If a newline action would take the current
		     cell  below  the remembered row, then the current cell is
		     instead moved to the top row of the next column.

	      C	     Color.  This option enables color, and must be set before
		     any other color options, such as colorneg (color negative
		     numbers) or colorerr (color cells with errors), will have
		     an	 effect.   On a slow connection, turning off color can
		     noticeably speed up screen updates.

	      E	     Color cells with errors.  Setting this option will	 cause
		     all  cells	 with  expressions  which evaluate to ERROR or
		     INVALID to be set to color 3.  Color must be enabled  for
		     this option to take effect.

	      N	     Color  negative  numbers.	 When  this option is set, all
		     cells containing negative numbers will have  their	 color
		     number incremented by one.	 Cells with color 8 will cycle
		     back to color 1.  Color must be enabled for  this	option
		     to take effect.

	      The  quick  numeric entry, newline action and set newline action
	      limits options can be combined to	 allow	very  quick  entry  of
	      large  amounts  of  data.	 If all the data to be entered is in a
	      single row or column then setting the quick  numeric  entry  and
	      the  appropriate	newline	 action	 will  allow the numbers to be
	      entered without any explicit commands to	position  the  current
	      cell or enter a number.

	      If  the data entry involves several entries in each row for many
	      rows, then setting the quick numeric entry option,  setting  the
	      newline  action  to  move right after each entry and setting the
	      newline action limits on the last column on which data should be
	      entered  will allow the data to entered quickly.	An alternative
	      to setting newline action limits is to  enclose  the  range  for
	      entry  in	 a  frame (see "Framed Ranges" below), and setting the
	      autowrap option.	Setting autoinsert will	 insert	 new  rows  as
	      needed  if the frame includes data at the bottom.	 If necessary,
	      columns which do not need data to be entered can be hidden  with
	      the  z  command.	 Similar arrangements can be made for entering
	      several rows of data in each column.

       S      Set options.  This command allows you to set various options.  A
	      small  menu  lists the options that cannot be changed through ^T
	      above.

	      byrows/bycols
		     Specify the order cell evaluation when  updating.	 These
		     options  also  affect the order in which cells are filled
		     (see rf) and whether a row or column is cleared by	 an  x
		     command.

	      iterations=n
		     Set  the  maximum	number	of  recalculations  before the
		     screen is displayed again.	 Iterations is set  to	10  by
		     default.

	      tblstyle=s
		     Control  the  output  of  the  T  command.	  s  can be: 0
		     (default) to give colon delimited	fields,	 with  no  tbl
		     control  lines;  tbl to give colon delimited fields, with
		     tbl(1) control lines; latex to give a LaTeX tabular envi‐
		     ronment;  slatex  to  give	 a SLaTeX (Scandinavian LaTeX)
		     tabular environment; tex to  give	a  TeX	simple	tabbed
		     alignment	with  ampersands  as  delimiters; and frame to
		     give a tblstyle output for FrameMaker.

	      pagesize=n
		     Set the page size for the PageUp, PageDown, J, and K com‐
		     mands.   If  set  to 0, the default is to move up or down
		     half the number of rows displayed on the  screen,	or  if
		     the current cell is in a framed range, half the number of
		     displayed rows in the scrolling region of that range.

	      Other Set options are normally used only in sc data files	 since
	      they  are	 available through ^T.	You can also use them interac‐
	      tively.

	      autocalc/!autocalc
		     Set/clear auto recalculation mode.

	      autoinsert/!autoinsert
		     Set/clear automatic insertion mode.

	      autowrap/!autowrap
		     Set/clear autowrap mode.

	      optimize/!optimize
		     Set/clear auto optimize mode.

	      numeric/!numeric
		     Set/clear numeric mode.

	      prescale/!prescale
		     Set/clear numeric prescale mode.

	      extfun/!extfun
		     Enable/disable external functions.

	      toprow/!toprow
		     Set/clear top row display mode.

	      rndtoeven/!rndtoeven
		     Default: *.5 will be rounded  up  to  the	next  integer;
		     doing  a  'set  rndtoeven' will cause it to be rounded to
		     the closest even number instead (aka banker's  rounding).
		     Round-to-even  has	 advantages  over the default rounding
		     for some applications.  For example, if X+Y is  an	 inte‐
		     ger, then X+Y = rnd(X)+rnd(Y) with round-to-even, but not
		     always with the defaulting rounding method.   This	 could
		     be an advantage, for example, when trying to split an odd
		     amount of money  evenly  between  two  people  (it	 would
		     determine	who  gets  the	extra penny).  Note: rndtoeven
		     only effects the @rnd and @round functions.   It  has  no
		     effect on how a number is rounded to fit the display for‐
		     mat of a cell.

	      craction=n
		     Set the newline action.  n can be: 0 (default) to give no
		     action;  1	 to  move  down after each entry; or 2 to move
		     right after each entry.

	      rowlimit=n
		     Set the remembered limit for the maximum row below	 which
		     the  current  cell	 will  be moved to the top of the next
		     column if the newline action is set to move  the  current
		     cell  down.  n can be -1 (default) to disable this facil‐
		     ity.

	      collimit=n
		     Set the remembered limit for the maximum  column  to  the
		     right of which the current cell will be moved to the left
		     of the next row if the newline action is set to move  the
		     current  cell  right.   n	can be -1 (default) to disable
		     this facility.

	      color/!color
		     Enable color.  This option must  be  set  for  any	 other
		     color  options,  such  as	colorneg  or colorerr, to take
		     effect.  On a slow	 connection,  turning  off  color  can
		     noticeably speed up screen updates.

	      colorneg/!colorneg
		     Color  negative  numbers.	 When  this option is set, all
		     cells containing negative numbers will have  their	 color
		     number  increased	by one.	 Cells with color 8 will cycle
		     back to color 1.  Color must be enabled for  this	option
		     to take effect.

	      colorerr/!colorerr
		     Color  cells with errors.	Setting this option will cause
		     all cells with expressions which  evaluate	 to  ERROR  or
		     INVALID  to be set to color 3.  Color must be enabled for
		     this option to take effect.

	      cslop/!cslop
		     Enable color slop.	 If a cell's  label  string  is	 wider
		     than  the	column	width, it will slop over into the next
		     cell to the right if that cell  is	 empty.	  However,  if
		     that  cell	 is in a different color range than the first,
		     this slop over will be disabled,  regardless  of  whether
		     the  colors  assigned  to the two ranges are different or
		     not.  If cslop is enabled, strings may slop over even  if
		     the  next	cell  is  in a different color range, carrying
		     their color with them, which may cause a ragged  boundary
		     between  the ranges, but may allow the strings to be seen
		     in their entirety.	 Cslop is disabled by default.

	      The following Set options are considered	personal  preferences,
	      or are terminal dependent, and are therefore not saved when sav‐
	      ing a file, but are instead intended for use in a	 user's	 .scrc
	      file.

	      braille/!braille
		     Set/clear	 braille   enhancement	 mode.	 When  braille
		     enhancement mode is set, the cursor behaves in  a	manner
		     that makes the use of sc much easier when using a braille
		     display.  In spite of its name, this mode also works well
		     with screen readers such as SpeakUp, and can even be used
		     by sighted users to make cutting and  pasting  using  the
		     screen program much easier.

		     There are actually two different braille modes.  When the
		     braille option is set, the C command, which  is  normally
		     used  to set colors, will instead change from one braille
		     mode to the other.	 If it is desired to set/change colors
		     so	 you  can  share files with others not using a braille
		     display, braille mode will have to be switched off tempo‐
		     rarily,  and then switched back on after the color opera‐
		     tion is done.

		     When the braille option is set, the default braille  mode
		     will  cause  the cursor to be positioned at the left edge
		     of the current cell, while	 the  alternate	 braille  mode
		     will  cause  the  cursor to be placed at the beginning of
		     the top line, which will contain information such as  the
		     current  cell  address,  contents of the cell, and column
		     formatting information.  The column names	will  also  be
		     moved  to	the  left  edge of their respective columns in
		     order to remain aligned with the cursor as	 it  moves  up
		     and down the column.

		     In either mode, the cursor will be placed in the top line
		     when editing a line, except when  switching  to  navigate
		     mode,  in	which case the cursor will be placed in either
		     the current cell (default braille	mode)  or  the	second
		     line,  where  the	cell  address or default range will be
		     displayed (alternate braille mode).

		     Whenever a message is displayed on the second line,  such
		     as	 an  error  message or prompt for further information,
		     both modes will cause the cursor  to  be  placed  at  the
		     beginning of that message.	 After this message goes away,
		     the cursor will revert to its former behavior.  The easi‐
		     est  way  to  make this message go away without effecting
		     anything, except in the cases where it is asking the user
		     for  more	information, is to press CC, which effectively
		     changes modes twice, with a net effect of leaving	sc  in
		     the original mode.

	      locale/!locale
		     If	 locale	 support is compiled into sc, this option will
		     cause certain locale-dependent  behaviors,	 such  as  the
		     display  of  numbers and the determination of word bound‐
		     aries for some operations in edit	mode.	Note  that  if
		     this option is set and the environment variable LC_ALL is
		     unrecognized, unset, or set to either ``POSIX'' or ``C'',
		     commas in format commands will be ignored.

	      cellcur/!cellcur
		     Set/clear current cell highlighting mode.	This option is
		     included here because it is likely to be terminal	depen‐
		     dent and/or a user preference, and therefore is not saved
		     when saving a file.

	      scrc   It tells sc to also read the file .scrc  in  the  current
		     directory	when  starting.	  Settings  in	this file will
		     override those in $HOME/.scrc but may themselves be over‐
		     ridden  by command line options.  Setting this could be a
		     potential	security  risk,	 since	starting  sc  with  an
		     unknown  .scrc  could  potentially execute arbitrary com‐
		     mands.  This  risk	 is  probably  very  slight,  since  a
		     spreadsheet  program  is not likely to be run in just any
		     directory, and should never be run as root.

   Cursor Control Commands

       ^A     Go to cell A0 (same as HOME).

       ^P     Move the cell cursor up to the previous row.

       ^N     Move the cell cursor down to the next row.

       ^H     Move the cell cursor backward one column.

       SPACE  Move the cell cursor forward one column.	When in navigate mode,
	      if a range is highlighted, insert the highlighted range into the
	      command line, followed by a space, while remaining  in  navigate
	      mode.   This  is	useful when entering copy, move, or frame com‐
	      mands, for example, which accept more than one range argument.

       h, j, k, l
	      These are alternate, vi-compatible cell cursor  controls	(left,
	      down, up, right).	 Space is just like l (right).

       H, J, K, L
	      These move the cursor by half pages (left, down, up, right).  If
	      pagesize is nonzero, up/down paging will be  by  pagesize	 rows,
	      instead.

       ^F, ^B Same as J and K above.

       PAGE-DOWN PAGE-UP
	      Same as J and K above.

       TAB    If  the  character  cursor is on the top line, TAB tries to com‐
	      plete a range name if the character immediately preceding it  is
	      alphanumeric  or	``_'',	and starts a range if not (see below).
	      Otherwise, move the cell cursor forward one column.

       HOME   Go to cell A0.

       END    Same as ^E (see below).

       Arrow Keys
	      The terminal's arrow keys provide another alternate set of  cell
	      cursor controls if they exist and are supported in the appropri‐
	      ate termcap entry.  Some terminals have arrow  keys  which  con‐
	      flict  with  other  control  key codes.  For example, a terminal
	      might send ^H when the back arrow	 key  is  pressed.   In	 these
	      cases,  the  conflicting arrow key performs the same function as
	      the key combination it mimics.

       ^      Move the cell cursor up to row 0 of the current column.

       #      Move the cell cursor down to the last valid row of  the  current
	      column.

       0      Move  the	 cell  cursor backward to column A of the current row.
	      This command must be prefixed with ^U  if	 quick	numeric	 entry
	      mode is enabled.

       $      Move  the	 cell  cursor  forward to the last valid column of the
	      current row.

       b      Scan the cursor backward (left and up)  to  the  previous	 valid
	      cell.

       w      Scan the cursor forward (right and down) to the next valid cell.

       g      Go  to  a cell.  sc prompts for a cell's name, a regular expres‐
	      sion surrounded by quotes, or a number.  If a cell's  name  such
	      as  ae122 or the name of a defined range is given, the cell cur‐
	      sor goes directly to that cell.  If a quoted regular  expression
	      such  as " Tax Table " or " ^Jan [0-9]*$ " is given, sc searches
	      for a cell containing a string matching the regular  expression.
	      See  regex(3)  or	 ed(1) for more details on the form of regular
	      expressions.

	      You can also search formatted numbers or expressions using regu‐
	      lar  expressions	by preceding the opening quotes of the regular
	      expression with a ``#'' (for formatted numbers) or a ``%''  (for
	      expressions).   These are handy for searching for dates within a
	      specified range or cells which reference a given cell, for exam‐
	      ple,  although  they  are somewhat slower than searching through
	      ordinary strings, since all numbers must be formatted or expres‐
	      sions decompiled on the fly during the search.

	      If  a number is given, sc will search for a cell containing that
	      number.  Searches for either strings or numbers proceed  forward
	      from the current cell, wrapping back to a0 at the end of the ta‐
	      ble, and terminate at the current cell if the string  or	number
	      is  not  found.  You may also go to a cell with an ERROR (divide
	      by zero, etc. in this cell) or INVALID (references a  cell  con‐
	      taining  an  ERROR).   g error  will take you to the next ERROR,
	      while g invalid take you to the next INVALID.  The last  g  com‐
	      mand  is saved, and can be re-issued by entering g<return>.  You
	      can also repeat the last search by pressing n.

	      An optional second argument is available whose  meaning  depends
	      on  whether you're doing a search or jumping to a specific cell.
	      When doing a search, the second argument specifies  a  range  to
	      search.	When  jumping  to a specific cell, the second argument
	      specifies which cell should be in the upper lefthand  corner  of
	      the screen, if possible, which allows you to position the desti‐
	      nation cell where you want it on the screen.

       ^Ed    Go to end of range.  Follow ^E by a direction indicator such  as
	      ^P or j.	If the cell cursor starts on a non-blank cell, it goes
	      in the indicated direction until	the  last  non-blank  adjacent
	      cell.  If the cell cursor starts on a blank cell, it goes in the
	      indicated direction until the first non-blank cell.   This  com‐
	      mand  is	useful	when  specifying ranges of adjacent cells (see
	      below), especially when the range is  bigger  than  the  visible
	      window.

	      If  ^E is pressed twice in succession, or if it is pressed after
	      another ^E or a ^Y, it will cause the screen to scroll up	 with‐
	      out moving the cell cursor, unless the cell cursor is already at
	      the top of the screen, in which case, it will remain at the  top
	      of the visible screen.

       ^Y     Causes the screen to scroll down without moving the cell cursor,
	      unless the cell cursor is already at the bottom of  the  screen,
	      in  which	 case,	it  will  remain  at the bottom of the visible
	      screen.

       mx     Mark the current cell.  sc will prompt for a lowercase letter to
	      be  used	as  a mark specifier.  Marked cells may be used as the
	      source for the c (copy a marked cell) command, or as the	target
	      of  a  ` or ' (go to marked cell) command.  In addition to cells
	      marked with lowercase letters, sc also automatically  marks  the
	      last  nine cells that have been edited with the numbers 1-9, and
	      the current cell being edited with the number 0.	When not edit‐
	      ing a cell, marks 0 and 1 usually refer to the same cell, unless
	      the last edit was begun in one cell, but the  cell  address  was
	      changed  before  pressing	 the  RETURN key, or the last edit was
	      aborted prematurely.

       `x     Jump to a previously marked cell.	 If the target	cell  is  cur‐
	      rently  on  the  screen, sc will simply jump to the target cell,
	      making it current.  Otherwise, sc will  attempt  to  center  the
	      cell  on	the screen, if possible.  As a special case, following
	      the ` with another ` will return you to the  cell	 you  were  in
	      before  the last g, ', `, *, or ^E (or END key) was used to jump
	      to another cell.

       'x     Jump to a previously marked cell.	 ' works just like ` ,	except
	      that ' will attempt to restore the marked cell to the same posi‐
	      tion on the screen as when it  was  marked.   It	does  this  by
	      remembering  which cell was in the upper left hand corner of the
	      screen at the time the mark was set, and restoring that cell  to
	      its  original position.  As a special case, following the ' with
	      another ' will return you to the cell you	 were  in  before  the
	      last  g, ', `, *, or ^E (or END key) was used to jump to another
	      cell, and will also try to position that cell on the  screen  in
	      the same position as when you left it.

       z<RETURN>
	      Move  the	 current row to the top of the screen.	If the current
	      row is in a framed range, move the current row to the top of the
	      scrolling region.

       z.     Move the current row to the center of the screen.

       z|     Move the current column to the center of the screen.

       zc     Center the current cell both horizontally and vertically.

   Cell Entry and Editing Commands
       Cells  can  contain  both  a  numeric value and a string value.	Either
       value can be the result of an expression, but not both  at  once,  i.e.
       each  cell can have only one expression associated with it.  Entering a
       valid numeric expression alters the cell's previous numeric  value,  if
       any,  and replaces the cell's previous string expression, if any, leav‐
       ing only the previously	computed  constant  label  string.   Likewise,
       entering a valid string expression alters the cell's the previous label
       string, if any, and replaces the cell's previous numeric expression, if
       any, leaving only the previously computed constant numeric value.

       =      Enter  a	numeric	 constant or expression into the current cell.
	      sc prompts for the expression on the top line.  The usual way to
	      enter a number into a cell is to type ``='', then enter the num‐
	      ber in response to the  prompt  on  the  top  line.   The	 quick
	      numeric  entry  option, enabled through the -n option or ^T com‐
	      mand, shows the prompt when you enter the first digit of a  num‐
	      ber  (you can skip typing ``='').	 If you want to begin entering
	      an expression in the current cell, but you want to start out  in
	      navigate	mode  (e.g. to enter cell addresses, or sums of ranges
	      using ``@sum''), use the ``+'' command instead (see below).

       <      Enter a label string into the current cell to  be	 flushed  left
	      against the left edge of the cell.

       \      Enter a label string into the current cell to be centered in the
	      column.

       >      Enter a label string into the current cell to be	flushed	 right
	      against the right edge of the cell.

       {      Left justify the string in the current cell.

       |      Center the string in the current cell.

       }      Right justify the string in the current cell.

       F      Enter a format string into the current cell.  This format string
	      overrides the precision specified with the f command unless & is
	      present in the fractional part of the format string (see below).
	      The format only applies to numeric values.  There are two	 types
	      of  format  strings  allowed: standard numeric and date.	(Note:
	      these format strings may also be used with the f command to cre‐
	      ate user-defined format types.)  The following characters can be
	      used to build a standard numeric format string:

	      #	     Digit placeholder.	 If the number	has  fewer  digits  on
		     either side of the decimal point than there are `#' char‐
		     acters in	the  format,  the  extra  `#'  characters  are
		     ignored.	The  number  is rounded to the number of digit
		     placeholders as there are to the  right  of  the  decimal
		     point.  If there are more digits in the number than there
		     are digit placeholders on the left side  of  the  decimal
		     point, then those digits are displayed.

	      0	     Digit  placeholder.  Same as for `#' except that the num‐
		     ber is padded with zeroes on either side of  the  decimal
		     point.   The  number  of zeroes used in padding is deter‐
		     mined by the number of digit placeholders after  the  `0'
		     for  digits  on the left side of the decimal point and by
		     the number of digit placeholders before the `0' for  dig‐
		     its on the right side of the decimal point.

	      .	     Decimal  point.  Determines how many digits are placed on
		     the right and left sides of the decimal point in the num‐
		     ber.   If locale is set, the decimal point for the user's
		     current locale will be used  when	formatting  a  number.
		     Note  that numbers smaller than 1 will begin with a deci‐
		     mal point if the left side of the decimal point  contains
		     only  a  `#' digit placeholder.  Use a `0' placeholder to
		     get a leading zero in decimal formats.

	      %	     Percentage.  For each `%' character in  the  format,  the
		     actual  number  gets multiplied by 100 (only for purposes
		     of formatting -- the original number is left  unmodified)
		     and  the  `%' character is placed in the same position as
		     it is in the format.

	      ,	     Thousands separator.  The presence of a `,' in the format
		     (multiple	commas are treated as one) will cause the num‐
		     ber to be formatted with a `,'  separating	 each  set  of
		     three  digits in the integer part of the number with num‐
		     bering beginning from the right end of the	 integer.   If
		     locale  is	 set,  the  thousands separator for the user's
		     current locale will be used in place of  the  comma.   If
		     the  environment  variable LC_ALL is unset, unrecognized,
		     or is set to ``POSIX'' or ``C'',  any commas in the  for‐
		     mat string will be ignored.

	      &	     Precision.	  When	this character is present in the frac‐
		     tional part of the number, it is equivalent to  a	number
		     of	 0's  equal  to	 the precision specified in the column
		     format command.  For example, if the precision is 3,  `&'
		     is equivalent to `000'.

	      \	     Quote.   This  character  causes the next character to be
		     inserted into the formatted string directly with no  spe‐
		     cial interpretation.

	      E- E+ e- e+
		     Scientific	 format.  Causes the number to be formatted in
		     scientific notation.  The case of the `E' or `e' given is
		     preserved.	  If  the  format uses a `+', then the sign is
		     always given for the exponent value.  If the format  uses
		     a	`-',  then  the	 sign  is only given when the exponent
		     value is negative.	 Note that if there is no digit place‐
		     holder  following	the  `+' or `-', then that part of the
		     formatted number is left out.  In general,	 there	should
		     be one or more digit placeholders after the `+' or `-'.

	      ;	     Format selector.  Use this character to separate the for‐
		     mat into two distinct formats.  The format to the left of
		     the  `;'  character  will	be used if the number given is
		     zero or positive.	The format to the  right  of  the  `;'
		     character is used if the number given is negative.

	      Some  example  formats  are  integer  (``0''  or	``#''),	 fixed
	      (``0.00''),  percentage  (``0%''	 or   ``0.00%''),   scientific
	      (``0.00E+00''), and currency (``$#,0.00;($#,0.00)'').

	      Date  format  strings  are identified by the presence of a ^D in
	      the first postition.  If this is present, the remainder  of  the
	      string  is passed to the strftime() function, and therefore uses
	      the same conversion specifiers as strftime().  For more informa‐
	      tion  on	conversion specifiers for date format strings, see the
	      man page for strftime(3).

       Strings you enter must start with ".  You can leave off the trailing  "
       and  sc will add it for you.  You can also enter a string expression by
       backspacing over the opening " in the prompt.

       e      Edit the value associated with the current cell.	This is	 iden‐
	      tical  to ``='' except that the command line starts out contain‐
	      ing the old numeric value	 or  expression	 associated  with  the
	      cell.  The editing in this mode is vi-like.

	      ^H     Move back a character

	      ^V, v  Enter  navigate  mode.   This mode allows you to navigate
		     the spreadsheet while editing a command.  When  in	 navi‐
		     gate mode, v will insert the numeric value of the current
		     cell, if any, into the command line,  instead,  while  ^V
		     will return to the previous mode (like the ESCAPE key).

	      ^W     Insert  the  expression attached to the current cell into
		     the command line.	If there is none, the result is ``?''.
		     This only works while in navigate mode.

	      ^A     In	 navigate  mode,  go to cell A0.  When not in navigate
		     mode, jump to the beginning of the line instead.

	      ^E     Jump to the end of the line.  Unlike ``$'' (below),  this
		     can also be used from insert mode.

	      TAB    If	 the  character	 immediately  preceding	 the cursor is
		     alphanumeric or ``_'', TAB tries to find a match  in  the
		     list  of  range names, and if one is found, the name will
		     be completed on the command line.	If there are  multiple
		     matches, pressing TAB repeatedly without any other inter‐
		     vening keys will cycle through all of the valid  matches.
		     If	 the character immediately preceding the cursor is not
		     alphanumeric or ``_'', TAB defines a range of  cells  via
		     the  cursor control commands or the arrow keys.  Pressing
		     TAB automatically switches sc to  navigate	 mode  if  you
		     haven't  already  done  so	 using the ^V command, and the
		     range is highlighted, starting  at	 the  cell  where  you
		     typed  TAB,  and  continuing  through  the	 current cell.
		     Pressing TAB again causes the  highlighted	 range	to  be
		     inserted  into  the  command line, the highlighting to be
		     turned off, and the previous mode to be  restored.	  This
		     is	 most  useful for defining ranges to functions such as
		     @sum().  Pressing ``)'' acts just like typing the TAB key
		     the  second  time	and adds the closing ``)''.  Note that
		     when you give a range command, if the first  argument  to
		     the command is a range, you don't need to press the first
		     TAB to begin defining a range starting with  the  current
		     cell.

	      :	     Synonym for TAB, when in navigate mode.

	      ` '    In navigate mode, go to marked cell.

	      *	     In navigate mode, go to note linked to current cell.

	      +	     Forward through history (same as j)

	      -	     Backward through history (same as k)

	      ESC    Done editing

	      CR     Save.  When in navigate mode, insert the name of the cur‐
		     rent cell (the one at the cell cursor) into  the  command
		     line.   This  is  useful  when entering expressions which
		     refer to other cells in the table.

	      $	     Goto last column

	      %	     Goto matching parenthesis

	      .	     Insert current dot buffer.	 When in navigate  mode,  this
		     is a synonym for : or TAB.

	      ;	     Repeat the last f, F, t, or T command.

	      ,	     Repeat the last f, F, t, or T command, but in the reverse
		     direction.

	      ~	     Change the case of the character under the cursor.

	      /	     Search backwards for a string in the history
		     ESC  edit the string you typed
		     CR	  search
		     ^H	  backspace

	      ?	     Search forward for a string in  the  history  (see	 ``/''
		     above)

	      0	     Goto column 0

	      B	     Move  back a word.	 Like b, except words are space delim‐
		     ited only.

	      C	     Change to end of line (delete first,  then	 enter	insert
		     mode)

	      D	     Delete to end of line

	      F	     Find the next char typed, moving backwards in the line

	      G	     Go	 to  the  end of history, i.e., to the line being cur‐
		     rently entered

	      I	     Insert at column 0; ESC revert back to edit mode

	      N	     Repeat the last search in the opposite direction

	      P	     Insert the most recently deleted text before the cursor

	      R	     Replace mode; ESC revert back to edit mode

	      T	     Goto a char, moving backwards in the line

	      W	     Forward a word.  Like w, except words are space delimited
		     only.

	      X	     Delete the char to the left

	      a	     Append after cursor; ESC revert back to edit mode

	      b	     Move back a word

	      c	     Change  mode;  ESC revert back to edit mode.  In navigate
		     mode, insert color range which includes the current cell.

	      d	     Delete ...
		     0	  delete to beginning of line
		     $	  delete to end of line
		     b	  back word
		     e	  delete to end of word
		     f	  forward (right)
		     h	  back char
		     l	  forward
		     t	  delete forward up to a given char (next char typed)
		     w	  delete next word forward

	      e	     Forward to next end-of-word

	      f	     Find the next char typed.	In navigate mode,  insert  the
		     outer frame range which includes the current cell.

	      g	     In	 navigate  mode, allows you to `goto' a cell or range,
		     just like the regular goto	 command.   Ignored  in	 edit,
		     insert or replace modes.

	      h	     Move left a char

	      i	     Insert before cursor; ESC revert back to edit mode

	      j	     Forward through history (same as +)

	      k	     Backward through history (same as -)

	      l	     Move right a char

	      n	     Repeat the last search (find the next match)

	      o	     When  highlighting	 a range in navigate mode, move to the
		     opposite corner of the highlighted range.

	      p	     Insert the most recently deleted text after the cursor

	      q	     Stop editing

	      r	     Replace char.  In navigate mode, insert the  inner	 frame
		     range which includes the current cell.

	      s	     Delete  current  char  and	 enter insert mode (stands for
		     substitute)

	      t	     Goto a char

	      u	     Undo

	      w	     Forward a word

	      x	     Delete the current char (moving to the right)

	      y	     Copies to the delete buffer without deleting.  Use like d
		     (above).

       E      Edit the string associated with the current cell.	 This is iden‐
	      tical to ``<'', ``\'', or ``>'' except  that  the	 command  line
	      starts out containing the old string value or expression associ‐
	      ated with the cell.  SEE e ABOVE.

       To enter and edit a cell's number part, use the	``='',	``+'',	and  e
       commands.   To  enter  and  edit	 a  cell's string part, use the ``<'',
       ``\'', ``>'', and E commands.  See the sections below  on  numeric  and
       string expressions for more information.

       Note  that  the	descriptions of the ``+'' and ``-'' commands below may
       seem very confusing at first, but once  they're	understood,  they  can
       facilitate  the rapid entry of expressions which add and subtract large
       numbers of cells and sums of ranges of cells, so read them  over	 care‐
       fully several times until you understand them.

       "      Specify  a  named	 buffer for the next yank/delete/pull command.
	      Buffers are  named  with	a  single  character.	Buffers	 ``a''
	      through ``z'' are general purpose buffers, buffers ``1'' through
	      ``9'' hold the last nine deletions, with buffer ``1'' being  the
	      most  recent,  and  buffer  ``0''	 holds	the last cell or range
	      yanked.  Buffer ``"'' is the default  buffer,  which  holds  the
	      last cell or range that was deleted or yanked.

       x      Clear  the  current  cell.   Deletes  the	 numeric  value, label
	      string, and/or numeric or string	expression.   You  can	prefix
	      this  command with a count of the number of cells on the current
	      row to clear.  The current column is used if  column  recalcula‐
	      tion  order  is  set.   Cells  cleared  with this command may be
	      recalled with any of the pull commands (see below).

       mx     Mark the current cell.  sc will prompt for a lowercase letter to
	      be  used	as  a mark specifier.  Marked cells may be used as the
	      source for the copy command, or as the target of a ` or ' (go to
	      marked cell) command.

       cx     Copy a marked cell to the current cell, adjusting row and column
	      references in its numeric or string expression, if any.  sc will
	      prompt  for  the	name  of the cell to be copied, which may be a
	      lowercase letter specified previously  with  the	m  command,  a
	      digit 1-9 to reference one of the last nine edited cells (0 will
	      reference the last cell in which an edit was  begun,  regardless
	      of  whether  the edit was completed or not), or ``.''  to refer‐
	      ence the current cell, which, as a special case, is to  be  used
	      as  a source rather than a destination, and is to be copied into
	      a range which includes the current cell.	When ``.''  is	speci‐
	      fied,  the  current  cell is set as the default source range for
	      the range copy (rc)  command,  and  then	the  copy  command  is
	      entered  into the command line and sc switches to navigate mode.
	      Moving the cell  cursor  will  then  highlight  the  destination
	      range.   After the desired range is highlighted, press RETURN to
	      execute the copy.

       +      If not  in  numeric  mode,  add  the  current  numeric  argument
	      (default 1) to the value of the current cell.  The current value
	      of the cell must not be  an  expression.	 In  numeric  mode,  +
	      switches	to  insert  mode  and  appends	a ``+'' to the current
	      expression or value, if any, which  makes	 it  easy  to  add  to
	      existing data.

	      In  navigate  mode,  + inserts the current cell address into the
	      line, followed by another +, and sc remains  in  navigate	 mode,
	      unless  a	 range	is highlighted.	 If a range is highlighted and
	      the character immediately preceding the cursor  is  a  ``+''  or
	      ``-'',  or  the  cursor  is at the beginning of an empty ``let''
	      expression, the string ``@sum('' will be inserted,  followed  by
	      the  highlighted range, followed by ``)+''.  If a range is high‐
	      lighted and the character immediately preceding  the  cursor  is
	      not  a ``+'' or ``-'', and the cursor is not at the beginning of
	      an empty ``let''	expression,  the  highlighted  range  will  be
	      inserted, followed by  ``)+''.

       -      If  not  in  numeric mode, subtract the current numeric argument
	      (default 1) from the value of the	 current  cell.	  The  current
	      value of the cell must not be an expression.  In numeric mode, -
	      switches to insert mode and  appends  a  ``-''  to  the  current
	      expression  or  value,  if  any, which makes it easy to subtract
	      from existing data.

	      In navigate mode, - inserts the current cell  address  into  the
	      line,  followed  by  another -, and sc remains in navigate mode,
	      unless a range is highlighted.  If a range  if  highlighted  and
	      the  character  immediately  preceding  the cursor is a ``+'' or
	      ``-'', or the cursor is at the beginning	of  an	empty  ``let''
	      expression,  the	string ``@sum('' will be inserted, followed by
	      the highlighted range, followed by ``)-''.  If a range is	 high‐
	      lighted  and  the	 character immediately preceding the cursor is
	      not a ``+'' or ``-'', and the cursor is not at the beginning  of
	      an  empty	 ``let''  expression,  the  highlighted	 range will be
	      inserted, followed by  ``)-''.

       RETURN If you are not editing a cell  (top  line	 is  empty),  pressing
	      RETURN  will  make  sc enter insert mode.	 At this point you may
	      type any valid command or press ESC once to edit.

   File Commands

       G      Get a new database from a file.  If encryption is	 enabled,  the
	      file is decrypted before it is loaded into the spreadsheet.

       P      Put the current database into a file.  If encryption is enabled,
	      the file is encrypted before it is saved.

       ZZ     Save the current database into a file if it has  been  modified,
	      and  then	 quit.	 This  is like the P command followed by the q
	      command, except that the default filename will be	 used  instead
	      of  prompting you for one, and the file will only be saved if it
	      was modified.  If there is no default filename, an error message
	      will be displayed, and no action taken.

       W      Write  a	listing	 of the current database into a file in a form
	      that matches its appearance on the screen.   This	 differs  from
	      the  Put	command	 in that its files are intended to be reloaded
	      with Get, while Write produces a file for	 people	 to  look  at.
	      Hidden rows or columns are not shown when the data is printed.

       T      Write  a	listing of the current database to a file, but include
	      delimiters suitable for processing by the tbl, LaTeX, or TeX ta‐
	      ble  processors.	 The delimiters are controlled by the tblstyle
	      option.  See Set above.  The  delimiters	are  a	colon (:)  for
	      style 0 or tbl and an ampersand (&) for style latex or tex.

       With  the  Put,	Write, and Table commands, the optional range argument
       writes a subset of the spreadsheet to the output file.

       With the Write and Table commands, if you try to write to the last file
       used with the Get or Put commands, or the file specified on the command
       line when sc was invoked, you are asked to  confirm  that  the  (poten‐
       tially) dangerous operation is really what you want.

       The three output commands, Put, Write, and Table, can pipe their (unen‐
       crypted only) output to a program.  To use this feature, enter ``| pro‐
       gram''  to  the prompt asking for a filename.  For example, to redirect
       the output of the Write command to the printer, you might enter ``| lpr
       -p''.

       M      Merge  the  database  from the named file into the current data‐
	      base.  Values and expressions defined in the named file are read
	      into the current spreadsheet overwriting the existing entries at
	      matching cell locations.

       R      Run macros.  There are two different kinds of macros that can be
	      used  with  sc:  simple  macros,	which are stored in plain text
	      files, and advanced macros,  which  are  executable  files,  and
	      which  can  be written in the language of your choice.  Advanced
	      macros are only available on systems that support pipes.

	      Simple macros are interpreted by sc's internal parser,  and  use
	      the  same	 commands  used to enter data and perform other opera‐
	      tions (the single key commands are  shortcuts  which  switch  to
	      input  mode  after first entering the beginning of the full com‐
	      mand for you).  These are also the same  commands	 found	in  sc
	      files created with the Put command.  Since sc files are saved as
	      ASCII files, it is possible to use them as primitive macro defi‐
	      nition files.  The Run command makes this easier.	 It's like the
	      Merge command, but prints a saved path name as the start of  the
	      filename	to merge in.  The string to use is set with the Define
	      command.	To write macros, you must be familiar  with  the  file
	      format written by the Put command.

	      Advanced macros use executable files that are started by sc as a
	      child process with stdin and stdout redirected back  to  sc  for
	      bidirectional communication.  Special commands are available for
	      requesting information such as cell contents, formatting	infor‐
	      mation,  or  the	current location of the cell cursor.  Commands
	      are written to stdout, and responses are read  from  stdin.   To
	      use  advanced  macros, the filename must be preceded by a | (the
	      pipe symbol), and the file must be executable.  If the  pathname
	      set  with	 the Define command begins with a |, all files in that
	      path will be executed as advanced macros.	 It is	also  possible
	      to  include  a  filename as part of the path when using advanced
	      macros, which allows you to put  multiple	 macros	 in  a	single
	      file,  and  use the Run command to add command line arguments or
	      options to determine which macro should be run.  Advanced macros
	      are relatively new, and documentation is still incomplete.  This
	      feature will probably be enhanced in future releases.

       A      Specify a macro to be automatically  run	whenever  the  current
	      sheet is reloaded from a file.

       D      Define a path for the Run command to use (see above).

       All file operations take a filename as the first argument to the prompt
       on the top line.	 The prompt supplies a " to aid in typing in the file‐
       name.   The filename can also be obtained from a cell's label string or
       string expression.  In  this  case,  delete  the	 leading  "  with  the
       backspace  key  and  enter  a  cell  name  such as a22 instead.	If the
       resulting string starts with ``|'', the rest of the  string  is	inter‐
       preted as a UNIX command, as above.

   Row and Column Commands
       These  are two-letter commands which can be used on either rows or col‐
       umns.  The exceptions are the f command, which only works  on  columns,
       and therefore doesn't require a second letter, and the p command which,
       in addition to operating on rows or columns, has several other  options
       for  merging the data in directly, without opening up a new row or col‐
       umn.  There are also a few special cases where pressing the same letter
       twice  will  affect  only  the  current cell instead of a row or column
       (except for ZZ, which is a special case all its own).

       In all of the remaining cases, the second letter of the command will be
       either  r  or c, depending on whether the operation should be performed
       on rows or columns, respectively (additional options for the p  command
       and  the double letter cases are listed below).	A small menu lists the
       choices for the second letter when you type the first letter of one  of
       these commands.

       Alternatively,  you may define a range of rows or columns by moving the
       cell cursor, either a cell at a time, or by pages (roughly 1/2  screen,
       unless  the  pagesize option has been set), but this only works for the
       d, y, and Z commands.  Vertical cursor movement will begin highlighting
       rows,  and  horizontal  movement	 will highlight columns.  Pressing the
       RETURN key will then perform the	 chosen	 operation  on	the  specified
       rows/columns.

       Commands	 which copy cells also modify the row and column references in
       affected cell expressions.  The references may be frozen by  using  the
       @fixed  operator	 or using the $ character in the reference to the cell
       (see below).  Commands which create new rows or	columns	 will  include
       all  newly  created  cells in the same ranges (named, framed, color, or
       those used in expressions) as their counterparts in the current row  or
       column.	 This  can  sometimes  be  a  significant factor when deciding
       whether to use ir/ic or or/oc.

       ir, ic Insert a new row (column) by moving the row (column)  containing
	      the  cell cursor, and all following rows (columns), down (right)
	      one row (column).	 The new row  (column)	is  empty.   Inserting
	      rows while the cell cursor is in a framed range will only effect
	      rows in that range, leaving all  rows  to	 the  left  and	 right
	      untouched.

       or, oc Open a new row (column).	These commands work like the ir and ic
	      commands, except that the new  row  (column)  will  be  inserted
	      after the current row (column) instead of before it.

       ar, ac Append  a new row (column) immediately following the current row
	      (column).	 It is initialized as  a  copy	of  the	 current  one.
	      Appending	 rows  while the cell cursor is in a framed range will
	      only effect rows in that range, leaving all rows to the left and
	      right untouched.

       dr, dc, dd
	      Delete  the  current  row (column).  dd deletes the current cell
	      (i.e., it is a synonym for x).  Deleting	rows  while  the  cell
	      cursor is in a framed range will only effect rows in that range,
	      leaving all rows to the left and right untouched.

       yr, yc, yy
	      Yank a copy of the current row (column) into the	delete	buffer
	      without  actually deleting it.  yy yanks the current cell (simi‐
	      lar to x, but without actually  deleting	the  contents  of  the
	      cell).   Yanking rows while the cell cursor is in a framed range
	      will only copy the portion of each row contained in that	range,
	      while ignoring everything outside the range.

       pr, pc, pp, pm, px, pt, pC, p.
	      Pull  deleted rows/columns/cells back into the spreadsheet.  The
	      last set of cells that was deleted or yanked is  put  back  into
	      the spreadsheet at the current location.	pr inserts enough rows
	      to hold the data.	 pc inserts enough columns to hold  the	 data.
	      pp  (paste)  does	 not insert rows or columns; it overwrites the
	      cells beginning at the current cell cursor location.  pm (merge)
	      merges  the  cells  in  at the current cell cursor location, but
	      does not erase the destination range first like pp.  The differ‐
	      ence  between pp and pm is similar to the difference between the
	      Get and Merge commands.  pf (format) works like pm  except  that
	      only  cell  formatting  information  is  merged  in, leaving the
	      actual data untouched.  This makes it easy to copy cell  formats
	      from  one	 part  of  the	spreadsheet  to	 another, such as when
	      expanding an existing spreadsheet file.	px  (exchange)	copies
	      the  contents  of	 the delete buffer into the range beginning at
	      the current cell cursor location, while  simultaneously  copying
	      the  contents of this range back into the delete buffer, replac‐
	      ing its current contents.	 pt (transpose) overwrites  the	 cells
	      beginning	 at  the  current  cell	 cursor	 location like pp, but
	      transposes rows for columns and vice  versa.   pC	 (copy)	 works
	      like  pp,	 except	 that  all cell references are adjusted in the
	      same way that they are for the copy command.  p.	is the same as
	      pC,  except  that it switches to navigate mode and allows you to
	      define the destination range to be used.	This  works  like  the
	      copy  command  in	 that if the source range (the contents of the
	      delete buffer) is a single row, column, or cell, multiple copies
	      may be made.

       vr, vc, vv
	      Remove  expressions  from	 the  affected rows (columns), leaving
	      only the values which were in the cells before the  command  was
	      executed.	 When used in a framed range, vr only affects the por‐
	      tion of the the row inside the range, leaving the	 rest  of  the
	      row  unchanged.	vv  only  affects  the contents of the current
	      cell.

       Zr, Zc, ZZ
	      Hide (``zap'') the current row (column).	This keeps a row (col‐
	      umn)  from  being	 displayed but keeps it in the data base.  The
	      status of the rows and columns is saved with the	data  base  so
	      hidden rows and columns will still be hidden when you reload the
	      spreadsheet.  Hidden rows or columns are not printed  by	the  W
	      command.	 The  ZZ  command is a special case.  It does not hide
	      anything.	 Instead, the file will be saved, if modified, and  sc
	      will exit.  See ZZ above, under File Commands.

       sr, sc Show  hidden rows (columns).  Enter a range of rows (columns) to
	      be revealed.  The default is the first range of  rows  (columns)
	      currently	 hidden.   This	 command  ignores the repeat count, if
	      any.

       f      Set the output format to be used for printing the numeric values
	      in  each	cell  in  the current column.  This command has only a
	      column version (no second letter).  You may  change  the	column
	      width  by pressing the h, <, or cursor left key to reduce it, or
	      the l, >, or cursor right key to increase it.  Likewise, you may
	      change  the  precision  (the  number of digits to follow decimal
	      points) by pressing the j, -, or cursor down key to  reduce  it,
	      or  the  k,  +,  or  cursor up key to increase it.  You may also
	      change the format type for the column by pressing any digit.  If
	      the  f  command is preceded by a numeric argument, that argument
	      will determine how many columns  should  be  changed,  beginning
	      with  the	 current  column,  and	in the case of incrementing or
	      decrementing the width or precision of the columns, each	column
	      will be incremented or decremented separately, regardless of its
	      initial values.  Several formatting operations may be  performed
	      in sequence.  To leave the formatting command, simply press ESC,
	      ^G, q, or RETURN .

	      Alternatively, you may press SPACE to get the format command  in
	      the  top	line  and  enter all three values directly.  In order,
	      these are: the total width in characters of the column, the pre‐
	      cision,  and  the	 format	 type.	 Format	 types are 0 for fixed
	      point, 1 for scientific notation, 2 for engineering notation,  3
	      for  dates  with	a  two digit year, and 4 for dates with a four
	      digit year.  Values are rounded off  to  the  least  significant
	      digit  displayed.	  The  total  column width affects displays of
	      strings as well as numbers.  A preceding count can  be  used  to
	      affect more than one column.

	      You  can	also  create your own format types by pressing = after
	      the f command, followed by any digit (see the  F	command	 above
	      under  Cell  Entry and Editing Commands for a description of how
	      to build a format string).  Format  numbers  0  through  4  will
	      supersede	 the  built-in format types, while numbers 5 through 9
	      will supplement them.  User defined format types may be used  in
	      the same way as the built-in types.  For example, the command

		     format 5 = "#,0.& ;(#,0.&)"

	      will define a currency format which may then be assigned to col‐
	      umn C, for example, with the command

		     format C 10 2 5

       @myrow, @mycol
	      Are functions that return the row or column of the current  cell
	      respectively.   ex: The cell directly above a cell in the D col‐
	      umn could then be accessed by @nval("d",@myrow-1).  NOTE: @myrow
	      and @mycol can't be used in specifying ranges.

       @lastrow, @lastcol
	      These return the last row and column of the spreadsheet, respec‐
	      tively.  They are useful for macros designed to default  to  the
	      whole spreadsheet.

   Range Commands
       Range  operations  affect a rectangular region on the screen defined by
       the upper left and lower right cells in the region.  All	 of  the  com‐
       mands  in this class begin with ``r''; the second letter of the command
       indicates which command.	 A small menu lists the choices for the second
       letter  when you type ``r''.  sc prompts for needed parameters for each
       command.	 Phrases surrounded by	square	brackets  in  the  prompt  are
       informational only and may be erased with the backspace key.

       Prompts	requesting  variable  names  may  be  satisfied with either an
       explicit variable name, such as A10, or with a variable name previously
       defined in a rd command (see below).  Range name prompts require either
       an explicit range such as A10:B20, or a range name  previously  defined
       with a rd command.  A default range shown in the second line is used if
       you omit the range from the command or press the TAB key	 (see  below).
       The default range can be changed by moving the cell cursor via the con‐
       trol commands (^P or ^N) or the arrow keys.  The cells in  the  default
       range  are  highlighted	(using the terminal's standout mode, if avail‐
       able).

       rx     Clear a range.  Cells cleared with this command will be saved in
	      the delete buffer, and may be recalled with any of the pull com‐
	      mands.

       ry     Yank a range.  Like rx, cells yanked with this command  will  be
	      saved  in the delete buffer, and may be recalled with any of the
	      pull commands.  This command differs from rx, however,  in  that
	      the  original  cells will not be cleared.	 Although this command
	      may be used to copy a range of cells, it treats  all  references
	      as  fixed.   Use rc if you want references to be relative to the
	      cell which contains them unless specified otherwise, either with
	      the @fixed operator or using the $ character in the reference to
	      the cell.

       rc     Copy a source range to a destination range.  The source and des‐
	      tination	may  be	 different sizes.  The result is always one or
	      more full copies of the source.  Copying a row to a row yields a
	      row.   Copying  a column to a column yields a column.  Copying a
	      range to anything yields a range.	 Copying a row to a column  or
	      a	 column	 to  a	row  yields a range with as many copies of the
	      source as there are cells in the destination.  This command  can
	      be used to duplicate a cell through an arbitrary range by making
	      the source a single cell range such as b20:b20.

	      If the source range is omitted  (second  argument),  the	source
	      range from the last copy command will be used, unless a range is
	      currently highlighted, in which case the highlighted range  will
	      be  copied  instead.   If	 both the source range and destination
	      range are omitted, the current cell will be used as the destina‐
	      tion, unless a range is currently highlighted, in which case the
	      highlighted range will serve as the destination, and the	source
	      range from the last copy command will be copied into that desti‐
	      nation.

       rm     Move a source range to a destination range.  This	 differs  from
	      deleting	a range with rx and pulling it back in with pm in that
	      any expressions that reference a cell in the range to  be	 moved
	      will  reference  the  cell  at  its  new address after the move.
	      Unlike the rc command, the destination of a  move	 is  a	single
	      cell,  which  will  be  the  upper lefthand corner of the source
	      range after the move.

       rv     Values only.  This command removes the expressions from a	 range
	      of cells, leaving just the values of the expressions.

       rs     Sort  a  range.	The rows in the specified range will be sorted
	      according to criteria given in the form of a string  of  charac‐
	      ters.   This  string,  enclosed in double quotes, may comprise a
	      single criterion or multiple criteria  in	 decreasing  order  of
	      precedence.   Each  criterion  has three parts, all of which are
	      mandatory.  The first part is a single character, which must  be
	      either  +	 or -, which specifies whether the sort should be done
	      in ascending or  descending  order,  respectively.   The	second
	      part,  which  is also a single character, must be either # or $,
	      and is used to specify whether the sort should be based  on  the
	      numeric  portion	or  the	 string	 portion, respectively, of the
	      cells being used for the comparison.   The  third	 part  may  be
	      either  one  or  two  characters,	 and  must be alphabetic (case
	      insensitive), and specifies the column to be  used  when	making
	      the comparisons.	This column must be in the range being sorted.
	      Any number of criteria may be concatenated, and will be used  in
	      the  order specified.  If no criteria are specified, the default
	      behavior is to sort in ascending order, first by string and then
	      by  number, using the leftmost column of the range being sorted.
	      This is equivalent to specifying	the  sort  criteria  to	 be  "
	      +$a+#a  ",  where both a's are replaced by the name of the left‐
	      most column of the range being sorted.

       rf     Fill a range with constant values starting with  a  given	 value
	      and  increasing by a given increment.  Each row is filled before
	      moving on to the next row if row	order  recalculation  is  set.
	      Column  order fills each column in the range before moving on to
	      the next column.	The start and increment numbers may  be	 posi‐
	      tive  or	negative.  To fill all cells with the same value, give
	      an increment of zero.

       r{     Left justify all strings in the specified range.

       r}     Right justify all strings in the specified range.

       r|     Center all strings in the specified range.

       rd     Use this command to assign a symbolic name to a single cell or a
	      rectangular  range  of  cells on the screen.  The parameters are
	      the name, surrounded by "", and either a single cell  name  such
	      as A10 or a range such as a1:b20.	 Names defined in this fashion
	      are used by the program in future prompts,  may  be  entered  in
	      response	to  prompts  requesting	 a cell or range name, and are
	      saved when the spreadsheet is saved with the Put command.	 Names
	      defined  may  be	any combination of alphanumeric characters and
	      `_' as long as the name isn't a valid cell  address.   Thus,  x,
	      H2SO4, and 3rdDay are all valid names, but H2 is not.

       rl     Use  this	 command to lock the current cell or a range of cells,
	      i.e. make them immune to any type of  editing.   A  locked  cell
	      can't be changed in any way until it is unlocked.

       rU     This  command is the opposite of the rl command and thus unlocks
	      a locked cell and makes it editable.

       rS     This command shows lists of the currently defined	 range	names,
	      framed  ranges,  and color definitions and ranges, one after the
	      other.  The output of this command will be piped	to  less.   If
	      the  environment	variable  PAGER	 is  set, its value is used in
	      place of less.

       ru     Use this command to undefine a previously defined range name.

       rF     Use this command to assign a value format string (see the	 ``F''
	      cell entry command) to a range of cells.

       rr     This  command  is	 used  for  creating,  modifying, and deleting
	      framed ranges.  A framed range, is one which  has	 a  number  of
	      rows or columns specified at the top, bottom, left, and/or right
	      (the frame) which must remain onscreen whenever the cell	cursor
	      is  within  that	range.	In other words, a frame consists of an
	      outer range and an inner range, where the inner range is allowed
	      to  scroll within the outer range.  Once a frame is defined, the
	      inner range may be resized, but the outer	 range	remains	 fixed
	      unless rows or columns are added or deleted within the range.

	      When  this command is invoked, you will be prompted for the type
	      of frame-related action you would	 like  to  perform.   You  may
	      select an option from the list by typing its first letter.

	      The  options are top, bottom, left, right, all, and unframe.  If
	      you choose top, bottom, left, or right, you will be prompted for
	      a range and number of rows/columns.  The range may be omitted if
	      the cell cursor is in a  previously  defined  framed  range,  in
	      which  case  that range's outer range will be used instead.  The
	      number of rows/columns will set or adjust the width of the  cor‐
	      responding side of the frame.  If all of these widths are set to
	      zero, the frame will be undefined (same as the unframe command).

	      If you choose all, you will be prompted for an outer  range  and
	      an inner range, in which case the inner range will scroll within
	      the outer range, and any rows or columns outside	of  the	 inner
	      range,  but inside the outer range will be part of the ``frame''
	      that is to remain onscreen.  The outer range may be  omitted  if
	      the  cell	 cursor	 is  in	 a previously defined framed range, in
	      which case the previously defined	 outer	range  will  be	 used.
	      However,	if  a  single  range is specified on the command line,
	      while another range wholly contained within this range is	 high‐
	      lighted,	the  specified	range will be used as the outer range,
	      and the highlighted range will be used as the inner  range.   If
	      no  range is specified on the command line, but a range is high‐
	      lighted, and the highlighted range is wholly contained within  a
	      previously  defined  framed range, the highlighted range will be
	      used as the inner range, and the previously defined outer	 range
	      will be used as the outer range.

	      If  you choose unframe, you will be prompted for a range, and if
	      the range is found in the list of	 frames,  the  frame  will  be
	      deleted, and the framing will no longer be active (the specified
	      range must be the outer range of the previously defined frame to
	      be  deleted).  The range may be omitted if the cell cursor is in
	      a previously defined framed range, in which case that range will
	      be used by default.

	      Framed  ranges  may not be nested or overlapping.	 If you try to
	      define a range that contains any cells in common with  a	previ‐
	      ously defined framed range, an error message will be issued, and
	      the frame will not be created.

       rC     This command defines  a  color  range,  and  specifies  a	 fore‐
	      ground/background	 pair  to  be used for that range.  See "Color
	      Commands" below for more information.

   Note Commands
       A note is a cell or range of cells that can be jumped to	 quickly  from
       another	cell  by  creating  a special link in that cell.  The note may
       contain text explaining the contents of the cell containing  the	 link,
       similar	to a footnote, or it may simply be another part of the spread‐
       sheet that is related to the cell in some way.  When you press the  `n'
       key,  you will get a short prompt asking you whether you want to add or
       delete a note, or to ``show'' (by  highlighting)	 which	cells  on  the
       screen have attached notes.

       If  a cell with an attached note contains numeric data, it will be pre‐
       ceded with an ``*''.  If color is available and turned  on,  the	 ``*''
       will  be	 displayed  with color 4.  Also, the note address will be dis‐
       played in curly braces on the top line, preceded by an ``*'', when  the
       cell  is	 current  (e.g.	  {*AC30:AE43} or {*note1} for a named range).
       You may also use the *s (Note/Show) command to highlight all  cells  on
       the current screen with attached notes.

       *a     Add  a  note.  This will bring up the addnote command in the top
	      line, followed by the target address of the cell where you  want
	      the note added.  You must then enter the cell or range where the
	      note resides to add the note.  If you omit the note  address  or
	      range,  the  currently  highlighted range, if any, will be used.
	      Otherwise, the current cell will be used (you would, of  course,
	      want to move away from the cell in which the addnote command was
	      invoked in the latter case).

       *d     Delete a note.  If there is a note attached to the current cell,
	      the link will be removed (deleted).  The note itself will not be
	      removed from the spreadsheet.  If it is  no  longer  needed,  it
	      must be deleted in a separate step.

       *s     Show all notes on the current screen.  If there are any cells on
	      the visible portion of the spreadsheet  which  contain  attached
	      notes, they will be highlighted until the next screen change, no
	      matter how minor.	 Simply moving to a new cell will be enough to
	      turn off the highlighting.

       **     Jump  to	a  note.   If  there is a note attached to the current
	      cell, you will be immediately transported to that cell.  You may
	      return from the note to where you were by pressing ` twice.

   Color Commands
       Color may be enabled by setting the color option (``set color''), or by
       toggling it with ^TC (control-T followed by an uppercase C).  If	 color
       is  enabled, you may define up to eight color pairs, each consisting of
       a foreground color and a background color.  Each of these colors may be
       defined	by  an expression which is evaluated at the same time the rest
       of the spreadsheet is evaluated.	  Color	 expressions  may  be  simple,
       specifying  only a foreground color and a background color, or they may
       be arbitrarily complex, causing the colors to change based  upon	 other
       data in the spreadsheet, for example.  Color ranges may then be defined
       using the rC command, with a color number (1-8) assigned to  the	 range
       (see below).

       Some  of	 the color numbers may have special meaning under certain cir‐
       cumstances, but may also be used explicitly  at	the  same  time.   For
       example,	 color	1 is the default color pair if color is enabled but no
       color has been defined for a given cell.	 It is also the color used for
       the  column  and row labels and the top two lines of the display, which
       are used for prompts, input, error messages, etc.  Color 2,  while  not
       explicitly  used	 for  all  negative numbers, will be used for negative
       numbers in cells which have no other color  defined  when  colorneg  is
       turned  on  (``set colorneg'' or ^TN).  This is because colorneg causes
       all cells with negative numbers to have their color number  incremented
       by  one	(cycling back to color 1 if the cell is defined as using color
       8).  Color 3 is used for all cells with errors (ERROR or	 INVALID),  if
       colorerr	 is  set  (``set colorerr'' or ^TE), regardless of which color
       they have been defined to use, or whether they have been defined to use
       any  color at all.  Color 4 is used to highlight the ``*'' which signi‐
       fies that a cell has a note attached.

       If two color ranges are nested or overlapping, any cell that is	common
       to  both will be displayed using the color of the most recently defined
       color range.  You can list all color definitions and color ranges  with
       the rS (show) command (see below).

       C      This  command  first  prompts you for the color number you would
	      like to define (or redefine).  After selecting a	number	(1-8),
	      you  may	enter  an  expression which defines the foreground and
	      background colors.  If the  chosen  color	 has  previously  been
	      defined,	the old definition will be presented for editing.  The
	      syntax of the color command is:

		     color number = expression

	      where number is the number of the color pair you want to define,
	      and expression is the definition.	 If the expression is missing,
	      the specified color number will be unset (it will revert to  its
	      default  start-up	 colors).  Unlike setting it explicitly to its
	      original value, this will not cause the expression to be written
	      to  the  file  when  saved.  See below for an explanation of the
	      format of a color expression.

       rC     This command defines  a  color  range,  and  specifies  a	 fore‐
	      ground/background pair to be used for that range.	 Although this
	      command also uses the color command,  the	 syntax	 is  different
	      from that used for defining a color pair.	 This syntax is:

		     color range number

       rS     This  command  shows lists of the currently defined range names,
	      framed ranges, and color definitions and ranges, one  after  the
	      other.   The  output  of this command will be piped to less.  If
	      the environment variable PAGER is set,  its  value  is  used  in
	      place of less.

       Color  expressions  are	exactly like any other numeric expression, and
       may contain any function or operator that is valid in any other numeric
       expression.  There are, however special functions designed specifically
       for defining colors.  These functions are:

	       @black
	       @red
	       @green
	       @yellow
	       @blue
	       @magenta
	       @cyan
	       @white

       Although these function names are intended to reflect  the  color  they
       produce,	 and  use  the	same  names  as the curses colors, @yellow may
       appear as brown on many displays, especially those  based  on  the  VGA
       standard.

       In addition to special functions for specifying colors, there is also a
       special operator for combining two such colors  into  a	single	number
       which  specifies both a foreground and a background color.  This opera‐
       tor is the semicolon (;).  For example, the command

	      color 1 = @white;@green

       will set the foreground color to white  and  the	 background  color  to
       green  for  any cell or range of cells defined to use color 1, or which
       have no color defined.  If the semicolon operator is not used, and only
       one color is specified, that color will be used for the foreground, and
       the background will default to black.

       Although the above example is the easiest way to specify foreground and
       background  colors,  and	 will  probably	 meet  most people's needs, sc
       allows much more power and flexibility, should the need arise,  due  to
       the  fact  that any color can be specified by an expression.  For exam‐
       ple,

	      color 5 = B23<E75?(@black;@cyan):(@white;@magenta)

       will cause all cells defined with color 5 to be displayed as black text
       on  a cyan background if the numeric value in cell B23 is less than the
       numeric value in cell E75; otherwise, they will be displayed  as	 white
       text on a magenta background.  If you prefer to have the foreground and
       background colors dependent on different criteria, you could  do	 some‐
       thing like this:

	      color 5 = (B23<E75?@white:@cyan);(D5%2?@red:@blue)

       This  will cause the text color for color 5 to be either white or cyan,
       depending on the numeric values in cells B23 and E75, as in the	previ‐
       ous example, and the background color to be either red or blue, depend‐
       ing on whether the numeric value in cell D5 is odd or even.

       Note that although a color expression may contain any function which is
       valid  in any other numeric expression, the @myrow and @mycol functions
       will always evaluate to 0.  This is because a color expression  is  not
       tied  to	 any  particular  cell, but is instead evaluated once, and the
       result used for all cells defined to use that color.

       Also note that if a color expression results in	an  error,  the	 color
       will  default  to black text on a black background.  If color 1 results
       in an error, color will be disabled so that you can see the input  line
       to correct the error, after which color will need to be reenabled manu‐
       ally.

       Default colors are in effect for all colors  until  defined  otherwise.
       These default colors are as follows:

	       color 1 = @white;@blue
	       color 2 = @red;@blue
	       color 3 = @white;@red
	       color 4 = @black;@yellow
	       color 5 = @black;@cyan
	       color 6 = @red;@cyan
	       color 7 = @white;@black
	       color 8 = @red;@black

   Miscellaneous Commands

       Q
       q
       ^C     Exit  from  sc.	If  you made any changes since the last Get or
	      Put, sc asks about saving your data before exiting.

       ^G
       ESC    Abort entry of the current command.

       ?      Enter an interactive help facility.  Lets you look up brief sum‐
	      maries  of  the main features of the program.  The help facility
	      is structured like this manual page so it is easy to  find  more
	      information  on  a particular topic, although it may not be com‐
	      pletely up-to-date.

       !      Shell escape.  sc prompts for a shell command to run.   End  the
	      command  line  with the RETURN key.  If the environment variable
	      SHELL is defined, that shell is run.  If not, /bin/sh  is	 used.
	      Giving a null command line starts the shell in interactive mode.
	      A second ``!'' repeats the previous command.

       ~      Abbreviations.  You may set abbreviations to speed up the	 entry
	      of  repetitive data.  Abbreviations work much like abbreviations
	      in vi, except that  when	defining  an  abbreviation,  both  the
	      abbreviation  and	 the  expanded	text  must be contained within
	      quotes, separated by a single space.  If	more  than  one	 space
	      separates	 the  abbreviation  from the expanded text, it will be
	      included as part of the expanded text.

	      There are three types of abbreviations available in sc.  In  the
	      first type, all characters must be either alphanumeric or ``_''.
	      In the second type, the last character must be  alphanumeric  or
	      ``_'',  but  all	other  characters  must not be alphanumeric or
	      ``_''.  Neither type may contain	spaces.	  The  third  type  of
	      abbreviation  is a single character, and must be alphanumeric or
	      ``_''.

	      When using abbreviations, the first type must be at  the	begin‐
	      ning  of the line, or must be preceded by any character which is
	      not alphanumeric or ``_''.  The  second  type  must  be  at  the
	      beginning of the line, or must be preceded either by an alphanu‐
	      meric character, ``_'', or a space.  Single character  abbrevia‐
	      tions  must  be  at  the	beginning of the line or preceded by a
	      space.

	      Abbreviations will be automatically  expanded  as	 soon  as  the
	      space bar or return key is pressed, or when pressing the ESC key
	      at the end of the abbreviation to switch to edit mode.  You  can
	      also force an abbreviation to be expanded by following it with a
	      ^], which won't be inserted into the line.  If you don't want an
	      abbreviation  to	be expanded, you must either press ^V twice or
	      switch to edit mode and back again somewhere within the abbrevi‐
	      ation  (pressing	^V  twice  also has the effect of switching to
	      navigate mode and back again).

	      If the string in the abbreviation command	 contains  no  spaces,
	      the  entire  string  will	 be looked up in the list of abbrevia‐
	      tions, and if found, the definition will	be  displayed  in  the
	      form  of	the  original  abbreviation command used to define it.
	      When looking up an abbreviation in this manner, be sure to  dis‐
	      able  abbreviation expansion, as described above, or the results
	      may not be what you expect.

	      If the string is empty, a list of all  abbreviations  and	 their
	      corresponding  expanded text will be output to your pager.  Note
	      that abbreviations are not saved with  the  file.	  This	allows
	      each  user  to  create  his own file of abbreviations and either
	      merge them in or include them in his own .scrc file, rather than
	      force all users who access a file to use the same list of abbre‐
	      viations.

       ^L     Redraw the screen.

       ^R     Redraw the screen with  special  highlighting  of	 cells	to  be
	      filled  in.   This is useful for finding values you need to pro‐
	      vide or update in a form with which you aren't  familiar	or  of
	      which you have forgotten the details.

	      It's  also  useful  for  checking	 a form you are creating.  All
	      cells which contain constant numeric values (not the result of a
	      numeric  expression) are highlighted temporarily, until the next
	      screen change, however minor.  To avoid ambiguity,  the  current
	      range (if any) and current cell are not highlighted.

       ^X     This  command  is similar to ^R, but highlights cells which have
	      expressions.  It also displays  the  expressions	in  the	 high‐
	      lighted  cells  as  left-flushed strings, instead of the numeric
	      values and/or label strings of those cells.  This command	 makes
	      it  easier to check expressions, at least when they fit in their
	      cells or the following cell(s) are blank so the expressions  can
	      slop  over  (like	 label strings).  In the latter case, the slop
	      over is not cleared on the next screen update, so you  may  want
	      to type ^L after the ^X in order to clean up the screen.

       @      Recalculates the spreadsheet.

   Variable Names
       Normally, a variable name is just the name of a cell, such as K20.  The
       value is the numeric or string value of the cell, according to context.

       When a cell's expression (formula) is copied to	another	 location  via
       copy  or	 range-copy,  variable references are by default offset by the
       amount the formula moved.  This allows the new formula to work  on  new
       data.   If  cell	 references  are not to change, you can either use the
       @fixed operator (see below), or one of the following variations on  the
       cell name.

       K20    References  cell	K20; the reference changes when the formula is
	      copied.

       $K$20  Always refers to cell K20; the reference stays  fixed  when  the
	      formula is copied.

       $K20   Keeps the column fixed at column K; the row is free to vary.

       K$20   Similarly, this fixes the row and allows the column to vary.

       These  conventions  also hold on defined ranges.	 Range references vary
       when formulas containing them are copied.  If the range is defined with
       fixed variable references, the references do not change.

       @fixed To  make	a variable not change automatically when a cell moves,
	      put the word @fixed in front of the reference, for example: B1 ∗
	      @fixed C3.

   Numeric Expressions
       Numeric	expressions  used  with the ``='' and e commands have a fairly
       conventional syntax.  Terms may be constants, variable names, parenthe‐
       sized expressions, and negated terms.  Ranges may be operated upon with
       range functions such as sum (@sum()) and average (@avg()).   Terms  may
       be combined using binary operators.

       -e     Negation.

       e+e    Addition.

       e-e    Subtraction.

       e∗e    Multiplication.

       e/e    Division.

       e1%e2  e1 mod e2.

       e^e    Exponentiation.

       e<e
       e<=e
       e=e
       e!=e
       e>=e
       e>e    Relationals:  true  (1)  if  and	only if the indicated relation
	      holds, else false (0).  Note that ``<='', ``!='', and ``>='' are
	      converted to their ``!()'' equivalents.

       ~e     Boolean operator NOT.

       e&e    Boolean operator AND.

       e|e    Boolean operator OR.

       @if(e,e,e)
       e?e:e  Conditional:  If	the first expression is true then the value of
	      the second is returned, otherwise the value of the third.

       Operator precedence from highest to lowest is:

	      -, ~, !
	      ^
	      ∗, /
	      +, -
	      <, <=, =, !=, >=, >
	      &
	      |
	      ?:

   Built-in Range Functions
       These functions return numeric values.  The @sum, @prod, @avg,  @count,
       @max,  @min, and @stddev functions may take an optional second argument
       which is an expression that is to be evaluated for  each	 cell  in  the
       specified  range	 to  determine which cells to include in the function.
       Only those cells for which the expression evaluates to true  (non-zero)
       will  be used in calculating the value of the function.	Before evalua‐
       tion for each cell, the expression is first  converted  as  if  it  was
       being  copied  from the cell in the upper left-hand corner of the range
       into the cell under consideration, with all  cell  references  adjusted
       accordingly.   Because  the  parts of the expression that should remain
       fixed during the evaluation of the function may not necessarily be  the
       same  as	 those	which should remain fixed during an actual copy opera‐
       tion, the rules for adjusting cell references during a  copy  operation
       are  slightly different than normal.  In particular, these rules differ
       in two different ways.

       The first difference is that the @fixed operator is  ignored  during  a
       copy  operation	unless it is enclosed in parentheses.  This is so that
       selected cells whose addresses should remain  fixed  during  any	 given
       evaluation  of  a  range	 function can be adjusted relative to the cell
       containing the range function when copied (the $ prefix is  still  hon‐
       ored  for  these cells when copying).  Enclosing the @fixed operator in
       parentheses will have the opposite effect.  That is, it will cause cell
       references  to  be  fixed  while	 copying,  while  allowing  them to be
       adjusted when the function is being evaluated, subject to  any  $  pre‐
       fixes  present.	 Note  that  only the @fixed operator itself should be
       enclosed in parentheses for this to work properly.

       The second difference is that any references  in	 the  expression  that
       refer to cells in the range in the first argument of the range function
       will have any $ prefixes ignored, and the references  will  be  treated
       instead	as  if	they  had  the same $ prefixes as the left side of the
       range argument.	For example, if the left side of  the  range  argument
       (the  cell  address on the left side of the colon) has a fixed row, but
       does not have a fixed column, any cell references that refer  to	 cells
       in  that	 range	will  also have a fixed row, but will not have a fixed
       column.	This is so that if the range  reference	 moves	when  copying,
       references to any cells in that range will also move accordingly.

       Note  that the test expression will be evaluated once for every cell in
       the range, which means that excessive use of these functions  with  the
       optional test expression, or the use of overly complex test expressions
       or with very large ranges can greatly slow down the recalculation of  a
       spreadsheet,  and  may require turning off autocalc for speed, and then
       manually recalculating with the @ command.

       @sum(r)
       @sum(r,e)	 Sum all valid (nonblank) entries in the region	 whose
			 two  corners  are  defined  by the two variable names
			 (e.g.	c5:e14) or  the	 range	name  specified.   The
			 optional  second  argument is an expression which can
			 be used to determine which cells in the range to  sum
			 (see above).

       @prod(r)
       @prod(r,e)	 Multiply together all valid (nonblank) entries in the
			 specified region.  The optional second argument is an
			 expression which can be used to determine which cells
			 in the range to multiply (see above).

       @avg(r)
       @avg(r,e)	 Average all valid (nonblank) entries in the specified
			 region.   The	optional second argument is an expres‐
			 sion which can be used to determine  which  cells  in
			 the range to average (see above).

       @count(r)
       @count(r,e)	 Count	all  valid (nonblank) entries in the specified
			 region.  The optional second argument is  an  expres‐
			 sion  which  can  be used to determine which cells in
			 the range to count (see above).

       @max(r)
       @max(r,e)	 Return the maximum value  in  the  specified  region.
			 The  optional	second argument is an expression which
			 can be used to exclude specific cells	in  the	 range
			 when determining this maximum value (see above).  See
			 also the multi argument version of @max below.

       @min(r)
       @min(r,e)	 Return the minimum value  in  the  specified  region.
			 The  optional	second argument is an expression which
			 can be used to exclude specific cells	in  the	 range
			 when determining this minimum value (see above).  See
			 also the multi argument version of @min below.

       @stddev(r)
       @stddev(r,e)	 Return the sample standard deviation of the cells  in
			 the  specified	 region.  The optional second argument
			 is an expression which can be used  to	 exclude  spe‐
			 cific	cells  in the range when calculating the stan‐
			 dard deviation (see above).

       @rows(r)		 Return the number of rows in the specified range.

       @cols(r)		 Return the number of columns in the specified range.

       @lookup(e,r)
       @lookup(r,e)
       @lookup(se,r)
       @lookup(r,se)	 Evaluates the expression then	searches  through  the
			 range	r  for	a matching value.  The range should be
			 either a single row or a single column.  The  expres‐
			 sion  can  be either a string expression or a numeric
			 expression.  If it is a numeric expression, the range
			 is searched for the the last value less than or equal
			 to e.	If the expression is a string expression,  the
			 string	 portions  of  the  cells  in  the  range  are
			 searched  for	an  exact  string  match.   The	 value
			 returned  is  the numeric value from the next row and
			 the same column as the match, if the range was a sin‐
			 gle  row,  or	the value from the next column and the
			 same row as the match if the range was a single  col‐
			 umn.

       @hlookup(e,r,n)
       @hlookup(r,e,n)
       @hlookup(se,r,n)
       @hlookup(r,se,n)	 Evaluates  the	 expression  then searches through the
			 first row in the range r for a matching  value.   The
			 expression  can  be  either  a string expression or a
			 numeric expression.  If it is a  numeric  expression,
			 the  row is searched for the the last value less than
			 or equal to e.	 If the expression is a string expres‐
			 sion, the string portions of the cells in the row are
			 searched  for	an  exact  string  match.   The	 value
			 returned  is the numeric value from the same column n
			 rows below the match.

       @vlookup(e,r,n)
       @vlookup(r,e,n)
       @vlookup(se,r,n)
       @vlookup(r,se,n)	 Evaluates the expression then	searches  through  the
			 first	column	in  the	 range r for a matching value.
			 The expression can be either a string expression or a
			 numeric  expression.	If it is a numeric expression,
			 the column is searched for the the  last  value  less
			 than  or  equal  to e.	 If the expression is a string
			 expression, the string portions of the cells  in  the
			 column	 are  searched for an exact string match.  The
			 value returned is the numeric value from the same row
			 n columns to the right of the match.

       @index(e1,r)
       @index(r,e1)
       @index(r,e1,e2)	 Use  the values of expressions e1 and (optionally) e2
			 to index into the range r.  The numeric value at that
			 position  is returned.	 With two arguments, the range
			 should be either a single row or a single column.  An
			 expression with the value 1 selects the first item in
			 the range, 2 selects  the  second  item,  etc.	  With
			 three	arguments,  the range must come first, and the
			 second and third arguments will then  be  interpreted
			 as  row and column, respectively, for indexing into a
			 two-dimensional table.

       @stindex(e1,r)
       @stindex(r,e1)
       @stindex(r,e1,e2) Use the values of expressions e1 and (optionally)  e2
			 to  index into the range r.  The string value at that
			 position is returned.	With two arguments, the	 range
			 should be either a single row or a single column.  An
			 expression with the value 1 selects the first item in
			 the  range,  2	 selects  the  second item, etc.  With
			 three arguments, the range must come first,  and  the
			 second	 and  third arguments will then be interpreted
			 as row and column, respectively, for indexing into  a
			 two-dimensional table.

   Built-in Numeric Functions
       All  of these functions operate on floating point numbers (doubles) and
       return numeric values.  Most of them are standard system functions more
       fully  described in math(3).  The trig functions operate with angles in
       radians.

       @sqrt(e)		 Return the square root of e.

       @exp(e)		 Return the exponential function of e.

       @ln(e)		 Return the natural logarithm of e.

       @log(e)		 Return the base 10 logarithm of e.

       @floor(e)	 Return the largest integer not greater than e.

       @ceil(e)		 Return the smallest integer not less than e.

       @rnd(e)		 Round e to the nearest integer.  default: *.5 will be
			 rounded  up  to the next integer; doing a 'set rndto‐
			 even' will cause it to be rounded to the closest even
			 number	 instead  (aka banker's round).	 Round-to-even
			 has advantages over the  default  rounding  for  some
			 applications.	 For  example,	if  X+Y is an integer,
			 then X+Y = rnd(X)+rnd(Y) with round-to-even, but  not
			 always	 with  the  defaulting	rounding method.  This
			 could be an advantage, for example,  when  trying  to
			 split	an odd amount of money evenly between two peo‐
			 ple (it would determine who gets the extra penny).

       @round(e,n)	 Round e to n decimal places.  n may  be  positive  to
			 round	off  the right side of the decimal or negative
			 to round off the left side.  See  @rnd(e)  above  for
			 rounding types.

       @abs(e)
       @fabs(e)		 Return the absolute value of e.

       @pow(e1,e2)	 Return e1 raised to the power of e2.

       @hypot(e1,e2)	 Return	 sqrt(e1∗e1+e2∗e2), taking precautions against
			 unwarranted overflows.

       @pi		 A constant quite close to pi.

       @dtr(e)		 Convert e in degrees to radians.

       @rtd(e)		 Convert e in radians to degrees.

       @sin(e)
       @cos(e)
       @tan(e)		 Return trigonometric functions of  radian  arguments.
			 The  magnitude	 of  the  arguments are not checked to
			 assure meaningful results.

       @asin(e)		 Return the arc sine of e in the range -pi/2 to pi/2.

       @acos(e)		 Return the arc cosine of e in the range 0 to pi.

       @atan(e)		 Return the arc tangent of e in	 the  range  -pi/2  to
			 pi/2.

       @atan2(e1,e2)	 Returns  the arc tangent of e1/e2 in the range -pi to
			 pi.

       @max(e1,e2,...)	 Return the maximum of the values of the  expressions.
			 Two  or  more expressions may be specified.  See also
			 the range version of @max above.

       @min(e1,e2,...)	 Return the minimum of the values of the  expressions.
			 Two  or  more expressions may be specified.  See also
			 the range version of @min above.

       @ston(se)	 Convert string expression se to a numeric value.

       @eqs(se1,se2)	 Return 1 if string expression se1 has the same	 value
			 as string expression se2, 0 otherwise.

       @nval(se,e)	 Return	 the numeric value of a cell selected by name.
			 String expression se must evaluate to a  column  name
			 (``A''-``AE'')	 and  e	 must evaluate to a row number
			 (0-199).  If se or e is out of bounds,	 or  the  cell
			 has  no  numeric value, the result is 0.  You can use
			 this for simple table lookups.	  Be  sure  the	 table
			 doesn't move unexpectedly!  See also @sval() below.

       @err		 Force an error.  This will force the expression which
			 contains it to result in an error.

   String Expressions
       String expressions are made up of  constant  strings  (characters  sur‐
       rounded	by double quotation marks), variables (cell names, which refer
       to the cells's label strings or	expressions),  and  string  functions.
       Note  that  string  expressions are only allowed when entering a cell's
       label string, not its numeric part.  Also note that  string  expression
       results may be left or right flushed or centered, according to the type
       of the cell's string label.

       #      Concatenate strings.  For example, the string expression

		   A0 # "zy dog"

	      displays the string ``the lazy dog'' in the cell if the value of
	      A0's string is ``the la''.

   Built-in String Functions

       @filename(e)	 Return	 the  current  default	filename, as specified
			 when the file was first loaded or created, or	during
			 the last save, with the Put command.  If e is 0, only
			 the actual filename will be returned, with  any  path
			 removed.  If non-zero, the full path specified on the
			 command line or in the last Get or Put	 command  will
			 be  returned.	If the path begins with ``~'', it will
			 be expanded to the appropriate users home directory.

       @substr(se,e1,e2) Extract and return from string expression se the sub‐
			 string indexed by character number e1 through charac‐
			 ter number e2 (defaults to the size of se  if	beyond
			 the end of it).  If e1 is less than 1 or greater than
			 e2, the result is the null string.  For example,

			      @substr ("Nice jacket", 4, 8)

			 returns the string ``e jac''.

       @fmt(se,e)	 Convert a number to a string.	The argument  se  must
			 be  a	valid printf(3) format string.	e is converted
			 according to the standard rules.   For	 example,  the
			 expression

			      @fmt ("∗∗%6.3f∗∗", 10.5)

			 yields	 the string ``∗∗10.500∗∗''.  e is a double, so
			 applicable formats are e, E, f, g, and G.  Try ``%g''
			 as a starting point.

       @sval(se,e)	 Return	 the  string value of a cell selected by name.
			 String expression se must evaluate to a  column  name
			 (``A''-``AE'')	 and  e	 must evaluate to a row number
			 (0-199).  If se or e is out of bounds,	 or  the  cell
			 has  no  string value, the result is the null string.
			 You can use this for simple table lookups.   Be  sure
			 the table doesn't move unexpectedly!

       @upper(se)
       @lower(se)	 will case the string expression to upper or lower.

       @capital(se)	 will  convert	the  first letter of words in a string
			 into upper case and other letters to lower case  (the
			 latter if all letters of the string are upper case).

       @ext(se,e)	 Call  an  external function (program or script).  The
			 purpose is to allow arbitrary	functions  on  values,
			 e.g.	table	lookups	 and  interpolations.	String
			 expression se is a command or command	line  to  call
			 with  popen(3).   The	value  of  e is converted to a
			 string and appended to the command line as  an	 argu‐
			 ment.	 The  result  of @ext() is a string: the first
			 line printed to standard output by the command.   The
			 command  should  emit exactly one output line.	 Addi‐
			 tional output, or output to standard error, messes up
			 the  screen.  @ext() returns a null string and prints
			 an appropriate warning if external functions are dis‐
			 abled,	 se is null, or the attempt to run the command
			 fails.

			 External functions can be slow to run, and if enabled
			 are  called  at  each screen update, so they are dis‐
			 abled by default.  You can enable them with  ^T  when
			 you really want them called.

			 A simple example:

			      @ext ("echo", a1)

			 You can use @ston() to convert the @ext() result back
			 to a number.  For example:

			      @ston (@ext ("form.sc.ext", a9 + b9))

			 Note that you can build  a  command  line  (including
			 more  argument	 values) from a string expression with
			 concatenation.	 You can also "hide" the second	 argu‐
			 ment by ending the command line (first argument) with
			 `` #'' (shell comment).

       @coltoa(e)	 Returns a string name for a column from  the  numeric
			 argument.  For example:

			      @coltoa(@mycol-1)	       @nval(coltoa(@mycol-1),
			 @myrow+1)

   Built-in Financial Functions
       Financial functions compute the	mortgage  (or  loan)  payment,	future
       value,  and the present value functions.	 Each accepts three arguments,
       an amount, a rate of interest (per period), and the number of  periods.
       These  functions	 are the same as those commonly found in other spread‐
       sheets and financial calculators

       @pmt(e1,e2,e3)	 @pmt(60000,.01,360) computes the monthly payments for
			 a  $60000  mortgage  at  12% annual interest (.01 per
			 month) for 30 years (360 months).

       @fv(e1,e2,e3)	 @fv(100,.005,36) computes the	future	value  for  36
			 monthly  payments  of	$100  at 6% interest (.005 per
			 month).  It answers the question: "How	 much  will  I
			 have  in  36  months if I deposit $100 per month in a
			 savings  account  paying   6%	 interest   compounded
			 monthly?"

       @pv(e1,e2,e3)	 @pv(1000,.015,36)  computes  the  present value of an
			 ordinary annuity of 36 monthly payments of  $1000  at
			 18%  annual  interest.	 It answers the question: "How
			 much can I borrow at 18% for 3 years if I  pay	 $1000
			 per month?"

   Built-in Date and Time Functions
       Time  for  sc  follows the system standard: the number of seconds since
       the beginning of 1970.  All date	 and  time  functions  except  @date()
       return numbers, not strings.

       @now		 Return the current time encoded as the number of sec‐
			 onds since the beginning of the epoch	(December  31,
			 1969, midnight, GMT).

       @dts(e1,e2,e3)	 Convert  a  date  to  the  number of seconds from the
			 epoch to the first  second  of	 the  specified	 date,
			 local time.  Dates may be specified in either (m,d,y)
			 or (y,m,d) format, although the latter is  preferred,
			 since it's more universally recognized (m,d,y is only
			 used in America).  If e2  >  12  or  e3  >  31,  then
			 (m,d,y)  is  assumed.	Otherwise, (y,m,d) is assumed.
			 For example, @date(@dts(1976,12,14)) yields

			      Tue Dec 14 00:00:00 1976

			 The month should range from  1 to 12; the day	should
			 range	from  1 to the number of days in the specified
			 month; and the year should include the century	 (e.g.
			 1999  instead of 99).	Any date capable of being han‐
			 dled by the system is valid, typically 14 Dec 1901 to
			 18  Jan  2038	on a system that uses a 32 bit time_t.
			 Invalid dates or dates outside	 of  this  range  will
			 return	 ERROR.	  For  rapid entry of dates using only
			 the numeric keypad, sc provides the alternate	syntax
			 y.m.d	or  m.d.y, which is automatically converted to
			 the @dts(...) format above.  The year, month, and day
			 must  be entered numerically in the alternate syntax;
			 formulas are not allowed.

       @tts(e1,e2,e3)	 @tts(8,20,45) converts the time 8:40:45 to the number
			 of  seconds  since  midnight,	the night before.  The
			 hour should range from 0 to 23; the minutes and  sec‐
			 onds should range from 0 to 59.

       The following functions take the time in seconds (e.g. from @now) as an
       argument and return the specified value.	  The  functions  all  convert
       from GMT to local time.

       @date(e)
       @date(e,se)	 Convert the time in seconds to a date string.	With a
			 single numeric argument, the date will be 24  charac‐
			 ters long in the following form:

			      Sun Sep 16 01:03:52 1973

			 Note  that you can extract parts of this fixed-format
			 string with @substr().	 A  format  string  compatible
			 with  the strftime() function may optionally be given
			 as a second argument to override the default  format.
			 See the strftime(3) man page for details.

       @year(e)		 Return	 the  year.   Valid  years  begin  with	 1970,
			 although many systems will return years prior to 1970
			 if  e	is  negative.	The  last legal year is system
			 dependent.

       @month(e)	 Return the  month,  encoded  as  1  (January)	to  12
			 (December).

       @day(e)		 Return the day of the month, encoded as 1 to 31.

       @hour(e)		 Return the number of hours since midnight, encoded as
			 0 to 23.

       @minute(e)	 Return the number of  minutes	since  the  last  full
			 hour, encoded as 0 to 59.

       @second(e)	 Return	 the  number  of  seconds  since the last full
			 minute, encoded as 0 to 59.

   Spreadsheet Update
       Re-evaluation of spreadsheet expressions is done by row	or  by	column
       depending on the selected calculation order.  Evaluation is repeated up
       to iterations times for each update if necessary, so forward references
       usually	work as expected.  See set above.  If stability is not reached
       after ten iterations, a warning is printed.  This is usually due	 to  a
       long  series  of	 forward  references, or to unstable cyclic references
       (for example, set A0's expression to ``A0+1'').

       @numiter		 Returns the number of iterations performed so far.

   Programmable Function Keys
       Function keys can be used in sc if your	terminal  supports  them,  and
       they  are programmable.	To program the function keys, you use the fkey
       command.	 This command may be used in a .scrc file or a macro file,  or
       it  may	be  entered directly into sc's command line.  Defined function
       keys will be saved with the file.  There is no shortcut,	 as  there  is
       with  most  commands,  so  the full command must be typed in.  Pressing
       enter when not editing a line will start you off with a blank line  for
       this purpose.  The format of the fkey command is:

	      fkey n = "command"

       where  n is the function key number (n = 1 for F1, n = 2 for F2, etc.),
       and command is the command to be run.  For example,

	      fkey 2 = "merge \"|~/scmacros/macro1\""

       will run the macro called macro1 located in a subdirectory of your home
       directory called scmacros when the F2 key is pressed.  Note that embed‐
       ded quotes must be escaped by a backslash.  If you want to include  the
       cell  address of the current cell in the command line, you may do so by
       entering ``$$'' in its place in the command.  For example,

	      fkey 5 = "fmt $$ \"^D%A\""

       will cause the F5 key to format the current cell to  display  the  full
       weekday name of the numeric date value stored there.  The ^D is a CTRL-
       D character, which denotes a date format.

       Although it may be overridden by the fkey command, the F1 key is prede‐
       fined  by  default to execute man sc.  Unlike the user-defined function
       keys, this definition will also work in edit, insert, replace, and nav‐
       igate modes.

       To  undefine a function key, merely define it as the empty string ("").
       Undefining the F1 key will restore the default behavior.

   Plugins
       There are three ways in which external programs can be used as  plugins
       with  sc.   First, they can be used as external commands.  When used as
       an external command, any command not recognized by sc will be  searched
       for	first	   in	   $HOME/.sc/plugins,	   and	   then	    in
       /wrkdirs/math/sc/work/stage/usr/local/share/sc/plugins.	If  found,  it
       will be run with its standard input and standard output redirected back
       to sc.  These are used to send commands to, and receive responses  back
       from sc in the same way that advanced macros do.

       The  second and third ways that programs can be used as plugins with sc
       are to automatically convert files to and from sc format based on their
       extensions.  In order to use them in this way, you must first associate
       a given extension to a corresponding plugin (for	 reading)  or  plugout
       (for  writing)  using  the plugin and plugout commands.	These commands
       should be placed in your .scrc file, and have the following syntax:

	      plugin "ext" = "programname"

       or

	      plugout "ext" = "programname"

       where ext is the extension and programname is the name  of  the	plugin
       program	to  be used for filenames with that extension.	For input, the
       plugin merely reads the specified file, performs whatever conversion is
       necessary,  and writes the resulting data to standard output.  For out‐
       put, the plugin writes sc commands to standard  output  and  reads  the
       replies	from  standard	input  in  the same way that an advanced macro
       would, and then converts the data to the appropriate format and	writes
       it to a file with the specified filename.

FILES
       /wrkdirs/math/sc/work/stage/usr/local/share/sc/tutorial.sc
				     Tutorial spreadsheet.

       $HOME/.scrc		     Initialization commands.

       ./.scrc			     More initialization commands.

SEE ALSO
       bc(1), dc(1), crypt(1), psc(1)

BUGS
       Top-to-bottom,  left-to-right  evaluation  of  expressions is silly.  A
       proper following of the dependency graph	 with  (perhaps)  recourse  to
       relaxation should be implemented.

       On some systems, if the cell cursor is in column 0 with topline enabled
       (so the current cell is highlighted), or if any cell  in	 column	 0  is
       highlighted,  the  corresponding	 row  number  gets  displayed and then
       blanked during a screen refresh.	 This looks like a bug in curses.

       Many commands give no indication (a message or beep) if they have  null
       effect.	Some should give confirmation of their action, but they don't.

AUTHORS
       This  is a much modified version of a public domain spread sheet origi‐
       nally authored by James Gosling, and subsequently modified  and	posted
       to  USENET  by  Mark  Weiser under the name vc.	The program was subse‐
       quently renamed sc, and further modified by numerous contributors, Jeff
       Buhrt  of  Proslink,  Inc.  and Robert Bond of Sequent, prominent among
       them.  The current maintainer is Chuck Martin (nrocinu@myrealbox.com).

       Other contributors include: Tom Anderson, Glenn T. Barry, Gregory Bond,
       Stephen (Steve) M. Brooks, Peter Brower, John Campbell, Lawrence Cipri‐
       ani, Jim Clausing, Dave Close, Chris Cole, Jonathan Crompron, David  I.
       Dalva,  Glen  Ditchfield,  Sam Drake, James P. Dugal, Paul Eggert, Andy
       Fyfe, Jack Goral, Piercarlo "Peter" Grandi, Henk Hesselink,  Jeffrey  C
       Honig,  Kurt Horton, Jonathan I. Kamens, Peter King, Tom Kloos, Michael
       Lapsley, Casey Leedom, Jay  Lepreau,  Dave  Lewis,  Rick	 Linck,	 Soren
       Lundsgaard,  Tad	 Mannes,  Rob  McMahon, Chris Metcalf, Mark Nagel, Ulf
       Noren, Marius Olafsson, Gene H. Olson, Henk  P.	Penning,  Rick	Perry,
       Larry  Philps,  Eric Putz, Jim Richardson, Michael Richardson, R. P. C.
       Rodgers, Kim Sanders, Mike Schwartz, Alan  Silverstein,	Lowell	Skoog,
       Herr Soeryantono, Tim Theisen, Tom Tkacik, Andy Valencia, Adri Verhoef,
       Rick Walker, Petri Wessman, and Tim Wilson.

SC 7.16			       19 September 2002			 SC(1)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net