Welches Release hast du denn?
Es gibt manchmal auch Indexprobleme, wenn der Feldtyp nicht so ganz passt.
Auch der Autocast (ab V6) trifft da nicht immer.

Wichtig ist da die Unterscheidung wischen Decimal (gepackt) und Numeric (Zoned).
Dem RPG ist das bei direkten Zugriffen fast egal. Der Compiler meckert da manchmal die Keylist an, beim ILERPG gibts sogar wenig Gemecker bei z.B. "chain (F1:F2:F3) MyFile".

SQL mag hier nicht immer.
Da man seine Dateien früher nicht so konsistent angelegt hat wird schon mal gerne zwischen zoned und packed gemischt.
Hier musst du noch mal prüfen und ggf. per Cast den Quell-Typ an den Ziel-Typ anpassen.
Dies gilt besonders für berechnetet Felder da die nun mal gerne sehr groß generiert werden.

JJJJ*10000 + MM*100 + TT entspricht nicht dem Dec(8, 0) für den Join oder Where.
Also per cast(JJJJ*10000 + MM*100 as decimal(8, 0))" oder cast(JJJJ*10000 + MM*100 as numeric(8, 0))" anpassen.

Dies trifft auch auf Hostvariablen zu.
Der Typ der Hostvariablen sollte zum abgefragten Feld passen, damit ein Index verwendet werden kann.
Dies kommt z.T. halt noch aus V5-Zeiten um SQL's zu optimieren.

Ich habe diverse Konstrukte schrittweise aufgebaut und dabei dann eben die Performance beobachtet.