View Full Version : Dataara Free Form RPG
camouflage
29-04-16, 09:25
Manchmal mach ich mir das Leben schon schwör..
Alte Form von *dtaara's zu definieren:
C *dtaara define myDta myDtaFld
C in myDtaFld
Wie das in Free Form RPG mit einem Charakterfeld geht, weiss ich schon. Nur mit Numerischen Dataareas tu ich mich echt schwer (RNF7421, Kompatibilität). Ausserdem würd ich mich gern auf die Feldlänge der Data Area referenzieren.
dcl-ds myDtaFld dtaara('myDta');
*n zoned(3:0);
end-ds;
in myDtaFld;
Ergibt RNF7421 bei einem Compare mit einem gepackten Feld.
Und die DS hab ich schon mit allen möglichen numerischen Feldarten definiert.
Weiss da jemand Bescheid? Danke.
Referenz auf die DTAARA gibt es nicht.
Die Variable in der DS benötigt einen Namen denn der Zugrif auf den Strukturnamen ist ein Zeichenfeld!
Du musst also auf die Variable in der DS zugreifen.
Probier erstmal mit einem eigenständigen Feld als Datenbereich.
Später kannst du das in eine Datenstuktur packen (eine DS drumherum und das S beim Feld weg).
Du gibts den Namen der Data-Area in der Definition, innerhalb der Hoch-Komata in Groß/Klein-Buchstaben an.
Das kann er nicht finden.
M.E. müsste die Definition wie folgt lauten:
DCL-DS MyDtaFld DTAARA(*AUTO : *USRCTL : ’MYDTA’);
Birgitta
camouflage
29-04-16, 10:48
Danke Baldur und Birgitta,
Hab beide Varianten versucht.
Lösung:
dcl-ds MYDTA dtaara('MYDTA');
myDtaFld zoned(3:0);
end-ds;
ergibt zumindest keinen Fehler.
@Birgitta:
die GrossKleinSchreibe hab ich nur hier im Forum verwendet.
Interessanterweise funktioniert ein direkter Zugriff auf die DS, wenn Charakter angegeben sind, wie im ET beschrieben, aber mit numerischen Daten = Bauchlandung.
Das ist ja auch kein Wunder.
Eine DS ist vom Typ her grundsätzlich Character!
Der DS-Name ist nur für die IN/OUT relevant, der Zugriff erfolgt über den Variablennamen.
Numerische DTAARA's lassen sich nun mal nicht unterstrukturieren.
Eine Zeichen-DTAARA kann mittels Positionierung und Länge explizit auf bestimmte Bereiche zugreifen (z.B. *LDA), daher ist hier eine DS der bessere Weg.
Ggf. sollte auch eine Single-Variable (DCL-S) für numerische DTAARA's funktionieren, dann klappt ggf. auch Birgittas Referenzbeispiel.
camouflage
29-04-16, 13:10
Dachte, ich informier euch noch wie's richtig funktioniert:
dcl-s MYDTAFLD packed(3:0) dtaara('MYDTA');
in MYDTAFLD;
Wie gesagt, es klappt auch mit einer DS und der korrekten benannten Unterdefinition.
Schließlich nutze ich das durchaus in Triggern.