PDA

View Full Version : unbekannte Datei Feldweise in allg. gültige Tabelle schreiben



Robi
06-01-16, 13:49
Hallo *all
ich suche eine Lösung für folgendes Problem

Datei (unbekannt, nur Bsp.)


Feldnamen und Art
N1 A3 A7 N4,2 ...
Inhalt
1 aaa Test 12,15
17 bbb Hallo 09,04

Ziel
Feldnamen und Art
Lfnr7,0 Feld10A Inhalt128A

Inhalt

0000001 N1 1
0000001 A3 aaa
0000001 A7 Test
0000001 N4,2 12,15
0000002 N1 17
0000002 A3 bbb
0000002 A7 Hallo
0000002 N4,2 9,04



Ich lese den Aufbau der Datei aus syscolumns
bekomme also
Feldname, Type, Länge und NK-Stellen

Das den Feldinhalt muß ich nun je Name aus der Datei auslesen und dabei nach alpa casten

lese also beim 1. Feld das Feld und die rrn mit optimize for 1 row
alle weiteren Felder mit selektion auf die rrn
und bei eof wieder das 1. Feld mit selektion rrn>letzte rrn

würde das funktionieren?
geht es einfacher?

Danke
Robi

Fuerchau
06-01-16, 14:51
Funktionieren tut das, aber es wird ganz schön dauern.
Die Frage ist doch, was du da so analysieren willst.

Ich definiere mir eine DS
d MyDs 32512
d MyFields 256 dim(127)

Nun stripst du deinen dynamischen SQL zusammen:

cast(Feld1 as char(256)) concat cast(feld2 as char(256)) ....

Anschließend machst du den Fetch in MyDs und hast die Inhalte im Array.
Sind die Felder kürzer als 256 kannst du entsprechend mehr Felder bearbeiten.

Ansonsten gibt es da halt noch eine SQLDA, die je Feld einen Descriptor hat in dem man einen Pointer auf eine Variable (%alloc) angeben kann. Damit kannst das Problem der Anzahl Felder und der festen Länge von 256 besser behandeln.

Robi
06-01-16, 17:09
hat geklappt, knapp 100 Zeilen Code

Könnte schneller sein aber für meine Zwecke völlig ausreichend.

Gruß
Robi

Fuerchau
06-01-16, 17:20
Was hat geklappt, deine Methode oder mein Vorschlag?

Robi
07-01-16, 07:40
Meine Methode,
hatte ja schon angefangen als ich den Post erfasste.
Schien mir nur sehr kompliziert und aufwändig.
Ist aber doch gut geworden.

Eine andere Idee war, die Datei in XML um zu wandeln und das ein zu lesen.
Aber ich mach zu selten XML, daher ist diese Lösung nun gut so.

Danke
Gruß
Robi