Anmelden

View Full Version : Felder in mehreren DS verwenden



Seiten : 1 [2]

B.Hauser
21-01-13, 15:50
ne ne, levelcheck *yes ist an.

und gewandelt wird 'alles' bei aktivierung in der Echtumgebung.

Nur werden leider die Felder da zwischen geschoben, wo es der Chef haben will. Und das ist NIE am Ende.

leider
also fixe Pos. Angaben geht auf keine Fall

also muß der alte Ewald ran..

Würdest Du mit qualifizierten Datenstrukturen arbeiten, dann könntest Du mit EVAL-CORR arbeiten und die Unterfelder mit gleichem Namen auf einen Rutsch hin- und herschieben.

Birgitta

ILEMax
21-01-13, 16:04
Danke Birgitta

aber, wie schon in einem anderen Thread geschrieben stehe ich mit dem qualified Kram noch auf Kriegsfuß.

hört sich gut an ...
aber z.Zt. fehlt die Zeit das zu inhalieren.

Hast du vielleicht einen Link, in dem das etwas erklährt wird. ?

Vielleicht tu ich mir das am WE mal rein ...

der ILEMax

Robi
22-01-13, 13:10
Hatte mal ein ähnliches Problem, nur das da die Felder in der Datei nicht zusammen standen. Ungefähr so: (Feldgruppe auf TBxx)


A TB01 3S 0
A Felda 10
A Feldb 11
A Feldc 12
A TB02 3S 0
A Feld ...
A ...
A TB03 3S 0
A ...

Da habe ich mich entschieden die E DS zu entfernen und
deine erste Methode genommen.

Zum Glück war die E DS 'nur so' an dem Pgm, einen Grund wie z.B. clear Satzformat gab es nicht.

Ich hätte sonst weder Pointer noch Qualified verwenden können.
Oder???


Robi

Fuerchau
22-01-13, 13:21
Auch dann wäre es gegangen, auf welcher Ebene du den Dim angibst ist doch egal:

d MyDsPtr S * inz(%addr(abtb01))
d MyDs ds based(MyDsPtr) dim(5) qualified
d tbx like(tb01)
d feld like(felda) dim(3)

MyDs(n).tbx verweist auf TB01 - TBnn
MyDs(n).feld(1) verweist auf Felda-Feldx

Robi
22-01-13, 14:11
puuu

den muß ich erst mal begreifen ...

Die DS als Feldgruppe
und die Felder FELD1, Feld2 und Feld3 (sofern sie gleich sind)
auch als Feldgruppe oder eben einzelnd.

und
MyDs(n).tbx verweist auf TB01 - TBnn

Ok,
echt mal was dazugelernt ...

Danke
Robi

Fuerchau
22-01-13, 14:42
Nun ja, ILERPG kommt nun damit in Bereiche die COBOL schon lange kann (Stichworte: Redefines, Name of Structure, move corresponding, geschachtelte Tabellen mit Occurs).

Man muss nur in COBOL denken um das in D-Spezifikationen umzusetzen.

ILEMax
25-01-13, 13:02
Kann mir bitte nochmal jemand auf die Sprünge helfen ...

Ich habe in einer Datei

5 Kunden
und zu jedem Kunden 5 Artikel



D K1 5s 0
D K2 5S 0
D K3 5S 0
D K4 5S 0
D K5 5S 0
*
D A11 8A (1. Art. f 1. Kunde)
D A12 8A (1. Art. f. 2.Kunde)
D A13 8A ...
...

D A54 8A (5. Art. f.4. Kunde)
D A53 8A (5. Art. f. 5. Kunde)

Am Dateiaufbau kann ich nix machen

kann ich mit qualifies und einem Pointer eine DS so definieren, das ich mit


x = 4 und y = 3
und
kunde(x).Artikel(y)
an den 4. Kunden mit dem 3. Artikel ran komme?

Der (neugierige) ILEmax

dschroeder
25-01-13, 15:28
Hallo,

deine Frage wegen Pointer habe ich nicht verstanden. Eine Matrix als Datenstruktur müsste meiner Ansicht nach so aussehen:
D kunde DS qualified dim(5)
D Artikel 20A dim(5)
*
/free

clear kunde;
kunde(1).Artikel(1) = 'Apfel von Kunde 1';
kunde(1).Artikel(2) = 'Birne von Kunde 1';

kunde(2).Artikel(1) = 'Apfel von Kunde 2';
kunde(2).Artikel(2) = 'Birne von Kunde 2';



/end-free


Dieter

Fuerchau
26-01-13, 09:35
Da die Kunden und Artikel nicht im Zusammenhang definiert sind, hast du (durch Pointer) 5 Kunden und 25 Artikel:

d MyDs DS based(MyPtr) <= siehe Oben
d MyKd like k1 dim(5)
d myart like a11 dim(25)

x=3; y=1;

=> MyKd(x)
=> MyArt((x-1)*5+y)

Sollten in deiner Struktur Kunden und Artikel nicht direkt hintereinander stehen, so mach halt 2 DS'n mit 2 Pointern, 1x Kunde, 1xArtikel.