Wieder mal ein Definitionsfehler:
p#firma 2 0
p#obj 7 0
p#objA 1 0
p#objG 1 0

Deine Parameter definierst du als Zoned, in der Prozedur als DECIMAL, das ist für RPG Packed, also
p#firma 2p 0
p#obj 7p 0
p#objA 1p 0
p#objG 1p 0

Dann machst du einen Dateizugriff, bist du sicher dass diese auch offen ist ?

Serviceprogramme unterliegen da gewissen Restriktionen.

Ich mache daher immer *PGM-Objekte, da ich dann mittels *INLR besseren Einfluss auf die Performance habe.