DELETE (dynamic.array, field#[ ,value#[ ,subvalue#] ] )
DELETE 関数を使用すると、指定したフィールド、値、またはサブ値のデータとそれに対応する区切り文字を、動的な配列から削除できます。 DELETE 関数では、指定したデータが削除されたあとの動的な配列が返されます。この際、動的な配列の実際の値は変更されません。
dynamic.array は、削除されるフィールド、値、またはサブ値を検出できる配列として評価される式です。dynamic.array が NULL 値として評価される場合、NULL が戻ります。
field# は動的配列内のフィールドとして評価される式です。value# はフィールド内の値として評価される式です。subvalue# は値内のサブ値として評価される式です。区切り文字式の数値によって、削除するフィールド、値、サブ値を指定します。区切り文字を含めた全体が削除されます。
value# と subvalue# はオプションです。これらの値が 0 である場合は、フィールドの全体が削除されます。 subvalue# が 0 に等しく、value# と field# が 0 より大きい場合、指定したフィールドの指定値が削除されます。3 つの区切り文字式がすべて 0 よりも大きい場合は、指定されたサブ値だけが削除されます。
区切り文字式が 1 つでも NULL 値と評価された場合、DELETE 関数は失敗し、プログラムが強制終了してランタイム・エラー・メッセージが表示されます。
あるレベルの区切り文字式が 0 より大きく、その上位レベルの区切り文字式の値が 0 である場合、その 0 の区切り文字は 1 として扱われます。区切り文字式をレベルが高い順に並べると、フィールド、値、サブ値の順になります。
DELETE 関数で、値が NULL 値であるより高位のエレメントの従属エレメントが参照される場合、動的配列は変更されません。同様に、すべての区切り文字式が 0 の場合は、元のストリングが返されます。
次の例では、フィールド・マークが F、値マークが V、サブ値マークが S でそれぞれ示されます。
最初の例では、フィールド 1 を削除して、値 Q を VAL1VSUBV1SSUBV2FFSUBV3SSUBV4 に設定します。
R="FLD1":@FM:"VAL1":@VM:"SUBV1":@SM:"SUBV2":@FM:@FM:"SUBV3":
@SM:"SUBV4"
Q=DELETE (R,1)
次の例では、フィールド 4 内の最初のサブ値を削除して、値 Q を FLD1FVAL1VSUBV1SSUBV2FFSUBV4 に設定します。
Q=DELETE (R,4,1,1)
次の例では、フィールド 2 内の 2 番目の値を削除して、値 Q を FLD1FVAL1FFSUBV3SSUBV4 に設定します。
Q=DELETE (R,2,2)
次の例では、フィールド 3 全体を削除して、値 Q を FLD1FVAL1VSUBV1SSUBV2FSUBV3SSUBV4 に設定します。
Q=DELETE (R,3,0,0)
次の例では、フィールド 4 内の 2 番目のサブ値を削除して、値 Q を FLD1FVAL1VSUBV1SSUBV2FFSUBV3 に設定します。
Q=DELETE (R,4.1,2)