Technical Notes of Version 3.0 Release 1.0

Incorporated ImprovementsTop

1. The logical operator "OR" utilized in a "WHERE" clause of a SQL instruction (SELECT, UPDATE or DELETE) didn't return the correct derived table in certain circumstances.

2. The editing in a "multiscreen" FRAME (with several pages) produced an error, assigning unreadable values to variables and later cancelling the program.

3. In the moment of printing a manual generated with tdocu of MultiBase the page skip was not performed correctly. The problem was due to the command tprocess who is in charge of interpreting the commands generated by the user's oder programmer's documentation of MultiBase.

4. The ROLLFORWARD DATABASE statement didn't work properly in a transaction which used the clause "WHERE CURRENT OF..." while reading a CURSOR declared as "FOR UPDATE".

5. The WINDOW statement with a SELECT which didn't return a single row produced an error when found in a loop if any of the columns of the "select_list" was of type DECIMAL of MONEY.

6. A SELECT statement not declared as a CURSOR which included a reception clause ("INTO" or "BY NAME") resulted in a huge consum of memory of the CTL module if more than one row was returned ("ambiguous=true") provoking thus an error if the statement was executed several times.

7. When generating a current list in a FORM and intending to perform a new query, which was aborted by the user, the row in the before created current list was always the last one, giving the message "no more rows" when intending to choose the next one. Nevertheless, if the option to update or delete was chosen, the row affected by any of these operations was always the first and not the last.

8. The massive creation of temporay tables (CREATE TEMP TABLE) produced the message "Impossible to open the database table".

9. The function "evalfun(function, parameters)" didn't work correctly with certain internal functions of CTL.

10. If the value assigned to a variable of TIME type was above 24 hours, the value returned was "0". Currently, the expression "let hrs = 24:01:10" will return the value "NULL".

11. The "DISTINCT" clause of the "select_list" of a SELECT statement with more than 8 fields returned different results depending if an "INTO TEMP" was included or not.

12. The command THELPCOMP didn't take care on the variable MSGDIR, even though the programming environment was simulating this possibility. In the previous "release" this variable was not included in the command line of thelpcomp.

13. [Windows]. The selection of a second printer with the Windows specific function "setprtsetup("name", expression)" didn't update the paper size in the moment of using the Print Manager ("DBPRINT=PRINTMAN").

14. [Windows]. In a FORM with horizontal scroll (left-right) an error was produced when the key combination [CTRL]+[Q] was pressed. This combination is defined in MultiBase by default for this action.

15. [UNIX]. A new environment variable, WINFN, was introduced to inform the compiler to ignore or not the Windows specific functions in order not to produce typical errors that the function doesn't exist in a module of the program during runtime. The possible values are "Y" and "N". The value "Y" can be simulated with the parameter "-wfn" of the command ctlcomp, which means that the syntax in those cases is of the following form:

ctlcomp -wfn module

16. For databases created with collating sequence the derived table from a "WHERE" condition in a SELECT, UPDATE or DELETE on a DECIMAL type column was correct or incorrect whether it was indexed or not.

17. [UNIX]. In UNIX versions who are compatible to the standard 4.0, supplementary groups can be defined. This version of MultiBase contemplates theses groups regarding the permissions relative to UNIX concerning programs and databases.

New internal functions of CTLTop

lastrowid(): Returns the "ROWID" number of the last row inserted through a FORM (ADD, ADD ONE or INTERCALATE statements) or as well through the INSERT statement of the DML sublanguage of SQL.

lastserial(): Returns the number assigned to a SERIAL column after performing an insert through a FORM (ADD, ADD ONE or INTERCALATE statements) or as well through the INSERT statement of the DML sublanguage of SQL.

licence(): This function, already implemented in previous versions, didn't work correctly in the version for Windows, returning always the value zero. Currently, the value returned is the one of the licence of the executed CTL.

