Wenn du schon ILERPG nimmst, kannst du auch übersichtliche DS'n erstellen und benötigst keine Byte-Zählerei mehr. Auch die INT-Datentypen sind dann effektiver.
Desweiteren: Wenn Felder nur definiert sind, werden sie nicht automatisch initialisert. Die Error-Struktur muss im 1. Feld die Länge der DS enthalten, die du bereitstellst.

Was den Pointer angeht, so weiß ich halt nicht was das API selber so treibt, aber:

Beim 1. Aufruf eines Programmes werden die Pointer auf Programme intern initialisert.
Wenn du keine Main-Prozedur hast, ist immer der Zyklus aktiv.
D.h., beim Verlassen des Programmes solltest du *INLR = *ON setzen, damit das Programm aus dem Speicher entfernt wird.
Beim nächsten Aufruf wird der Pointer auf ein Programm neu geladen.

Übrigens: DEBUG in den H-Bestimmungen ist nur relevant, wenn du im Programm die DUMP-Anweisung verwenden willst. Ein debugging ist immer möglich.