Anmelden

View Full Version : Externe Dateifelder indexierbar machen in Free



Seiten : 1 [2]

B.Hauser
03-02-23, 10:44
Damit hast Du doch schon alles definiert was Du brauchst:


DCL-DS DSKW;
KW01;
KW02;
KW03;
...
KW53;
KW Like(KW01) Dim(53) Pos(1);
End-Ds;

Die Feldgruppe KW hat bereits 53 Elemente ... und die Feldgruppe überlagert die ganze Datenstruktur, da sie auf der 1. Stelle (Pos(1)) beginnt, also alle einzelne Einträge (KW01 - KW053).

Da die Feldgruppe mit LIKE(KW01) definiert ist also wie KW01 (und ich gehe davon aus dass alle anderen 52 genauso definiert sind - ansonsten hast Du ein anderes Problem!), sollte alles ordentlich überlagert sein.
Damit ist also in KW(1) das erste Element und KW(53) das 53. Element und in KW(27) das 27.!

Du Kannst direkt KW(1), KW(23) ... oder KW(x) (vorausgesetzt x hat einen Wert zwischen 1 und 53) ansprechen.

peterspeer
03-02-23, 10:50
Danke Birgitta !
Da hatte ich wohl ein (dickes) Brett vorm Kopf.
Es klappt.

Vielen Dank an alle für die schnellen Rückmeldung !

B.Hauser
03-02-23, 11:28
@Birgitta: Barbra würde auch die Pointerlösung empfehlen - sag ich mal jetzt so.

Dann frag sie doch!
Nur warum soll ich mir die Arbeit mit den Pointern selber machen, wenn RPG das für mich erledigt!
Das ganze Pointergefuddell ist viel fehleranfälliger.

camouflage
03-02-23, 13:50
Das ganze Pointergefuddell ist viel fehleranfälliger.

Kannst Du das belegen?

Ich kenne Pointers seit meinen Assembler-Zeiten, sogar auf ganze Overlays.
Wenn ich nach Zeilen bezahlt und die Source aufgebläht werden soll, dann nehme ich natürlich deine Lösung, doch die vorgegebene Aufgabe lässt sich mit zwei Zeilen RPG-Code erledigen! Ausserdem brauche nicht noch eine unnütze Datenstruktur, nur um an ein Array-Overlay zu kommen.

Natürlich ist eine Pointerlösung nicht in jedem Fall das Allerheilmittel, hier aber schon.
Allenfalls könnte man ja sonst auch noch ChatGPT fragen ...

BenderD
03-02-23, 14:56
Die Lösung für die Kranken würde Dieter jetzt sagen:

Du könntest einen Array definieren und diesen via Pointer auf den Record legen.

... erinnert mich an eine Firma, die sich arm und krank gemacht hat, alle alten Schinken für teures Geld in free umsetzen zu lassen und alle DDS erstellten Dateien in SQL mit allen automatisch erzeugbaren Feldern und extra langen Feldnamen aufgepeppt hat und für die Schinken dann alle allten DDS LFs wieder draufgesetzt hat. Anschließend haben sie sich nicht mehr getraut das alles in Produktion zu setzen, weil ihre Budgets dür "Anwendungsmodernisierung" aufgebraucht waren.

D*B

Fuerchau
03-02-23, 15:09
Und wenn man eben mit qualified DS arbeiten muss, nur so also Vorschrift, taugt Birgittas Lösung leider nicht, da die Feldnamen zwischen 2 DS nicht überlagern, wenn man nicht mit Pointern arbeitet.

Per Design werden diese Art von Strukturen immer zusammenhängend definiert, um sich die Arbeit zu erleichtern.
Wenn man eine Tabelle in E-Bestimmung definiert hat, reicht in der I-Bestimmung eine Definition mit demselben Arraynamen und der von/bis Angabe über die Gesamtlänge des Arrays.

Somit ist die Pointerlösung die bequemste Version ohne viel Schreibarbeit.
Und Pointer sind nur dann gefährlich, wenn man sich damit nicht auskennt;-).