From Br Wiki
Jump to: navigation, search

4.17 is the latest Stable version of Business Rules!

4.17l - October 10, 2007

Regarding COLLATE ALTERNATE - Changed collating and sorting so that any revisions are done at the time the keys are built rather than trying to perform collating adjustments while comparing keys. This means that it is necessary to rebuild all indexes that are subject to COLLATE ALTERNATE.

Print PREVIEW enhancements-

The graphical console is now hidden during PREVIEW processing. The title the preview window now the same as the console. The preview icon is now set to that of it's parent.

Errors Corrected

  1. FREE now works on client files.
  2. COPY and RENAME without a TO filename caused unpredictable results. This has been corrected.
  3. Fontsize on tabs now resize with the other fonts.
  4. Linux shell calls with -e now support error 4300. ( Check SYSERR and SYSERR$ for 4300 results.)
  5. "00010 input fields '10,10,C10,RUXQ,2': X$" returned fkey 209 (???!) instead of 2. It now returns 2.
  6. First click that sets focus on a control now works like it does when the field is entered via the arrow keys.
  7. If a conversion error occurred on a field with a help window open BR would become unstable.
  8. OnQ can now be used with multiple concurrent users. It was erroneously being restricted to one user. (OnQ is an obsolete but very well designed character based ad-hoc reporting system that has been fully replaced by the ODBC driver).
  9. BR was GP Faulting when buttonrows were activated under the terminal version (putty etc.) of BR for linux.
  10. The terminal version for linux didn't recognize 'cc'(centering).

4.17k - May 2, 2007

The WSID In Use message tells who has the WSID.

Clicking [X] now yields Fkey 93.

Two new system functions are defined-

NWP has been enhanced to support the specification of left and right margins.

USERID$ returns the BR licensee name. (old undocumented feature)

AUTO CRASH DUMP UPLOAD for brdebug only.

BR now allows an empty field spec in conjunction with a zero element array.

ENV$("OPEN#window-num.FONT.LABELS") - returns the font name. Type STATUS ENV for other values.

Tooltips are now shown on PREVIEW buttons.

RINPUT SELECT "10,10,20/CC 30": "DATA" - centers on the 20 char display area - The shaded text area will be the greater of 20 non-proportional positions or the actual length of the proportional text.

RINPUT SELECT "10,10,1/C 30": "DATA" -use this for variable cursor bar RINPUT SELECT "10,30,1/CC 30": "DATA" -use this for centering variable cursor bar The displayed length of 1 retricts the shaded text area to the actual length of the proportional text. The data length of 30 sets the field capacity. If the field capacity is not specified, it defaults to the maximum length of the associated variable.

NWP support has been added for media type selection and printer tray strings. See NWP.TXT for details.

2D controls, including Combo Boxes can now be cleared by populating them with zero element arrays.

G and NOWAIT FIELDS operations have no affect on and are not affected by Fkey assignments.

PRINT FIELDS "nn,nn,GRID 10/40,SORT": {column number} PRINT FIELDS "nn,nn,LIST 10/40,SORT": {column number} These statements cause the referernced columns to be sorted as though the user had clicked on the heading of the column. This includes toggling between ascending and descending.

Variable Positioning Control Field

RINPUT FIELDS "nn,nn,15/SEARCH 10,leading-attributes,row,col": str-value

Where row,col addresses a GRID or LIST that has been sorted on a column. This causes the 'current' position to progressively reposition based on the last column sorted. If no column has been sorted, the an error is generated.

Errors Corrected

RINPUT grid on tabbed window was disabling the keyboard.

Ctrl-P was not honoring cancel button at printer selection.

PREVIEW:/ was not overriding SPOOLCMD. Also PREVIEW page size dropdown was reconfigured.

st fi ard -p yields nothing.

Using the E and X attributes on Combo Boxes was inconsistent.

Grid lines on protected fields are now distinguishable from the inactive default color.

KStat$ no longer picks up mouse releases.

The date and time results of a DIR command have been shifted right one position to permit KB to be displayed without adjoining it to the filesize.

When resizing BR now locks controls until the window is fully resized.

C input fields on GRIDS are no longer right trimmed.

Grid minimize/maximize was affecting inactive colors.

EDIT was passing a *relative* path to editors such as MyEdit.

Grid minimize/maximize was affecting inactive colors.

RINPUT grid on tabbed window disables the keyboard.

Ctrl-P was not honoring cancel button at printer selection.

PREVIEW:/ was not overriding SPOOLCMD. Also PREVIEW page size dropdown has been reconfigured.

