代入 - SUBSTR 疑似変数

目的

サブストリングのみを変更します。

構文

SUBSTR(r,i,j)=e; 
SUBSTR(r,i)=e;

または

SUBSTR(array,i,j)=string_value;

パラメーター

r
文字列変数またはビット文字列変数への参照。
I
変更する r の最初の文字またはビットの索引を示す固定小数点整数値の式。
j
変更するビット数または文字数を示す固定小数点整数値の式。
e
文字列またはビット文字列に変換できる式。
array
次の形式の文字列またはビット文字列の配列。 susbtr (array(i,j) = string_value;

説明

SUBSTR 疑似変数は、特定の文字列変数参照のサブストリングを参照します。

SUBSTR 疑似変数への代入では、r のサブストリング部分のみが変更されます。r が可変長文字列の場合、サブストリングの代入によってその文字列の長さが変更されることはありません。

r が可変長文字列の場合、wr の現在の長さです。r が非可変長文字列の場合は、w は文字列変数の宣言された長さです。j を省略した場合、jw-I+1 と見なされます。e の値は非可変長文字列の代入規則に従ってサブストリングに代入されます。

DECLARE S CHARACTER(10);
   .
   .
   .
SUBSTR(S,3,4) = 'ABC';

この代入では、S の 3 番目の文字は「A」、4 番目の文字は「B」、5 番目の文字は「C」、6 番目の文字は空白となります。S の他の文字は、この代入では変更されません。

制約事項

Ij、および w に関して次の制約事項があり、これを満たしていないとプログラムがエラーになることがあります。添え字のチェックを有効にしてコンパイルした場合は ERROR 状態が生成され、添え字のチェックを有効にせずにコンパイルした場合は予期しない結果になります。

1<=I<=w
I+j-1<=w 
j>0

この制約事項を満たしていれば、I は文字列内の文字またはビットの索引であり、I 番目の文字またはビットから j 個の文字またはビットで構成されるサブストリングに文字列の長さを超えずにアクセスできることになります。また、j=0 の場合に I が文字列 r の長さを超えることもありません。j を省略した場合、サブストリングは I 番目の文字またはビットから文字列の末尾までになります。ターゲット文字列の他の部分は代入で変更されません。

I および j で示されたサブストリングに式 e の変換後の値が代入され、そのサブストリングが非可変長文字列のように扱われます。