-
Wie erhalte ich Subfelder einer qualifizierten externen Datenstruktur in RPGLE?
Hallo Forum!
Ich nutze die Möglichkeiten des Datei-Prefixings zusammen mit den Möglichkeiten der Qualifizierung einer (externen) Datenstruktur, um die Felder im RPG-Programm wie folgt ansprechen zu können:
F Datei if e disk prefix('AB.')
D AB e ds extname(Datei) qualified
AB.Datum = 1234567
Welche D-Anweisung ermöglicht es mir, auf die Stellen 2-7 des Feldes Datum (7,0 num.) zugreifen zu können?
-
Am besten mit der BuiltIn-Funktion %subst:
%subst(feld: pos:len) = "neuer wert";
Varxyz = %subst(feld: pos:len);
-
Overlay
Hallo Collie,
externe Datenstrukturen können wie alle anderen Datenstruktruen überlagert werden.
Wichtig ist nur, dass das zu überlagernde Feld mit dem Original-Namen angegeben wird.
Ich persönlich würde jedoch lieber mit Substring arbeiten.
Beispiel:
FldAlpha ist 15A auf Position 486 des Datensatzes
FldNum ist 7P 0 auf Position 375 des Datensatzes.
Code:
D MainDSIn E DS EXTNAME(LLDSIN) qualified
D NewFld1 4 overlay(FldAlpha: 3)
D NewFld2 5P 0 overlay(FldNum: 2)
/Free
MainDSIn.FldAlpha = 'ABCDEFGHIJ';
dsply MainDSIn.NewFld1;
MainDSIn.FldNum = 1234567;
dsply MainDSIn.NewFld2;
*InLR = *On;
/End-Free
Birgitta
-
Vielen Dank für die prompte Beantwortung.
Grüße
coolie
-
Hallo Birgitta,
zuerst mal ein dickes "Danke schön" für die letzten Hilfen.
Der Hinweis mit dem overlay wäre mir ja die liebste Lösung, aber funktioniert leider nicht so wie's sollte.
Nochmals in Kürze:
Datei BUCHUNGEN enthält ein Feld FLDNUM in Länge 7P 0, welches ein Datum im Format CYYMMDD enthält.
Für diese Datei existiert im Programm eine qualifizierte externe Datenstruktur.
Ich möchte vom Feld FLDNUM die rechten 6 Stellen erhalten, also YYMMDD.
Die vorgeschlagene Overlay-Definition (NEWFLD2 5P 0 overlay(FLDNUM: 2) wird zwar vom Compiler umgewandelt, ergibt aber als Ergebnis den falschen Feldinhalt "YMMDD".
Definiere ich aber
d BU e ds extname(Buchungen) qualified
d NewFld2 6p 0 overlay(FldNum : 2)
so erhalte ich die Fehlermeldung:
*RNF7303 Mit dem Schlüsselwort OVERLAY definiertes Unterfeld NEWFLD2 ist zu groß; die Bestimmung wird ignoriert.
Was mache ich denn da falsch??
Grüße
coolie
-
Einfach rechnen !
6p 0 beginnt an der Stelle 1, nur die linke Tetrade wird ignoriert. Ob zur Laufzeit aber das richtige Ergebnis kommt, kann ich nicht sagen.
Vorsichtig dann bei Zuweisungen. Die linke Tetrade wird dann immer auf 0 gesetzt !
Similar Threads
-
By Mr.iSeries in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 17-01-07, 10:57
-
By Xanas in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 13-12-06, 13:38
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By Bratmaxxe in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 24-07-06, 13:25
-
By Staneke in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 03-08-05, 15:11
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks