Progress
Report Builder
User’s Guide


UNKNOWN Values

Report Builder displays an UNKNOWN value if:

A field with a blank value is different than a field with an UNKNOWN value. For example, if you specify to suppress empty record lines in the record layout, Report Builder prints any line containing an UNKNOWN value.

This section describes how Report Builder processes and displays UNKNOWN values.

How Report Builder Displays an UNKNOWN Value

Report Builder displays UNKNOWN values in different ways. The following table describes the different types of UNKNOWN values and how Report Builder displays them:

If . . .
Then Report Builder displays . . .
The value itself is UNKNOWN
A question mark (?) or a user-specified string
The UNKNOWN value is generated by an error
A specific number of question marks (????)

Report Builder also displays question marks (????) if a numeric or date field’s value is too big for the field format.

You can specify that Report Builder display a value other than a question mark when a field is UNKNOWN. This option applies only to values that are themselves UNKNOWN; it does not apply to UNKNOWN values generated by errors.

To change the display value, follow these steps:

  1. Access the Set Unkown Value dialog box. You can either:
    • Double-click on the field to access the Properties dialog box, then choose the Unknown button.
    • Select the field, choose Properties Unknown Value.
    • The Set Unknown Value dialog box appears:

  2. Enter the string you want to appear in place of the default question mark.
  3. The string appears everywhere on the report that an UNKNOWN value appears in this field. Report Builder does not use the value of the string when computing other calculated or aggregate fields.

How an UNKNOWN Value Can Occur in Report Builder

An UNKNOWN value can occur in Report Builder when:

How Report Builder Processes an UNKNOWN Value

Once an UNKNOWN value occurs, it generally causes every operation in which it occurs to result in an UNKNOWN value. Table 4–1 describes how Report Builder processes UNKNOWN values in different types of operations.

Table 4–1: UNKNOWN Value Processing
Operation/Function
Condition
Result
Binary operations
If either of the operands is UNKNOWN
UNKNOWN
Unary operations
If the operand (unary +, -, or NOT) is UNKNOWN
UNKNOWN
Relational operators
= or EQ
If both operands are UNKNOWN
TRUE
If one operand is UNKNOWN
FALSE
<> or NE
If both operands are UNKNOWN
FALSE
If one operand is UNKNOWN
UNKNOWN1
>= or GE, <= or LE
If both operands are UNKNOWN
TRUE
If one operand is UNKNOWN
UNKNOWN
< or LT,
> or GT
If both operands are UNKNOWN
FALSE
If one operand is UNKNOWN
UNKNOWN
Built-in functions, except for IIF, CASE, and IN-LIST
If one or more of the arguments is UNKNOWN
UNKNOWN
IIF function
If the condition is UNKNOWN
The false-value
If the condition is “True”
The true-value, regardless of whether it is UNKNOWN
If the condition is “False”
The false-value, regardless of whether it is UNKNOWN
CASE function
If the expression argument is UNKNOWN, the when-value argument is UNKNOWN, and the default argument is any value
The corresponding return-value
If the expression argument is UNKNOWN, the when-value argument is any real value, and the default argument is any value
The default-return-value
If the expression argument is UNKNOWN, the when-value argument is any real value, and the default argument is UNKNOWN
UNKNOWN
IN-LIST function
If the value argument is UNKNOWN, and the list contains an UNKNOWN value
The position of the UNKNOWN value in the list
If the value argument is UNKNOWN, and the list does not contain any UNKNOWN values
0 (zero)
User-defined functions
If one of the arguments is UNKNOWN
The natural value of the UDF’s expression
  1. The not equals operator (<> or NE) treats the UNKNOWN value differently than the Progress 4GL. If a calculated field uses the not equals operator, Report Builder evaluates the operator as UNKNOWN if only one of the operands is UNKNOWN. The 4GL would evaluate the same expression as TRUE.

NOTE: Report Builder sorts UNKNOWN values higher than any real value.

When you use a literal UNKNOWN value (a question mark) as an operand or as a function argument, Report Builder attempts to interpolate the data type of the UNKNOWN value using the context of the operand or argument.

For example, Report Builder deduces that the UNKNOWN value in the following expression is a numeric because it is part of an arithmetic operation:

3 * ? 

When you enter the following expression, Report Builder deduces that the UNKNOWN value is a numeric because SQRT takes numeric arguments:

SQRT(?) 

When there is not enough information for the parser to determine the data type, it rejects the expression. The following expression does not provide a data type for either the second or third arguments and, therefore, Report Builder cannot deduce the data type of the UNKNOWN values or of the entire IIF expression:

IIF(bool, ?, ?) 


Copyright © 2004 Progress Software Corporation
www.progress.com
Voice: (781) 280-4000
Fax: (781) 280-4095