Nein hast du leider nicht verstanden.
Du must unterscheiden zwischen Programmen in derselben Sitzung und verschiedenen Sitzungen.
Jede Sitzung hat eine eigene SQL-Umgebung und weiß nichts von einer anderen.
In einer Sitzung hat jede ACTGRP ihre eigene SQL-Umgebung und weiß nichts von der Anderen.

Jede SQL-Umgebung hält Update/Insert/Delete-Sperren auf Satzeben je Datensatz.
Somit kann jede SQL-Umgebung auf andere Datensätze derselben Tabelle eintsprechende Aktionen durchführen (der SQL-Server macht das auch gerne anders, nicht aber die DB2).
Sämtliche Ressourcen werden mit commit bestätigt und freigegeben, mit rollback zurückgedreht aund ebenso freigegeben.

Innerhalb einer SQL-Umgebung wird jede Tabelle genau nur einmal geöffnet, egal wievele SQL's auf die Tabelle in derselben ACTGRP gemacht werden.

Native Dateien (PF/LF) werden mit Open von jedem Programm geöffnet. Bei Calls und Open derselben Datei bekommt man einen 2. Open.
Ausnahme mit SHARE(*YES) bleibt der 1. Open und wird nur hochgezählt. Dies ist aber manchmal schwierig, da ein 1. Open Input mit einem 2. Open Input/Output dann in die Hose geht.
Satzsperren sind dann auf jeder geöffneten Datei separat möglich.