Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SC(1)			    General Commands Manual			 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 in-
       terpreted to mean that spreadsheet data will be taken from the standard
       input.	This  is  useful  for including	sc in a	pipeline if the	system
       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  af-
       ter 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 ar-
       gument 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/usr/ports/math/sc/work/stage/usr/local/share/sc/tu-
	      torial.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)  en-
	      abled.

       -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 en-
	      abled.

       -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 ex-
	      pressions	 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  de-
	      crypt 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 be-
       low)  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  ex-
	      tension  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 extension
	      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 op-
	      tion 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  ex-
	      tension.	 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 ex-
	      ists, it will first be removed before adding the new  extension.
	      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  ex-
	      ists,  it	will first be removed before adding the	new extension.
	      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 ex-
		     plicit ``@'' 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 in-
		     serted, thus enlarging the	range and allowing you to con-
		     tinue entering data into the row/column without overwrit-
		     ing 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 as-
		     sumed to be the start of a	numeric	value for the  current
		     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 controls (^P,
		     ^N, or any	of the arrow keys) in this mode	will end a nu-
		     meric  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  en-
		     abled, expressions	which evaluate to a constant are auto-
		     matically optimized upon entry.  For example, if you  en-
		     ter  @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 ac-
		     tual 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 di-
		     rection 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 in-
		     voked,  the row and column	of the current cell are	remem-
		     bered.  If	a later	newline	action would take the  current
		     cell to the right of the remembered column, then the cur-
		     rent 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 IN-
		     VALID  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  en-
	      tered 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 en-
	      try in a frame (see "Framed Ranges" below), and setting the  au-
	      towrap  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  (de-
		     fault)  to	 give colon delimited fields, with no tbl con-
		     trol 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; do-
		     ing 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 de-
		     termine 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 format 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  ef-
		     fect.   On	 a  slow connection, turning off color can no-
		     ticeably 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 IN-
		     VALID 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  en-
		     hancement	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 or-
		     der  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 be-
		     ginning 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 un-
		     known .scrc could potentially execute arbitrary commands.
		     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 be-
	      low),  especially	when the range is bigger than the visible win-
	      dow.

	      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 be-
	      fore 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 re-
	      membering	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, en-
       tering 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 nu-
	      meric entry option, enabled through the -n option	or ^T command,
	      shows the	prompt when you	enter the first	digit of a number (you
	      can skip typing ``='').  If you want to begin  entering  an  ex-
	      pression in the current cell, but	you want to start out in navi-
	      gate 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 ei-
		     ther side of the decimal point than there are `#' charac-
		     ters 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	place-
		     holders 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  al-
		     phanumeric	 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 in-
		     serted 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 re-
		     fer 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, in-
		     sert 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 fa-
       cilitate	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  re-
	      called 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 en-
	      tered 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 (de-
	      fault 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'' ex-
	      pression,	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  in-
	      serted, 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  ex-
	      pression	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'' ex-
	      pression,	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 in-
	      serted, followed by  ``)-''.

       RETURN If you are not editing a cell (top line is empty), pressing  RE-
	      TURN 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 in-
	      put  mode	after first entering the beginning of the full command
	      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  definition
	      files.   The Run command makes this easier.  It's	like the Merge
	      command, but prints a saved path name as the start of the	 file-
	      name to merge in.	 The string to use is set with the Define com-
	      mand.  To	write macros, you must be familiar with	the file  for-
	      mat 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 re-
       sulting string starts with ``|'', the rest of the string	is interpreted
       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 (ex-
       cept 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 RE-
       TURN 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  un-
	      touched.

       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  af-
	      ter 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.   Ap-
	      pending  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 ac-
	      tual data	untouched.  This makes it easy to  copy	 cell  formats
	      from  one	 part  of the spreadsheet to another, such as when ex-
	      panding 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, replacing
	      its current contents.  pt	(transpose) overwrites the  cells  be-
	      ginning  at the current cell cursor location like	pp, but	trans-
	      poses 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,  ex-
	      cept  that it switches to	navigate mode and allows you to	define
	      the destination range to be used.	 This works like the copy com-
	      mand  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  su-
	      persede  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  in-
       formational only	and may	be erased with the backspace key.

       Prompts	requesting  variable names may be satisfied with either	an ex-
       plicit 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.  Un-
	      like the rc command, the destination of a	move is	a single cell,
	      which  will be the upper lefthand	corner of the source range af-
	      ter 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  ei-
	      ther  one	or two characters, and must be alphabetic (case	insen-
	      sitive), 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 re-
	      sponse to	prompts	requesting a cell or range name, and are saved
	      when the spreadsheet is saved with the Put command.   Names  de-
	      fined  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  se-
	      lect 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  ex-
       ample,  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  de-
	      fined,  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 ap-
       pear as brown on	many displays, especially those	based on the VGA stan-
       dard.

       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 al-
       lows much more power and	flexibility, should the	need arise, due	to the
       fact that any color can be specified by an expression.  For example,

	      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 re-
       sult 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 ab-
	      breviation 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 ab-
	      breviation 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 be-
	      ginning 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 be-
       ing 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  ad-
       justed  when the	function is being evaluated, subject to	any $ prefixes
       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 re-
       fer 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 op-
			 tional	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 re-
			 turned	is the numeric value from the next row and the
			 same  column  as the match, if	the range was a	single
			 row, or the value from	the next column	and  the  same
			 row as	the match if the range was a single column.

       @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 nu-
			 meric 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  re-
			 turned	 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 ap-
			 plications.   For example, if X+Y is an integer, then
			 X+Y = rnd(X)+rnd(Y) with round-to-even, but  not  al-
			 ways 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).

       @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 as-
			 sure 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 ex-
			 pression 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	argument.  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.  Additional out-
			 put, 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()  re-
       turn 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,  lo-
			 cal  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 re-
			 turn  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, al-
			 though	many systems will return years prior  to  1970
			 if  e is negative.  The last legal year is system de-
			 pendent.

       @month(e)	 Return	the month, encoded as 1	(January) to  12  (De-
			 cember).

       @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 en-
       ter 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/usr/ports/math/sc/work/stage/usr/local/share/sc/plugins.    If
       found, it will be run with its standard input and standard output redi-
       rected back to sc.  These are used to send commands to, and receive re-
       sponses 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/usr/ports/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 re-
       laxation	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)

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | FILES | SEE ALSO | BUGS | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=sc&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help