Danke euch Beiden!

Das von Pikachu muss ich noch prüfen.

Ansonsten hab ich das Problem jetzt tatsächlich mit nem dmpobj umgangen:

DMPOBJ OBJ(LIB/PGM) OBJTYPE(*QRYDFN)

CPYSPLF FILE(QPSRVDMP) TOFILE(QTEMP/SPOOLPF) CTLCHAR(*FCFC)

Code:
with Dump as ( select row_number() over() rw , substr(info, 89, 32)  info
 from qtemp/spoolpf),                                     
Stern as (                                                
select rw                                                 
from dump                                                 
where info like '%*%')                                    
select substr(info, locate('*CHANGE', info) -38, 10) Fil, 
       substr(info, locate('*CHANGE', info) -26, 10) Lib, 
       substr(info, locate('*CHANGE', info) -14, 10) Mbr,
       substr(info, locate('*CHANGE', info) -2, 1) Typ    
from (                                                    
select d2.info concat d1.info concat d3.info info         
from dump d1                                              
join stern on   d1.rw = stern.rw                          
join dump d2 on d1.rw-1 = d2.rw                           
join dump d3 on d1.rw+1 = d3.rw                           
) a where substr(info, 40) like '%*CHANGE%'
fetch first row only
Jetzt nur noch anhand der Infos den SQL vervollständigen.