Add to Documentation-

Active FIELD colors come from the field specification. Inactive colors come from ATTRIBUTE [INACTIVE], or the windows 'disabled' colors if ATTRIBUTE [INACTIVE] is not defined.

INPUT controls can be in one of three states: - Active - it is part of an INPUT operation that is currently being processed. - Hot - It has been assigned an Fkey value but is not active. - Inactive - It is not active or hot.

Initially both active and hot fields are displayed as active. INPUT controls change from active to inactive colors when they become inactive and are not hot (they have no FKEY value).

Text boxes are special because if they are displayed with PRINT FIELDS as a SUNKEN LABEL they initially appear to be active and will not switch to inactive colors, unless they become part of INPUT or RINPUT fields. Sunken labels that are protected, however, are displayed as inactive.

Colors are updated only immediately before input occurs to prevent flicker. Immediately before each input operation, all fields are checked to see whether they should be displayed as active or inactive. If a change is needed, it is made at this time.

When redirecting output of a STATUS command that references a filename, specify the redirection ahead of the filename qualifier. use STATUS >result FILES ORDERH



Note that a partial filename search string can be used with both STATUS FILES and STATUS LOCKS.

The following PRINTER statement escapes are supported in PRINTER statement quoted result strings.

\e \E 0x1B escape \n newline \r carriage return \t tab \\ \ \f 0x0C form feed \octal number

e.g. PRINTER WIN: [formfeed],"\f"

     PRINTER WIN: [arg1], "\Exxx\n"

Color Specifications

When processing field attributes processing is done left to right. Nothing may follow color specifications in FIELDS attributes, whereas color specifications in ATTRIBUTE statements may be followed by a colon and further attributes such as fontname.

As the FIELDS attributes are being processed left to right, if an ATTRIBUTE statement is referenced (e.g. [STRONG]) then all attributes are cleared and the referenced attribute statement is processed. Then the remainder of the FIELDS attributes are processed. It may be that both color and font are specified by an ATTRIBUTE statement, but it is desired to override just the color. This can be accomplished by referring to an ATTRIBUTE statement and then following it with a color specification. In that case the FIELDS color attribute will override entirely the ATTRIBUTE color specification.

Also, within a color specification it is permissible to have multiple seemingly conflicting color specifications such as /HRW:RG#112233. In these cases the priority given to conflicting specifications is:

  1. #112233 style values
  2. W (Windows system)
  3. HRGB values

There is no point in specifying both W and #112233 values because the #112233 values always take priority. However it can be useful to specify both HRGB and one of the other specifications so that HRGB will be used by terminal emulators but will be ignored by graphical clients.

4.17 Changes - August 26, 2006

Internal Processing Changes

WSID 0 is no longer allowed. The priority of WSID assignment is: Command line WSID requests take precedence over brconfig.sys WSID statements. Of the brconfig.sys WSID statements, the last one specified is used.

When GUIMODE is on Fkey values may be assigned to controls either by PRINT or INPUT statements. If they are assigned with PRINT statements, they need not be specified in corresponding INPUT statements in order to be active. However, in order to clear them an Fkey value of minus one (-1) must be specified in either a PRINT or INPUT statement for the control.

When GUIMODE is on, a single click on a hot text field that is part of an active INPUT FIELDS statement will not trigger an FKEY interrupt, but it will cause the cursor to move to that field. If it is double clicked, focus is moved to the control and then the specified Fkey interrupt is generated.

Labels and inactive text fields with Fkey values assigned will continue to trigger an Fkey interrupt when they are single or double clicked.

The appearance of PRINTed sunken fields has been improved. Input Fields-

 normal	sunken text (sunken or flat per Windows)
 protected	sunken text ( [inactive] attribute applies)

Print Fields-

 not sunken	label
 sunken	sunken text

A debug dump facility has been added to BR. It produces a file named BR_CRASH_DUMP.DMP which is very useful for resolving GPFs and assertion failures. This is produced only when using BRdebug.exe as opposed to BRnative.exe.

TABs do not switch in response to PRINT FIELDS.

DIR reports true filename case.

Substitute now supports both upper and lower case results. e.g. SUBSTITUTE "XXX YYY" "AbCd EFg"

Duplicate label checking has been relocated to SAVE/RUN processing. So EDIT will not fail when merging duplicate labels.

Speed improvements have been made when resorting via AIDX.

CONFIG COLLATE ALTERNATE filename has been removed.

