DEFINE VARIABLE iRecord AS INTEGER NO-UNDO.
DEFINE VARIABLE iBatch AS INTEGER NO-UNDO INITIAL 10000.
OUTER:
DO WHILE TRUE TRANSACTION:
FOR EACH EXCLUSIVE-LOCK:
iRecord = iRecord + 1.
DELETE .
/* Commit the current transaction(iteration) and proceed with the next.
This will restart the FOR EACH block with the new first record. */
IF (iRecord MODULO iBatch) EQ 0 THEN NEXT OUTER.
END.
LEAVE.
Code for mass delete can be improved, check https://community.progress.com/s/article/P36834
example:
DEFINE VARIABLE iRecord AS INTEGER NO-UNDO. DEFINE VARIABLE iBatch AS INTEGER NO-UNDO INITIAL 10000.
OUTER: DO WHILE TRUE TRANSACTION: FOR EACH EXCLUSIVE-LOCK:
iRecord = iRecord + 1.
DELETE .
END.