Nun ja, besser ist das schon.
Ich weiß nicht, was bei ACTGRP(*CALLER) passiert.
Im Zweifel ist ein Aufruf nicht möglich, wenn die ACTGRP bereits für *SNGLVL initialisiert ist.
Da ich keine Lust habe das zu testen, probier es doch einfach mal aus.

Was Pointer-Differenz in COBOL angeht, so kann man den Pointer redefinieren mit einer Struktur Filler x(10) und 9(9) comp-4 (Wichtig kein S!), ggf. geht auch 9(9) comp-5.
Somit kann man die Differenz zweier Pointer zumindest im Speicher berechnen.