-
Ich kann mir nicht im entferntesten vorstellen, wie man mit variablen Feldnamen in ILERPG umgehen soll.
Das kann allenfalls Java und vielleicht noch VisualBasic.
-
und PHP, C++, C#, Delphi, ML, ...
Also warum nicht auch RPG???
-
Hierzu müsste man klären, was du mit "variablen Feldnamen" überhaupt meinst.
Nicht alle Variablen, die sich so nennen, sind tatsächlich Variablen.
Meistens wird dies mit Auflistungen (Collections, Maps) gelöst, die halt mit einem Key und einer Klasse (eben der Variablen) gefüllt werden.
Echte variable Feldnamen gibt es da tatsächlich doch nicht, dazu müsste es eine DIM-Anweisung geben, die dieses unterstützt.
Eine solche kenne ich allerdings nicht.
Wenn ausserdem eine Sprache objektorientiert ist (und ILERPG ist es nicht) wird häufig über Klassen der Datenaustausch zwischen Funktionen realisiert, die Namen spielen dann tatsächlich keine Rolle mehr.
Was hindert dich daran, eine Array zu erstellen, die aus 2 Elementen (Name und Adresse) besteht ?
Du kannst dann per Lookup nach dem Namen suchen und hast dann die Adresse dazu.
Per %alloc kannst du Speicher anlegen (entspricht weitestgehende dem NEW-Operator, allerdings ohne Konstruktoren), und die Adresse mit einem Namen in der Tabelle speichern.
Ich denke nicht, dass RPG diese Vorgänge irgendwann automatisieren wird.
Dann sollte man wirklich lieber zu C++ wechseln (mit den Nachteilen der nun fehlenden RPG-Funktionalität).
-
Beispiel:
Ich habe ein Feld in einer Tabelle, nennen wir es VERTRAGSNUMMER. Dort steht z.B. eine 1 drin.
Nun habe ich eine Variable, nennen wir Sie varVertragsNr.
Schreibe ich nun:
varVertragsNr = VERTRAGSNUMMER ;
steht der String VERTRAGSNUMMER in der Variable.
Spreche ich varVertragsNr wie z.B. in anderen Sprachen mit @varVertragsNr an, erhalte ich nun den Wert 1, also den Wert aus dem Feld, welches ich vorher der Variable zugewiesen habe.
Vllt. weißt du nun was ich meine !?
-
Dazu muss allerdings VERTRAGSNUMMER als Variable ja auch irgendwo definiert worden sein.
Im Prinzip ist das wie ein Pointer oder eine C++-Referenzierung.
Solche Sprachkonstrukte sind mitunter nicht zu empfehlen, da ich ja die Variable varVertragsNr auch ohne @ ansprechen kann.
Vernünftigerweise sollte die Sprache
varVertragsNr = @VERTRAGSNUMMER
verlangen, damit ich weiß, dass eben die Adresse verlangt wird und es somit nicht zu Verwirrungen kommen kann (doppelte Verwendungsart).
Bei Scriptsprachen besteht da auch häufig das Problem.
In RPG sähe das dann so aus:
D PtrvarVertragsNr S *
D varVertragsNrDS DS based(PtrvarVertragsNr)
D varVertragsNr 10
C PtrvarVertragsNr = %addr(VERTRAGSNUMMER)
varVertragsNr verweist nun auf VERTRAGSNUMMER.
-
So ganz ist es das noch nicht was ich suche. Also ich habe eine Tabelle ( also ein physiches Objekt ) in der ich Informationen über eine zu erstellende Tabelle vorhalte. Ein Programm liest nun diese Daten und erzeugt daraus ein Create Table Befehl und setzt diesen ab.
Ein weiteres Programm liest nun wie auch im ersten Text von "Liebhoff" beschrieben eine CSV-Datei ein modifiziert die Daten so wie in der Tabelle mit den Feldinformationen beschrieben und schreibt diese in die mit Create Tabel erstellte Tabelle. Um dies zu tun, setzt das Programm im Moment jedesmal ein Insert into ab.
Schön wäre, wenn man im RPG sagen könnte, FELD1 in der neuen Tabelle = erster Abschnitt aus CSV, FELD2 in der neuen Tabelle = zweiter Abschnitt aus CSV und danach native ein WRITE ausführen könnte. Problem hierbei ist natürlich, das die Tabelle in die die Daten geschrieben werden soll immer eine andere ist, also nicht in den F-Bestimmungen definiert werden kann.
Vllt. wird das Problem nun deutlich !?
-
Dein Problem ist mit schon klar, aber für eine performante Lösung kommst du um die Verwendung einer SQLDA einfach nicht herum (siehe oben bei SQLVAR).
-
warum nicht wie früher, oder muß es SQL sein
Variable Feldnamen:
(Anmelden ist kostenlos)
System iNetwork (formerly iSeries Network)
Aber das ist für die hier gesucht Lösung sicher nicht die 1. Wahl.
Ich würd, je nach 'Flexibilitätsanforderung'
Den String in eine Tabelle schieben. Die alternativTabelle enthällt die neue Reienfolge, Felder die du nicht brauchst bekommen Hival oder Loval.
Nach alternativTabelle sortieren, Tabelle in String übertragen und Internbeschriebener write auf z.B.
F OUTPUT O A F 9999 Disk
Robi
Similar Threads
-
By rguenzel in forum NEWSboard Drucker
Antworten: 5
Letzter Beitrag: 18-01-07, 13:38
-
By stoerfang in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 28-11-06, 14:32
-
By Kampi4 in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 09-10-06, 10:19
-
By Xanas in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 28-08-06, 12:21
-
By cheffe1008 in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 16-05-06, 07:45
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