Vielleicht hilft dir ja folgendes CLP ein wenig:

Code:
 
			 PGM		PARM(&START &PROG)							  
																		
			 DCL		VAR(&START) TYPE(*CHAR) LEN(10)				 
			 DCL		VAR(&PROG) TYPE(*CHAR) LEN(10)				  
																		
/* API-FELDER */														
			 DCL		VAR(&RCV) TYPE(*CHAR) LEN(9999)				 
			 DCL		VAR(&RCVLEN) TYPE(*CHAR) LEN(4)				 
			 DCL		VAR(&RCVFMT) TYPE(*CHAR) LEN(8) VALUE(CSTK0100) 
			 DCL		VAR(&JOBID) TYPE(*CHAR) LEN(56)				 
			 DCL		VAR(&JOBFMT) TYPE(*CHAR) LEN(8) VALUE(JIDF0100) 
			 DCL		VAR(&ERRCD) TYPE(*CHAR) LEN(128)				
																		
/* ARBEITSFELDER */													 
			 DCL		VAR(&NOCENT) TYPE(*DEC) LEN(9)				  
			 DCL		VAR(&OFFSET) TYPE(*DEC) LEN(9)				  
			 DCL		VAR(&ENTRY) TYPE(*DEC) LEN(9)			 
			 DCL		VAR(&ENTLEN) TYPE(*DEC) LEN(9)			
			 DCL		VAR(&POS) TYPE(*DEC) LEN(9)			   
			 DCL		VAR(&PGM) TYPE(*CHAR) LEN(10)			 
			 DCL		VAR(&LIB) TYPE(*CHAR) LEN(10)			 
																  
/* INIT'S */													  
			 CHGVAR	 VAR(%BIN(&RCVLEN)) VALUE(9999)			
			 CHGVAR	 VAR(%BIN(&ERRCD 1 4)) VALUE(128)		  
			 CHGVAR	 VAR(%BIN(&ERRCD 5 4)) VALUE(0)			
			 CHGVAR	 VAR(%SST(&JOBID 1 10)) VALUE('*')		 
			 CHGVAR	 VAR(%SST(&JOBID 43 2)) VALUE(X'0000')	 
			 CHGVAR	 VAR(%BIN(&JOBID 45 4)) VALUE(1)		   
			 CHGVAR	 VAR(%SST(&JOBID 49 8)) +				  
						  VALUE(X'0000000000000000')			  
																  
/* AUFRUF */														   
			 CALL	   PGM(QWVRCSTK) PARM(&RCV &RCVLEN &RCVFMT +	  
						  &JOBID &JOBFMT &ERRCD)					   
																	   
			 IF		 COND(%BIN(&ERRCD 5 4) > 0) THEN(DO)			
			 SNDPGMMSG  MSGID(%SST(&ERRCD 9 7)) MSGF(QCPFMSG) +		
						  MSGDTA(%SST(&ERRCD 17 112)) TOPGMQ(*PRV) +   
						  MSGTYPE(*ESCAPE)							 
			 ENDDO													 
																	   
/* ALLES OK */														 
			 CHGVAR	 VAR(&NOCENT) VALUE(%BIN(&RCV 17 4))			
			 CHGVAR	 VAR(&OFFSET) VALUE(%BIN(&RCV 13 4) + 1)		
																	   
/* SCHLEIFE ÜBER EINTRÄGE */										   
STACK:																 
			 CHGVAR	 VAR(&NOCENT) VALUE(&NOCENT - 1)			
																   
			 IF		 COND(&NOCENT >= 0) THEN(DO)				
			 CHGVAR	 VAR(&ENTLEN) VALUE(%BIN(&RCV &OFFSET 4))   
																   
			 CHGVAR	 VAR(&POS) VALUE(&OFFSET + 24)			  
			 CHGVAR	 VAR(&PGM) VALUE(%SST(&RCV &POS 10))		
			 CHGVAR	 VAR(&POS) VALUE(&POS + 10)				 
			 CHGVAR	 VAR(&LIB) VALUE(%SST(&RCV &POS 10))		
																   
/* TESTAUSGABE */												  
			 SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&PGM + 
						  *CAT &LIB) TOPGMQ(*PRV) MSGTYPE(*INFO)   
																   
			 CHGVAR	 VAR(&OFFSET) VALUE(&OFFSET + &ENTLEN)	  
			 GOTO	   CMDLBL(STACK)							  
			 ENDDO		 
						   
			 ENDPGM
Anstelle der Testausgabe kannst du ja PROG und LIB entsprechend auswerten und abfragen.
Zu beachten ist lediglich, dass der 1. Stackeintrag das eigene Programm ist !