-
INFDS für mehrere Dateien als /COPY
Hallo Forum,
ich komme im Moment mit einem Problem nicht weiter:
Wie kann ich die INFDS für Datenbank-Dateien in /COPY-Strecken auslagern und innerhalb eines Programmes bei mehreren Dateien verwenden. Wenn ich den gleichen Datenstrukturnamen bei INFDS mehrmals angebe, dann bricht die Umwandlung ab.
Kann ich das "irgendwie" mit PREFIX regeln?
Wie habt ihr dies gelöst?
Vielen Dank für eure Unterstützung.
Jo
-
... wie wärs mit LIKEDS?
(wobei man einiges auch mit %bifs machen könnte)
D*B
 Zitat von jo400
Hallo Forum,
ich komme im Moment mit einem Problem nicht weiter:
Wie kann ich die INFDS für Datenbank-Dateien in /COPY-Strecken auslagern und innerhalb eines Programmes bei mehreren Dateien verwenden. Wenn ich den gleichen Datenstrukturnamen bei INFDS mehrmals angebe, dann bricht die Umwandlung ab.
Kann ich das "irgendwie" mit PREFIX regeln?
Wie habt ihr dies gelöst?
Vielen Dank für eure Unterstützung.
Jo
-
Wie Dieter bereits gesagt hat:
Eine Referenz-Datenstrukur in einer Copy-Strecke anlegen und dann mit LikeDS(RefStruktur) definieren. Datenstrukturen, die mit LIKEDS definiert wurden sind automatisch qualifiziert, d.h. die Unterfelder müssen mit DSName.UnterFeld angesprochen werden. Damit kann das gleiche Unterfeld mehrfach verwendet werden.
Eine andere Möglichkeit wäre nur die Unter-Felder in eine Copy-Strecke packen und die Datenstruktur als qualified definieren. (M.E. ist allerdings die 1 Lösung die bessere!):
PHP-Code:
D InfDSXX DS LikeDS(RefInfDS)
D InfDSYY DS LikeDS(RefInfDS)
D InfDSAA DS Qualified
D/Copy QCPYLESRC,InfDSSubf
D InfDSBB DS Qualified
D/Copy QCPYLESRC,InfDSSubf
/Free
Chain (InfDSXX.RRN) MyFileXX;
Chain (InfDSBB.RRN) MyFileBB;
/End-Free
Birgitta
-
Hallo Birgitta, hallo Dieter,
vielen Dank für eure Beiträge und dem Hinweis auf LIKEDS. Damit habe ich das Programm schonmal umwandeln können!
ABER: Eigentlich wollte ich eine Standard-INFDS als /COPY-Strecke erstellen (z.B. FILEINFDS mit den Spezial-Definitionen *FILE, *STATUS, *OPCODE, ...). Diese wollte ich NICHT hinter einer Datei als INFDS definieren, sondern nur dateispezifische DS (z.B. FILEXYZINFDS), die ich "irgendwie" aus der Referenz-INFDS erstelle.
Wenn ich - wie vorgeschlagen - mit LIKEDS arbeite, dann akzeptiert er die Spezial-Definitionen *FILE, *STATUS,... der Referenz-Datenstruktur nicht, da diese nicht als INFDS bei einer Datei verwendet wurde.
Habt ihr sonst noch einen Vorschlag?
Oder wie habt ihr dies gelöst?
Vielen Dank für weitere Ideen.
Jo
-
Die Positionen für *FILE, *STATUS usw. sind ja bekannt.
Es bleibt dir also nichts anderes übrig, als diese Felder mit expliziten Namen zu definieren.
-
... ob da in einer Copystrecke, die ich nie wieder anfasse, *File oder von Stelle 38 bis Stelle 45 steht, ist mir ziemlich schnurz.
Wichtig ist da noch im kleingedruckten dafür zu sorgen, dass der Name der deklarierten Struktur in der Copy Strecke nicht mehrfach in einer Quelle vorkommen kann, sonst kriegt der Compiler Husten. Deswegen sollte man diese Musterdeklarationen (ordentliche Programmiersprachen erlauben Type Definitions!!!) alle vom Namen her per Konvention pre oder postfixen (Birgitta fängt den Namen mit Ref an, ich lasse die mit Type enden) und wenn man dann noch alle Deklarationen dieser Art in eine QRPGLEH.TYPES zusammenfasst (analog zu Types.h in C), dann kann da nix mehr passieren. Allerdings sollte man diese Deklarattionen alle als based(dummy) machen, damit da zur Laufzeit kein Overhead entsteht, ach ja und die Pseudo Type declarations macht man dann auch noch qualified.
D*B
 Zitat von jo400
Hallo Birgitta, hallo Dieter,
vielen Dank für eure Beiträge und dem Hinweis auf LIKEDS. Damit habe ich das Programm schonmal umwandeln können!
ABER: Eigentlich wollte ich eine Standard-INFDS als /COPY-Strecke erstellen (z.B. FILEINFDS mit den Spezial-Definitionen *FILE, *STATUS, *OPCODE, ...). Diese wollte ich NICHT hinter einer Datei als INFDS definieren, sondern nur dateispezifische DS (z.B. FILEXYZINFDS), die ich "irgendwie" aus der Referenz-INFDS erstelle.
Wenn ich - wie vorgeschlagen - mit LIKEDS arbeite, dann akzeptiert er die Spezial-Definitionen *FILE, *STATUS,... der Referenz-Datenstruktur nicht, da diese nicht als INFDS bei einer Datei verwendet wurde.
Habt ihr sonst noch einen Vorschlag?
Oder wie habt ihr dies gelöst?
Vielen Dank für weitere Ideen.
Jo
Similar Threads
-
By Rincewind in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 23-01-07, 08:49
-
By Bobou in forum IBM i Hauptforum
Antworten: 14
Letzter Beitrag: 16-01-07, 10:26
-
By usafft in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 23-08-06, 11:07
-
By hteufl in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 21-08-06, 13:12
-
By mikex01 in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 21-04-06, 16: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