DATAHILITE [datahilite] - allows strong attribute keywords - removed hexidecimal spec support The default datahilite value is now the inversion of N value.

All controls now appear active when hot (fkey value assigned).

Protected fields using Windows colors are now displayed as [inactive] not as background.

Entry of numeric data redisplays upon exit of each cell with the ARROW key.

New and Enhanced Features

The I field attribute represents invisible. Under Windows it is now treated as a password field. Most typically it is diplayed as a string of asterisks (e.g. *****).

Long filenames may now be up to 512 characters in length.

Numeric Column Sorting

2D controls now facilitate numeric column sorting. This works well in conjunction with the new DATE field format (see release notes 04/06/06) where the data is stored as day of century, but is displayed as a formatted date. It also works with all numeric columns.

2D Section Coloring

PRINT FIELDS "nn,nn,GRID 10/40,ATTR": (mat start, mat end, mat attr$) Overrides the attributes of a range of cells/rows for a GRID/LIST display. This allows you to shade or otherwise alter the display of a range of cells / rows in a 2D Control. The P (protect) attribute is also supported on GRID PRINT ATTR statements. To clear such attribute overrides simply PRINT ATTR to the same cells using a null (empty string) attribute specification.

AEX and P are now supported in HEADERS column attributes.

Clipboard Access

  • SETENV("clipboard" ,"replacement-value")
  • ENV$("clipboard")

These expressions stow and retrieve data to and from the Windows clipboard. The word 'clipboard' is case insensitive.

Windows Color and Font Settings The current Windows color and font settings may be retrieved:

  • ENV$("color.component-name") returns "#999999"
  • ENV$("font.component-name") returns "fontname"

For a complete list of possible values and current settings type: STATUS ENV

New Status Commands STATUS ATTRIBUTES all ATTRIBUTE settings STATUS ENV all ENV settings STATUS PRINTER all PRINTER statements STATUS KEYBOARD the keyboard remapping table STATUS BTREE_VERIFY lists files affected STATUS CONFIG most config options applied STATUS ALL all of the above plus FILES, etc.

STATUS DIM identifies invalid (duplicate) DIM statements

BR! now supports partial filenames on the STATUS FILES and STATUS LOCKS commands:

  • STATUS FILES filename-search-argument (case insensitive substring)
  • STATUS LOCKS filename-search-argument

e.g. STATUS FILES dirname

shows the status of all open files in that directory

New Print PREVIEW Features

 << and >> go 10% of the document
  < and >  go a single page
 Select Printer Button - Reselects the printer for subsequent PREVIEW printing. Note- this will not alter the escape sequences
 embedded in the printer output.  But under NWP this should be printer generic. 

CONFIG MAX_SORT_MEMORY nn MB Sets the maximum amount of work memory used for sorting and indexing. Use this to prevent long sorting operations from dominating a workstation's memory.

Client Server Extensions

The EDIT command now works with client server. Client EXISTS() is now supported.

OPTION 46 Normalizes numpad + and - keys. This removes Field Plus / Minus special processing, which is no longer needed with Datahilite field clearing.

Font Window to Window Default Processing SCREEN OPENDFLT FONT=, FONT.TEXT=, FONT.LABELS=, FONT.BUTTONS= arial: modern: slant: width+ (etc.)

The above settings are used initially and as OPEN #0 font defaults. When a child window is opened it inherits the parent windows font settings. Window #0 inherits the OPENDFLT font settings each time it is opened. When typeface or family is specified in an Open statement, boldness, style and underline revert to these defaults unless they are also specified in the Open statement.

Size specifications do not revert to default values as a result of opening a window. They must be explicitly specified in order to change them. This is to allow for users resizing their displays and retaining those settings.

Individual controls inherit the font settings of the window the same way windows inherit settings.

New Error Codes

  • 0861 - Invalid Format Specification - Specify OPTION 45 to use old format (not a new error number but it is a new application)
  • 0879 - Attempting to use both strings and numbers in a G, FMT, PIC column. In a G spec column, the column becomes either a string column or number column based on the first element. BR now stores data internally in BR internal format rather than storing numeric data as strings.
  • 0885 - Attempted use of advanced controls inside grids/lists such as CHECKBOXes etc.
  • 0108 - A string functions yields a result that exceeds the maximum length of a string (32767 bytes), such as RPT$("=", 36000).
  • 6242 - Bad format for parameterized printer substitutions.
  • 6243 - Parameter counts don't match for parameterized substitutions.
  • 6244 - Printer substitution became too long after parameterized substitution.
  • 6247 - Malformed color spec when printing with color='#123456'.
  • 6248 - Bad picture spec when printing with picture='3,4,picture'.

