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