This document describes the default initial values of user-defined
variables, explains how you can assign an initial value to a user-defined
variable and how you can use the RESET
statement to reset the
field value to its default initial value or the initial value defined for that
variable in the DEFINE
DATA
statement.
This document covers the following topics:
Note:
For example definitions of assigning initial values to arrays, see
Example 2 - DEFINE
DATA (Array Definition/Initialization) in the
Statements documentation.
If you specify no initial value for a field, the field will be initialized with a default initial value depending on its format:
Format | Default Initial Value |
---|---|
B, F, I, N, P | 0 |
A, U | blank |
L | F(ALSE) |
D | D' ' |
T | T'00:00:00' |
C | (AD=D )
|
GUI Handle | NULL-HANDLE |
Object Handle | NULL-HANDLE |
In the DEFINE
DATA
statement, you can assign an initial value to a
user-defined variable. If the initial value is alphanumeric, it must be
enclosed in apostrophes.
If the variable/array is to be assigned a modifiable initial value, you
specify the initial value in angle brackets with the keyword
INIT
after the variable definition in the DEFINE DATA
statement. The
value(s) assigned will be used each time the variable/array is referenced. The
value(s) assigned can be modified during program execution.
Example:
DEFINE DATA LOCAL 1 #FIELDA (N3) INIT <100> 1 #FIELDB (A20) INIT <'ABC'> END-DEFINE ...
If the variable/array is to be treated as a named constant, you specify
the initial value in angle brackets with the keyword
CONSTANT
after
the variable definition in the DEFINE
DATA
statement. The constant value(s) assigned will be used
each time the variable/array is referenced. The value(s) assigned cannot be
modified during program execution.
Example:
DEFINE DATA LOCAL 1 #FIELDA (N3) CONST <100> 1 #FIELDB (A20) CONST <'ABC'> END-DEFINE ...
The initial value for a field may also be the value of a Natural system variable.
Example:
In this example, the system variable
*DATX
is used to provide the initial value.
DEFINE DATA LOCAL 1 #MYDATE (D) INIT <*DATX> END-DEFINE ...
As initial value, a variable can also be filled, entirely or partially, with a specific character string (only possible for variables of the Natural data format A or U).
Filling an entire field:
With the option
FULL LENGTH
<character-string>
, the
entire field is filled with the specified characters.
In this example, the entire field will be filled with asterisks.
DEFINE DATA LOCAL 1 #FIELD (A25) INIT FULL LENGTH <'*'> END-DEFINE ...
Filling the first n positions of a
field:
With the option
LENGTH
n
<character-string>
, the
first n
positions of the field are
filled with the specified characters.
In this example, the first 4 positions of the field will be filled with exclamation marks.
DEFINE DATA LOCAL 1 #FIELD (A25) INIT LENGTH 4 <'!'> END-DEFINE ...
The RESET
statement is used to reset the value of a field. Two options are available:
Notes:
CONSTANT
clause in the DEFINE DATA
statement may not be referenced in a
RESET
statement, since its content cannot be changed.
RESET
statement may also be
used to define a variable, provided that the program contains no
DEFINE DATA
LOCAL
statement.
RESET
(without
INITIAL
) sets the content of each specified field to its
default initial value
depending on its format.
Example:
DEFINE DATA LOCAL 1 #FIELDA (N3) INIT <100> 1 #FIELDB (A20) INIT <'ABC'> 1 #FIELDC (I4) INIT <5> END-DEFINE ... ... RESET #FIELDA /* resets field value to default initial value ...
RESET
INITIAL
sets each specified field to the initial value as
defined for the field in the DEFINE
DATA
statement.
For a field declared without
INIT
clause in the DEFINE DATA
statement, RESET INITIAL
has the same effect as RESET
(without INITIAL
).
Example:
DEFINE DATA LOCAL 1 #FIELDA (N3) INIT <100> 1 #FIELDB (A20) INIT <'ABC'> 1 #FIELDC (I4) INIT <5> END-DEFINE ... RESET INITIAL #FIELDA #FIELDB #FIELDC /* resets field values to initial values as defined in DEFINE DATA ...