Not all VALUES clauses in element are processed
search cancel

Not all VALUES clauses in element are processed

book

Article ID: 244410

calendar_today

Updated On:

Products

IDMS

Issue/Introduction

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.

Environment

IDMS: All supported releases.

Cause

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.

Resolution

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

 

Additional Information

ELEMENT