Warehouse Release 3.01.2310
03/31/2006
The
features in the 3.01.2310 release are:
. A problem reading Oracle databases with a
condition containing an
AND where one side of the AND contains a Warehouse function and the
other side does not has been fixed. This example does not work on
previous releases,
but now works:
READ ORD = ORADB.ORDER FOR &
SIZEOF(SEARCHTYPE)
> 10 AND STR(FULLORDERNO, 1, 1) <> "*"
. Warehouse message files have been added on
all platforms except
MPE/iX. Warehouse message
files are intended to duplicate the message
files available
natively on the MPE/iX operating system.
To access a
Warehouse message file,
use the keyword MSG on the OPEN statement of
a FIXED file. The syntax is:
OPEN tag FIXED filename MODE={ r | w } MSG
Message files must be open with a mode of
either r for reading or
w for
writing. When reading from a message
file, the keyword NDR
may be used
instead of MSG. This is to maintain
script
compatibility
between MPE/iX systems and other systems.
When a record is written to a capture file,
it is always appended to
the end of the file.
Whenever a record is read from a message
file, the oldest record is
read. After the record has been read and processed,
it is destroyed.
In other words, the first read is
nondestructive and a destructive
read is performed
later to remove the record.
If attempting to read from a file that is
empty, Warehouse waits until
a record is written
if at least one other process has the file open
for writing. If attempting to read from a file that is
empty and no
process has the file
open for writing, an end of file condition is
returned. There is an exception for the first read of
the file. The
first read of the
file always waits if the file is empty.
Thereafter,
a read will only
wait on an empty file if there is at least one other
process writing to
the file.
. A performance problem with the IF() function has been fixed. If prior
releases, nesting
many levels of the IF() function could cause a
severe performance
problem during the compilation phase.
This was
caused by Warehouse
reevaluating the inner IF() functions a great
number of
times. Warehouse now evaluates the inner
IF() functions
only one time.
. Added the ISNUMP and NUMP functions to test
and convert strings
storing packed decimal digits.
ISNUMP tests a string if it
contains packed
decimal digits and NUMP converts a string
containing packed
decimal to a number.
ISNUMP determines if a string is a valid
packed decimal
string that can be
converted using the NUMP function.
To be a valid packed decimal string, all
nibbles (4-bits)
except the last
nibble must contain a binary value from
0 through 9. The last nibble must contain one either 12,
13, or 15 as
follows:
Decimal Hexadecimal Description
12 C Number is positive
13 D Number is negative
15
F Number is unsigned
(treated as positive)
Syntax:
result =
ISNUMP(source-string)
source-string is the string to be checked be a valid
packed
decimal string.
Examples:
Note that since a hexadecimal digit
also requires 4-bits to
represent,
packed decimal digits can often be represented
using
hexadecimal. This makes it convenient in
the examples
below to use
the CHR($xx) function to create one byte of
packed decimal
where $xx is two hexadecimal digits.
Expression Result
ISNUMP(CHR($00)
|| CHR($00) || CHR($00)) FALSE
ISNUMP(CHR($00)
|| CHR($00) || CHR($0F)) TRUE
ISNUMP(CHR($12)
|| CHR($34) || CHR($56)) FALSE
ISNUMP(CHR($12)
|| CHR($34) || CHR($5D)) TRUE
ISNUMP(CHR($12)
|| CHR($CC) || CHR($5C)) FALSE
ISNUMP(CHR($01)
|| CHR($20) || CHR($0C)) TRUE
NUMP converts a packed decimal string to a
number. See
ISNUMP above for
description of a packed decimal number.
If the string passed to NUMP is not a valid
packed
decimal string, a
warning is issued and the result is
undefined. (The
TRY function or statement can used to
catch the
warning.)
result =
NUMP(source-string)
source-string is the string to be checked be a valid
packed
decimal string.
Examples:
Expression Result
NUMP(CHR($00)
|| CHR($00) || CHR($00)) Error
NUMP(CHR($00)
|| CHR($00) || CHR($0F)) 0
NUMP(CHR($12)
|| CHR($34) || CHR($56)) Error
NUMP(CHR($12)
|| CHR($34) || CHR($5C)) 12345
NUMP(CHR($12)
|| CHR($34) || CHR($5D)) -12345
NUMP(CHR($01)
|| CHR($20) || CHR($0C)) 1200
Release
3.01.2310 is available now on all supported platforms.