Embedded SQL arbeitet NICHT (direkt) mit Pointern!

Was Du brauchst ist ein Cursor, der mit dem SQL-Befehl DECLARE CURSOR definiert wird und auf einem SQL-Statement basiert (Äquivalent zu der F-Bestimmung). Die Von- und Bis-Werte können als Host-Variablen (mit führendem Doppel-Punkt) direkt in das SELECT-Statement eingebunden werden.
Der Cursor wird mit dem SQL-Befehl OPEN geöffnet (analog Open bei User controlled open). Anschließend die einzelnen Datensätze mit dem Befehl FETCH empfangen (analog zu READ/READE etc in Datenstrukturen). Die empfangenen Werte können dann verarbeitet werden. Wurden alle Sätze verarbeitet wird der Cursor mit dem SQL-Befehl CLOSE geschlossen.

Etwa so:
Code:
 /Free
    Exec SQL Declare CsrC01 Cursor For
           Select Fld1, Fld2, ... FldN
              From File
              Where Key1 between :VonWert1 and :BisWert1
                  and Key2 between :VonWert2 and :BisWert2
                  and Key3 between :VonWert3 and :BisWert3
              Order By Key1, Key2, Key3;

     Exec SQL Open CsrC01;
     DoU 1 = 0;
        Exec SQL Fetch Next From CsrC01 into :Var1, :Var2, ... VarN;
        If SQLCODE = 100;
           Leave;
        ElseIf SQLCODE < *Zeros;
           //Fehler;
        EndIf;
        //Verarbeitung
     EndDo;
     Exec SQL Close CsrC01;
Birgitta