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)
|
| 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 ...