Deactivates/activates the editing for the variable indicated in "expression2" during the execution of a FORM which maintains the table specified in "expression1". Example:

option "Changes"
    call DisableFormVar("customers","total_invoiced")

Deactivates/activates the editing for the variabled indicated in "expression2" belonging to the FRAME indicated in "expression1".

CountFormVars(expression1): Returns the number of variables that can be edited in a FORM which maintains the table specified in "expression1".

CountFrameVars(expression1): Returns the number of variables that can be edited belonging to the FRAME indicated in "expression1".

GetFormVarName(expression1,expression2): Returns the name of the variable of table "expression1" maintained in a FORM and which corresponds to the order number given in "expression2".

GetFrameVarName(expression1,expression2): Returns the name of the variable of a FRAME indicated in "expression1" and which corresponds to the order number given in "expression2".

EasyReport in WindowsTop

Dynamic connection to the database server.
A new command line parameter ("-con") was implemented together with a new option in the pulldown "File" of the main menu of EasyReport ("Change Connection") to select a connection to a database server different to the one previously defined in the configuration editor ("confedit"). The environment variables implied in this new concept of dynamic connection which receive a special treatment are DBHOST, DBUSER and DBPASSWD.

The new command line parameters of EasyReport to manage the environment are the following:

In the [MultiBase] section of the file "WIN.INI" the entries "COSMOSDIR" and "EASYREP.INI" can be defined. "COSMOSDIR" identifies the directory ("path") of the application to find the commands belonging to EasyReport (easyrep, cdsedit and confedit). This directory must have at minimum the subdirectories "bin", "drw", "msg" and "etc" with the files constituting EasyReport. The entry "EASYREP.INI" defines the directory and name ("complete path") of the auxiliar configuration file of EasyReport. This file has the same structure as the file "COSMOS.INI", over which it has precedence. If "EASYREP.INI" is not specified the auxiliar configuration file will be defined as "COSMOSDIR\etc\easyrep.ini", whose existence is not obligatory.

IMPORTANT: EasyReport includes an interactive help system where the functionality and characteristics are explained. To get a more clear impression about the new possibilities consult this file.

New Characteristics of EasyReport common for UNIX and WindowsTop

The head line of a report may contain special characters ("-$Pn") to display the values assigned to possible parameters during runtime.

The parameter ("-par") of the command line of EasyReport should only be used to specify different parameters which influence the execution of the report.

The "USING" clause within a Conceptional Data Scheme produced an error when not indicated, even though it is not obligatory to specify a variable value in the defining SELECT statement.

Development Environment (TRANS)Top

The option "Unload tables" produced an error when you were working with the "gateway" for Oracle.

The option "Select" a database didn't work when working with "gateways".

[Windows]. The option "Output" of the SQL menu produced an error if the environment variable DBPRINT contained the value "PM" or "PRINTMAN" (utilisation of the Windows Print Manager).

Update of serialized versions (UNIX)Top

The update to version from versions 3.0.00 and 2.0.xx which are software serialized, that is the serialization number was given from the Support Department of BASE100, can be made by copying over the existent version with the command:

# cpio -iBduv -I /dev/r...

or as well:

# cpio -iBduv < /dev/r...

The clause "u" of the cpio command takes care of the unconditional update of all of the MultiBase files.

IMPORTANT: If you have personalized your copy of MultiBase in version 3.0.00 save the files "$TRANSDIR/etc/termcap" and "$TRANSDIR/etc/tprinter" before proceeding with the installation of the new software.

To continue and dependant whether your licence is a Development of a Runtime, execute as superuser the commands installctl or installrt, respectively, so your copy of MultiBase will be automatically updated to the new version.

The installation of a new licence of version (not an update) is carried out as being described in Chapter 3 of the Administrator's Manual.

If your licence of MultiBase is "limited" (time limit) it is possible to increase the date of expiration by prior authorization through the Commercial Department of BASE100.