Eine Alternative wäre eine View mittels SQL zu erstellen.
z.B.:
CREATE VIEW MyLib/MyView
AS SELECT DISTINCT Field1, Field2, ... FieldN
FROM MyFile

(entspricht SETGT + READ)

oder

CREATE VIEW MyLib/MyView
AS SELECT Field1, Field2, ... FieldN
FROM MyFile
GROUP BY Field1, Field2, ... FieldN

entspricht Gruppen-Wechsel-Logik

SQL-Views können in SQL-Abfragen verwendet werden und damit ganz einfach z.B. mittels Embedded SQL in RPG verarbeitet werden.

Zu den programmtechnischen Anmerkungen ist folgendes zu sagen:
Die Variante mit SETGT READ ist wesentlich sinnvoller als eine Gruppenwechsel-Steuerung.
Im ersten Fall wird jeweils nur der 1.Satz des Schlüssels gelesen.
Im zweiten Fall werden alle Sätze gelesen und nur beim Gruppenwechsel erfolgt eine Aktion.

Birgitta