Was den IO-Counter angeht so ist das auch nicht die Wahrheit.
Bei Input-Dateien wird geblockt und 1 IO entspricht dann einem Block, der je nach Satzlänge entsprechend viele Sätze hat.
Wie groß diese Blockgröße ist weiß ich nicht, ich schätze mal 32KB.
Außerdem zählt dieser nur die logischen IO's. Wieviele Plattenzugriffe sich dahinter verbergen erfährt man sowieso nicht.
Du müsstest die Datei als Update-File definieren, dann wird nicht geblockt (oder einen OVRDBF SEQONLY(*NO)) durchführen.

Bei DYNSLT (hier scheinbar automatisch) spielt die Existenz eines Keys über die PF's natürlich eine Rolle.
Zumal das OS hier eine klassische "Mehrwegeingabe", also das Mischen der Daten betreiben muss (im RPG also Input-Primary und Input-Secondary).