dcl x char(20); dcl y char(20) varying; x, y = ''; x = copy( '*', length(x) ); /* fills x with '*' */ y = copy( '*', length(y) ); /* leaves y unchanged */ x = copy( '-', maxlength(x) ); /* fills x with '-' */ y = copy( '-', maxlength(y) ); /* fills y with '-' */
y の最初の割り当ては、未変更のままになります。上記のコードの断片で使用される場合、length(y) は、ゼロを戻す (y は VARYING であり、事前に ' ' とセットされている) ためです。
しかし、y への 2 番目の割り当てでは、maxlength(y) が 20 (y の宣言された長さ) を戻すため、- 符号が 20 個入ります。