Hallo Steven,

es gibt mehrere Arten mit einer Lese-Schleife zu arbeiten.
Welches die Beste ist, darüber streiten sich die Geister:

1. Möglichkeit:
Setll
Do *Hival
Read File
If %EOF
leave
endif
Verarbeitung
Enddo

2. Möglichkeit
setll
read File
Dow Not %EOF
Verarbeitung
read File
enddo

2a. Statt SETLL und read einen CHAIN benutzen.

Ich persönlich bin für die 1. Möglichkeit, da bei zukünftigen Änderungen, z.B. bestimmte Sätze müssen überlesen werden, das Programm leicht durch eine zusätzliche ITER-Bedingung geändert werden kann.
M.E. ist die Struktur bei Variante 1 leichter zu erfassen.

Viele Programmierer ziehen die zweite Variante vor, weil man gelernt hat, dass GOTO zu vermeiden ist. Für viele sind LEAVE und ITER Statements verkappte GOTOs, die umgangen werden müssen.
Der Nachteil bei Variante 2 ist, dass, bei Programm-Änderungen immer in die Tiefe geschachtelt werden muss und spätestens beim 3. If wird es unübersichtlich.

Aber wie gesagt zu diesem Thema gibt es unterschiedliche Meinungen.

Noch eine Anmerkung:
Wenn Du in RPGIV programmierst, kannst du bei Lese-Operationen (READ/READE/READP/READPE) auf die Gleich- Bezugszahl verzichten und stattdessen %EOF(File) abfragen:
1. Beispiel mit Gleich-Bezugszahl
Read File 92
If *In92
leave
EndIf

2. Beispiel mit %EOF
Read File
If %EOF(File)
leave
endif

Der Vorteil ist, man kann fremde Programme leicht ändern/erweitern, ohne prüfen zu müssen, ob die Bezugszahl bereits verwendet wird.

Überigens ab Release V5R1M0 kann RPG in Free Format geschrieben werden. Und im Free Format können die Hoch/Nieder/Gleich-Bezugszahlen nicht gesetzt werden!

Birgitta