REPLACE (expression, field#, value#, subvalue# { , | ; } replacement)
REPLACE (expression [ ,field# [ ,value#] ] ; replacement)
variable < field# [ ,value# [ ,subvalue#] ] >
REPLACE 関数を使用すると、フィールド、値、またはサブ値を新しいデータで置換した動的な配列のコピーを返すことができます。
expression には、動的配列を指定します。
式 field#、value#、および subvalue# には、置換するエレメントのタイプと位置を指定します。これらの式は、区切り文字式と呼ばれます。
replacement には、与えられるエレメントの値を指定します。
value# と subvalue# はオプションです。しかし、subvalue# または value# と subvalue# のどちらかが省略された場合、第 2 の構文で示すように、セミコロン ( ; ) を replacement の前に置く必要があります。
不等号括弧を使用して、動的な配列のデータを置換することもできます。 代入演算子の左側の不等号括弧が、代入演算子に従って、動的配列内の指定されたデータを変更します。 代入文の右側の不等号括弧は、EXTRACT 関数が実行されることを示します (例については、EXTRACT 関数を参照してください)。
variable には、変更されるデータを含む動的配列を指定します。
区切り文字式の指定方法とその結果の違いを、ケース 1、ケース 2、およびケース 3 に分けて説明します。
IDEAL、PICK、PIOPEN、および REALITY フレーバー・アカウントでは、replacement が空白ストリングである場合、動的配列、フィールド、または値の末尾に新規エレメントを付加しようとしても、動的配列、フィールド、値は変更されないままで、追加の区切り文字も付加されません。$OPTIONS 文の EXTRA.DELIM オプションを使用すると、REPLACE 関数は動的な配列、フィールド、または値に区切り文字を付加します。
replacement が NULL 値である場合、保存表記 NULL (CHAR(128)) が dynamic.array に挿入されます。dynamic.array が NULL 値として評価される場合、置換によって変更なしのままとなります。REPLACE ステートメントで、値が NULL 値であるエレメントの従属エレメントが参照される場合、動的配列は変更されません。
INFORMATION および IN2 フレーバー・アカウントでは、expression が空白ストリングで、新しいエレメントが動的な配列の末尾、フィールドの末尾、または値の末尾に追加された場合には、動的な配列、フィールド、または値に区切り文字が付加されます。 $OPTIONS ステートメントの -EXTRA.DELIM オプションを使用すると、REPLACE 関数は IDEAL、PICK、および REALITY フレーバー・アカウントの場合と同じように動作します。
次の例では、フィールド・マークが F、値マークが V、サブ値マークが S でそれぞれ示されます。
最初の例では、フィールド 1 を # に置換して、Q を #FAVBVDSEFDFFF に設定します。
R=@FM:"A":@VM:"B":@VM:"D":@SM:"E":@FM:"D":@FM:@FM:"F"
Q=R
Q=REPLACE(Q,1;"#")
次の例では、フィールド 2 の 3 番目の値の最初のサブ値を # に置換して、Q を FAVBV#SEFDFFF に設定します。
Q=R
Q<2,3,1>="#"
次の例では、フィールド 4 を # に置換して、Q を FAVBVDSEFDF#FF に設定します。
Q=R
Q=REPLACE(Q,4,0,0;"#")
次の例では、フィールド 1 から 4 の最初の値を # と置換して、Q を #F#VBVDSEF#F#FF に設定します。
Q=R
FOR X=1 TO 4
Q=REPLACE(Q,X,1,0;"#")
NEXT
次の例では、値マークと # をフィールド 2 の最後の値に付加して、Q を FAVBVDSEV#FDFFF に設定します。
Q=R
Q=REPLACE(Q,2,-1;"#")