Zitat Zitat von dschroeder Beitrag anzeigen
Hallo,
ich glaube eher, dass man die Struktur nicht direkt im Prototyp definieren darf. Man muss sie unabhängig vom Prototyp deklarieren und dann im Prototyp mit likeds darauf verweisen.

Hier der Code:

D CHK03R_Templ DS 50 Template
D PaSL3 1 2 0
D PaCD3 3 5
D PaBZ3 6 30
D PaKB3 31 35
*
D CheckCode PR EXTPGM('CHKCD01R')
D CHK03R LIKEDS(CHK03R_Templ)
D RC 1A

/free
callp(e) CheckCode(CHK03R:RC);
eval *inlr = *on;
/end-free

Bei diesem Code ist die Struktur im Prototyp einfach ein einzelner Parameter, der mit LIKEDS auf eine Strukturdefinition verweist.

Möglicherweise kannst du die Struktur auch nicht mit CONST deklarieren. Das geht nur, wenn dein Programm CHKCD01R das auch als CONST empfängt.

Gruß,
Dieter

Hallo,

habe es mit Likeds versucht, aber ich kenne den Ausdruck Template nicht bzw. habe auch mit dem noch nicht gearbeitet.

gehört beim Callp(e) CheckCode(CHK03R:RtnCode); nicht das RtnCode entfernt?

Was habe ich da vermurkst?

Code:
D CHK03R_Templ    DS            50    Template                                                
D  PASL3                  1      2  0                                                         
D  PACD3                  3      5                                                            
D  PABZ3                  6     30                                                            
D  PAKB3                 31     35                                                            
D*                                                                                            
D CheckCode       PR                  EXTPGM(' CHKCD01R')                                      
d                                                                                             
d CHK03R          DS                  likeds(CHK03R_Templ)                                    
d  RtnCode                       1a                                                           
======>                  aa
*RNF3703 20 a      013300  Unterfeld- oder Parameterdefinition nicht in einer Gruppe          
                           angegeben.                                                         
/FREE                                                                                        
        PACD3 = 'TEST';                                                                        
        PASL3 = *ZEROS;    
======>                  aa
*RNF0655 30      2 Der mit dem Schlüsselwort TEMPLATE definierte Eintrag kann in

        Callp(e) CheckCode(CHK03R:RtnCode);                                                    
                  *RNF5407 20      2 Mehr Parameter im Prototypaufruf übergeben als zulässig. 
                                                                                             
       IF RtnCode = '0';                                                                      
         // Error in ...                                                                      
       EndIf;                                                                                 
 /END-FREE