3.83
Y2K INITIATIVES
The following changes have been made to Release 3.8 and subsequent versions of Business Rules!:
New Data Types:
Three new FORM data types are now supported for working with date fields:
DT 3 or DT 4 DL 3 or DL 4 DH 3 or DH 4
These utilize binary storage formats corresponding to B, BL and BH. They also perform days() processing utilizing the "current" default date format (mdy/ ymd/ dmy etc.). These formats are intended to reduce the number of changes required for Y2K compliance, and to ease ODBC access to dates stored in 'day of century' format. However, ODBC also has a much more comprehensive date identification scheme.
The DAYS() function now permits four digit years even if C is not specified in the mask statement.
When days() or DH is used to store a date, normal sorting and indexing becomes Y2K compliant. The days() function, and the date formats enable BASEYEAR processing when the values are stored in binary fields. These can subsequently be indexed as character fields so long as they were stored in high-to-low order.
Index and Sort:
To assist with the conversion of legacy applications, INDEX and SORT have been extended to apply the BASEYEAR specification to other storage formats.
INDEX key position or key length values may now specify a trailing "Y" character to indicate that the first two digits of the field are BASEYEAR dependent. For example:
INDEX masterfile keyfile 10/23Y/55 8/6/30 REPLACE DUPKEYS
Indicates that a date field begins in position 23 with a two digit year that is BASEYEAR dependent.
If the position or length of a numerical (BH or PD) field is followed by Y, then it should also specify a B or P to indicate the storage format. In this case it will be processed as a number with baseyear applied in accordance with the length as follows:
Field Type & Length Assumed Data Format
- PD 1 Not Significant
- PD 2 or BH 1 YY
- PD 3 or BH 2 YYMM
- PD 4, BH 3 or BH 4 YYMMDD
Note that the specification for PD is P and the specification for BH is B in the INDEX statement.
e.g. INDEX masterfile keyfile 10/31 2BY/10 REPLACE
This creates 'keyfile' applying BASEYEAR to the first two digits of each key. In this example, the first part of the key is assumed to be binary in YYMM format.
With respect to SORTing, if a Y is appended to the A/D (ascending/descending) indicator of a sort MASK statement or the I/O (include/exclude) field of a RECORD statement, the field is subject to BASEYEAR processing.
If such a field is in display format, then the first two characters are assumed to be a BASEYEAR dependent value. If the field is packed (BH or PD) then the storage format is assumed to be YYMMDD, YYMM or YY format depending on the length of the field, similar to INDEX (see above table).
The Y2K sorting and indexing features interpret year zero as zero (instead of 2000) if the month and day are zero. Furthermore, as of 3.83k, a blank year is given the BASEYEAR year value.
3.83u Changes - 10/11/99
Errors Corrected
When the Windows autohide feature was off and the BR task was minimized, BR would generate an illegal operation when the window was maximized.
When using the FMT data type in INPUT FIELDS the tab key and back arrow generated a GPF.
BR was failing to Remove or Truncate the WBSERVER.DAT file when the file header was not recognizable.
Read file KEYONLY without having read a master record to allocate a buffer caused the task to hang. BR has always required a master record to be read before accessing a file KEYONLY. Now this error condition produces BR error 0718.
System calls -M -W -C -R now operate like their corresponding lower case flags. This case sensitivity had been suppressed to allow passing the flags to DOS, but that made the rules too obscure.
A CD \\server\dir command followed by DIR caused an assertion error in DOS and Windows.
A CD / command followed by DIR caused an assertion error in DOS and Windows.
A FORM of N or G with a length greater than 127 caused unpredictable results.
Storage of IF THEN with a comment was inserting a space ahead of the comment.
Error 4312 (out of space on Unix) was redirected to error 4239, which is the more general case.
If a file was created in Year 2000, a Dir showed year 100.
3.83t Changes - 08/31/99
Errors Corrected
Out of space on a diskette copy under Windows was returning the Unix 4312 error. This has been changed to the DOS 4239 error.
When a WBSERVER.DAT file is accessed by the first user, BR will try to remove and recreate it. When it cannot remove it, it tries to truncate the file to zero bytes and rewrite it. This helps under Unix but the truncation process seldom works under Windows. The error that was corrected is that.. failure to remove or truncate the file was not being detected.
BR was changed to allow BR expiration dates after 1999.
3.83s Changes - 07/31/99
Errors Corrected
On Windows 98 only, Input Select caused a GP fault under certain circumstances.
The DOS model occasionally duplicated print lines during a Ctrl-P operation.
DIR for a file created in year 2000 showed a creation date of year 100.
The DOS model, running under Windows failed to properly request the second disk during a COPY -C operation.
The EXIT DO statement was causing a GPF under certain circumstances.
If a CD command was issued to a drive that was defined to BR but not defined to Windows, and then a print file was closed invoking a spooling shell call, the process would fail to terminate properly.
In the DOS model, WIN:/ was not always acting like PRN:/. In particular, WIN:/\\SERVER\QUEUE would drop out of BR instead of simply not finding the device as it should (PRN:/\\SERVER\QUEUE is not supported under the DOS model).
3.83r Changes - 07/21/99
For release 3.83q only, under the Windows model only, the WSID was always being reported as 00. This has been corrected.
====================
3.83q Changes - 07/10/99
====================
Errors Corrected
Secondary help files were not always being searched for properly.
If BR is unable to remove the WBSERVER.DAT file when the first user logs in, it will now attempt to truncate the file to zero bytes before proceeding.
INPUT SELECT using numbers or letters to navigate. Wasn't honoring keys other than arrows.
The dimensions on optional parameters to functions were not being recognized.
Display attributes were printing along with characters in DOS print screens.
Multiple sessions were not being supported for WSID 0.
Multiple sessions were not being supported when all licenses are in use.
Copy with -c to change disks was not prompting for a new disk.
3.83p Changes - 05/11/99
A custom DLL interface was added (3.8 only).
Errors Corrected
The SCO version would hang if STATUS FILES filename was issued.
3.83o Changes - 05/06/99
Enhancements
The following configuration (BRConfig.sys) options are permitted:
Prior to release 3.83e, Business Rules! ignored the digits to the leftof the rightmost six digits of a date value unless century was specified in the mask.
Example:
... DAYS(1001021,"YMD") produced the same result as DAYS(001021,"YMD")
Commencing with 3.83e, if BR is unsuccessful applying the "YMD" mask it tries "CYMD". This change has inconvenienced some dealers. Therefore OPTION 18 is provided to ignore the presence of digits to the left of the rightmost six digits:
OPTION 18 Sets BR to ignore any Century values where the century is omitted from the date format mask.
Ome of our dealers has reported that Novell 4.11 with the Y2K patch and Novell 4.2 is not truncating files properly. They are not having this problem with other versions of Novell, either prior to or later than these versions. We have provided a workaround for this problem with option 23.
OPTION 24 OPEN #... ... Replace ... causes any existing target file to be removed and created instead of truncated.
This option should be regarded as temporary because it opens the door to a filename protection failure where an error 4148 could concievably occur after a filename has been reserved, although this situation is regarded as unlikely.
Errors Corrected
INPUT FIELDS, in conjunction with mouse usage, was occasionally causing a GPF failure.
3.83n Changes - 04/30/99
Enhancements
Added "copies=" feature during native spooling (spooling without SPOOLCMD) on WINDOWS, NOVELL, and UNIX platforms.
Example:
10 open #25: "Name=PRN:/10, Copies=3", display, output 20 print #25: "..... document text...." 30 close #25:
This will print 3 copies of document text.
SPOOLCMD now attempts to perform drive substitution before issuing the specified spool command.
Example:
DRIVE C: \\SERVER2\BR_SHARED BRULES COMPANY2 SPOOLCMD COPY [SPOOLFILE] C:\REPORTS
Any reports printed to #255 will be copied to the
\\SERVER2\BR_SHARED\REPORTS
directory.
3.83m Changes - 04/05/99
Errors Corrected
Use CLOSE #255: statement without previous OPEN #255: was occasionally causing general protection failures.
Dos and Windows models now delete the target file during a copy operation before replacing it. This was done because NOVELL was failing to replace files.
Error 9310 was added to prevent problems during replace. If a line is corrupted it will cause a 9310 error during a save or replace.
Workfiles will now be deleted after a program is ended.
3.83l Changes - 03/22/99
Errors Corrected
The Y specification, in an INDEX statement without a numeric qualifier, was failing to apply BASEYEAR in version K only.
3.83k Changes - 03/17/99
Enhancements
Opening a display file with Name= WIN:/nn does the same thing as PRN:/nn except the use of SPOOLCMD is suppressed only for that file.
Y2K (BASEYEAR)-
SORT, with a Y specification after the ascending/descending indicator, is now sensitive to the length of the field, for numeric (BH or PD) fields. It no longer assumes the the field contains data in YYMMDD format. It now depends on the length of the field in accordance with the rules below.
INDEX now permits the specification of numerical (BH or PD) fields in key position and length descriptions. If a posion or length is followed by Y, then baseyear is applied. If it also contains a B or P it is processed as a number, with baseyear applied according to the length:
Field Type & Length Assumed Data Format
- PD 1 Not Significant
- PD 2 or BH 1 YY
- PD 3 or BH 2 YYMM
- PD 4, BH 3 or BH 4 YYMMDD
Note that the specification for PD is P and the specification for BH is B in the INDEX statement.
e.g. INDEX masterfile keyfile 10/31 2BY/10 REPLACE
This creates keyfile applying BASEYEAR to the first two bytes of each key. That part of the key is assumed to be binary in YYMM format.
Errors Corrected
Use of the NXTFLD system variable in conjunction with the mouse was occasionally causing general protection failures.
3.83j Changes - 02/23/99
The PRINTER [type] RESET statement is now fully implemented accross all platforms.
Under Windows the Ctrl+] call to a DOS shell now continues asynchronously to the calling task. This leaves WB active while the DOS window is still open.
Errors Corrected
WB 3.8 was limiting the number of simultaneous file PROTECT commands to 100. This limit has now been expanded to 1000.
Under DOS and Windows CHDIR to a directory with a period in the name created a failure.
Under DOS only DAYS(DATE) returned zero or caused a general protection failure.
Ctrl-P was improperly utilizing file #255 for a couple of releases.
For the DOS model, STATUSLINE OFF removed the first line of the display instead of the status line.
The FREESPACE command now returns 2GB when available space exceeds 2GB as opposed to a negative number.
3.83i Changes - 01/28/99
Errors Corrected
The Days function produced incorrect results only in 3.83h.
3.83h Changes - 01/25/99
Enhancements
Login_Name$ may be substituted during WBCONFIG.SYS statement interpretation. Specify [LOGIN_NAME$] (case insensitive) anywhere in a WBCONFIG.SYS statement to have the user's name appear in the statement.
e.g. DRIVE G: G:\HOME\[LOGIN_NAME$] G:
Defines drive G: as the user's home directory.
The DAYS() function now permits four digit years even if C is not specified in the mask statement.
SLEEP() now accepts decimal fractions of a second. Resolution accuracy is in milliseconds (up to 3 decimal places). The sleep parameter is still specified in seconds. Some DOS environments have a lower resolution than milliseconds.
The FONT configuration statement now permits alteration of the window's aspect ratio (hieght versus width). The width (in pixels) of each character will be 'n' times the height divided by 'd', using the following syntax.
FONT [ ASPECT=n/d ] [ fontname ]
... [ ] indicate optional parameters
Errors Corrected
WB now removes and recreates the WBSERVER.DAT file upon startup when the first user starts up. This should avoid some false 4175 errors.
The DATE command assumed century 19. It now obtains this from the operation system.
The Y2K sorting and indexing features now interpret year zero as zero (instead of 2000) if the month and day are zero.
CHDIR was failing for certain S/23 style directory names in DOS and WINDOWS environments.
3.83g Changes - 01/15/99
SCO Errors Corrected
An Openserver 5 compiler bug caused certain matematical results to display incorrectly. Also it corrupted certain PD field values.
3.83f Changes - 12/23/98
Y2k Enhancements
The SORT facility now supports BASEYEAR processing of numerical fields.
Please note that we previously erroneously reported that the Y specification should be appended to the field length of sort specifications. This is not the case...
If a Y is appended to the A/D (ascending/descending) indicator of sort MASK statements or the I/O (include/exclude) field of RECORD statements, the field is subject to BASEYEAR processing.
If the field is character based then the first two characters are assumed to be a BASEYEAR dependent value. If the field is numerical then the decimal point is shifted left four decimal positions temporarily while applying BASEYEAR.
Other Enhancements
We have added support for the PRINTER RESET statement in WBCONFIG.SYS for the Windows model. The format is:
PRINTER [ type ] RESET, initialization string
The initialization string will be appended to each report formatted for the specified printer, or all printers if no type is specified.
WBCONFIG.SYS now supports OPTION 23 which excludes data errors from IOERR conditions. WB advances the record pointer when a successful read I/O operation occurs, even when a CONV (conversion) error takes place during the READ operation. This option lets the IOERR exit condition occur only when the record pointer is not advanced.
Errors Corrected
ONQ3.EXE which permits 3.8+ WB's to access OnQ 2.68b failed in certain time zones. A new EXE file is now provided that is not time zone sensitive.
LIBRARY processing failed in several circumstances in release 3.83e only.
OPEN RESERVE followed by CLOSE FREE generated error 4205 (3.8 bug).
Accessing named pipes was failing (3.8 bug).
If a file was corrupted in a certain way it was possible to skip deleted records during a READ operation, but COPY -D was not always recognizing the deleted records.
If a string containing a numerical value in scientific notation was converted to a number and the integer portion of the base number exceeded one digit, then any result exceeding the capacity of the numerical processor was not being trapped.
3.83e Changes - 11/24/98
Windows Printing Changes:
Ctrl-P now utilizes CONFIG printer INIT strings.
Formerly printing under Windows was accomplished in one of three ways:
- Define the printers available to a workstation to the station's print manager, and reference a substring of the printer name after "Name=PRN:/".
- Reference a local port or network printer directly as in:
Name=LPT2: or Name=\\MYSERVER\PRINTERNETWORKNAME.
- Reference a network printer as:
Name=PRN:/\\ MYSERVER\PRINTERNETWORKNAME.
The third method worked for Windows 95/98 workstations but not for Windows NT workstations.
The second method produced undesirable symptoms when a referenced printer was turned off or had other problems. Sometimes the workstation would hang. Network printers did not appear in the PRINTER_LIST() function call results.
As of version 3.83e, all printing under Windows should migrate to aspecification beginning with "PRN:/", which initiates Windows spooling.
This will achieve the following objectives:
- Both Windows NT and 95/98 will accommodate:
Name=PRN:/\\MYSERVER\PRINTERNETWORKNAME, or its substring, or, Name=PRN:/PRINTERNAME or substring.
Subsrings must match PRINTER_LIST() results. Each network printer used must be declared as a locally defined workstation printer.
- This method will avoid hanging the workstation in the event of a device or connection failure. It will allow control of printers and jobs through locally installed drivers.
- PRINTER_LIST() has been changed to include printer network names in NT as well as in Windows 95/98.
- SPOOLCMD can be used at will, without changing applications or substitution sets. In the future, use of SPOOLCMD will be made selectable at OPEN time.
- The CONFIG PRINTER TYPE statement can be used to match INIT strings to printer classes . This feature supports all of the following printer naming conventions:
name=prn:/10, name=prn:/default, name=prn:/select
name=prn:/\\MYSERVER\PRINTERNETWORKNAME name=prn:/PRINTERNAME
name=prn:/{substring}
- Name=LPTn: is still operational, and will continue to be supported on all Windows platforms including Windows 3.1 for those who prefer not to change.
- Name=PRN:/LPTn also works. In this case WB spools the report and sends it to LPTn.
To reference LPTn under Windows NT and Windows 95/98 it is necessary to establish a network connection on the workstation using the NET USE command from the command line or, via the PRINTERS window select a printer and click PROPERTIES > DETAILS > CAPTURE. The first LPTn printer definition on each workstation will also appear in PRINTER_LIST() results.
Notes-
If "PRINTER=" is specified in an OPEN string, it overrides any PRINTER TYPE configuration statements.
On Windows 95/98 you cannot spool directly to a shared local port. However, you can define a local printer to the workstation's print manager that points to a network queue and direct the queue to point back to the shared printer.
Y2K Enhancements
Three new FORM data types are now supported for working with date fields:
DT 3 or DT 4 DL 3 or DL 4 DH 3 or DH 4
These utilize binary storage formats corresponding to B, BL and BH. They also perform days() processing utilizing the current default date format (mdy/ymd/dmy etc.). These formats are intended to reduce the number of changes required for Y2K compliance, and for enabling ODBC access to dates stored in 'day of century' format.
INDEX key position or key length values may now specify a trailing "Y" character to indicate that the first two characters of the field are BASEYEAR dependent. For example:
INDEX masterfile keyfile 10/23Y/55 8/6/30 REPLACE DUPKEYS
indicates that a date field begins in position 23 with a two digityear that is BASEYEAR dependent. This feature does not work with compressed numeric formats (i.e. packed decimal or binary).
Similarly, if a SORT MASK ascending/descending flag ends with "Y", the first two characters are processed in accordance with BASEYEAR.
Other Enhancements
OPEN #0: no longer requires SROW and SCOL specifications. This letsthe users fully utilize the "Save Screen Size and Position" feature of the Windows model. Also, the CONFIG OPENDEFAULT statement no longer requires these parameters. Be sure, however, that your users are aware that each session number has it's own settings.
Wbconfig.sys OPTION 23 restricts IOERR error traps to errors that pertain to input output buffer processing. It specifically avoids trapping data conversion errors that may occur after a buffer has been successfully read.
Normally IOERR traps any error that occurs during input or output processing, including data conversion errors. It should be noted, however, that the file record pointer advances to the next record after the successful read of a buffer, irrespective of any subsequent conversion errors during the IO operation. That means a REREAD (without KEY= etc.) may be performed to reprocess the data in a buffer after a READ statement that generated a conversion error. (This file pointer processing has always existed in WB.)
Errors Corrected
Printer init strings were not being applied to Ctrl-P images. (an old problem)
FREE *. was FREEing all files. It now just FREEs files with no suffix.
CUT TO CLIPBOARD (Ctl-X) and COPY TO CLIPBOARD (Ctl-C) were losing the last character of marked text.
The current state of Windows MENU check boxes were not detectable by a program.
If WB is started as a background process in UNIX it wasn't terminating properly.
Unix errors corrected that were introduced by the 3.83 file IO changes-
Exists() to a /dev/tty... was hanging the process.
Communications processing was dropping the first several characters of inbound data.