PROIV Version Limit Revisions
Historically PROIV has imposed limitations on certain system elements in order to preserve system efficiency. However, as developers use PROIV for increasingly more complex applications, these limits have become restrictive. PROIV Version 6 addresses these limitations.
System variables size increased
Historically function name lengths have been limited to a small number of characters and as a result are not, typically, very descriptive. This in turn has lead to complex application function naming conventions. PROIV Version 6 addresses these limitations and the following variables will have their sizes increased:
Variable |
Description
|
Old length
|
New length
|
@OPR |
Operator ID
|
3 |
32
|
@LPWD1 |
Operator password |
9 |
32 |
@FUN |
Function and global logic name |
8 |
32 |
@FLN |
File name |
8 |
32 |
@VNM |
Value variable name |
12 |
32 |
Clearly, these enhancements will impact the PROIV environment. Whilst end user applications are unlikely to see significant differences, Developers may need to make some adjustments. Specifically, if they have created tools making use of bootstrap file definitions these will need to be amended and re-genned.
It is recommended that all customers ensure the impact of these changes is fully understood as, for example, several customers have written their own security systems based on the PROIV Operator ID.
Increased workspace
The previous limit of 64K on workspace has been removed and the workspace increased in size. However, due to some of the other changes in PROIV Version 6, such as the system variable size increases, not all of this increase will be seen by Developers. Currently we are carrying out a benchmarking exercise to determine typically how much extra workspace will be available.
In addition, PROIV Version 6 reduces the usage of the workspace by reducing the amount of space used to store a string. Previously 250 bytes per string, this has been reduced to a pointer which uses only 8 bytes.
Logic limitations
Previously in PROIV the maximum number of programmable logics in a function was 255 less the number of global logics used. PROIV Version 6 increases this limit to 999.
In addition, the maximum number of lines of logic is increased from 999 to 9999. This will allow more complex functions to be created. As a result, the variable @LGSQ (Line number in an individual logic) has been increased in length to four.

User defined function keys
Function Keys are used by developers to associate actions when events occur on objects within a PROIV application. The present limit of 99 has proved a restriction on application development. Consequently, PROIV Version 6 will increase the number of Function Keys to 207, in the key number range 33 to 240. Those keys previously in the range 199 to 209 have been moved to 245 onwards.
Pro-ISAM file size
Modern applications need to store greater volumes of data with larger record sizes, and the previous file size limit of 384Mb has become restrictive. As a result PRO-ISAM files are now allowed to grow to a maximum size of 1.9 Gb. This is achieved by increasing the maximum page size to 32,000 bytes; thereby allowing more records per page. The new larger PRO-ISAM is compatible (both file and API) with existing PRO-ISAM as it uses the same file format.
Pro-ISAM spinlocks
Customers with large terminal populations may choose to enable spinlocks as a more efficient mechanism for managing system resources. Using spinlocks can improve the overall throughput of a PROIV function. PROIV has two tuneable parameters that control how spinlocks work; SL_SPIN and SL_NAP. The previous PROIV implementation of spinlock allows the “nap” period or minimum wait period (SL_NAP) to be specified in milliseconds. It has been found that, with more modern hardware, the minimum value of one millisecond is too long and thus inefficient. As a result, PROIV Version 6 allows this wait period to be specified in microseconds thus improving access speeds to system resources.
Read more......