Anmelden

View Full Version : Wie declariere ich folgende DS im free



ExAzubi
20-08-15, 08:12
Hallo zusammen,

ich habe eine DS im D-Karten Format, die ich gerne im free definieren möchte, allerdings weiß ich nicht wie ich das angehe?



D DS
D SATZ 128A DIM(9999)
D ARTNR 10A OVERLAY(SATZ:*NEXT)
D AVK01 9 0 OVERLAY(SATZ:*NEXT)
D AVK02 9 0 OVERLAY(SATZ:*NEXT)
D AVK03 9 0 OVERLAY(SATZ:*NEXT)
D AVK04 9 0 OVERLAY(SATZ:*NEXT)
D AVK05 9 0 OVERLAY(SATZ:*NEXT)
D AVK06 9 0 OVERLAY(SATZ:*NEXT)
D AVK07 9 0 OVERLAY(SATZ:*NEXT)
D AVK08 9 0 OVERLAY(SATZ:*NEXT)
D AVK09 9 0 OVERLAY(SATZ:*NEXT)
D AVK10 9 0 OVERLAY(SATZ:*NEXT)
D AVK11 9 0 OVERLAY(SATZ:*NEXT)
D AVK12 9 0 OVERLAY(SATZ:*NEXT)
D AVK 9 0 DIM(12) OVERLAY(SATZ:11)
D BEST 9 0 OVERLAY(SATZ:*NEXT)
D AUFB1 9 0 OVERLAY(SATZ:*NEXT)
D AUFB2 9 0 OVERLAY(SATZ:*NEXT)
D AUFBG 9 0 OVERLAY(SATZ:*NEXT)




Mit dem Schlüsselwort Pos klappt das nicht so richtig :(

Danke an alle Helfenden!

David

B.Hauser
20-08-15, 08:44
Warum verwendest Du nicht wie gehabt OVERLAY?
Pos benötigts Du nur wenn Du eine komplette Daten-Struktur überlagern willst.
Für das Überlagern von einzelnen Feldern kann weiterhin OVERLAY verwendet werden:


DCL-DS *N;
Satz Char(128) Dim(9999);
ArtNr Char(10) Overlay(Satz: *Next);
AVK01 Packed(9) Overlay(Satz: *Next);
.... usw.
END-DS;

Birgitta

ExAzubi
20-08-15, 09:07
weil ich beim umwandeln folgenden Fehler bekomme



RNF3467: Der erste Parameter für das Schlüsselwort OVERLAY ist ungültig; das Schlüsselwort wird ignoriert.

ExAzubi
20-08-15, 09:15
Denke habe den Fehler gefunden :| das END-DS war eine stelle zu weit links, dadurch wurde es nicht erkannt und somit war die ganze DS-Deklaration für den ....

Trotzdem danke.

malzusrex
20-08-15, 10:15
Ich hätte da noch eine Frage dazu.
Wenn ich die DS nachbaue...


dcl-ds *N;
Satz dim(9999);
ArtNr Char(10) Overlay(Satz:*Next);
Avk01 Packed(9) Overlay(Satz:*Next);
Avk02 Packed(9) Overlay(Satz:*Next);
Avk03 Packed(9) Overlay(Satz:*Next);
Avk04 Packed(9) Overlay(Satz:*Next);
Avk05 Packed(9) Overlay(Satz:*Next);
Avk06 Packed(9) Overlay(Satz:*Next);
Avk07 Packed(9) Overlay(Satz:*Next);
Avk08 Packed(9) Overlay(Satz:*Next);
Avk09 Packed(9) Overlay(Satz:*Next);
Avk10 Packed(9) Overlay(Satz:*Next);
Avk11 Packed(9) Overlay(Satz:*Next);
Avk12 Packed(9) Overlay(Satz:*Next);
AVK Packed(9) Dim(12) Overlay(Satz:11);
Best Packed(9) Overlay(Satz:*Next);
Aufb1 Packed(9) Overlay(Satz:*Next);
Aufb2 Packed(9) Overlay(Satz:*Next);
AufbG Packed(9) Overlay(Satz:*Next);
end-ds;


Bekomme ich beim Wandeln folgenden Fehler:


18 AVK Packed(9) Dim(12) Overlay(Satz:11);
======> aaaa
*RNF3733 20 a 000412 Eine Feldgruppe darf eine andere Feldgruppe nicht
überlagern; das Schlüsselwort OVERLAY wird ignoriert.


Gruß
Ronald

ExAzubi
20-08-15, 11:23
Ja den Fehler bekam ich auch, aber da er schon beim ersten Overlay gestreikt hat, ist dieser mir nicht sofort aufgefallen.

David

Fuerchau
20-08-15, 12:29
Eigentlich müsstest du bereits beim 1. Format den Fehler bekommen haben.
Eine 2-stufige (oder mehr) geht nur per Qualified, da der Name sonst nicht ansprechbar ist.
Oder wie soll der Compiler die Variable AVK ansprechen?

Erlaubt ist ja nur Struktur(n).Feld(m), AVK(n)(m) geht nicht.

Also benenne die Struktur selber SATZ mit qualiefied und DIM(9999), lass das Overlay einfach weg und definiere dann die Felder.