PDA

View Full Version : Übergabe Datenstruktur (Occur=16) an Prozedur in Modul



msost
18-01-13, 17:36
Hallo,

ich möchte eine Datenstruktur mit 16x4 Feldern von einem RPGLE Modul an das nächste übergeben.

Habe die DS jeweils im Prototypen angegeben.

Beim Kompilieren erhalte ich aber einen Fehler in einer Zeile in der die DS-Felder mit Index (z.B. DS(03)) angesprochen werden: "Eine nicht-Datenstruktur kann nicht mit Index angesprochen werden."

Kann man eine DS mit Mehrfachvorkommen nicht übergeben?

B.Hauser
19-01-13, 10:06
Mehrfach-Datenstrukturen (Schlüsselwort Occurs) können im Prototypen NICHT definiert werden, wohl aber Array-Datenstrukturen (Schlüsselwort DIM).

Die Struktur/Aufbau ist bei Array- und Mehrfachdatenstrukturen identisch. Bei Array-Datenstrukturen können die einzelnen Datenstruktur-Unterfelder direkt angesprochen werden, während bei den Mehrfach-Datenstrukturen die einzlenen Vorkommen zunächst mit dem Operation Code OCCUR oder mit der Built-In-Function %OCCUR eingelesen werden.

Du musst natürlich auch die Dimension (Schlüssel-Wort DIM) im Prototypen angeben!

... also statt Mehrfach-Datenstrukturen Array-Datenstrukturen verwenden und dann klappts auch mit der Übergabe!

Birgitta

ILEMax
19-01-13, 15:28
off topic
die Komination aus occur und DIM erlaubt dann schöne 2-dimenionale Tabelen

Der ILEMax

B.Hauser
19-01-13, 15:47
off topic
die Komination aus occur und DIM erlaubt dann schöne 2-dimenionale Tabelen

Der ILEMax

Diese Kombination war bereits in RPGIII möglich!

Für mehrdimensionale Tabellen ist eine Kombination von Occur und Dim nicht notwendig. Mit DIM und verschachtelten Datenstrukturen (jeweils wieder mit DIM) kannst Du die schönsten Schweinereien machen.

z.B.

D BestMon DS Dim(12) Qualified
D AnfBest 11P 3
D Zugang 11P 3
D Abgang 11P 3
D EndBest 11P 3

D JahresBestand DS Dim(3) Qualified
D Bestand LikeDS(BestMon) Dim(%Elem(BestMon))

D Abweichung S 7P 2
D Jahr S 5U 0 inz(2)
D Monat S 3U 0 inz(11)
************************************************** ************************
/Free

Abweichung = (1 - Jahresbestand(Jahr).Bestand(Monat).AnfBest) * 100 /
Jahresbestand(Jahr-1).Bestand(Monat).AnfBest;

/End-Free

Birgitta

ILEMax
20-01-13, 17:49
Toll.
ich bin beeindruckt!
Konnte mich nie an das Qualified Kram gewöhnen.
Aber das sieht schon sehr gut aus...
Muß ich wohl noch mal ein wenig lernen.
(und das, wo wir EDV'le ja sowieso nie mit dem Lernen aufhören ...:cool:
)

Danke Birgitta,
Der ILEMax

msost
21-01-13, 12:00
Um es mal mit den Worten einer jungen Dame (bekannt aus Funk und Fernsehen) zu sagen:

Danke Birgitta und ILEMax! Hat mich schwer gehelft! :)