|
About Advanced Revelation 3.12
Changes and new Features - v3.12
APPLICATION
- The New Application window no longer allows characters
"!@#$%^&*()+{}|[]~?<>," to be used in an application
name.
ASCII IMPORT/EXPORT
- The ASCII chart popup is now available to select delimiters for ASCII
import/export. ASCII Export now appends char(26) to records only if it
is specified.
BANDED REPORT WRITER
- The Run Report window options field now has an options pop-up and
help.
- Output to the printer and terminal display page numbers identically.
- Performing a Save As... from the Banded Report Writer will unlock the
original record.
BATCH UPDATE
- Batch update no longer allows the temporary table to be the same as
the original table.
- The Batch window has also been modified: a menu has been added that
allows Batch - Compare - Integrate to all run from the batch window and
its menu.
LANPACK
- Single user LAN PACKs can now be applied through the standard method
of installing LAN PACKS.
- The "Bump" Process will now prompt for a drive to find the
LANPACK disk, and will accept either the A: or B: drive.
- The number of users is displayed before and after applying a LANPACK.
CAPTURE
- A multi-letter catalyst code will now be recognized in playback of a
captured keystroke set.
COMPILER
- ASSIGNED and UNASSIGNED no longer have to be declared as functions.
- Programs with too many equates will error out instead of producing bad
object code.
- The statements READL, WRITEU and the function YIELD() have been added.
For more information on these statements and functions, please see the
R/BASIC section of this manual.
COPYTABLE
- It's now possible to copy only the data portion of an indexed table -
even when the table has relational indexes.
- COPYTABLE with the (O or (N options now correctly copies even if the
destination volume is not attached.
DELETETABLE
- DELETETABLE (S now suppresses the confirm message.
- DELETETABLE no longer deletes tables with the Allow Delete flag set to
no.
DICT
- Rebuilding of control records now puts the column name and table name
in the status line.
- A developer can suppress the recompilation of dictionary items when
copying into a runtime by setting @NULL.EVAL to \12345678\ before
writing the dictionary record.
Caution: Dictionary records rely on recompilation to ensure that all
needed references or inserts exist in the target system. If these items are
not there, the symbolic will cause unpredictable results.
EASYWRITER/RLIST
- Reports for Easywriter and RLIST are now both stored in the REPORTS
table with keys of rlist*reportname.
EXPORT
- Symbolics now show up in field option pop-ups.
ENVIRONMENT
- The Hardware Options environment window has a new field under
Indexing; Yield Time to Windows. If this flag is set to Yes, then
Advanced Revelation will yield processing time to Microsoft Windows when
idle. By default, this field is No after the initial upgrade. Since this
setting is stored in the INI file, you must change all INI files to use
this feature. \
For more information on changing and using INI files, please read Chapter
34, Workstation Configurations, About Workstation Configuration, starting on
page 567 of the Advanced Revelation Users Guide.
Note: Revelation Technologies has only tested this feature under
Microsoft Windows. Testing has not been done under IBM OS/2, Citrix,
Microsoft Windows NT or any other mutli-tasking, multi-threading operating
system or operating environment.
FORM
- Horizontal Multi Values (HMV’s) now print correctly.
IMPORT
- A dBase IMPORT run from the command line will now note if the record
count in the dbase file has been modified.
INDEXING
- Dedicated indexers do not stop working past midnight.
LABEL
- Make Label will now convert dictionary columns to uppercase instead of
failing.
LISTBASIC
- The Listbasic window no longer ignores the (T option.
- Sending multiple programs to the terminal with LISTBASIC properly
reports a change in program or record.
LOCKING
- If a program called from a window is not cataloged in the VOC table or
stored in SYSOBJ, a message now appears prompting for the program
location. Only if all of these searches fail, and the window was called
from a level greater than level 1, will the current locks be stranded.
MACRO
- There are now options available for the CODE prompt in the MACRO
window.
MAKE RLIST WINDOW
- The MAKE RLIST window can now be called from the menu.
MENU
- New functionality has been added to the F2 popup of available menus.
The Makemenu window has a new prompt, "Standalone," that
allows you to answer "No" if the menu is called from windows
or programs. This will keep the menu from displaying in the F2 popup
generated from a menu. The menus are also now sorted alphabetically, and
the menu table they are from is listed - Sysmenus, Menus, and the
current menu table are searched for menus to display.
MERGE
- Merge reports sent to the terminal now use INIT.VIEW().
MESSAGES
- In the Makemessage window, the popup of available message types has
been expanded to include all message types.
MULTI TABLE WINDOW
- A message will now display if required prompts are not filled.
NAMEVOLUME
- Namevolume can now be used to change a volume label even if tables in
that volume are indexed.
PRNSTAT
- Prnstat will now work for LPT1, LPT2 and LPT3, rather than just LPT1.
PAINT
- A new prompt option, Mandatory, has been added. This flag determines
whether the first (controlling) field of an Associated Multi-Value (AMV)
group is required. If this field is set to Yes, (True), then you must
have a value in the first column of the row before moving to the next.
The flag will also prevent you from deleting the controlling AMV value
at a later time.
Note: Mandatory cannot be used with MultiTable Windows.
POPUP
- Using the Alt-P keystroke to print the pop-up no longer terminates the
window.
R/BASIC
Two new commands have been added to RBASIC. READL and WRITEU. READL is an
internal command that performs a lock, then a read of a record. WRITEU is
similar in that it performs the write, then an unlock of the file and
record. The commands work like the simple counterparts READ and WRITE.
Neither command supports the extended cursor syntax. READL does have an
optional lockcount parameter. You can use this to specify the number of lock
attempts before returning a failure to lock. There is a 0.1 second delay
between lock attempts.
You should be careful of the results that are returned, as they might not be
what is expected. If the READL command cannot lock the record, it will not
return anything in the record variable. If the variable has not been
previously assigned, it will still be unassigned. If the variable had
previous contents, these contents will not be altered. It functions as the
READ command does when attempting to read a record that does not exist. You
should check the value returned in @FILE.ERROR to determine whether the
command failed because the record could not be locked, the record does not
exist, or for any other type of error.
Syntax Example:
READL record FROM fileVar, key [,lockcount] THEN ELSE
WRITEU record on ON/TO fileVar, key THEN ELSE
Code Example
.....
fileName = ‘CUSTOMERS’
open fileName to fileHandle else
call fsmsg(fileName)
return
end
key = ‘ABC’
/*
The next line of real code will lock the record ABC in file CUSTOMERS, then
read in the record and place it in the variable REC. */
readl rec from fileHandle, key else
call fsmsg(fileName : ‘ ‘ : key)
return
end
.....
/* do your processing here */
.....
/*
The next line of real code will write the record ABC back to the file
CUSTOMERS, then unlock the record.
*/
writel rec on fileHandle, key else
call fsmsg(fileName : ‘ ‘ : key)
return
end
.....
· YIELD()
The YIELD() command allows Advanced Revelation to yield processing time back
to windows. If you are running large, complex programs in the background,
you can call this imbedded function to yield time back to the Windows
environment. The YIELD() command is an internal RBASIC command and does not
have to be declared.
Caution:Running YIELD() will slow down any process running since
Advanced Revelation will yield processing time to the Windows environment.
.....
select file
done = 0
loop
readnext id else
done =1
end
until done
read record from file, id then
/* do your processing here */
end
YIELD()
repeat
Note: Revelation Technologies has only tested this feature under
Microsoft Windows. Testing has not been done under IBM OS/2, Citrix,
Microsoft Windows NT or any other mutli-tasking, multi-threading operating
system or operating environment.
- The program SEC, frequently used with the argument "6" (as
in "SEC(6)") has been replaced by a new function, ENCRYPT.
Encrypt accepts one argument. ENCRYPT(string) will work without a
window; the SEC program required inclusion of the WINDOW_COMMON%, and
caused difficulties if used outside a window. Encrypt was included to
resolve this.
- BTREE.EXTRACT has 2 new values for options. B will sort the listing of
keys in descending order. R will sort the keys with right justification.
- COLLEN allows specification of left or right justification. To have a
column heading of Date, with a length of 10 and a right justification,
the command would be COLLEN “R#10”
.....
@view.mode = 1
call init.view(80)
rptDate = timedate()
headLine = 'M1002 - Trade Items as of ' : rptDate : "'L'Page 'PP'"
heading headline
head = '' ; len = 10
head<1,2> = 'Trade ID'
head<2,2> = 'Amount' ; len<2> = 'R#12'
head<3> = 'Investor' ; len<3> = 'L#30'
head<3,2> = '(Tentative)'
colheading head
collength len
.....
RLIST
- The system variable @REC.COUNT is now used to pass the record count to
the list processor, and is not modified. The value of @REC.COUNT can now
be included in symbolics.
- The RLIST 'B' option now correctly runs the break value through OCONV.
- Underline and fill characters for column headings are now environment
variables, defined in the QUERY window.
- The ‘B’ option in FOOTING to place the current break-on value into
the footer now works correctly.
- You can once again use parentheses () in RLIST Heading statements.
- The RLIST buffer size has been increased allowing the developer to
create longer RLIST statements.
- The E option no longer prints a page with just the heading.
- Column headings will be justified based on the justification of the
dictionary field. If your dictionary field is right justified, the
heading during R/LIST will also be right justified. A developer can
override this by using the COLHEAD modifier in the R/LIST statement.
SETALIAS
- Permanent aliases in REVBOOT are now attached at logon, although
aliases requiring passwords will still not be attached automatically
because the password is not stored.
- If you have large numbers of permanent aliases in a single volume, you
no longer receive runtime errors when attaching.
SETOPTIONS
- The command Setoptions now displays current options; options can be
cleared by entering SETOPTIONS ().
SETPASSWORD
- To escape from Setpassword, press ESC and then ENTER. To clear a
password, press ENTER.
SQL
- It is now possible to group by columns not in the display list without
breaking to the debugger.
SYSTEM PROBLEMS
- Previously, users have needed to have SHARE.EXE loaded to run programs
other than Advanced Revelation. The Sharing Violations problem that this
caused has been corrected.
- You can now delete the first field of an AMV in system windows.
- Anding/Oring precedence has been changed to act like Advanced
Revelation 3.03 and prior.
- You can no longer use implied date formatting with 5 character dates.
All dates must be filled with a leading 0. For example, 22795 would be
interpreted at 02/27/95 and match a valid date conversion. Now, this
value will fail that conversion. You must use 022795 instead. (For more
information, see Technical Bulletin 112 available from CompuServe as
RTP26.EXE in Library 8, Update/Maintenance Releases or contact Customer
Care for a copy. Customer Carec an be reached at 800-262-4747,
978-247-7100 in the United States or 44-908-233-255 in the United
Kingdom.
- You no longer receive meta compilation errors on fields using catalyst
type (@code command@) input or output validation. You also no longer
receive meta compilation errors on fields with an out validation of
R(###) ###-####.
TCL
- Parentheses are now parsed correctly from TCL sentences.
- SSELECT and SORT do not generate error messages any longer.
- The E option correctly suppresses ejection of the first page.
UPGRADE
- The Upgrade Tables process now clears out bad dictionary information
in columns 31 and 34 in dictionaries, unless the row starts with an
"@".
- The "B" code and command popup invoked in windows now
displays correctly in upgraded systems.
WINDOW
- The Changed Key Delete option for joined fields no longer writes out
null records.
- It is now possible to change a window to a collector and back to a
data window. However, remember to re-number prompt position numbers. No
prompt should be "position 0" in a collector window.
- If you try to run an uncataloged program in window, you are now given
a message, prompting you to enter the table in which the program is
stored.
- Using the Alt-P keystroke no longer terminated the window.
- The default video values at save time do not take precedence over the
default video values at runtime. Previously, the window would run with
the default color values at save time and ignore the video at runtime.
Now, unless the developer specifically changes an entries color setting,
the system will use the default video values at runtime.
Changes & New Features in Release 3.11
DEBUGGER
- A new feature for evaluating variables has been added to the Debugger.
By entering "V" at the ! prompt, you will receive a list of
all the variables that are defined in the symbol table. Pressing return
on any of these variables will present the contents in an EDIT window.
Entering a "/" (forward slash) or "\" (backward
slash) instead of a "V" will display the same list, but when a
variable is selected it will be presented after the ! prompt in either
ASCII format, chosen by using the "/" [forward slash,] or
hexadecimal format, chosen by using the "\" [backward slash].
(The symbol table is the *program_name row in the program table. The new
Debugger functionality will not be available if this row does not exist
in the program table.)
EDIT
- It is now possible for a custom MFS to insert a header into a new row.
Previously, a customized MFS could not drop a standardized header into a
new row. Certain user-customized MFSs were intended, by design, to fill
the beginning of each row with information special to the application.
(An example would be a program header, listing company ownership or
creation date.) However, the Editor, upon determining that the row was
new, nulled @RECORD. This logic has been modified.
POPUPs
- Multivalue symbolics can now be used in a POPUP with dictionary braces
( { } ) and the data will display correctly.
R/BASIC
- A new system subroutine, CLOSE_TABLE, has been added. CLOSE_TABLE will
leave a table attached, but will remove the table handle used to access
the table from the SYSTABLES table. The table handle will be refreshed
on the next R/BASIC OPEN. This is particularly useful for freeing
resources held by tables such as server based bonds, which allocate
memory or connection handles. CLOSE_TABLE is also the specified
mechanism for causing a low-level re-open of a table when adding or
removing an MFS, which keeps information in the table handle. The
correct syntax of CLOSE_TABLE is CLOSE_TABLE(tablename,
associated_tables, flag) where "tablename" is the name of the
table to close, "associated_tables" is an optional flag,
either 1 or 0, where '1' indicates that CLOSE_TABLE should also close
the DICT.tablename and !tablename, and "flag" is a Boolean
value returned by CLOSE_TABLE, where 1 indicates the success of the
operation. For example:
tablename = "FILM_DATA"
flag = ''
CLOSE_TABLE(tablename, '1', flag)
IF FLAG ELSE
MSG("Failure to close table.")
END
The MT_WINDOW_COMMON% variable RESERVED3% has been changed, to WC_JOINDATA%(2,10).
Previously, users had no access to the @RECORD values of the data joined to
the current window.
The common variable WC_DATAFILE% and WC_JOINDATA%(2,10) are used in
association with each other to determine which data tables, keys, and rows
are being modified by the current window.
WC_DATAFILE% contains an @FM delimited list of the tables associated with
the WINDOW, limited to 10 tables. The first field is the primary table
associated with the window; the following 9 are the secondary tables.
The index into WC_JOINDATA%(2,10) corresponds to the positions of table
names in WC_DATAFILE%. WC_JOINDATA%(2,10) is arranged where WC_JOINDATA%(1,2)
is the first secondary table's list of keys, @FM delimited, and WC_JOINDATA%(2,2)
is an @RM delimited list of the rows whose keys are in (1,2). WC_JOINDATA%(1,3)
would be the next secondary table's list of keys, and so on.
Positions (1,1) and (2,1) of WC_JOINDATA%(2,10), being associated with the
primary table, are left blank. For example: A test Window has a primary data
table and two joined tables.
WC_DATAFILE% = @FM : "1st_joined_table" : @FM :
"2nd_joined_table"
WC_JOINDATA%(1,2) = "key 1 from join1":@FM:"key 2 from
join1":@FM:"key 3 from join1"
WC_JOINDATA%(2,2) = "row from join1 key 1" : @RM : "row from
join1 key 2" : @RM : "row from join1 key3"
WC_JOINDATA%(1,3) = "key 1 from join2" : @FM : "key 2 from
join2"
WC_JOINDATA%(2,3) = "row from join2 key 1" : @RM : "row from
join2 key 2"
Release 3.11 Resolved Problems List
ASCII IMPORT
- When IMPORTing an ASCII file as part of a TCL batch process, and
merging with an existing table, the existing table is no longer cleared.
Note: TCL Batch Processes that depended on the older functionality
will now have to explicitly clear the table. ASCII IMPORT has been repaired,
so that it will no longer return a W640 message ("table_name IS NOT A
LINK OR LINEAR HASH TABLE.") when IMPORTing into an Advanced Revelation
Linear Hash table.
DEBUGGER
- The Debugger program stack popup now displays the last program on the
stack.
DICTIONARIES
- %PROTECT.SPEC% is no longer compiled with a blank line in column 1 if
%FIELDS% has not yet been built. Previously, this caused an XFORM stack
underflow error during an SQL SELECT.
EASYWRITER
- EasyWriter now correctly parses BREAK-ONs, and will no longer lose a
JUSTLEN length clause.
FORM
- The command "FORM form_name * (P" will now print all rows in
a table, instead of using "*" as a row key. Previously, if a
SELECT was performed against a multi-value column and FORM was then
invoked, the displayed row ID was corrupted.
MENUS
- Functionality has now been restored to Arev Style Menus, allowing them
to be moved with the {CTRL-F8} key. Defining "hot keys" in
Menus now functions appropriately. Previously, if a hot key was defined
in the Menu builder with Save &As the "a" in
"Save" would be highlighted, rather than the "A" in
"As."
POPUPs
- POPUPs which have a SELECT executed in EXPLICIT POPUP INFORMATION
against a multi-value column now display correctly. Previously, the key
values that were displayed were corrupted, and included a value mark and
a numeric value relevant to the previous SELECT.
R/BASIC
- CATALYST calls of "K" with a numeric value ending in zero
(for example CATALYST('K','30') ) no longer truncate trailing zeros.
If DELAY is invoked with
WAIT = 15
DELAY(WAIT)
the WAIT variable is now processed accurately.
The OPEN command will no longer fail when used with a table name or alias
starting with "SYS."
SCRIBE
- {CTRL-Z} will now reformat only the current line of a text field if no
block has been defined; a blank line is no longer inserted.
SETALIAS
- Creation of an alias name that is the same as the source table's
actual name will now attach the DICT.tablename and !tablename as well.
SETALIAS can now be used for just the data portion of a table. When a
volume with permanent aliases is attached or detached, alias DICT and !
tables will now attach and detach correctly. A SETALIAS run from the
SYSPROG application accepts application names that have not previously
been defined. This functionality is particularly desirable when setting
an alias to a table created in older versions, and for porting
information from foreign installations into your own system.
SQL
- CREATE TABLE with a CHAR type column that does not specify length will
now be given a default length of 10 in the dictionary.
- Any errors in CREATE TABLE are now returned to the user.
- Any invalid SQL commands executed at the TCL line will return errors.
- SQL now allows you to specify custom fill characters for column
headings in the Queries Environment Window. Additionally, any ASCII
character may be defined in the Queries Environment Window to appear as
a separate line under the column heading.
- In SQL, if a report was created in SQL and the user did not page down
to the last page of the report, but exited out of the report and ran
another SQL report, SQL would break to the debugger or to DOS.
- Multiple SQL statements can now be executed in the SQL window without
breaking to the debugger or DOS.
TCL
- When executing a TCL command using a '(P' option the currently
printing page number again displays to the status line.
- DOCMENU and DOCPOPUP output can now be directed to the printer by
selecting the "PRINTER" option from their respective Popups.
- RLIST HEADING using the "'D'description" or
"S3F" options will no longer break to the Debugger.
- RLIST now allows you to specify custom fill characters for column
headings in the Queries Environment Window. Additionally, any ASCII
character may be defined in the Queries Environment Window to appear as
a separate line under the column heading.
- LIST using (PE options has been fixed to no longer print a leading
blank page.
- RLIST, HEADING, and (PE options will no longer erroneously print
heading and/or footing information on a blank page.
- COUNTROWS with (PE options used in a program now correctly outputs the
number of rows processed.
- The DICT.SYSWINDOWS LC symbolic now lists the last prompt in a Window.
- LIST tablename WITH COLUMN (= 'VAL1' or 'VAL2') no longer generates a
META compilation error and executes properly.
- A LIST statement now checks the DICT.tablename @ID before looking in
the DICT.VOC @ID record.
- System LIST commands (e.g. "LISTTABLES (P", "LISTVOLUMES
(P", etc.) no longer return error messages indicating that @LPTR is
an unrecognized word.
- PROGRAM.MFS has been corrected to allow the TCL command
- RUN SOURCE program_name
- to run correctly when there is a $program_name row that is actually in
the OBJECT table, but no source program is in the SOURCE table.
- The RLIST keyword AVERAGE now allows display data in the column being
averaged. Previously, a command of
- LIST FILM_DATA AVERAGE RUNNING_TIME
- would display a blank column for RUNNING_TIME until the end of the
report, when the average would be generated. Now, the values for
RUNNING_TIME are displayed for each row.
- The RLIST AVERAGE keyword will now calculate correctly when applied
against a column that is null.
- When an RLIST TOTAL is run against a column that has a length of 0,
the columns will now line up correctly.
- LO and LIST can now be used with table names or aliases starting with
"SYS."
- LIST no longer modifies the value of @RECCOUNT.
- TCL options that are invalid are now ignored, rather than resulting in
an infinite loop prompting for correction.
- The RLIST and SQL viewers now have a minimum display length of 22,
which allows for display of the current date and time.
- A command of
- LIST tablename @ID column_name ID-SUPP
- no longer causes wrapping in the viewer.
- The COLHEAD keyword is now justified using dictionary justification.
- A multiline COLHEAD for an inline formula now calculates COLLENGTH
correctly.
- When printing out FORMs, the "(E" option will work correctly
with forms that have multiple rows per page.
- RLIST reports using custom HEADINGs now display the number of rows
processed at the end of the report.
- Inline formulas are now deleted from the dictionary at the end of a
report.
- Multiline column headings now display correctly above a solid line.
- COPYTABLE will now correctly copy a tablename that contains dots.
UPGRADE
- The option to upgrade tables and to convert "." to
"_" will now correctly remove dots from !datatable rows.
WINDOW
- The {CTRL-F10} option to retrieve a filter from the reports table now
works correctly.
- A validation pattern of (1,9) will no longer allow entry of numbers
followed by alpha characters.
- A Master value in an AMV can no longer be nulled; {CTRL-D} must be
used to delete the entire line.
- ZOOM {F3} now recognizes a MAX LENGTH defined in the prompt window as
"*".
- PAINT no longer saves a dynamic table Window as a collector.
- PHONE_FORMAT and ZIP_FORMAT validation patterns on key columns no
longer generate an error when using "\" backslash) to enter a
query mode.
- Copy row ({ALT-C}) has been added to the Key Disable Popup in Paint.
- Windows can now be changed from a collector to a bound Window (one
using a table) and vice versa. This is done in Paint, through the
"Tables" menu option.
WINDOWS - SYSTEM
- The SETVOLUME Window will not allow volume names that contain spaces.
- The Message Builder Window now supports the use of seconds on timed
messages in the "Type" prompt.
|