An unindexed data-structure name used as an operand is a fixed-length
character value - the concatenation of its subfields' storage images, in
declaration order. It may be assigned to a character
field, concatenated, passed to %LEN (its byte length) or %CHAR, or
displayed:
DCL-DS ds1;
f1 CHAR(5);
f2 CHAR(5);
END-DS;
DCL-S line CHAR(20);
f1 = 'HELLO';
f2 = 'WORLD';
line = ds1; // "HELLOWORLD" (then blank-padded to 20)
DSPLY %CHAR(%LEN(ds1)); // "10"
Numeric subfields contribute their raw storage image (zoned overpunch
digits, packed nibbles), so the character image of a data structure mixing
character and numeric subfields is byte-exact. An
array of data structures (DIM) has no single scalar image and is not a
character value.