* Invoice Table SET DATE BRITISH CREATE CURSOR invoice(no n(4),date d(8),amount n(5),due d(8),discount n(5),pdate d, PAID I) INSERT INTO invoice values(1,CTOD('01/04/2019'),1500,CTOD('01/05/2019'),0, CTOD('//'),0) INSERT INTO invoice values(1,CTOD('15/04/2019'),2500,CTOD('15/05/2019'),0, CTOD('//'),0) INSERT INTO invoice values(1,CTOD('28/04/2019'),1800,CTOD('28/05/2019'),0, CTOD('//'),0) * recovery Table CREATE CURSOR recovery(no n(4),date d(8),amount n(5), BALANCE I) INSERT INTO recovery VALUES (1, CTOD('03/04/2019'), 300,0) INSERT INTO recovery VALUES (2, CTOD('05/04/2019'), 800,0) INSERT INTO recovery VALUES (3, CTOD('30/04/2019'), 400,0) INSERT INTO recovery VALUES (4, CTOD('01/05/2019'), 400,0) INSERT INTO recovery VALUES (5, CTOD('08/05/2019'), 300,0) INSERT INTO recovery VALUES (6, CTOD('10/05/2019'), 500,0) INSERT INTO recovery VALUES (7, CTOD('12/05/2019'), 100,0) INSERT INTO recovery VALUES (8, CTOD('15/05/2019'), 600,0) INSERT INTO recovery VALUES (9, CTOD('17/05/2019'), 800,0) INSERT INTO recovery VALUES (10,CTOD('18/05/2019'), 100,0) INSERT INTO recovery VALUES (11,CTOD('19/05/2019'), 300,0) INSERT INTO recovery VALUES (12,CTOD('22/05/2019'), 400,0) REPLACE ALL BALANCE WITH AMOUNT SELECT INVOICE SCAN lnAmt = INVOICE.AMOUNT SELECT RECOVERY SCAN FOR BALANCE > 0 DO CASE CASE lnAmt > RECOVERY.BALANCE lnAmt = lnAmt - (RECOVERY.BALANCE) REPLACE INVOICE.PAID WITH INVOICE.PAID +RECOVERY.BALANCE replace RECOVERY.BALANCE WITH 0 REPLACE INVOICE.PDATE WITH RECOVERY.DATE CASE lnAmt =< RECOVERY.BALANCE REPLACE INVOICE.PAID WITH INVOICE.PAID + lnAmt REPLACE RECOVERY.BALANCE WITH RECOVERY.BALANCE - lnAmt REPLACE INVOICE.PDATE WITH RECOVERY.DATE lnAmt = 0 ENDCASE IF lnAmt = 0 EXIT ENDIF ENDSCAN ENDSCAN SELECT INVOICE REPLACE discount WITH amount*5/100 FOR pdate =<DUE AND amount = paid BROWSE