ヌル文字で終了するストリングの保管に使用する %STR

%STR(ポインター:長さ) は、式の左側で使用されると、式の右側の値を、 ポインターによって指し示されている記憶域に割り当て、最後にヌル文字 終了記号のバイトを追加します。 指定可能な最大長は 65535 です。これは、最後に ヌル文字終了記号用に 1 バイトを予約しておく必要があるので、最高でも、右側の 65534 バイトが使用可能であるということです

この長さは、ポインターが指し示す記憶域の量を示します。また、この長さは、右側にある最大長より長くなければなりません。 ポインターは、少なくとも長さパラメーターと同じ長さの記憶域を 指し示すように設定する必要があります。 式の右側の長さが指定された長さより長い場合、その右側の値は切り捨てられます。

注:
次の条件がいずれも真となった場合、データ破壊が起こります。
  1. 長さパラメーターが、ポインターによってアドレスされたデータの実際の 長さより長い。
  2. 右側の長さが、ポインターによってアドレスされたデータの実際の 長さと同じがそれより長い。
%STR が使用するための記憶域を動的に割り振っている場合、 割り振った長さを記録しておく必要があります。
図 228. %STR (左側) の例
 *..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
D String1         S               *
D Fld1            S             10A

 /FREE
     %str(String1: 25)= 'abcdef';
     // The storage pointed at by String1 now contains 'abcdef¬'
     // Bytes 8-25 following the null-terminator are unchanged.
 
     %str (String1: 4) = 'abcdef';
     // The storage pointed at by String1 now contains 'abc¬'
 /END-FREE