home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dr. CD ROM (Annual Premium Edition)
/
premium.zip
/
premium
/
IBMOS2_1
/
SC621.ZIP
/
sc621
/
cat1
/
sc.1
< prev
Wrap
Text File
|
1992-10-25
|
70KB
|
1,849 lines
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
NAME
sc - spreadsheet calculator
SYNOPSIS
sc [ -c ] [ -m ] [ -n ] [ -r ] [ -x ] [ _f_i_l_e ]
DESCRIPTION
The spreadsheet calculator _s_c is based on rectangular tables
much like a financial spreadsheet. When invoked it presents
you with a table organized as rows and columns of cells. If
invoked without a _f_i_l_e argument, the table is initially
empty. Otherwise _f_i_l_e is read in (see the _G_e_t command
below). 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 a on-line tutorial, type the command:
sc tutorial.sc
To print a quick reference card, type the command:
scqref | [your_printer_commmand]
OPTIONS
-c Start the program with the recalculation being done in
column order.
-m Start the program with automatic recalculation dis-
abled. The spreadsheet will be recalculated only when
the ``@'' command is used.
-n Start the program in quick numeric entry mode (see
below).
-r Start the program with the recalculation being done in
row order (default option).
-x Cause the _G_e_t and _P_u_t commands (see below) to encrypt
and decrypt data files.
-R Start the program with automatic newline action set to
increment the row (see below).
-C Start the program with automatic newline action set to
increment the column (see below).
All of these options can be changed with the ^_T and _S com-
mands (see below) while _s_c is running. Options specified
when _s_c is invoked override options saved in the data file.
1
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
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 _s_c. The third line and the
first four columns show the column and row numbers, from
which are derived cell addresses, e.g. _A_0 for the cell in
column A, row 0. Note that column names are case-
insensitive: you can enter _A_0 or _a_0.
The rest of the screen forms a window looking at a portion
of the table. The total number of display rows and columns
available, hence the number of table rows and columns
displayed, is set by _c_u_r_s_e_s(3) and may be overridden by set-
ting the LINES and COLUMNS environment variables, respec-
tively.
The screen has two cursors: a cell cursor, indicated by a
highlighted cell and a ``<'' on the screen, and a character
cursor, indicated by the terminal's hardware cursor. The
cell and character cursors are often the same. They differ
when you type a command on the top line.
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 or if
the number is to be entered while the character cursor is on
the top line.
Commands which use the terminal's control key, such as ^_N,
work both when a command is being typed and when in normal
mode.
Changing Options
^T_o 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. 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
recalculated. Normally this is not noticeable,
but for very large spreadsheets, it may be faster
2
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
to clear automatic recalculation mode and update
the spreadsheet via explicit ``@'' commands.
Default is automatic recalculation on.
c Current cell highlighting. If enabled, the
current cell is highlighted (using the terminal's
standout mode, if available) in addition to being
marked by the cell cursor.
e External function execution. When disabled,
external functions (see @_e_x_t() below) are not
called. This saves a lot of time at each screen
update. External functions are disabled by
default. If disabled, and external functions are
used anywhere, a warning is printed each time the
screen is updated, and the result of @_e_x_t() is the
value from the previous call, if any, or a null
string.
l Autolabeling. If enabled, using the define com-
mand (/d) causes a label to be automatically gen-
erated in the cell to the left of the defined
cell. This is only done if the cell to the left
is empty. Default is enabled.
n Quick numeric entry. If enabled, a typed digit is
assumed to be the start of a numeric value for the
current cell, not a repeat count, unless preceded
by ^_U. The cursor controls (^_P, ^_N, ^_B, ^_F) in
this mode will end a numeric entry.
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 cen-
tered string, ``<'' for a leftstring or ``>'' for
a rightstring (see below), followed by "_s_t_r_i_n_g"
for a constant string or {_e_x_p_r} 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 [_v_a_l_u_e], which may be
a constant or expression.
x Encryption. See the -x option.
$ Dollar prescale. If enabled, all numeric con-
stants (not expressions) which you enter are mul-
tipled by 0.01 so you don't have to keep typing
the decimal point if you enter lots of dollar
3
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
figures.
r Newline action. This option toggles between three
cases. The default is no action. If this option
is used once, after each command which is ter-
minated by a newline character is completed, the
current cell will be moved down one row. If this
option is used again, after each command which is
terminated by a newline character is completed,
the current cell will be moved right one column.
Another use of this option will restore the
default action.
z Set newline action limits. This option sets lim-
its to the newline action option above. When this
option is invoked, the row and column of the
current cell are remembered. If a later newline
action would take the current cell to the right of
the remembered column, then the current cell is
instead moved to the first column of the next row.
If a newline action would take the current cell
below the remembered row, then the current cell is
instead moved to the top row of the next column.
The quick numeric entry, newline action and set newline
action limits options can be combined to allow very
quick entry of large amounts of data. If all the data
to be entered is in a single row or column then setting
the quick numeric entry and the appropriate newline
action will allow the numbers to be entered without any
explicit commands to position the current cell or enter
a number.
If the data entry involves several entries in each row
for many rows, then setting the quick numeric entry
option, setting the newline action to move right after
each entry and setting the newline action limits on the
last column on which data should be entered will allow
the data to entered quickly. 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 /_f) and whether a row or column is
cleared by an _x command.
4
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
iterations=_n
Set the maximum number of recalculations before
the screen is displayed again. _I_t_e_r_a_t_i_o_n_s is set
to 10 by default.
tblstyle=_s
Control the output of the _T command. _s can be: 0
(default) to give colon delimited fields, with no
_t_b_l control lines; tbl to give colon delimited
fields, with _t_b_l(1) control lines; latex to give a
_L_a_T_e_X tabular environment; slatex to give a _S_L_a_T_e_X
(_S_c_a_n_d_i_n_a_v_i_a_n _L_a_T_e_X) tabular environment; tex to
give a _T_e_X simple tabbed alignment with ampersands
as delimiters; and frame to give a tblstyle output
for FrameMaker.
Other _S_e_t options are normally used only in _s_c data
files since they are available through ^_T. You can
also use them interactively
autocalc/!autocalc
Set/clear auto recalculation mode.
numeric/!numeric
Set/clear numeric mode.
prescale/!prescale
Set/clear numeric prescale mode.
extfun/!extfun
Enable/disable external functions.
cellcur/!cellcur
Set/clear current cell highlighting mode.
toprow/!toprow
Set/clear top row display mode.
rndinfinity/!rndinfinity
default: round-to-even (banker's round), *.5 will
round to the closest even number; doing a 'set
rndinfinity' will round *.5 up to the next integer
(rounding to infinity).
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
5
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
the next column if the newline action is set to
move the current cell down. _n can be -1 (default)
to disable this facility.
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.
Cursor Control Commands
^P Move the cell cursor up to the previous row.
^N Move the cell cursor down to the next row.
^B Move the cell cursor backward one column.
^F Move the cell cursor forward one column.
h, j, k, l
If the character cursor is not on the top line, these
are alternate, _v_i-compatible cell cursor controls
(left, down, up, right). Space is just like l (right).
H, J, K, L
If the character cursor is not on the top line, these
move the cursor by half pages (left, down, up, right).
^H If the character cursor is not on the top line, ^_H is
the same as ^_B.
SPACE
If the character cursor is not on the top line, the
space bar is the same as ^_F.
TAB If the character cursor is on the top line, TAB starts
a range (see below). Otherwise, it is the same as ^_F.
Arrow Keys
The terminal's arrow keys provide another alternate set
of cell cursor controls if they exist and are supported
in the appropriate _t_e_r_m_c_a_p entry. Some terminals have
arrow keys which conflict 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 combi-
nation it mimics.
^ Move the cell cursor up to row 0 of the current column.
6
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
# 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.
^E_d 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 direc-
tion until the first non-blank cell. This command is
useful when specifying ranges of adjacent cells (see
below), especially when the range is bigger than the
visible window.
g Go to a cell. _s_c prompts for a cell's name, a regular
expression surrounded by quotes, or a number. If a
cell's name such as _a_e_1_2_2 or a the name of a defined
range is given, the cell cursor goes directly to that
cell. If a quoted regular expression such as " _T_a_x
_T_a_b_l_e " or " ^_J_a_n [_0-_9]*$ " is given, _s_c searches for a
cell containing a string matching the regular expres-
sion. See _r_e_g_e_x(_3) or _e_d(_1) for more details on the
form of regular expressions. If a number is given, _s_c
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 table, 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 containing an ERROR).
_g _e_r_r_o_r will take you to the next ERROR, while
_g _i_n_v_a_l_i_d take you to the next invalid. The last _g
command is saved, and can be re-issued by entering
_g<_r_e_t_u_r_n>.
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
7
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
alters the cell's previous numeric value, if any, and
replaces the cell's previous string expression, if any,
leaving only the previously computed constant label string.
Likewise, entering a valid string expression alters the
cell's the previous label string, if any, and replaces the
cell's previous numeric expression, if any, leaving only the
previously computed constant numeric value.
= Enter a numeric constant or expression into the current
cell. _s_c prompts for the expression on the top line.
The usual way to enter a number into a cell is to type
``='', then enter the number in response to the prompt
on the top line. The quick numeric 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 ``='').
< 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 cen-
tered in the column.
> Enter a label string into the current cell to be
flushed right against the right edge of the cell.
F Enter a format string into the current cell. This for-
mat string overrides the precision specified with the
``f'' command. The format only applies to numeric
values. The following characters can be used to build
a format string:
# Digit placeholder. If the number has fewer digits
on either side of the decimal point than there
are `#' characters 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 number is padded with zeroes on either side of
the decimal point. The number of zeroes used in
padding is determined 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 digits on
the right side of the decimal point.
. Decimal point. Determines how many digits are
8
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
placed on the right and left sides of the decimal
point in the number. Note that numbers smaller
than 1 will begin with a decimal 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 number to be formatted with a `,'
separating each set of three digits in the integer
part of the number with numbering beginning from
the right end of the integer.
\ Quote. This character causes the next character
to be inserted into the formatted string directly
with no special interpretation.
E- E+ e- e+
Scientific format. Causes the number to 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 placeholder follow-
ing the `+' or `-', then that part of the format-
ted 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 format 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)'').
Strings you enter must start with ". You can leave off the
trailing " and _s_c will add it for you. You can also enter a
string expression by backspacing over the opening " in the
9
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
prompt.
e Edit the value associated with the current cell. This
is identical to ``='' except that the command line
starts out containing the old numeric value or expres-
sion associated with the cell. The editing in this
mode is vi-like.
^h Move back a character
+ Forward through history (neat) (same as j)
- Backward through history (neat) (same as k)
ESC Done editing
TAB Mark && append a range (ex: A0:A0)
TAB, move around within a range; TAB, append range
string.
CR Save
$ Goto last column
. Insert current dot buffer
/ Search for a string in the history
ESC edit the string you typed
CR search
^h backspace
0 Goto column 0
D Delete to send
I Insert at column 0; ESC revert back to edit mode
R Replace mode; ESC revert back to edit mode
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
d Delete ...
b back word
f forward (right)
h back char
l forward
10
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
t delete forward up to a given char (next char
typed)
w delete next word forward
f Find the next char typed
h Move left a char
i Insert before cursor; ESC revert back to edit mode
j Forward through history (neat) (same as +)
k Backward through history (neat) (same as -)
l Move right a char
n Continue search
q Stop editing
r Replace char
t Goto a char
u Undo
w Forward a word
x Delete the current char (moving to the right)
E Edit the string associated with the current cell. This
is identical to ``<'', ``"'', or ``>'' except that the
command line starts out containing the old string value
or expression associated 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.
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 recalculation order is set. Cells
cleared with this command may be recalled with any of
the _p_u_l_l commands (see below).
m Mark a cell to be used as the source for the _c_o_p_y com-
mand.
c Copy the last marked cell to the current cell, updating
11
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
row and column references in its numeric or string
expression, if any.
+ If not in numeric mode, add the current numeric argu-
ment (default 1) to the value of the current cell. In
numeric mode, ``+'' introduces a new numeric expression
or value, the same as ``=''.
- If not in numeric mode, subtract the current numeric
argument (default 1) from the value of the current
cell. In numeric mode, ``-'' introduces a new, nega-
tive, numeric expression or value, like ``=''.
RETURN
If you are not editing a cell (top line is empty),
pressing RETURN will make _s_c 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.
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 _P_u_t command in that its files are
intended to be reloaded with _G_e_t, while _W_r_i_t_e 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 _t_b_l,
_L_a_T_e_X, or _T_e_X table processors. The delimiters are
controlled by the _t_b_l_s_t_y_l_e option. See _S_e_t above. The
delimiters are are a colon (:) for style _0 or _t_b_l and
an ampersand (&) for style _l_a_t_e_x or _t_e_x.
With the _P_u_t, _W_r_i_t_e, and _T_a_b_l_e commands, the optional range
argument writes a subset of the spreadsheet to the output
file.
With the _W_r_i_t_e and _T_a_b_l_e commands, if you try to write to
the last file used with the _G_e_t or _P_u_t commands, or the file
specified on the command line when _s_c was invoked, you are
asked to confirm that the (potentially) dangerous operation
is really what you want.
12
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
The three output commands, _P_u_t, _W_r_i_t_e, and _T_a_b_l_e, can pipe
their (unencrypted only) output to a program. To use this
feature, enter ``| program'' to the prompt asking for a
filename. For example, to redirect the output of the _W_r_i_t_e
command to the printer, you might enter ``| lpr -p''.
M Merge the database from the named file into the current
database. 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. Since _s_c files are saved as ASCII files,
it is possible to use them as primitive macro defini-
tion files. The _R_u_n command makes this easier. It's
like the _M_e_r_g_e command, but prints a saved path name as
the start of the filename to merge in. The string to
use is set with the _D_e_f_i_n_e command. To write macros,
you must be familiar with the file format written by
the _P_u_t command. This facility is still primitive and
could be much improved.
D Define a path for the _R_u_n command to use.
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 filename. 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 _a_2_2 instead. If the resulting
string starts with ``|'', the rest of the string is inter-
preted as a UNIX command, as above.
Row and Column Commands
These commands can be used on either rows or columns. The
second letter of the command is either a row designator (one
of the characters _r, ^_B, ^_F, _h, _l) or a column designator
(one of _c, ^_P, ^_N, _k, _j). A small menu lists the choices
for the second letter when you type the first letter of one
of these commands. Commands which move or copy cells also
modify the row and column references in affected cell
expressions. The references may be frozen by using the
_f_i_x_e_d operator or using the $ character in the reference to
the cell (see below).
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.
ar, ac
Append a new row (column) immediately following the
13
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
current row (column). It is initialized as a copy of
the current one.
dr, dc
Delete the current row (column).
pr, pc, pm
Pull deleted rows (columns) back into the spreadsheet.
The last deleted set of cells is put back into the
spreadsheet at the current location. _p_r inserts enough
rows to hold the data. _p_c inserts enough columns to
hold the data. _p_m (merge) does not insert rows or
columns; it overwrites the cells beginning at the
current cell cursor location.
vr, vc
Remove expressions from the affected rows (columns),
leaving only the values which were in the cells before
the command was executed.
zr, zc
Hide (``zap'') the current row (column). This keeps a
row (column) 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 be
still be hidden when you reload the spreadsheet. Hid-
den rows or columns are not printed by the _W command.
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.
Enter three numbers: the total width in characters of
the column, the number of digits to follow decimal
points, and the format type. Format types are 0 for
fixed point, 1 for scientific notation, 2 for engineer-
ing notation, and 3 for dates. 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. This command has only a column ver-
sion (no second letter).
@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 column could then be accessed by
@nval("d",@myrow-1). NOTE: @myrow and @mycol can't be
14
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
used in specifying ranges.
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 commands in this class start with a
slash; the second letter of the command indicates which com-
mand. A small menu lists the choices for the second letter
when you type ``/''. _s_c prompts for needed parameters for
each command. Phrases surrounded by square brackets in the
prompt are informational only and may be erased with the
backspace key.
Prompts requesting variable names may be satisfied with
either an explicit variable name, such as _A_1_0, or with a
variable name previously defined in a /_d command (see
below). Range name prompts require either an explicit range
such as _A_1_0:_B_2_0, or a range name previously defined with a
/_d 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 control commands (^_P, ^_N, ^_B, ^_F) or
the arrow keys. The cells in the default range are
highlighted (using the terminal's standout mode, if avail-
able).
/x Clear a range. Cells cleared with this command may be
recalled with any of the _p_u_l_l commands.
/v Values only. This command removes the expressions from
a range of cells, leaving just the values of the
expressions.
/c Copy a source range to a destination range. The source
and destination 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 _b_2_0:_b_2_0.
/f 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 positive or nega-
tive. To fill all cells with the same value, give an
15
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
increment of zero.
/d 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 _A_1_0 or a range such
as _a_1:_b_2_0. Names defined in this fashion are used by
the program in future prompts, may be entered in
response to prompts requesting a cell or range name,
and are saved when the spreadsheet is saved with the
_P_u_t command. Names defined must be more than two alpha
characters long to differentiate them from a column
names, and must not have embedded special characters.
Names may include the character ``_'' or numerals as
long as they occur after the first three alpha charac-
ters.
/l 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 anyway until it is
unlocked.
/U This command is the opposite of the /_l command and thus
unlocks a locked cell and makes it editable.
/s This command lists (shows) the currently defined range
names. If there are no defined range names, then a
message is given, otherwise it pipes output to _s_o_r_t,
then to _l_e_s_s. If the environment variable PAGER is
set, its value is used in place of _l_e_s_s.
/u Use this command to undefine a previously defined range
name.
/F Use this command to assign a value format string (see
the ``F'' cell entry command) to a range of cells.
Miscellaneous Commands
Q
q
^C Exit from _s_c. If you made any changes since the last
_G_e_t or _P_u_t, _s_c asks about saving your data before exit-
ing.
^G
ESC Abort entry of the current command.
? Enter an interactive help facility. Lets you look up
brief summaries 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
16
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
topic.
! Shell escape. _s_c 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.
^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 provide 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 expres-
sions in the highlighted 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.
^V Type, in the command line, the name of the current cell
(the one at the cell cursor). This is useful when
entering expressions which refer to other cells in the
table.
^W Type, in the command line, the expression attached to
the current cell. If there is none, the result is
``?''.
^A Type, in the command line, the numeric value of the
current cell, if any.
The ^_V, ^_W, and ^_A commands only work when the character
cursor is on the command line and beyond the first
17
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
character.
TAB When the character cursor is on the top line, defines a
range of cells via the cursor control commands or the
arrow keys. The range is highlighted, starts at the
cell where you typed TAB, and continues through the
current cell cursor. Pressing TAB again causes the
highlighted range to be entered into the command line
and the highlighting to be turned off. This is most
useful for defining ranges to functions such as @_s_u_m().
Pressing ``)'' acts just like typing the TAB key the
second time and adds the closing ``)''. Note that when
you give a range command, you don't need to press the
first TAB to begin defining a range starting with the
current cell.
Variable Names
Normally, a variable name is just the name of a cell, such
as _K_2_0. 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 _c_o_p_y or _r_a_n_g_e-_c_o_p_y, 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 _f_i_x_e_d operator (see
below), or one of the following variations on the cell name.
_K_2_0 References cell _K_2_0; the reference changes when the
formula is copied.
$_K$_2_0
Always refers to cell _K_2_0; the reference stays fixed
when the formula is copied.
$_K_2_0 Keeps the column fixed at column K; the row is free to
vary.
_K$_2_0 Similarly, this fixes the row and allows the column to
vary.
These conventions also hold on defined ranges. Range refer-
ences vary when formulas containing them are copied. If the
range is defined with fixed variable references, the refer-
ences do not change.
fixed
To make a variable not change automatically when a cell
moves, put the word _f_i_x_e_d in front of the reference,
for example: B1 * fixed C3.
18
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
Numeric Expressions
Numeric expressions used with the ``='' and _e commands have
a fairly conventional syntax. Terms may be constants, vari-
able names, parenthesized expressions, and negated terms.
Ranges may be operated upon with range functions such as sum
(@_s_u_m()) and average (@_a_v_g()). 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:
-, ~
^
*, /
+, -
<, <=, =, !=, >=, >
&
|
19
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
?:
Built-in Range Functions
These functions return numeric values.
@sum(r) Sum all valid (nonblank) entries in the
region whose two corners are defined by
the two variable names (e.g. _c_5:_e_1_4) or
the range name specified.
@prod(r) Multiply together all valid (nonblank)
entries in the specified region.
@avg(r) Average all valid (nonblank) entries in
the specified region.
@count(r) Count all valid (nonblank) entries in the
specified region.
@max(r) Return the maximum value in the specified
region. See also the multi argument ver-
sion of @_m_a_x below.
@min(r) Return the minimum value in the specified
region. See also the multi argument ver-
sion of @_m_i_n below.
@stddev(r) Return the sample standard deviation of
the cells in the specified region.
@lookup(e,r)
@lookup(se,r) 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 expression can be
either a string expression or a numeric
expression. If it is a numeric expres-
sion, the range is searched for the the
last value less than or equal to _e. If
the expression is a string expression, the
string portions of the cells in the range
are searched for an exact string match.
The value returned is the numeric value
from the next row and the same column as
the match, if the range was a 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(se,r,n) Evaluates the expression then searches
through the first row in the range _r for a
matching value. The expression can be
either a string expression or a numeric
expression. If it is a numeric expres-
sion, the row 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 row
are searched for an exact string match.
The value returned is the numeric value
20
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
from the same column _n rows below the
match.
@vlookup(e,r,n)
@vlookup(se,r,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 expres-
sion, 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(e,r) Use the value of the expression _e to index
into the range _r. The numeric value at
that position is returned. The value 1
selects the first item in the range, 2
selects the second item, etc. _R should be
either a single row or a single column.
@stindex(e,r) Use the value of _e to index into the range
_r. The string value at that position is
returned. The value 1 selects the first
item in the range, 2 selects the second
item, etc. The range should be either a
single row or a single column.
Built-in Numeric Functions
All of these functions operate on floating point numbers
(doubles) and return numeric values. Most of them are stan-
dard system functions more fully described in _m_a_t_h(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.
21
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
@rnd(e) Round _e to the nearest integer. default:
round-to-even (banker's round), *.5 will
round to the closest even number; 'set
rndinfinity' will round *.5 up to the next
integer.
@round(e,n) Round _e to _n decimal places. n may be
positive to round off the right side of
the decimal, and 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 _e_1 raised to the power of _e_2.
@hypot(e1,e2) Return sqrt(e1*e1+e2*e2), taking precau-
tions against unwarranted overflows.
pi @pi A constant quite close to pi.
@dtr(e) Convert _e in degrees to radians.
@rtd(e) Convert _e in radians to degrees.
@sin(e)
@cos(e)
@tan(e) Return trigonometric functions of radian
arguments. The magnitude of the arguments
are not checked to assure meaningful
results.
@asin(e) Return the arc sine of _e in the range
-pi/2 to pi/2.
@acos(e) Return the arc cosine of _e in the range 0
to pi.
@atan(e) Return the arc tangent of _e in the range
-pi/2 to pi/2.
@atan2(e1,e2) Returns the arc tangent of _e_1/_e_2 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 @_m_a_x 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 @_m_i_n above.
@ston(se) Convert string expression _s_e to a numeric
value.
22
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
@eqs(se1,se2) Return 1 if string expression _s_e_1 has the
same value as string expression _s_e_2, 0
otherwise.
@nval(se,e) Return the numeric value of a cell
selected by name. String expression _s_e
must evaluate to a column name (``A''-
``AE'') and _e must evaluate to a row
number (0-199). If _s_e 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
@_s_v_a_l() below.
String Expressions
String expressions are made up of constant strings (charac-
ters surrounded by double quotation marks), variables (cell
names, which refer to the cells's label strings or expres-
sions), 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 expres-
sion
A0 # "zy dog"
displays the string ``the lazy dog'' in the cell if the
value of _A_0's string is ``the la''.
Built-in String Functions
@substr(se,e1,e2) Extract and return from string expression
_s_e the substring indexed by character
number _e_1 through character number _e_2
(defaults to the size of _s_e if beyond the
end of it). If _e_1 is less than 1 or
greater than _e_2, the result is the null
string. For example,
@substr ("Nice jacket", 4, 7)
returns the string ``e jac''.
@fmt(se,e) Convert a number to a string. The argu-
ment _s_e must be a valid _p_r_i_n_t_f(3) format
string. _e is converted according to the
standard rules. For example, the expres-
sion
23
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
@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 _s_e must evalu-
ate to a column name (``A''-``AE'') and _e
must evaluate to a row number (0-199). If
_s_e 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(e) and @lower(e) will case the string expres-
sion to upper or lower.
@capital(e) 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).
@upper(e) and @lower(e) will case the string expres-
sion to upper or lower.
@capital(e) will convert the first letter of words in
a string into upper case.
@ext(se,e) Call an external function (program or
script). The purpose is to allow arbi-
trary functions on values, e.g. table
lookups and interpolations. String
expression _s_e is a command or command line
to call with _p_o_p_e_n(3). The value of _e is
converted to a string and appended to the
command line as an argument. The result
of @_e_x_t() is a string: the first line
printed to standard output by the command.
The command should emit exactly one output
line. Additional output, or output to
standard error, messes up the screen.
@_e_x_t() returns a null string and prints an
appropriate warning if external functions
are disabled, _s_e 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 disabled by default.
You can enable them with ^_T when you
24
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
really want them called.
A simple example:
@ext ("echo", a1)
You can use @_s_t_o_n() to convert the @_e_x_t()
result back to a number. For example:
@ston (@ext ("form.sc.ext", a9 + b9))
Note that you can built a command line
(including more argument values) from a
string expression with concatenation. You
can also "hide" the second argument 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 spreadsheets and financial
calculators
@pmt(e1,e2,e3) @_p_m_t(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) @_f_v(100,.005,36) computes the future value
for of 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 com-
pounded monthly?"
@pv(e1,e2,e3) @_p_v(1000,.015,36) computes the present
value of an a ordinary annuity of 36
monthly payments of $1000 at 18% annual
interest. It answers the question: "How
much can I borrow at 18% for 30 years if I
25
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
pay $1000 per month?"
Built-in Date and Time Functions
Time for _s_c follows the system standard: the number of
seconds since 1970. All date and time functions except
@_d_a_t_e() return numbers, not strings.
@now Return the current time encoded as the
number of seconds since the beginning of
the epoch (December 31, 1969, midnight,
GMT.)
@dts(e1,e2,e3) @_d_t_s(9,14,1988) converts the date Sep-
tember 14, 1988 to the number of seconds
from the epoch to the first second of
9/14/88, local time. For example,
@_d_a_t_e(@_d_t_s(12,14,1976)) yields
_T_u_e _D_e_c _1_4 _0_0:_0_0:_0_0 _1_9_7_6
The month should be range from 1 to 12,
the day should range from 1 to the number
of days in the specified month, and the
year should range from 1970 to 1999.
@tts(e1,e2,e3) @_t_t_s(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 seconds should
range from 0 to 59.
The following functions take the time in seconds (e.g. from
@_n_o_w) as an argument and return the specified value. The
functions all convert from GMT to local time.
@date(e) Convert the time in seconds to a date
string 24 characters long in the following
form:
_S_u_n _S_e_p _1_6 _0_1:_0_3:_5_2 _1_9_7_3
Note that you can extract parts of this
fixed-format string with @_s_u_b_s_t_r().
@year(e) Return the year. Valid years begin with
1970. The last legal year is system
dependent.
@month(e) Return the month, encoded as 1 (January)
to 12 (December).
@day(e) Return the day of the month, encoded as 1
26
SC 6.21 (1) USER COMMANDS SC 6.21 (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 _i_t_e_r_a_t_i_o_n_s times for each
update if necessary, so forward references usually work as
expected. See _s_e_t 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 _A_0's expression to
``A0+1'').
@numiter Returns the number of iterations performed
so far.
FILES
tutorial.sc tutorial spreadsheet
SEE ALSO
bc(1), dc(1), crypt(1), psc(1)
BUGS
Top-to-bottom, left-to-right evaluation of expressions is
silly. A proper following of the dependency graph with
(perhaps) recourse to relaxation should be implemented.
Only one previous value is saved from any call of @_e_x_t().
If it is used more than once in a spreadsheet and external
functions are enabled and later disabled, the last returned
value pops up in several places.
On some systems, if the cell cursor is in column 0 with top-
line 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 _c_u_r_s_e_s.
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.
27
SC 6.21 (1) USER COMMANDS SC 6.21 (1)
AUTHORS
This is a much modified version of a public domain spread
sheet originally authored by James Gosling, and subsequently
modified and posted to USENET by Mark Weiser under the name
_v_c. The program was subsequently renamed _s_c, and further
modified by numerous contributors, Jeff Buhrt of Proslink,
Inc. ({sequent, uunet}!sawmill!prslnk!buhrt) and Robert
Bond of Sequent, prominent among them. Other contributors
include: Tom Anderson, Glenn T. Barry, Gregory Bond, Stephen
(Steve) M. Brooks, Peter Brower, John Campbell, Lawrence
Cipriani, 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 Hor-
ton, Jonathan I. Kamens, Peter King, Tom Kloos, Casey Lee-
dom, 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.
28