SET ENGINEBEHAVIOR 90 CREATE CURSOR vacation (dstart D,dend D) INSERT INTO vacation VALUES (DATE()+3,DATE()+5) dbefore=DATE() SELECT NVL(MAX(T1.dend)+1,date(1960,1,1)) dFreeMaxFirst ; FROM vacation T1 ; WHERE dend < m.dbefore; AND dend + 1 NOT IN (SELECT dstart FROM vacation); INTO CURSOR result BROWSE>If you want the "near before" free day the query is little more complex.
SET ENGINEBEHAVIOR 90 CREATE CURSOR vacation (dstart D,dend D) INSERT INTO vacation VALUES (DATE()+3,DATE()+5) dbefore=DATE() SELECT NVL(MAX(T1.dend)+1,date(1960,1,1)) dFreeMaxFirst ; FROM vacation T1 ; WHERE dend < m.dbefore; AND dend + 1 NOT IN (SELECT dstart FROM vacation); INTO CURSOR result BROWSE