Bug Fixes

  • The text portion of Combo Boxes can now be used as ordinary FIELDS

as in:

INPUT FIELDS "5,10, C 12; 7,10,COMBO 15; 9,10,C 8": MAT DATA$
  • Formerly, the statement had to read:
INPUT FIELDS "5,10, C 12; 7,10,COMBO 15; 9,10,C 8": DATA$(1), DATA$(2), DATA$(3)
  • DIM statements were not being reinitialized prior to Save and Replace operations. This caused arrays to be corrupted when they were redimensioned in a library routine prior to replacing a program. This was an ancient bug.
  • Shell Limit -1 is now working again (waits indefinitely).
  • NWP was generating a 6270 error when escape sequences were printed if the printout contained no displayable data. This happened when OPEN was followed by PRINT statements that printed only escape sequences.
The 6270 error no longer occurs.

Client Server Change March 6, 2006

To invoke multiple sessions requiring only one login add the keyword MULTISESSION to the respective labeled statements in brlistener.conf and use a brlistener dated January 7, 2006 or later. These can be found in FTP://FTP.BRULESCORP.COM/DLL_DISTR/MultiSessionListener.

4.17 Changes - March 3, 2006

New Features

PRINT FIELDS GRID|LIST HEADERS may specify the FIELD attributes to be applied to the row of headers. These may be references to SCREEN attributes (N, U, H etc.) or bracketed attribute names.


To accommodate extended field capacities with 'display under mask' field types, BR! now uses the following syntax:


e.g. 5,10,7/N 10.2

         - 10 digits with decimal point displayed in 7 char field
or    7,10,11/PIC(#,###.##) 
         - 7 digits with punctuation displayed in 11 char field

The main use for this feature is to shorten the displayed length when displaying proportional fonts as in 9,10,20/C 25.

OPTION 45 allows the old method of extended field specification in addition to the new method. If the older format is encountered without Option 45, then error 861 is reported.

Additional Date() Formats are supported

  DATE$(days,"day month, ccyy") ->  23 January, 2007
  DATE$(days,"d3 m3 dd, ccyy")  ->  Tue Jan 10, 2005
  DAYS("January 17, 1945", "month dd, ccyy")

Also, a new FIELDS format is supported:

  • The values are displayed as dates but are stored internally as day of century.
  • The mask may be any valid DATE() mask.

DIR can now be used on the client:

  DIR @:[path]

Where path may be any combination of:


The system function EXISTS("@:[path]filename") is now supported.


The following attributes are displayed along with their captions:

  • KEYBOARD remappings
  • ############## TBA ##############

Added NWP Capabilities- \El## followed by: case 'E': // Top margin in lines (VMI increments) from the top of page. The default is 1/2 inch from the top of page.

case 'P': // Page Length in lines case 'F': // Page Length in lines These two values are treated synonymously by BR. They both set the bottom margin in relation to the top margin based on the current VMI. The default is 1/2 inch from the bottom.

case 'H': // set paper source 4.17+ only // 2 - Manual Feed // 3 - Manual Envelope Feed // 4 - Paper Tray 2 (lower tray) // 5 - Paper Tray 3 (optional paper source)

                  case 'A': // designates the size of the paper which is the basis 

for calculating the logical page size.

PAPER SOURCE A new NWP only syntax is supported for paper tray selection. When you print to WIN:/SELECT or PREVIEW:/SELECT then you are given the opportunity to select a paper source tray. Then a new ENV$ keyword can be used to obtain a number associated with the paper source... TRAY$ = ENV$("LAST_TRAY_SELECTED") Finally the value associated with the selection can be applied as [ \Etray='value' ] to specify that the paper should be taken from that source.

Note that paper tray selection and page orientation must be specified before printing any displayable data.

Current font COLOR may be specified as: \Ecolor=#rrggbb

A PICTURE may be specified as:

   \Epicture='width,height,imagefile.jpg [: TILE|NORESIZE|ISOTROPIC ]'

Where 'width' and 'height' are given in inches, and the remainder of the image specification matches that of New GUI Console pictures.

BR Processing Improvements

GRIDs are now validated as each cell is exited instead of when control is passed to the BR program after all data is entered.

The way menus are displayed has been improved with respect to speed and appearance. The R (retain) menu flag is now honored.

Any control with an FKEY associated with it via the PRINT FIELDS statement will remain hot at all times, irrespective of whether it is participating in an INPUT FIELDS operation.