Wieso einen 2. Cursor?
Du musst folgendes vergleichen:

DECLARE MYCURSOR FOR ... = SELECT in Cobol
OPEN MYCURSOR = OPEN in Cobol + START
FETCH = Read next in Cobol
CLOSE = CLOSE in Cobol

In Native IO würdest du doch auch nicht ständig Open/Start/Read/Close machen oder?
Genauso ist das in SQL.
1 mal OPEN
n mal FETCH
1 mal CLOSE

Hier kommt dann die Variable SQLCODE ins Spiel (les doch mal das Handbuch!).
SQLCODE = ZERO => immer alles OK
SQLCODE = 100 => entspricht READ ... AT END ...
SQLCODE < ZERO => entspricht Filestatus, Fehler mit Abbruch in den SQL's
SQLCODE > ZERO => entspricht Filestatus, Fehler mit Warnung in den SQL's, weitermachen möglich