-
Verarbeitung mit variabler Satzstruktur
Hallo,
ich arbeite an einem PGM das dafuer sorgen soll in Dateien Kommas und Querstriche in allen alphanumerischen Feldern mit Blanks zu ersetzen.
Mein Ansatz war mit DSPFFD in eine Outfile die alphe felder sowie deren laenge und Position zu finden.
Soweit so gut.
Mein Problem ist jetzt wie bringe ich einen Satz in einen Char String um auf die jeweiligen zeichen zuzugreifen?
In eine DS einlesen geht ja nicht da die Files bei jedem call eine andere struktur haben koennen.
Der Feldname hilft mir im Prinzip auch nichts wenn ich den dann in einem Array habe....jemand einen Tip?
Vielen dank im vorraus.
Achja, Satzlaenge bis zu 9999 - also scheidet DTAARA auch aus.
-
Hallo,
hast Du eigentlich schon mal daran gedacht mit (embedded) SQL zu arbeiten?
Ich würde über die SQL-View SYSCOLUMS in der Bibliothek QSYS2 die alphanumerischen Felder in der gewünschten Bibliothek ermitteln.
Anschließend über diese Informationen dynamische Update-Statements generieren, in denen mit Hilfe der skalaren Funktion Translate die Sonderzeichen durch Blanks ersetzt werden und diese Statements mit EXECUTE IMMEDIATE ausführen.
Birgitta
-
Hallo Birgitta,
um ehrlich zu sein - daran habe ich nicht gedacht
Aber wie immer, vielen Dank fuer Deine hilfreiche Anregung. Ich werde das wie von Dir vorgeschlagen versuchen.
Gruss Ralf
-
Zitat von B.Hauser
Ich würde über die SQL-View SYSCOLUMS in der Bibliothek QSYS2 die alphanumerischen Felder in der gewünschten Bibliothek ermitteln.
OK, der Teil war einfach. Ich habe die Feldnamen in ein Array geschrieben.
Zitat von B.Hauser
Anschließend über diese Informationen dynamische Update-Statements generieren, in denen mit Hilfe der skalaren Funktion Translate die Sonderzeichen durch Blanks ersetzt werden und diese Statements mit EXECUTE IMMEDIATE ausführen.
Und dazu bin ich zu bloed
Ich Schreibe folgendes Statement in meine Variable:
UPDATE @LIBRARY/@FILE SET @FIELD = Translate'(:@Field,' ', ',')
Und versuche das dann so auszufuehren:
C/EXEC SQL
C+ execute immediate :sqlComma
C/END-EXEC
Als Fehler bekomme ich:
SQL0312 30 Variable &1 not defined or not usable.
Wie muss ich also das Statement aufbauen um mit Variabler Lib, Variabler File und Variablem Feld eben dieses Feld ggf zu aendern wenn ein Zeichen enthalten ist das ersetzt werden muss?
Also @Library ist eine Variable.
@File ist eine Variable.
@Field enthaelt den aus dem Array uebertragenen Feldnamen.
Hier denke ich liegt auch mein Fehler, einerseits sage ich ja mit @Field das ich in diesem Feld einen Wert aendern moechte und versuche andererseits diese Variable fuer den feldwert zu verwenden.....funzt wohl so nicht. Birgitta, wenns Dir nicht zu bloed ist, kannst Du mir das begreiflich machen?
Vielen Dank, Gruss Ralf
-
Hallo,
der aufbereitete String muss ein ausführbares SQL-Statement sein. In Deinem String sind nicht aufgelöste Variablen enthalten:
Beispiel:
PHP-Code:
/Free
MySQLCmd = 'Update ' + %Trim(MyLib) + '/' + %Trim(MyTable)
+ ' Set ' + %Trim(MyFld) + ' = Translate ... usw.;
/End-Free
C/EXEC SQL Execute Immediate :MySQLCMD
C/End-Exec
Achtung vor = Translate (wird ein Hochkomma nicht angezeigt!)
Vergiß außerdem nicht, dass Hochkommata in einem String verdoppelt werden müssen.
Um eine bessere Performance zu erhalten, würde ich nicht für jedes Feld und jedes Sonderzeichen ein Update ausführen, sondern pro Datei ein einziges SQL-Statement aufbereiten und ausführen.
Birgitta
-
Danke Birgitta, jetzt funzt es
Was mich am meisten verbluefft ist das die Performance sehr gut ist.
Habe Testweise eine Datei mit 1200 Saetzen und 15 Char Feldern verarbeitet - Interaktiv <1 sec
Gruss Ralf
Similar Threads
-
By RLurati in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 20-10-06, 09:09
-
By RLurati in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 20-10-06, 08:31
-
By harkne in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 19-12-05, 17:46
-
By holly in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 07-12-04, 13:23
-
By Brownie in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 28-07-04, 10:56
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