Was enthält dann deine KUNDENP?
Ich dachte, das Feld KDNNR aus der KUNDENP sind die zu ermittelnden Kunden?
Die KUNDENP sollte über das Feld KDNNR einen Index erhalten!!!

Dann baust du dir deine SQL's zusammen.

SQLFill = 'INSERT INTO FILE2P ' +
'SELECT char(' + FELDNAME + '), min(''' + TEILDATEI + '''), min(''' + FELDNAME + '''), count(*) from ' + TEILDATEI + ' A ';

IF %SCAN('A':FELDLAENGE) = *ZEROS;
SQLFill +=
' WHERE exists (select * from KUNDENP P where dec(A.' + FELDNAME + ', 7, 0) = P.KDNNR + ')';
ELSE;
SQLFill +=
' WHERE exists (select * from KUNDENP P where A.' + FELDNAME + ' = P.KDNNR + ')';
ENDIF;

SQLFill += ' group by char(' + FELDNAME + ')';

exec sql execute :SQLFill;

Einen eigenen Fetch/Write brauchst du da nicht.