home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
zip
/
sp_sheet
/
opus22.lzh
/
OPUS22.DOC
< prev
next >
Wrap
Text File
|
1989-08-13
|
31KB
|
727 lines
Opus 2.2 Manual Addendum
Copyright 1989 Doug Harrison
Release Date: 8/12/89
----------------------------
What follows documents the changes and additions made to Opus 2.2
relative to the most recent release, Opus 2.1.
>>> Shareware
Opus 2.2 is a shareware program. If you find it useful, please send a
check for $15 or more to the address below:
Doug Harrison
P.O. Box 66236
Baton Rouge, LA 70806-6236
In return, I will send you a disk containing Opus 2.3, which features
Lotus 123 WKS and WK1 file operations (both reading and writing).
>>> Bug Fixes
ASSIGNER.PRG was case-sensitive, causing it to remove valid font sets
that differed in case. This has been fixed.
COPY and MOVE range now conform to the Lotus 123 standard regarding
adjustment of relative and absolute cell references (this also
applies to row and column insertion and deletion, which are block
moves).
A minor bug affecting relative/absolute settings of cell references
supplied to the ISEMPTY, ROW, ROWS, COLUMN, and COLUMNS functions has
been fixed.
Freeze titles did not work properly if one attempted to freeze the
last row or column on screen. This has been fixed.
Other than questions about the COPY and MOVE operations, I've
received no bug reports.
/***************************************/
/* */
/* Worksheet */
/* */
/***************************************/
>>> Files
Opus 2.2 files tend to be smaller than those create by prior
versions. This is partly due to the more efficient formula
representation, which will be described later. Also, earlier versions
saved the information for all four charts, whether the charts were
used or not, adding about 6.5K bytes to each .OPS file. Opus 2.2
saves chart information on a chart by chart basis; a given chart will
be saved only if its independent range or any of its dependent ranges
are defined. This criteria makes sense, as a chart can not be plotted
unless these ranges are defined.
>>> Data Entry
The text editor has undergone further improvements. A list of the
commands and description of the two editing modes may be found under
Help/Keyboard, so I will not repeat that information here. Due to the
new method of storing formulas, Opus will not allow you to exit a
formula cell if a syntax error has occurred. If you are unable to
correct the formula, you must delete it by clicking on the Cross icon
in the panel. The menus and window controls are inactive in Edit
mode.
The maximum length of labels and formulas has been increased from 100
characters to 240. The edit area dynamically expands and contracts to
accommodate the text.
Opus 2.2 no longer places any restriction on which characters may be
entered into numeric cells.
You may now set a numeric cell to the NA error status, as in 123, by
entering "NA" into the cell. This is a new error status.
Opus 2.2 has a limited ability to accept date/time strings in numeric
cells; it will convert such strings to serial date/time values. As of
this release, the following formats are supported:
Date: month/day/year (m/d/yy),
Time: hours:minutes:seconds (hours use military convention),
Both date and time, separated by a space.
Since Opus can't yet interpret all the possible date/time formats,
the serial date value that's generated will be displayed in the edit
area as a real number, and not in a date/time format. Date and time
within formulas must be represented using the appropriate functions.
The date/time strings described above may also be entered into the
Start field in the Data Fill dialog box, and the same restrictions
apply.
Opus now supports character repetition for labels, as in 123. To
August 10, 1989 p. 2 Opus 2.2
define a label as a repeating character that expands to fill the
cell, enter the backslash followed by the character.
>>> Range Selection with the Mouse
Opus 2.2 improves upon the scrolling feature of earlier versions.
Now, when extending a range through scrolling, you may hold down the
SHIFT key, and Opus will scroll by screens rather than single rows or
columns. Releasing the SHIFT key causes Opus to revert to single row
or column scrolling.
>>> Copy/Move Range
Where these functions are concerned, earlier versions of Opus had
their own ideas on adjusting relative and absolute cell references.
Opus 2.2 now behaves like Lotus 123; the rules are:
Interior Reference Exterior Reference
Copy
Interior cell T T
Exterior cell F F
Move
Interior cell T* F
Exterior cell T* F
Interior cells are within the source range; exterior cells are
outside the source range. Interior references point to cells within
the source range, while exterior references point to cells outside
the source range. T = TRUE, meaning reference will be adjusted; F =
FALSE, meaning reference won't be adjusted. The asterisk indicates
that the operation applies to absolute references as well as relative
references; thus, relative and absolute references are handled
identically for worksheet MOVE operations.
This table should be read as, "if COPYing, interior references
occurring within interior cells will be adjusted." Or as another
example, "if MOVing, exterior references occurring within interior
cells will not be adjusted."
Chart ranges are now adjusted when they are affected by worksheet
MOVE operations (these include row/column insertion/deletion).
You will notice that Opus no longer displays the "Absolute vs.
Relative" alert box; when first designing this program several years
ago, I thought this would be good to have. However, no other
spreadsheets seem to include such a feature, and after someone
mentioned this on GEnie, I realized that I had never even used it
myself! (I guess it faded from my consciousness) Anyway, it's gone
now, saving a step. Similarly, this option no longer exists when
inserting/deleting rows/columns, nor is it available when replicating
cells.
>>> Insert/Delete Rows and Columns
The Range menu was becoming rather cluttered, especially after moving
August 10, 1989 p. 3 Opus 2.2
the Define Names item here and adding the Create Table option. Thus,
the insert/delete functions have been condensed into a single
Row/Column item. Clicking on this menu entry invokes a popup menu
containing the four possibilities. Clicking on a popup item executes
the function with no further requests for verification, so be
careful. The function key equivalents work as in the old versions,
and they still invoke the familiar "Insert Row?" type prompts.
These functions have been made more powerful. You may now
insert/delete multiple rows and columns; for example, you have
selected A1:B5 and choose to insert rows. Five rows will be inserted,
confined to columns A and B. You will notice that Opus no longer
prompts you to specify "whole" vs. "partial;" the extent of all these
operations is now partial. To operate on a whole row or column, you
must select the entire row or column by clicking on the appropriate
header. You may extend the selected range by clicking on more than
one header. Finally, these functions will be unavailable if no range
is selected.
Opus won't allow you to insert rows or columns if data would be lost
in the process.
Since these operations are block moves, relative and absolute cell
references are adjusted as discussed above.
Remember! Since Opus now defines all insertion/deletion operations as
partial, the extent of the selected range is very important. This may
take some getting used to, but overall this method is more consistent
and thus superior to the previous one.
>>> Named Cell and Range References
Named references may now be up to 15 characters long, the same
maximum length allowed by Lotus 123. Unlike 123, Opus's named
references may be specified as fully or partially absolute.
Previous versions stored the actual text names within formulas; Opus
2.2 stores only cell and range references within formulas. This
speeds up formula evaluation, since the value of the name needn't be
looked up. Opus now connects the names and references when it
recreates the formula for display. This means that if the range
reference "A1:B5" appears in several formulas, and you later define
the name "OPUS" to refer to that range, all these cells will display
"OPUS" for that range. However, the range "$A$1:$B$5" will _not_
match the name "OPUS," since it is absolute (123 would match this).
The only exception to this rule is related to using cell and range
names in dialog box range fields; absolute/relative status is ignored
here. In particular, chart ranges are always absolute.
Adjusting the value of a named reference results in modification of
all cells containing a match to that reference.
A new option to create a table of defined names is found under the
Range menu title.
August 10, 1989 p. 4 Opus 2.2
>>> Using Named References in Dialog Boxes
All Opus dialogs that require a cell or range as a parameter now
accept named references. In fact, clicking on the field invokes a
scrollable list from which you may select any defined name, provided
at least one name has been defined. To quickly select a name and
return to the calling dialog box, double click on the name.
Note that if you have selected a range prior to opening the dialog
box, the range might match one of the named references (as mentioned
above, relative/absolute status is ignored here). In such cases, the
name will appear in the dialog box, rather than the explicit range.
Tip: Although the range fields are now selectable, you can still
position the editing cursor with the mouse and avoid invoking the
Names dialog. Just click within the range field, move the mouse
outside of the field, and release the mouse button. This also works
to avoid the font selector in the chart titles dialog.
>>> New Functions
ATAN2(x-expr,y-expr): 4 quadrant arctangent.
NA(): Returns the NA error status.
ISNA(expr/range list): Tests specifically for the NA status. Returns
1 if any expression evaluated to NA and 0 otherwise. ISERR doesn't
register TRUE for NA. This should be compatible with Lotus 123,
while retaining Opus's more informative error reporting.
TRUE(): Returns 1.
FALSE(): Returns 0.
>>> Formula Representation
Opus 2.2 stores formulas in memory and on disk in a much more
efficient fashion compared to earlier versions. In fact, it can't get
much more efficient. This is the result of three modifications.
First, Opus 2.2 has an integer data type, which consumes only 2 bytes
of memory for integers falling in the range -32768...32767. Prior
versions stored all numbers as double precision floating point
numbers requiring 8 bytes each.
Second, and most important, Opus 2.2 compiles formulas from their
parse tree representation to a much more compact form.
Third, Opus 2.2 discards the text of the formula, as it is no longer
necessary. To display a formula in the edit area, Opus 2.2 recreates
the formula from the compiled notation.
>>> Compatibility with Opus 2.0 and 2.1
Although Opus 2.2 is completely compatible with earlier versions, a
couple of things should be noted.
First, unnecessary parentheses in formulas imported from earlier
versions will not be preserved. As an example, if you had a formula
August 10, 1989 p. 5 Opus 2.2
"(2*3)+4" in Opus 2.0 or 2.1 and loaded the worksheet into Opus 2.2,
the parentheses would be lost, as the operator precedence rules make
them unnecessary. However, were the formula "2*(3+4)," the
parentheses would be preserved, since they are definitely needed if
the formula was to be recompiled. A discussion of the factors
influencing this decision would be quite lengthy, so suffice it to
say this is the best, and in terms of file-loading speed, swiftest
solution to the problem of converting formulas to the new format.
Formulas created from scratch in Opus 2.2 _will_ retain any
unnecessary parentheses that are used.
Second, as mentioned earlier, Opus 2.2 discards the formula text, as
it takes up space and is completely unnecessary. This has one
side-effect: Opus has no way of remembering the exact format of
numbers you use in formulas. That is, a number ".000022" in a formula
would be displayed as "2.2E-5" when Opus recreates the formula text.
The rules are as follows:
1. trailing zeroes are always suppressed,
2. maximum of 15 digits will be displayed,
3. numbers whose absolute values are < 1E-3 (but not 0) or > 1E10
are displayed in scientific notation,
4. numbers originally entered in percent or scientific notation
_will_ retain these attributes when the formula is recreated,
5. fractions will always be displayed with a leading 0, such as in
0.12.
>>> Help
Opus 2.2 uses disk-based help files, which replace the dialog boxes
in earlier versions. This saves about 10K of resource file space, for
an overall savings of about 8K or so in program size when loaded into
the ST (the resource file _is_ part of the program in memory, yes?).
Opus expects to find its Help files in a folder called OPUSHELP,
which must be present in the directory from which you launched Opus.
Naturally, Opus will alert you should it prove unable to locate the
requested Help file.
Operation of the generic help dialog is very simple. Two buttons in
the lower left corner allow you to page up and down through the help
text. A button becomes disabled when paging in its direction is
impossible.
The help-file reader is relatively unsophisticated, so it's probably
not a good idea to edit the help files. If you do wish to modify the
files, the maximum line length is 60, the total number of lines
shouldn't exceed 100, and the number of lines should be a multiple of
15 (if it's not a multiple of 15, the paging will be adversely
affected, but no harm will result).
August 10, 1989 p. 6 Opus 2.2
/***************************************/
/* */
/* Charting */
/* */
/***************************************/
>>> Chart and Axis Titles
The chart title may be enclosed within a box or shadowed box.
Chart and axis titles may now be left and right justified, in
addition to the standard center justification. You select
justification by clicking on the L, C, and R buttons in the chart
titles dialog.
You may drag the titles to a new position. Dragging is limited to the
horizontal plane for chart and horizontal axis titles and to the
vertical plane for vertical axis titles. You may still control the
distance of the titles from the chart through the Chart Dimensions
dialog. To return a title to its default position, select the Snap
button in the Titles dialog.
Double-clicking on a title invokes the titles dialog, and the text
cursor is placed within the first line of the selected title.
>>> Floating Legend
The legend may be dragged to a new position. You may return it to its
default position by deselecting the "Floating" button in the Legend
dialog. You may still control the orientation, horizontal vs.
vertical, when the legend is floating.
Double clicking on the legend invokes the Legend Dialog.
>>> Chart Dimensions
Opus 2.2 allows you to specify the amount of white space separating
the chart elements from the frame borders. The default is 0.10 inch.
Tip: I haven't gotten around to fixing the problem of right-side
legends overlapping pie slice text, mainly because it's impossible to
solve this in the general case by shrinking the pie. It's got to
involve moving the center of the pie to the left, which is the
equivalent of increasing the white space area on the right. For the
time being, a workaround is as follows: increase the right-side white
space to an inch or two, then drag the legend to a nice place on the
side of the chart. This ability to change the white space also allows
you to easily place the legend on the left side of any chart type;
all you must do is alter the left-side white space.
>>> Logarithmic Scaling
Opus now supports logarithmic scaling for both axes; this feature is
August 10, 1989 p. 7 Opus 2.2
found in the Scale dialog. Logarithmic grid lines may be displayed
through the axis grid lines features. Log scaling is supported for
scatter, line, and bar charts but not for area and stacked bar
charts.
>>> Axis Reduction Factor
This feature allows you to control the range of the axis tick labels.
For example, the independent axis tick labels might be 200,000,
400,000, 600,000, etc.; setting the axis reduction factor to 10^-5
would cause the labels to be displayed as 2, 4, 6, etc. Reduction
factors are always integral powers of ten. This feature is found in
the Scale dialog.
>>> Marker Suppression
Found under the Options menu, this item allows you to disable drawing
of data point markers for scatter and line graphs. Markers will only
be suppressed for data series that are 1. plotted as a line, 2. have
an associated regression line, or 3. plotted as a spline. Otherwise,
the series would be invisible. When markers are suppressed, Opus uses
patterned lines to distinguish between the series.
>>> Legend Markers
When appropriate, Opus 2.2 draws lines for legend symbols. For
example, the symbol for series A in a line chart would appear as -o-
in the legend. However, if the Series A marker was suppressed, the
legend symbol would be a solid line. Naturally, Opus matches the line
pattern for a given legend entry with the pattern used in the chart
for that data series. Lines will be drawn in the legend for line
charts and splines, but not for regression series in scatter charts,
unless markers have been suppressed.
>>> Smooth Curves
Opus 2.2 contains a generic smooth curve plotting facility.
Currently, Opus uses it to generate curves for the three non-linear
regression models, linear regression when logarithmic scaling is in
effect, and cubic splines. Smooth curve plotting is fully supported
under logarithmic scaling.
Some smooth curve plotters require you to enter lower and upper
limits and a step value for generating "x-values" for the curve. For
example, you would need to enter 1 as a lower limit, 10 as an upper
limit, and 0.5 as the step value. Points on the curve would occur at
x = 1, x = 1.5, x = 2.0, ... x = 10. The disadvantage is that all of
these numbers may change from curve to curve, and it's difficult to
find good default settings. It would be better to abstract things a
bit further and bind the step value to the output device resolution,
making it independent of the range of the x-values.
The process is as follows. Opus determines the minimum value of the
independent variable. Then, it determines where this value appears on
August 10, 1989 p. 8 Opus 2.2
the output device, in terms of output device pixels. To compute a
point, Opus converts this pixel value to the equivalent real number,
which is within the range of the independent variable. Using this
value, it applies the proper function to compute the value of the
dependent variable at that point. To plot the point, Opus then
converts the real-valued coordinates to final device coordinates. So
far, this sounds like a lot of work for nothing. However, the
advantage lies in the manner in which Opus steps to the next point.
Since Opus knows the pixel location of the point, it can simply add
an integer pixel step value to the location and repeat the process to
generate the next point. And of course, the user has control of this
step value.
To illustrate the above, consider a function whose independent range
is 10,000. Who's to say what the optimum real-valued step value is,
especially when the output device resolution varies from 120 DPI to
300 DPI? Should it be 0.1, 1, 10, 100? The bottom line is that if
your printer has a resolution of 150 DPI, you can't plot points
closer together than 1/150 inch. Therefore, you shouldn't waste time
computing them. And if Opus, like many programs, was to limit you to
real-valued step values, you would have no good way of accurately
controlling the curve resolution at this level.
Drop down the Chart Special menu and select the Resolution item. You
will note a box labeled "Pixel Step Value," which contains buttons
labeled 1-10. These buttons represent the pixel step values described
above. Button 1 means "evaluate curve at every pixel," button 2 means
"evaluate curve at every 2nd pixel," button 3 means "at every 3rd
pixel," and so on. The selected value applies to all output devices.
Just below this box is another called "Printer Resolution." It
contains four buttons, and these allow you to specify the printer and
metafile resolution. This is necessary because all printing is based
upon metafiles, Opus metafiles are plotted at 800 DPI, and you
definitely don't want to evaluate every pixel at 800 DPI. Thus,
select whatever value is appropriate for your printer. Most Epson
9-pin printers provide 144 DPI, so choose 150. If you have a 360 DPI
NEC printer and regularly print at this resolution, choose the 360
button. What this does is bind the pixel step values to the indicated
resolution; for example, plotting every pixel at 300 DPI is obviously
not the same as plotting every pixel at 150 DPI. If you chose to
evaluate every pixel at 150 DPI and then actually sent the chart to a
300 DPI printer, you would be plotting at 150 DPI, which may or may
not be a problem. It just depends on how rapidly the curve changes.
Finally, remember that printers have higher resolution than the ST
screen, which is about 80 DPI horizontally. Thus, if the pixel step
value is 5, 16 values (80/5) will be computed for each inch on the
screen. However, if the printer resolution is set to 150 and the step
value kept at 5, 30 values (150/5) are computed for each inch when
printing a chart or saving a metafile. This difference between the
number of values computed per inch for the screen and printer is
generally desirable, because an acceptable-looking curve generated at
16 VPI (Values Per Inch) on the screen might contain "spiky" features
when sent to a higher resolution printer at 16 VPI. I have to admit I
was surprised to discover this, since the same points are being
evaluated for both screen and printer. However, a line 1-pixel wide
plotted at 80 DPI on the screen is almost twice as thick as one
August 10, 1989 p. 9 Opus 2.2
plotted at 150 DPI, and this extra thickness tends to obscure detail
that becomes evident at the higher resolution.
Tip: I've found 5 to be a generally good setting for the step value.
It works with a wide variety of curves, and you should only have to
decrease the step value for extremely rapidly changing curves. You
will in fact be able to increase the step value for many curves, and
this will increase the plotting speed.
Tip: You can quickly determine how many VPI you are using when saving
metafiles or printing by dividing the selected printer resolution by
the pixel skip value. This implies a certain minimum VPI for each
resolution. For example, at 300 DPI and skip value = 10, the minimum
VPI is 300/10 = 30 VPI. If you feel this is excessive, select a lower
resolution, such as 180. With a skip factor of 10, you would be
plotting 18 VPI.
Tip: Even if you normally use a 9 pin printer with only 144 DPI
resolution, you can still prepare a smooth curve for a higher
resolution printer. To do so, simply select the desired higher
resolution from the Printer Resolution options and save a metafile.
Plotting at a resolution higher than necessary never hurts anything!
It just takes longer. Plotting at too low a resolution may cause
otherwise graceful bends in a curve to become spiky-looking.
>>> Smooth Curve Errors
One source of error common to all smooth-curve plotting is related to
a portion of the curve lying outside the charting area. Opus will
cease plotting a smooth curve if a piece of the curve doesn't fit
within the 8x5 inch maximum chart area.
>>> Non-Linear Regression Models
Opus 2.2 is capable of plotting the non-linear regression models. To
enable this feature, select the regression ranges as usual but also
click on the appropriate "model button" in the chart range selector.
Obviously, it's very important that the model type in the REGR
function agree with the model chosen with the chart range selector.
This group of buttons only appears when selecting a regression range.
When plotting the non-linear models, Opus may report an error and
cease plotting the curve. This may happen for a couple of reasons,
but the first thing to check is the Regression Extent. For example,
logarithmic curves may not touch the dependent axis. Exponential
curves may not touch the independent axis. This is simply what the
mathematics says and not a bug. Generally, you can solve this type of
problem by setting the regression extent to Data Range.
>>> Splines
Opus 2.2 implements natural cubic splines, drawn by the generic
smooth curve plotter. A spline is a mathematical/algorithmic construct
that generates a smooth curve through an arbitrary set of points. To
August 10, 1989 p. 10 Opus 2.2
create a spline, the charting mode must be set to either Scatter or
Line. You may designate any or all of the data series as spline
series through the Spline dialog, which is found under the Chart
Special menu. Splines have a higher precedence than lines, so
plotting of lines for Line charts will be suppressed for the Spline
series. As with line charts, suppressing markers on a spline series
results in drawing of a patterned line for that series.
Computing a spline requires free RAM, as a temporary array is created
to facilitate the calculations. Roughly 50 bytes per data point is
required; for example, if series A consists of 10 (x,y) pairs,
approximately 500 bytes of free RAM is required to compute the
spline. No memory is required for the step values. This is similar to
the MEDIAN function; Opus allocates the memory from the worksheet
free space and returns that memory once the calculations have been
completed. An error message will appear if you don't have enough free
RAM.
August 10, 1989 p. 11 Opus 2.2