-
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
-
Hallo,
das ist kein Fall für variable Feldnamen, sondern hier geht es um ein flexibles mapping, welches in RPG kein Problem darstellt. Das geht selbst in RPGII völlig ohne Probleme. Man braucht lediglich einen Satz an Variablen, der alle benötigten Datentypen abdeckt und eine Überlagerungsdatenstruktur, in der man dann Substrings (in RPGII ist das dann eine Character Array von bis) passend zuweist (plus ein paar Standard cast procedures für DATE und Co.).
Soweit es sich hier um festgelegte mappings handelt, die ab und an erweitert werden, ist das ein Fall, wo man generierte Programme für eine elgante Lösung einsetzen kann. Werden diese abgespeichert, fällt der Overhead der Generierung lediglich beim ersten auftreten einer neuen Struktur an.
D*B
 Zitat von Liebhoff
Die Aufgabe die ich lösen will, ich will Daten aus einem Flat File (jeder Satz bis zu 1024 Zeichen als 1 String) in Datenbanken einsortieren. Die Struktur der Daten habe ich in einer Tabelle. Dort stehen neben den Formaten der einzelnen Felder die Angaben wie der String aufgebaut ist. Mit diesen Infos will ich dann die Daten auslesen und in einem Programm möglichst ohne SQL verarbeiten. Im Prinzip wie früher intern beschriebene Dateien, aber ich habe jedes mal eine andere Struktur. Im Moment mache ich folgendes:
Struktur lesen > Create Table > In DO Schleife die Sätze lesen > für jeden Satz ein Insert Befehl zusammenbauen > Satz einfügen.
Das funktioniert, nur habe ich mir gedacht es muss auch einfacher gehen, weil meine SQL Anweisungen sind doch recht langsam, finde ich.
Wenn ich einen Satz mit Feldern wie aus einer extern beschriebenen Datei hätte, könnte ich einfach die Werte auf die Felder zuweisen und einen Write absetzen, das sollte schneller gehen. Oder irre ich hier ?
Thomas
-
Ich glaube das Thema ist noch nicht richtig verstanden worden. Klar kann ich mit Datenstrukturen einen String aufbereiten und die Inhalte dann Variablen zuweisen. Was aber wenn nicht nur die Struktur der Quelle jedes mal anders ist sondern auch die des Ziels ? Da müsste ich dann ja einen Generator basteln, der mir die entsprechenden D und dann die C Bestimmungen verfaßt und dann das Programm neu erstellt und anschließend ausführt. Das kann es nicht sein.
Thomas
-
wie kommst du denn auf diese Idee? man muss lediglich über Quelle und Zielstruktur genügend Information hinterlegen und dann passiert der Rest zur Laufzeit - wo ist da das Problem für das du variable Feldnamen brauchst???
D*B
 Zitat von Liebhoff
Ich glaube das Thema ist noch nicht richtig verstanden worden. Klar kann ich mit Datenstrukturen einen String aufbereiten und die Inhalte dann Variablen zuweisen. Was aber wenn nicht nur die Struktur der Quelle jedes mal anders ist sondern auch die des Ziels ? Da müsste ich dann ja einen Generator basteln, der mir die entsprechenden D und dann die C Bestimmungen verfaßt und dann das Programm neu erstellt und anschließend ausführt. Das kann es nicht sein.
Thomas
-
Deshalb musst du dir da eine andere Programmiersprache suchen.
RPG kann dies einfach nicht aus der Sprachdefinition heraus.
Was zur Compile-Zeit nicht bekannt ist, kann auch nicht dynamisiert werden.
Das Thema ist schon richtig verstanden worden.
Aber warum gibt es denn so viele Programmiersprachen wenn doch eine für alles reichen würde ?
Für viele Probleme muss man halt zur richtigen Sprache greifen.
Ggf. kann man diese dann ja als Funktionsmodule für RPG zur Verfügung stellen.
Ich habe mir mal aus Spass einen kleinen MI-Generator gebastelt, der eben zur Laufzeit eine Quelle im Speicher aufbaut, das Programm in QTEMP erstellt und dann mittels Call dynamisch aufruft.
Der MI-Compiler ist immer zur Verfügung und kann daher auch bei Kunden ohne Compiler-Lizenzen verwendet werden.
-
eigentlich kann das eine außen liegende Tabelle erledigen.
Die mußt du nur, je nach input/output string erfassen und per ovr zuweisen
input vonstelle länge output vonstelle länge
intern in einen string lesen
do bis eof
do bis tabelle ende
übertragen
enddo
intern schreiben
intern in einen string lesen
enddo
Robi
-
Du kannst dir ja auch eine Tabelle im Hauptspeicher anlegen, die aus 2 Elementen besteht:
1. Name
2. Inhalt
Wobei der Inhalt ja generell als %char gecastet werden kann.
Per %lookup sucht du in der Tabelle den "variablen" Namen und hast den passenden Inhalt dazu (anders machen das andere Sprachen im Prinzip auch nicht => Collection, Mappings, o.ä.).
Du musst dir nur noch eine Lösung einfallen lassen, wie du diese Tabelle befüllst (ggf. auch aus einer Datei).
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