An element is defined with multiple distinct VALUES clauses. Not every VALUES clause is being processed.
Example. The following element, record and ADS code is created:
ADD ELE VALUE-ELE1 PIC X(90)
VALUE ( 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYY',
'ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ' ).
ADD REC VALUE-REC1.
REC ELE VALUE-ELE1.
MOD PROCESS NAME IS VALUEDLG-PM VERSION IS 1
PUBLIC ACCESS IS ALLOWED FOR ALL
PROCESS SOURCE FOLLOWS
INIT ( VALUE-REC1 ).
SNAP RECORDS ( VALUE-REC1 ).
LEAVE ADS.
MSEND
.
This results in the following output in the log.
VALUE-REC1
3E7A9050 E7E7E7E7 * XXXX*
3E7A9060 E7E7E7E7 E7E7E7E7 E7E7E7E7 E7E7E7E7 *XXXXXXXXXXXXXXXX*
3E7A9070 E7E7E7E7 E7E7E7E7 E7E74040 40404040 *XXXXXXXXXX *
3E7A9080 40404040 40404040 40404040 40404040 * *
3E7A9090->3E7A90AF Same as prior line
3E7A90B0 40404040 4040 * *
END OF SNAP
Only the first VALUES are present.
IDMS: All supported releases.
The assumption here is that the syntax used in the element above is a method for defining a VALUES clause which is longer than what can fit in one line of IDD input. This is not correct.
What the above syntax does is define a list of VALUES, not one long concatenated VALUE.
The functionality of being able to define a list of VALUES exists in the event that the element is subsequently used in an 88-level structure and there are multiple VALUES that would be considered TRUE for the condition-name being defined.
If such an element is used in a conventional record structure, all but the first VALUES clause are ignored.
To define a VALUES clause which is longer than what can fit in one line of IDD input, use this syntax:
ADD REC VALUE-REC2.
02 VALUE-ELE2.
05 FILLER PIC X(30) VALUE 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'.
05 FILLER PIC X(30) VALUE 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYY'.
05 FILLER PIC X(30) VALUE 'ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ'.
Then this code:
MOD PROCESS NAME IS VALUEDLG-PM VERSION IS 1
PUBLIC ACCESS IS ALLOWED FOR ALL
PROCESS SOURCE FOLLOWS
INIT ( VALUE-REC1 VALUE-REC2 ).
SNAP RECORDS ( VALUE-REC1 VALUE-REC2 ).
LEAVE ADS.
MSEND
.
will produce the following output:
VALUE-REC1
3E7A9050 E7E7E7E7 * XXXX*
3E7A9060 E7E7E7E7 E7E7E7E7 E7E7E7E7 E7E7E7E7 *XXXXXXXXXXXXXXXX*
3E7A9070 E7E7E7E7 E7E7E7E7 E7E74040 40404040 *XXXXXXXXXX *
3E7A9080 40404040 40404040 40404040 40404040 * *
3E7A9090->3E7A90AF Same as prior line
3E7A90B0 40404040 4040 * *
END OF SNAP
VALUE-REC2
3E7A90F0 E7E7E7E7 E7E7E7E7 E7E7E7E7 E7E7E7E7 *XXXXXXXXXXXXXXXX*
3E7A9100 E7E7E7E7 E7E7E7E7 E7E7E7E7 E7E7E8E8 *XXXXXXXXXXXXXXYY*
3E7A9110 E8E8E8E8 E8E8E8E8 E8E8E8E8 E8E8E8E8 *YYYYYYYYYYYYYYYY*
3E7A9120 E8E8E8E8 E8E8E8E8 E8E8E8E8 E9E9E9E9 *YYYYYYYYYYYYZZZZ*
3E7A9130 E9E9E9E9 E9E9E9E9 E9E9E9E9 E9E9E9E9 *ZZZZZZZZZZZZZZZZ*
3E7A9140 E9E9E9E9 E9E9E9E9 E9E9 *ZZZZZZZZZZ *
END OF SNAP