System Limits
As of 4.20
- Literals may be any length. (in 4.18 they we're limited to 250 characters)
- The 256 byte limit on compiled form statements is removed. Form statements are limited only to the length of a BR source statement.
- The maximum array elements is now 99,999,999.
- The maximum string length is 99,999,999.
- The maximum WorkStack size is 99,999,999. Previously it was 65,535.
- External file Pos= allows up to 99,999,999.
Arrays
- Maximum 7 dimensions (e.g., A(1,1,1,1,1,1,1)).
- Subscripts, smallest 0 (when OPTION BASE 0 is specified; otherwise the default is 1).
- Array size is limited by both memory allocation and number of entries. (See also Errors 0120 and 2082)
- Arrays are limited to 32,767 (32K) entries.
- As of BR 4.17, arrays are limited to a maximum of 1024KB or 1MB (1,048,576) of allocated memory.
- As an example, you may dim an 512 byte array to a maximum of 2048 entries.
- DIM A$(2048)*512
- Prior releases had memory limits of 32K,64K or 512K.
- Initially arrays may not be dimmed larger than 9,999 elements, however you can Mat an array as high as 32,767. Attempts to Mat higher than this will result in error 0120.
Dictionary
The maximum dictionary size is 2MB.
Field Help Window
Maximum size 1000 characters (100 is recommended).
Files
- 1.) Maximum file size varies according to operating system. Prior to version 4.13, file size maximums as were as follows-
DOS | 32M (2**16 blocks of 512 bytes) |
Unix | 1M |
Linux | 2M (edit the /etc/default/login file to change this default) |
With BR Versions 4.13+, large files (exceeding 2GB) are supported
Option 33 must be on to invoke this feature. It has been tested using TCP/IP only. We expect NetBui and some versions of IPX to fail above 2GB. This option will fail in Windows 95, 98 and ME.
- 2.) Business Rules! internal limit: 2147M (2**31).
- 3.) Maximum record length: 32,000 bytes (depends on size of your program, space required for data storage, version of Business Rules and available memory).
- 4.) Maximum # of files open at once:
width="15%" | Before Rel 3.02 | The limit was 20 open files per user for DOS, Unix and Linux. The operating system and Business Rules usually take up 5 files, leaving 15 usable opens. | |
width="15%" | Rel 3.02+ | It depends on your operating system; DOS and NetWorks have a limit of 100 files (95 usable). |
- 5.) Available channel numbers, specified in OPEN statements have been expanded to 199. e.g. OPEN #199: "......" In version 4.14 file number 300-999 may also be used.
- 6.) Keyed files use two opens (one for the master and one for the key file). Procedure files count as one. Help files which are being accessed count as one. Window files do not count against the operating system limit on open files. All other files use one, even when second and subsequent opens are made to the same file (e.g., a file, which is simultaneously open via two different OPEN statement still only counts as one open file to the operating system).
- 7.) With BR 3.9+, long filenames are supported
Function calls
The longest user-defined function name allowed is 30 characters including FN (not including $ for string functions).
Help
- Maximum items per menu is Unlimited. Number of related topics on a submenu is also unlimited.
- Maximum keyword length is 33 characters (no commas or spaces allowed).
- Maximum line width is 79 characters
- Maximum nested submenus is Unlimited
- Maximum successive menus recalled = Up to 15 successive (nested) menus are saved for later recall by the F2 key .
- Maximum topic description length is 60 characters (spaces, commas and all characters are allowed).
Indexes
- Longest key field length is 128 adjacent or non-adjacent characters.
- Maximum key fields per file is One. (See "Files, maximum number open at once" for maximum number of index files.)
- Split keys: Up to 6 non-adjacent sections can be combined into one key field.
- The sort and index creation utilities now utilize significantly more memory than before, and yield significantly better performance.
Loop variables
Default is maximum of 20 (see ForStack specification in BRConfig.sys for how to change this default).
Memory Available
Business Rules! can access all memory available to Windows, and does not suffer from DOS 640k limitations.
Numbers
- Largest: This number varies according to your hardware (CPU). The system function Inf (e.g., type PRINT INF) returns the largest number. 1.000000E+307 is the largest number on all DOS, Unix and Linux versions at the time of publication of this manual.
- Longest constant 15 integer and 9 decimal digits
- Most significant digits 15 represented, but loss of intermediate results during calculations may limit accuracy to 14 digits or less.
- Considered equal in comparisons Controlled by the RD specification in BRConfig.sys. The default of 6 decimal places means that numbers within .0000005 of each other are considered equal in comparisons.
Printer Initialization Strings
The maximum length of printer initialization strings is 64 bytes.
Procedures
Nine nested procedures may be active at one time.
Program Lines
- Largest line number is 99999.
- Smallest line number is 00001
- The maximum length of a BR statement is now 2000 characters. Prior to 4.20, the longest line length is 800 characters in source code
- Longest line length is 250 characters in object code
- The maximum number of lines in a program is 32000.
- BR! 4.18 and before can handle no more than 35 libraries declared with a single Library statement. (See also Error 1050)
Sort
Maximum combined sort key length is 32,000 bytes
Maximum number of records is
- Limited only by disk space for a record-out sort (type R)
- 99,999 records for a type A (PD 3 format) address- out sort
- 2.147 billion (2**31-1) records for a type B (B 4 format) address-out sort
The sort and index creation utilities now utilize significantly more memory than before, and yield significantly better performance.
- Record selection rules for Sort
Up to 10 record selection rules can be combined with AND or OR.
Strings
- 1.) Longest constant is 250 characters.
- 2.) Longest string length (variable) is 32,000 characters (depends on size of your program, space required for other variables and available memory).
- 3.) Default length is 18 characters.
Subroutine or function calls
Largest number of nested calls defaults to 50. (See FLOWSTACK specification in BRConfig.sys for how to change this default.)
Workstations
The maximum number of workstations was 127. Now it is 999.
Variables
Longest allowable variable name is 30 characters (not including $ at the end of string variable names).
Windows
Maximum size
- 1.) When attributes do not occupy a space, the maximum size is 24 x 80. If a border is used, the maximum is 23 x 79.
- 2.) When attributes do occupy a space, the maximum is 23 x 79. If a border is used, the maximum is 22 x 78.
Record Locking
BR 3.8 uses 31 bit locking. BR 3.9 heretofore used 30 bit locking to be compatible with CIFS / SMB products like Samba and SCO Vision. However this has proved to be an unacceptable limitation because files that are greater than 1 gigabyte can get random locked records for no apparent reason.
As of release levels 3.92i/4.02i/4.12i 31 bit locking is the default. This will take you to approx 1.8 GB without lockin conflicts.
32 bit locking gives access to about 3.6 GB.
Release 4.03 or 4.13 is required to go to 64 bit locking, and this is not possible on Windows 95, 98 and ME.
In versions 4.0+, new Option statement is provided to specify the number of bits to be used for locking:
OPTION 33 ( 30 / 31 / 32 / 64 ) (default is 31)
30 bit support is for compatibility with CIFS (e.g. Samba) when needed.
31 bit locking allows for data files up to about 1.8 gig depending on record size. The larger the record size, the higher the boundary.
32 and 64 BIT LOCKING ONLY WORK ON NT/W2K/XP systems. 32 bits support files up to approx 3.6 gig.
32 and 64 bit support is currently only available in releases 4.03 and 4.13.+
We are researching large file support on Unix/Linux.
BR will not start two sessions using different lock bit requirements. A message box is produced when that is attempted.
The record locking mechanism was substantially revised to enable record locking without actually locking records. This allows report writers and ODBC to access locked records without interference.