Un saludo desde COLOMBIA
Bueno, los cursores son estructuras(del motor de DB, NO de PB) que tienen la capacidad de recuperar y almacenar en memoria datos a partir de una sentencia SQL.
Desde PB se pueden declarar, ejedcutar, abrir, recorrer y cerrar(todas son instrucciones diferentes), con este ejemplo te puedes ilustrar un poco más. (te aclaro que el ejemplo funciona para ORACLE, si trabajas con otros motores, debes investigar y adaptarlo).
//se declara el cursor
DECLARE cursor_1 CURSOR FOR
SELECT c1,c2,c3
FROM tabla
WHERE condicion
USING vble_transaccion(); //casi siempre SQLCA
//se abre o ejecuta el cursor
OPEN cursor_conceptos;
//se llama a la primera fila que devuelve el cursor, almacenamos los
//datos en variables, que deben ser del mismo tipo que los campos
FETCH cursor_1INTO :vble_1,:vble_2,:vble_3;
//ciclo que recorre todas las filas recuperadas por el cursor, y continua
//mientras haya datos en el cursor
DO WHILE vble_transaccional.sqlcode = 0
//se realizan las instrucciones necesarias con cada una de los datos
//recuperados, puede ser llevarlos a una tabla, hacer comparaciones, llevarlos a un DW, o lo que se te ocurra.
//recupera la siguiente fila de registros del cursor
FETCH NEXT cursor_1 INTO :vble1,:vble2,:vble3;
LOOP
//se cierra el cursor
CLOSE cursor_1;
espero que te de una idea, para resolver el problema