DECLARE S CHARACTER(10); . . . SUBSTR(S,3,4) = 'ABC';
この代入では、S の 3 番目の文字は「A」、4 番目の文字は「B」、5 番目の文字は「C」、6 番目の文字は空白となります。S の他の文字は、この代入では変更されません。
I、j、および w に関して次の制約事項があり、これを満たしていないとプログラムがエラーになることがあります。添え字のチェックを有効にしてコンパイルした場合は ERROR 状態が生成され、添え字のチェックを有効にせずにコンパイルした場合は予期しない結果になります。
1<=I<=w I+j-1<=w j>0
この制約事項を満たしていれば、I は文字列内の文字またはビットの索引であり、I 番目の文字またはビットから j 個の文字またはビットで構成されるサブストリングに文字列の長さを超えずにアクセスできることになります。また、j=0 の場合に I が文字列 r の長さを超えることもありません。j を省略した場合、サブストリングは I 番目の文字またはビットから文字列の末尾までになります。ターゲット文字列の他の部分は代入で変更されません。
I および j で示されたサブストリングに式 e の変換後の値が代入され、そのサブストリングが非可変長文字列のように扱われます。
説明
SUBSTR 疑似変数は、特定の文字列変数参照のサブストリングを参照します。
SUBSTR 疑似変数への代入では、r のサブストリング部分のみが変更されます。r が可変長文字列の場合、サブストリングの代入によってその文字列の長さが変更されることはありません。
r が可変長文字列の場合、w は r の現在の長さです。r が非可変長文字列の場合は、w は文字列変数の宣言された長さです。j を省略した場合、j は w-I+1 と見なされます。e の値は非可変長文字列の代入規則に従ってサブストリングに代入されます。