PDA

View Full Version : Verknüpfte Feldgruppe



dd3tj
11-05-11, 09:25
Hallo,

Habe in einem ILE RPG zwei feldgruppen
die zur Laufzeit gefüllt werden

d trm5 s 3a dim(50)
d anz5 s 4s 0 dim(50)
..
c P5coli lookup trm5(i) 55
c if *in55 = *on
c eval anz5(i) = anz5(i) + P5anps
c else
c *blanks lookup trm5(i) 55
c eval trm5(i) = P5coli
c eval anz5(i) = P5anps
c endif

ich möchte die erste Feldgruppe mit SORTA sortiern und dabei soll die zweite mit sortiert werden.
Was muß ich in der D bestimmung noch tun um dies zu erreichen?

Danke im Voraus
Gruss
DD3TJ
Thibaut Foucart

malzusrex
11-05-11, 09:37
versuche es mal damit


d ds
d MyFldGrp Dim(100)
d trm5 3a Overlay( MyFldGrp )
d anz5 4s 0 Overlay( MyFldGrp : *Next )

Gruß
Ronald

dd3tj
11-05-11, 14:14
Hallo,

Danke es hat funktioniert.

gruss
DD3TJ
Thibaut Foucart

chera
22-05-11, 19:30
Hallo zusammen,

habe eine ähnliche Feldgruppe bei der die BIF %LOOKUP nicht funktioniert. Nehme ich den Operationcode LOOKUP dann klappt es? Bin nicht dahinter gekommen an was es liegt, hat jemand bereits ähnliche Erfahrungen gemacht?

d ds
Da_mhdlos 53 dim(500) ascend
D a_mhd 43 overlay(a_mhdlos:1)
D a_men 10S 0 overlay(a_mhdlos:44) inz(0)

diese Zeile funktioniert nicht (y = immer 0), obwohl a_mhd mit Werten gefüllt und im Suchfeld v_hf0043 exakt ein enthaltener Wert abgefragt wird?
c* eval y = %lookup(v_hf0043:a_mhd)

nachfolgender Code funktioniert mit gleichen Feldinhalten
c eval y = 1
c v_hf0043 lookup a_mhd(y) 36
c if *in36 = *off
c eval y = 0
c endif


c if y > 0
c else
c eval y = %lookup(*blank:a_mhd)
c move v_hf0043 a_mhd(y)
c endif

MfG
Chera

Khholm
23-05-11, 07:49
Hallo Chera,

ich würde bei dem statement

c* eval y = %lookup(v_hf0043:a_mhd)

mal einen Startindex mitgeben, wie:

c* eval y = %lookup(v_hf0043:a_mhd:1)

das machts du bei dem zweiten Beispiel, das ja funktioniert nämlich auch, indem du vorher y auf 1 setzt.

Karl-Heinz

chera
23-05-11, 10:12
Hallo,

habe das eigentlich immer ohne Startindex gemacht, funktioniert ja auch wenn ich den nächsten leeren Feldgruppenindex suche.

c eval y = %lookup(*blank:a_mhd)

Aber danke für den Tipp, werde das mal ausprobieren.

Chera

B.Hauser
23-05-11, 11:40
Brauchst Du eigentlich unbedingt das Schlüssel-Wort ASCEND?

Da Du nur auf gleich vergleichst und nicht auf größer oder kleiner. Sollte dieses Schlüssel-Wort nicht erforderlich sein, entferne es.

Sofern führe, sofern Du das Schlüssel-Wort ASCEND wirklich brauchst vor dem %LOOKUP einen SORTA durch.

Birgitta

chera
23-05-11, 12:58
Hallo Britta,

auch dir danke für deinen Tipp. ACSEND wird nicht benötigt, war für eine andere Variante gedacht, werde es entfernen.

Trotzdem sollte doch die BIF mit dem Operationscode das gleiche Ergebnis liefern?

Chera