PDA

View Full Version : Parameterübergabe von RPG nach CL



FrEEk
21-11-02, 09:39
Hallo Leute,

Ich habe ein komisches Problem bei einer Parameterübergabe:

Zuerst wird ein numerischer Wert linksbündig in ein 8-Stelliges *CHAR-Feld übergeben.


MOVEL#3AYNB P2AYNB

Dann wird ein CL aufgerufen.


CALL 'GVRDOC' 90
PARM P1B5CD
PARM 'P' P1ART
PARM P2AYNB
PARM P2A4CD
PARM P1BSTX
PARM P1MOD

So weit, so gut.

Im CL interpretiert der Rechner mir allerdings die Variable P2AYNB als Inverse-Stellen.

Muss die Variable numerisch oder Alpha-numerisch an das CL weitergegeben werden?

Gruss
FrEEk


[Dieser Beitrag wurde von FrEEk am 21. November 2002 editiert.]

rmittag
21-11-02, 11:11
im CL müssen die Parameter in der gleichen Reihenfolge und vom selben Typ sein.


RPG 5p 2 : CL *dec ( 5 2 )
RPG 5a : CL *char 5

P2AYNB würde ich noch mal prüfen. Sieht eigentlich wie ein numerisches Feld ( Cool:2E NBR ? ) aus.

hth + Gruß
Rolf

FrEEk
21-11-02, 11:34
Hmm, auf unserem System geben wir fast nur Alphanumerische Werte an CLs weiter, da wir wir viele Jobs im Batch laufen lassen. Und im Batch gibt es immer Probleme (Dezimaldatenfehler!), wenn mal jemand vergisst ein numerisches Feld sauber zu initialisieren. Daher fast immer *CHAR.

Ein DCL-Statement im CL sieht dann so aus:


DCL VAR(&P0AYNB) TYPE(*CHAR) LEN(6)

oder dann:


DCL VAR(&P0AYNB) TYPE(*DEC) LEN(6 0)

B.Hauser
21-11-02, 12:24
Hallo,

andere Frage wie sind die Felder aus dem MOVEL definiert.
Vielleicht sollte das Feld P2AYNB vor dem MOVE initialisiert werden.

Birgitta

FrEEk
21-11-02, 12:33
Folgendermassen:


MOVE *BLANK P2AYNB 8
MOVEL#3AYNB P2AYNB

Also 8 Alphanumerische Stellen.

Initialisierung erfolgt mit dem Definitionsstatement. Die effektive Wertzuweisung erst dahinter.

Das selbe Feld ist im CL so


DCL VAR(&P0AYNB) TYPE(*CHAR) LEN(8)

definiert.