INSERT (dynamic.array, field#, value#, subvalue#, expression)
INSERT (dynamic.array, field# [ ,value# [ ,subvalue#] ] ; expression)
INSERT 関数は、指定された動的な配列に新しいフィールド、値、またはサブ値が挿入された動的な配列を返します。
dynamic.array は、動的な配列として評価される式です。
field#、value#、および subvalue# は、挿入される新しいエレメントのタイプと位置を指定し、区切り文字式と呼ばれます。 value# と subvalue# はオプションですが、どちらかを省略するときは第 2 の構文で示すようにセミコロン (;) を expression の前に置く必要があります。
expression は、挿入される新しいエレメントの値を指定します。
INSERT 関数は、指定される区切り文字式に応じて 3 つの結果がもたらされます。
IDEAL、PICK、PIOPEN、および REALITY フレーバー・アカウントでは、expression が空白ストリングで、新しいエレメントが動的な配列の末尾、フィールドの末尾、または値の末尾に付加されると、動的な配列、フィールド、または値は変更されません。 追加の区切り文字は付加されません。$OPTIONS 文の EXTRA.DELIM オプションを使用すると、INSERT 関数は動的な配列、フィールド、または値に区切り文字を付加します。
expression が NULL 値として評価される場合、NULL が dynamic.array に挿入されます。 dynamic.array は、NULL 値として評価されても、挿入によって変更なしのままです。 区切り文字式が NULL 値なら、INSERT 関数は正しく実行されずプログラムはランタイム・エラー・メッセージを出力して終了します。
INFORMATION および IN2 フレーバー・アカウントでは、expression が空白ストリングで、新しいエレメントが動的な配列の末尾、フィールドの末尾、または値の末尾に追加された場合には、動的な配列、フィールド、または値に区切り文字が付加されます。 $OPTIONS ステートメントの -EXTRA.DELIM オプションを使用すると、INSERT 関数は IDEAL、PICK、および REALITY フレーバー・アカウントの場合と同じように動作します。
次の例では、フィールド・マークが F、値マークが V、サブ値マークが S でそれぞれ示されます。
最初の例では、最初のフィールドの前に文字 # を挿入して、Q を #FFF1V2V3S6F9F5F7V に設定します。
R=@FM:@FM:1:@VM:2:@VM:3:@SM:6:@FM:9:@FM:5:@FM:7:@VM:3
Q=INSERT(R,1,0,0,"#")
次の例では、フィールド 3 の 3 番目の値の前に # を挿入して、値 Q を FF1V2V#V3S6F9F5F7V3 に設定します。
Q=INSERT(R,3,3;"#")
次の例では、# が続く値マークをフィールドの最後の値の後に挿入して、Q を FF1V2V3S6F9V#F5F7V3 に設定します。
Q=INSERT(R,4,-1,0,"#")
次の例では、フィールド 3 の 2 番目の値の 2 番目のサブ値の前に # を挿入して、Q を FF1V2S#V3S6F9F5F7V3 に設定します。
Q=INSERT(R,3,2,2;"#")