Das "AND CONTINUE RUN UNIT" war mir noch nicht bekannt, aber ist genau das was du brauchst. Ob unbedingt als allerletzte Zeile oder als letzter Befehl einer Section ist wohl nicht so entscheidend. Du musst schließlich unterscheiden können ob die RunUnit aktiv bleiben soll oder nicht. Bei EOF könnte man durchaus EXIT PROGRAM ansonsten halt mit AND CONTINUE ...

CRTCBLMOD mit anschließendem CRTPGM ist so die korrekte Vorgehensweise (COBOL ist nun mal doch etwas anders als RPG, wo vieles einfacher ist).

Direktes SQL meine ich ein Programm auf dem PC, dass die SQL's (embed oder nicht) per ODBC absetzt und zwar in den beiden Varianten. Es gibt häufig Dateien mit mehr als 100 Feldern, die aber vom Programm nicht benötigt werden. Warum also nicht benötigte Daten überhaupt erst lesen ?
Für eine performante Lösung muss man auch schon mal die Funktionalität prüfen, ob nicht z.B. eine Leseschleife über mehr als 1 Datei nicht auch als Join direkt aufgelöst werden kann.
Zu prüfen ist auch, ob bestimmte Berechnungen der Daten nicht bereits per SQL erledigt werden können, man braucht manchmal nur das Ergebnis aber nicht die 2 - 5 Felder der Berechnung usw. usw.