Beruflich Dokumente
Kultur Dokumente
INTRODUCTION
New Features
The major changes between DataFlex 3.0 and 3.01 are documented in
their own chapters in this update. Together with the manuals for
Revision 3.0, this update constitutes the documentation for DataFlex
3.01. Following is a summary of the changes:
Problems Fixed
Essential Steps
If your programs use the UIMS (i.e. they include use ui), you must
recompile them with the new compiler and packages.
If you wish to use the database file header integrity checking facility
on any pre-existing database file, you must explicitly activate it in File
Definition, View, Parameters (one time only). The header integrity
checking feature is on by default for every database file created in
DataFlex 3.01, but it may be turned off explicitly in the same part of
File Definition. A .HDR ASCII file definition file will be created in the
same directory as the .DAT file for each such database file, and you
must not delete or edit it.
How It Works
Subsystems
Revision Compatibility 5
Subsystem Subsystem# Version#
General Flex 0 1
UI 1 1
Data_Set 2 1
#CHKSUB
Data Files
Data files contain the DataFlex revision number under which they
were created, or to which they were updated with File Definition. A
runtime will only open data files from a revision that it knows about.
Trying to open data files containing any other revision number will
generate a fatal error.
FMAC, packages, precompiled source, and the program itself must all
be in sync with the compiler. The #CHKSUB compiler directive works
toward this. In addition, any precompiled header or package compiled
with another revision of the compiler will be recompiled (even one
that came from a compatible revision). Compatibility information only
reflects the internals of the runtime, not the state of FMAC or of the
packages. Limiting the use of precompiled code to only the current
compiler helps to ensure that all code is valid.
Header Corruption
Data Corruption
Data may also become corrupted for various reasons, and File
Maintenance can usually detect this (during a reindex). You can
specify whether File Maintenance fixes bad data or writes it to a file.
New
Parameters
Header Integrity Checking. The DataFlex runtime and utilities will not
allow access to the data file if it has a corrupted header. However, if
header integrity checking is turned on, each time the data file is saved,
information is written to an .HDR file (in the same directory as the
.DAT file) which will enable header repair if it becomes necessary. If
header integrity checking is turned off, no .HDR file is written and
header repair will not be possible.
For new files, the default for header integrity checking is on (an X in
the check box) so if you want it turned off, clear the check box. For
existing files, header integrity checking is off until you turn it on.
Maintenance
Database
Repair. If the header of the file becomes corrupted, users will see an
error message and will not be able to access the file. Provided header
integrity checking is enabled in a data file’s parameters, and provided
the .HDR file in the same directory as the data file has not been edited
or deleted, you may use the Repair option on the Database pull-
down menu (located in the Filelist menu) to repair the header.
Character Translation
Do not use this feature unless you know you have a serious need to
do so.
If a change has been made, but not OKed, a prompt will query
whether the user wishes to abandon the change made. OKed changes
After you have revised the settings for a character, you must press the
<F2=OK> button to accept the new settings before going on to another
character or returning to the main program. If you attempt to move to
another character after having entered changes to a character, you will
receive a prompt asking whether you wish to save or abandon the
changes you have made to the current character. If, on the other hand,
you press q, your work in progress on the current character will be
abandoned with no warning or report.
DOS critical errors are those in which the operating system reports to
the screen describing the error and then offering choices such as
(A)bort, (R)etry, (F)ail. Earlier revisions of DataFlex did not trap the
screen reports to maintain the screen display of the application, nor
did it support responses allowing the application to recover and
continue running.
The three responses available in the critical error handler have varying
effects on the DataFlex program that was running at the time of the
error.
The phrases Error on, drive, and device can each be substituted by static
words and phrases of your own by entering the desired strings into
the windows in the Shows as column.
The option(s) are, in English, Abort, Retry, and Fail. Your own
preferred strings may be entered for each of these options in the
Shows as column, together with the lists of characters eligible for use
by users as responses (as single characters) in the Keys column. For
example, for Retry, the initial letter (R) would typically listed as
eligible. Where Retry is replaced with a different string, the initial or
other mnemonic character from the replacement string would
presumably be preferable.
The options available to users can be restricted through the list shown
on the first line of the Critical Error Handling dialog box. Any or all of
Abort, Retry, or Fail can be enabled for users. If you wish the error
report to display with no response allowed, deselect the Allow user
response check box. Where the operating system itself suppresses
one of the options, however, display and access to the option will
likewise be suppressed in the critical error handler. These govern both
the display of the option and the reaction to user keystrokes.
Regardless of which responses are enabled for users, error reports are
still made (see below), and the system can still make automatic
responses.
You may run File Maintenance direct from the command line, or you
may chain to it from File Definition. If you want to start File
Maintenance alone, without accessing it through File Definition, you
may enter one of the following commands:
DFMAINT -c xxx Converts the file with the number xxx in the
current filelist from 2.3b format to 3.0
format.
If you make any changes to the structure of files using File Definition,
those files will automatically be restructured and converted to 3.0
format when you exit the utility. You can also convert files to 3.0
format without making any changes. To do so, select Maintenance
from the File Definition menu bar, and Maintenance again from the
pull-down. From the action bar of the chained-to File Maintenance
Utility, select Maintenance, then Filelist. Tag the file(s) you want
to convert by moving the cursor to them and pressing g, then
select Database from the action bar (a+D), then Convert. Answer
A log file will be written with the name dfmaint.log. This file will
contain information concerning the conversion process. If you press
q while conversion is in progress, the conversion of the current file
will abort, and the conversion of the next file (if any) will begin. An
entry in the log file will record this fact.
See the chapter "Header Integrity Checking" in this update guide for
details of file repair, and the File Definition chapter in the User’s Guide
for details of the other functions mentioned.
With the Error Utility (FLEXERRS.FLX), you can modify the message
descriptions in the databases and add new messages of your own in
FLEXERRS.DAT. These facilities are provided for the consistent
interpretation of errors from utilities, the runtime, and error
commands in your programs that do not have their own message text.
When errors occur in the use of the DataFlex error system, default
Error Utility 21
error messages are reported. The texts of these messages can be
modified through a facility provided in the Configuration Utility.
You can add new error numbers to FLEXERRS.DAT using the Error
Utility, but new numbers may only be added incrementally to those
that already exist. That is, you may not add any number to the file
other than the one which ordinally follows the highest number already
in the file.
To run the Error Utility, enter DFRUN FLEXERRS from the command
line. You will see a simple data entry screen, with an action bar
containing the standard File, Record and Help pull-downs. The
File pull-down has choices for each of the error message files in use
(at the time of writing these are User Errors, System Errors and
Utility Errors) together with Exit. You may pick whichever error
message file you want to edit from this list. Provided the file you pick
can be found, a table of errors and notes will be displayed. In the case
of FLEXERRS.DAT, the Error Number is the record number
(recnum), and in the other files it is the record number plus an
appropriate offset. Error Description is an ASCII field of 40
characters, and Notes is an ASCII field of 24 characters.
You may find and save records in all the files in the normal way, and
you may delete records in FLEXERRS.DAT in the normal way, except
that you may not delete the first 100 records. For safety, if you want to
delete a record or save an edited record, you must first answer a
confirmation message. If you receive error messages about trying to
create or delete in a protected file, you are either trying to delete
records which must not be deleted, or you are in an area where you
do not have appropriate rights.
Error Utility 23
24 DataFlex Update from Revision 3.0
VII. SEQUENTIAL I/O
Sequential I/O 25
26 DataFlex Update from Revision 3.0
VIII. NEW COMMANDS
A new optional argument has been added to the end of the syntax for
index_def. As it does with the existing last two arguments,
index_def outputs to this argument, so it must be a variable, field or
window. It must be of Type String, and at least 16 bytes long.
The new argument contains up to sixteen digits, one for each field in
the index addressed by the index_def command, in the range 0
through 3, to represent the attributes of the field as included in the
index. The attributes of Index 1 are indicated in the first digit in the
value of the variable, Index 2 in the second, and so on.
New Commands 27
may use local variables in the function. This example shows the use of
get in a procedural program:
use ui
number net gross
function add_tax returns number
local number tax
move (net *1.05) to tax
function_return tax
end_function
input "enter number " net
get add_tax to gross
showln gross
Message IDs, however, are consumed only when you create the first
object of a particular class, or when you explicitly define messages
whose name does not match that of a message that already exists.
When you create the second or later instance of a particular class, you
consume no more message IDs until the point at which you add your
own (uniquely-named) message(s) to the object. You can conserve
message ID capacity by giving your own messages the same names in
different objects.
The capacities are all consumed by object creation, rather than by the
actual sending (getting, setting) of messages at runtime. Messages that
are never explicitly used in the program do consume these capacities
just from use of package classes.
A public procedure used in the list class has been added to those
available in the array class and its subclasses as well. The syntax and
functionality of the procedure is identical in the array class to those
of the message in the list class.
Refresh Mechanism
1 - mode_clear
UIMS Changes 31
data_sets send their DEOs the refresh message passing
mode_find_or_clear_set.
2 - mode_find_or_clear_set
3 - mode_clear_all
4 - mode_delete
5 - mode_save
If the no_stop option is used, and the broadcast is using the get
syntax, the broadcast will continue even if an object returns a non-zero
value. With this option, the return value will be that of the last object
to receive the message. This is useful when a function or procedure
with a return value must be broadcast to all descendant or focus-
children objects (usually ignoring the return value).
Data_Sets
UIMS Changes 33
no-delete, and it returns false otherwise. This function is used by
DEOs to determine if a delete of the current record is permitted.
Text_window
Selection_list
Data_list
UIMS Changes 35
The incremental search mechanism has been altered to permit
incremental searching on parent files of the main file of the list.
A first character search mechanism has been added for virtual lists,
with one exception: pressing the key for the same character repeatedly
does not advance to the next item with the same first character for
virtual lists (it does for non-virtual lists). This is a known limitation.
Capital letter search is not supported for virtual lists except within the
current display page.
The following are new features of the data_list class (some of these
features were moved to this class from the Table class):
New Properties
Protected
advancing_state integer false true | false data_list
Public
auto_regenerate_state integer true true | false data_list
Public
no_create_state integer true true | false data_list
This property controls whether or not this object can create records. If
true, any attempt to initiate a clear operation or save operation on
a new record will be ignored. However, clear and save operations
in other objects that result in a clear or save in this object’s server
will not be inhibited. As an example, selection_list objects
typically set this true as they are not designed for editing records (just
selecting them), while table objects typically set this property to false
to allow full data entry.
Protected
unsorted_state integer false true | false data_list
Protected
was_new_row_state integer false true | false data_list
UIMS Changes 37
zero), the current record was just saved, and the object should
continue add-mode if appropriate.
New Messages
Private
assign_current_record procedure
This message sets the record_number for the current "base" row
(according to base_item, not current_item) to the record number
currently in the recnum field of the main_file.
Private
clear_data integer all_flag procedure
This message clears the current row if the main_file of this object
was cleared by its server, or if line_display_state is true. It
sends entry_clear or entry_clear_all, depending on the value
of all_flag. As part of this operation, it exits add-mode if
necessary, and (re-)enters add-mode.
Protected
enter_add_mode integer insert_flag procedure
Protected
exit_add_mode integer remove_flag integer regen_flag function
integer item# returns integer
Protected
find_top_record integer item# returns integer function
Private
insert_clear_row procedure
This message inserts a blank row before the current row and displays
the data in related files by sending entry_display. Also,
current_item is set the first item in the new row.
Protected
regenerate integer item# integer force_regen returns integer function
UIMS Changes 39
This message is called when add-mode is exited, or when the object is
entered and unsorted_state is true. If force_regen is true,
the display is regenerated even if auto_regenerate_state is
false. This message can be augmented or overridden to change how
the table is displayed and which item will become the new
current_item.
Protected
remove_hole integer item# returns integer function
This message removes the current row. The item# argument is passed
to indicate the new current_item, and this function must return to
new position of that item. If the deletion of the row changes the
position of item#, the adjusted position should be returned. If item#’s
position does not change, item# should be returned.
Private
start_new_row integer item# procedure
This message causes the object to enter add-mode, clearing the record
buffer for the main_file in preparation for data entry of a new
record.
Augmented Messages
This message is sent when the focus is attempting to move away from
this object. It is augmented in this class to reset the
advancing_state property to false (indicating current_item is
no longer advancing).
This message is sent when the focus is attempting to move to the next
entry_item in this object. It is augmented in this class to reset the
Changed Messages
This message finds the first record in the main_file of this object,
and fills the display, starting with that record if the find operation
was successful. If the find was not successful, the display is cleared
of all records. The no_save argument is ignored in this class, but
subclasses may use this flag to inhibit an unintentional save operation
when the object is initialized.
Table
UIMS Changes 41
determines whether add-mode will continue after saving a new row
via auto-save past the end of a row.
The act of exiting add-mode has also been changed. If users navigate
off a row while in add-mode, and have previously saved some new
records, or have changed data on the current (new) row, the table may
be displaying records out of sequence. A property, unsorted_state,
is set to indicate this. The auto_regenerate_state determines
whether or not the table will regenerate the display when you exit
add-mode. By default, this property is true, which causes the row of
the newly chosen item to move to the top of the display and fill with
the appropriate records after it, and sets current_item to the new
position of the chosen item on the top row. Furthermore, if the table is
not the focus when new records are added into it (via save operations
initiated in other DEOs) the table’s display may also be unsorted. In
this instance, when the table becomes the focus, (and
auto_regenerate_state is true), the display is regenerated in the
same manner. If auto_regenerate_state is false, no redisplay
occurs. However, if the Beginning/End of Data (c+h or
c+z) and Scroll Forward/Backward (p and o) keys are
pressed, or the table redisplays due to a find operation, the display is
regenerated as part of that operation, independent of the
auto_regenerate_state.
Deleted Properties
Deleted Messages
New Keys
Private
kadd_mode add_or_remove_row table
New Properties
Public
no_create_state integer false true | false data_list
This property controls whether or not this object can create records. If
true, any attempt to initiate a clear operation or save operation on a
new record will be ignored. However, clear and save operations in
other objects that result in a clear or save in this object’s server will
not be inhibited. This property is reset to false in the table class to
allow full data entry.
UIMS Changes 43
Changed Messages
Public
request_clear procedure
This message inserts a blank row if not already on a blank row, then
clears the current row with the entry_clear message. If this object
has a server, the clear message is sent to it. This message is sent by the
clear key (kclear).
Public
beginning_of_data integer no_save procedure
This message causes the object to find the first record for the
main_file and fills the display, starting with that record. If the data
for the current row is changed, and auto_save_state is true, the
object will save those changes before moving to the first page. In some
cases, the current row may be unintentionally saved. If the no_save
parameter is passed and is non-zero, the save operation will not
occur. The no_save argument is passed as true during the
initialization of this object when it first becomes active.
Advancing_state
The function returns the field# in the specified mainfile which will be
used to perform superfinds from item#, or it returns -1 if no field is
suitable.
UIMS Changes 45
dsend data_set Eliminated; not
previously documented
This message is sent during the end_object command for each object
to allow initialization to be performed based on the initial settings of
properties and/or items. This message is normally only defined in
class definitions. In object definitions, the same results can be achieved
by performing the same initialization immediately before the
end_object statement (outside a procedure).
procedure clear_main_file
forward send clear_main_file
send request_clear_file manual1.file_number
send request_clear_file manual2.file_number
end_procedure
UIMS Changes 47
This message performs the clear command on the specified file of the
data_set. It is intended to be used to clear a file and notify the
data_set that the file is actually cleared. This ensures that the refresh
of data entry objects that may occur afterwards will properly clear
entry_items for the specified file. (If the clear command alone is
used, the refresh will not clear the entry_items for the specified file).
It is intended to be used in an augmentation of the
clear_main_file procedure to force a manually related file (see the
relate_main_file message) to be cleared when the main file is
being cleared.
procedure clear_main_file
// clear_main_file normally
forward send clear_main_file
// also clear "manually" related files
send request_clear_file manual1.file_number
send request_clear_file manual2.file_number
end_procedure
The following messages now return a value (but are still procedures):
add_focus, activate, release_focus, deactivate, and
process_key.
UIMS Changes 49
Public, defined in: ui_object
add_focus integer root_object returns integer procedure
This message adds the object into the focus tree at the next_level of
the root_object in the focus tree. If the root_object is not active,
the message is terminated and returns a non-zero value (see below).
This message is used to construct the focus tree in a predefined
structure. The activate message uses this message to either add the
object to the next level of the current focus or the next level of the
parent of the object, depending on the value of the
attach_parent_state property.
UIMS Changes 51
error_no_focusable_children If the object being added to the
focus tree has its
client_area_state set to
true, and none of its child
objects could be added to the
focus tree.
This message removes the object from the focus tree with focus change
notification. It sends exiting, exiting_scope,
entering_scope, and exiting message if necessary, and if
successful, send remove_object. This is a low-level message and is
not typically sent by application programs. The net effect is to change
an active object into one that is just "paged", but not "active".
This message removes the object from the focus tree by sending the
release_focus message, and if successful, send the deactivation
message. If received by an object that has its client_area_state
property set to true, the message is "translated" to the
deactivate_group message. If the receiver has objects in its
UIMS Changes 53
Add the following to the end of the text:
Protected
auto_pull_down_state integer false true | false action_bar_menu
This property determines whether or not moving left or right from the
current_item should cause the pull-down menu for the new action
bar item to be activated. It is used to allow action bar items without
pull-down menu objects to be used. This property is set true (via
delegation) by pull-down menu objects when kleftarrow and
krightarrow are used to perform the "pull-left" and "pull-right"
operations.
Procedure Documentation
UIMS Changes 55
Procedure with Return Value
Syntax description
Declaration
procedure add_focus integer root_object returns integer
Usage
Note the use of the get command to call this procedure by its
message_id, msg_add_focus. The get command and the
msg_ prefix are required to receive the return value from a
procedure that returns a value. This technique should always
be used when augmenting a procedure of this nature:
Item_matching Documentation
In order to be more CUA compliant, the default key used for the Add
Mode key (kadd_mode) (now used in the Table class) has been
changed from a+8 to s+0.
To avoid a conflict with the new default for the Add Mode key, the
keys used in the trace object in the Atracer package have been changed
from s+0 and c+0 to a+3 and c+3, respectively.
UIMS Changes 57
58 DataFlex Update from Revision 3.0
XI. DATAFLEX FOR WINDOWS
Phase I Overview
Purpose
Target User
The 3.01 release of DataFlex 3.0 includes many new features, bug fixes,
optimizations and enhancements. These modifications have been
incorporated in the Windows version. A complete list of the update
changes can be found in the other parts of this document.
More Memory
Larger screen sizes - The default Windows font used in the DataFlex
runtime is OEM_FIXED_FONT. A side effect of this font is to condense
window output thus increasing the physical area of a screen window.
Screen fonts are not changeable in this Phase I release.
Printing
Where font is the name of the font supported by the printer, points is
the character or point size desired and contained in the font, and
win_device_name is the name of the Windows printer driver to use for
output. The only requirement regarding the sequence of the command
line, is that win_device_name is always last. If the font or points
arguments are omitted from the command line, the default for font will
be COURIER, the default points size will be 10, and the default
character style will be FIXED pitch.
In this example, all output to is directed to the LPT2 printer port using
the standard DataFlex output device.
WINLST:POINTS:8
Escape Sequences
Graphics Repainting
The mouse double click time setting in DFINI will be ignored. The
setting in WIN.INI will be used instead.
Desktop
Windows 3.1
Compatibility with latest 3.1 Windows release has not been tested at
this time.
Screen Colors
Screen colors above 127 do not blink in Windows and will not be
supported.
Printing
The next release of the Windows project will include the following:
• Text Rotation.
Revision 3.01
DISCLAIMER
TRADEMARKS
I. INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
New Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Problems Fixed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Essential Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Table of Contents i
VIII. NEW COMMANDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Index_def Command Extended . . . . . . . . . . . . . . . . . . . . . . 27
Get, in Procedural Code . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
X. UIMS CHANGES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Sort_items Message Added to Array . . . . . . . . . . . . . . . . . . 31
Refresh Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Broadcast and Broadcast_focus . . . . . . . . . . . . . . . . . . . . . . 33
Data_Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Text_window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Selection_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
DEO Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Data_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
New Features of Data_list Class . . . . . . . . . . . . . . . 36
Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Auto-save, Auto-clear and Add-mode . . . . . . . . . . . 41
New Features of Table Class . . . . . . . . . . . . . . . . . . 43
Advancing_state . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Dependent Items Mechanism . . . . . . . . . . . . . . . . . . . . . . . 45
Macro Support Commands . . . . . . . . . . . . . . . . . . . . . . . . . 45
New Message for OBJECT class . . . . . . . . . . . . . . . . . . . . . 46
New/Augmented Messages for Data_set . . . . . . . . . . . . . . 47
New/Augmented Messages for Entry_client . . . . . . . . . . . . 48
New/Augmented Messages for Entry_form . . . . . . . . . . . . 48
New/Augmented Messages for Selection_list . . . . . . . . . . . 49
New/Augmented Messages for Text_window . . . . . . . . . . 49
New/Augmented Messages for Wide_list . . . . . . . . . . . . . . 49
Changed Messages for Ui_object . . . . . . . . . . . . . . . . . . . . . 49
New/Augmented Messages/Properties for
Action_bar_menu . . . . . . . . . . . . . . . . . . . . . . . . . . 54
New/Augmented Messages for Pull_down_menu . . . . . . . 54
Procedure Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 55
Procedure with Return Value . . . . . . . . . . . . . . . . . 56
Item_matching Documentation . . . . . . . . . . . . . . . . . . . . . . 56
Default Key Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
XII. INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Index v
Utility, Parameters 8 No_stop option in Broadcast and
File Definition Utility Broadcast_focus 33
Repair, menu selection 8 Null:, input/output device 25
File Maintenance Utility 19 Object class, new messages 46
Filelist, maintenance 8 Operating system
Files handling errors from 17
database, header integrity Operating system errors 14
checking 8 Pagecount, predefined variable 25
FLEXERRS.* 21 Pageend, predefined variable 25
Files, database Pagefeed, predefined variable 25
opening from File Definition 8 Predefined indicator
Fixed bugs 4 seqeof 25
FLEXERRS.* Predefined variable
files 21 ext_crit_err 15
FLEXERRS.FLX 21 last_crit_err 15
Header corruption pagecount 25
repair of 8 pageend 25
Header integrity checking 7 pagefeed 25
in File Definition Utility 8 Procedure documentation, changes
Index 55
attributes of fields in 27 Pull_down_menu, new messages
Index_def, command 27 54
Input/output Rebuild_constraints
sequential 25 sending of by data_sets 33
Input/output channel 25 Refresh, new procedure 31
Input/output device Repair
null: 25 corrupted header in data files
Item_matching documentation, 8
changes 56 Retry, error report response 15
Keyboard character mapping 11 Revision Compatibility 5
Last_crit_err, predefined variable Selection_list, new messages 49
15 Selection_lists and the incremental
Letters search mode 34
lowercase 11 Seqeof, predefined indicator 25
uppercase 11 Sequential i/o 25
Lowercase letters 11 Sort_items message
Macro support commands, changes added to array class 31
45 Table
Mapping Auto-save, Auto-clear and
keyboard characters 11 Add-mode 41
New features in 3.01 1 Table class, new features 43
Table, properties added 41
Index vii