SELECT VTYPE, COUNT(*) AS REC ; FROM LEDGER ; GROUP BY VTYPE ; ORDER BY REC DESC ; INTO CURSOR L1 * SELECT L1 GO TOP lcVtype = L1.VTYPE * SELECT VTYPE,; CAST(IIF(VTYPE='D',DATE ,{}) AS D(10) ) AS DR_DATE ,; CAST(IIF(VTYPE='D',VNO ,0) AS N(06) ) AS DR_VNO ,; CAST(IIF(VTYPE='D',AMOUNT,0 ) AS N(12,2)) AS DR_AMOUNT,; CAST(IIF(VTYPE='C',DATE ,{}) AS D(10) ) AS CR_DATE ,; CAST(IIF(VTYPE='C',VNO ,0) AS N(06) ) AS CR_VNO ,; CAST(IIF(VTYPE='C',AMOUNT,0 ) AS N(12,2)) AS CR_AMOUNT ; FROM LEDGER ; WHERE VTYPE = lcVtype ; ORDER BY DATE ; INTO CURSOR LGR READWRITE * SELECT VTYPE,; CAST(IIF(VTYPE='D',DATE ,{}) AS D(10) ) AS DR_DATE ,; CAST(IIF(VTYPE='D',VNO ,0) AS N(06) ) AS DR_VNO ,; CAST(IIF(VTYPE='D',AMOUNT,0 ) AS N(12,2)) AS DR_AMOUNT,; CAST(IIF(VTYPE='C',DATE ,{}) AS D(10) ) AS CR_DATE ,; CAST(IIF(VTYPE='C',VNO ,0) AS N(06) ) AS CR_VNO ,; CAST(IIF(VTYPE='C',AMOUNT,0 ) AS N(12,2)) AS CR_AMOUNT ; FROM LEDGER ; WHERE VTYPE != lcVtype ; ORDER BY DATE ; INTO CURSOR L2 * SELECT LGR GO TOP * SELECT L2 GO TOP DO WHILE !EOF() SELECT LGR SCATTER MEMVAR IF L2.VTYPE = 'D' M.DR_DATE = L2.DR_DATE M.DR_VNO = L2.DR_VNO M.DR_AMOUNT= L2.DR_AMOUNT ELSE M.CR_DATE = L2.CR_DATE M.CR_VNO = L2.CR_VNO M.CR_AMOUNT= L2.CR_AMOUNT ENDIF GATHER MEMVAR SKIP SELECT L2 SKIP ENDDO * USE IN L1 USE IN L2 USE IN LEDGER