PDA

View Full Version : Parameterübergabe: ILE -> RPG



muadeep
27-08-07, 08:32
Hallo Forum!

Habe folgendes Problem:

ich rufe in einem RPGLE ein RPG auf!

Hier werden 5 Parameter übergeben.
CALL 'RPG01'

C Call 'RPG01'
C Parm PNr 7 0
C Parm 'RPG01' APgm 10
C Parm RMA 7 0
C Parm PFirNr
C Parm LifNr 7 0
C Parm Pos 5 0 a) Die nummerischen Felder "PNr" & "RMA" sind mit "0" belegt/gefüllt!
-> diese werden auch richtig übergeben!

b) das Feld "LifNr" ist mit 266282 belegt/gefüllt & das Feld "Pos" mit 1
-> hier gibt's dann Probleme!

wenn jetzt das RPG-Pgm aufgerufen wird, dann erhalte ich im Programm bei *entry ganz andere Werte für die Felder "LifNr" & "Pos"

Was mache ich falsch?

Der_Unwissende
27-08-07, 08:36
Hast du "PFirNr" richtig definiert?

Fuerchau
27-08-07, 08:43
Bedenke, dass bei impliziter Definition die Felder gepackt übergeben werden.

Vergleiche an Hand der jeweiligen Compiler-Liste die tatsächlich Definition der Felder.

muadeep
27-08-07, 08:48
ich denke schon!

Hier mal die *entry


C *ENTRY PLIST
C PARM PNR
C PARM APGM 10
C PARM RMA 70
C PARM PFIRNR 3
C PARM LIFNR 70
C PARM POS 50

Der_Unwissende
27-08-07, 11:00
Definiere/Deklariere die Felder mal im D-Bereich bei beiden Programmen und nicht in der Parameterliste und bei numerischen Feldern entweder alle mit "S" gezont oder "P" gepackt.

muadeep
27-08-07, 12:01
ok, danke!

Def. mit "P" (gepackt) hat funktioniert!

Was ich aber jetzt nicht ganz verstehe, warum werden die Felder "PNr" & "RMA" (welche mit 0 gefüllt werden) nicht auch als gepackte Felder übergeben ?!?!?!

Pikachu
27-08-07, 14:24
Hast bzw. hattest du PNr und PFirNr jeweils in beiden Programmen gleich definiert?

Fuerchau
27-08-07, 15:11
Schau dir die Compile-Liste an.
Wird ein Feld z.B. als DSPF/PRTF-Feld definiert, ist es immer zoned.
Da hilft auch keine implizite Deklaration.

Der Compiler optimiert das selber. Birgitta hat da auch mal irgendwo einen Link ausgewiesen.