Figure 52. Character, Graphic, and UCS-2 Literals with Zero Length
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
D.....................................Keywords+++++++++++++++++++++++++++++
* The following two definitions are equivalent:
D varfld1 S 5 INZ VARYING
D varfld2 S 5 INZ('') VARYING
* Various fields used by the examples below:
D blanks S 10 INZ
D vblanks S 10 INZ(' ') VARYING
D fixfld1 S 5 INZ('abcde')
* VGRAPHIC and VUCS2 are initialized with zero-length literals.
D vgraphic S 10G INZ(G'oi') VARYING
D vucs2 S 10C INZ(U'') VARYING
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq++++
* The following statements do the same thing:
C eval varfld1 = ''
C clear varfld1
* Moving '' to a variable-length field using MOVE(P) or MOVEL(P)
* sets the field to blanks up to the fields current length.
C move(p) '' varfld1
C movel(p) '' varfld1
* Moving '' to a fixed-length field has no effect in the following
* examples: (The rightmost or leftmost 0 characters are changed.)
C move '' fixfld1
C movel '' fixfld1
* The following comparisons demonstrate how the shorter operand
* is padded with blanks:
C eval *in01 = (blanks = '')
* *in01 is '1'
C eval *in02 = (vblanks = '')
* *in02 is '1'
C eval *in03 = (varfld2 = blanks)
* *in03 is '1'
C eval *in04 = (varfld2 = vblanks)
* *in04 is '1'
C eval *in05 = (%len(vgraphic)=0)
* *in05 is '1'
C eval *in06 = (%len(vucs2)=0)
* *in06 is '1'