Also STRCMTCTL sollte man nicht zwischen *JOB und *ACTGRP mischen.
Wenn ich z.B. in einem Serviceprogramm mit Named ACTGRP erwarte, eine eigene Commitumgebung zu haben, würde dies den Ablauf vollkommen zerstören.

Rufe ich ein ILERPG mit SQL auf, wird standardmäßig eine Commitgruppe für die ACTGRP eröffnet, falls noch keine vorhanden ist.
Also muss ich auch da selber auf Transaktionen achten.
Nur wenn ich explizit ACTGRP(*CALLER) angebe, kann ich mich (vielleicht) auf die Commitsteuerung des rufenden Programmes verlassen.
Das kommt aber auf das gewünschte Design an.

Du kannst übrigens mit DSPJOB=>16 die offenen Commitgruppen ansehen.

Zusätzlich hat der Open-Status einer Datei nichts mit offenen Commits zu tun.
Ein Close bleibt ein Close.
Nur SQL verwaltet seine ODP's etwas anders.