... schüttel - und da behaupte nochmal jemand, dass RPG eine "ordentliche" oder gar "moderne" Programmiersprache sei:
Nur einmal der Reihe nach:

- eine Like Definition mit Referenz auf eine andere Datenstruktur definiert ein (binäres) Alfafeld, das musste man früher manchmal machen, heute nimmt man da LIKEDS

- diese Definition hat mit deinem Problem garnichts zu tun!

- die Deklaration einer Datenstruktur ist eine (binäres) Alfafeld, mit überlagerten Feldern, am Anfang stehen da Blanks drin, was Dezimaldatenfehler zur Folge hat, wenn man ein numerisches Unterfeld an numerische Felder zuweist.

- das passiert ebenfalls - im aufgerufenen Programm (auch hierauf kommt man nur mit 10 Jahren RPG), wenn man das als Parameter für ein numerisches Feld beim call verwendet.

- mit dem Schlüsselwort INZ bei dem Datenstrukturnamen, wird jetzt nicht mehr das Alfafeld initialisiert, sondern die Unterfelder (auf sowas kommt man nur nach mindestens 10 Jahren RPG)

- einen Dezimaldatenfehler im aufrufenden Programm bekommt man ebenfalls hin, wenn die numerischen Formate voneinander abweichen.

- mit abweichenden Kommastellen klappts meistens, ist dann aber falsch

- stabiler ist das Ganze wenn man Prototypen und Callp verwendet und - die Prototypen übereinstimmen.

naja: Raten, Probieren, Gehtnicht

D*B

Zitat Zitat von falke34 Beitrag anzeigen
Programmcode

D KEYGRP S LIKE(KEY)

D KEY DS
D FIRMA 1 2P 0
D ARTIKEL 10
D NUM1 11 17 0
D NUM2 18 25 0
D NUM3 26 33 0

C EVAL KEYGRP = KEY


C CALL 'TEST'
C PARM KDNR
C PARM NUM3

C *ENTRY PLIST
C PARM KDNR
C PARM NUM3

C NUM3 CABEQ *ZERO ENDE
- hier der Dezimaldatenfehler im Programm TEST