PDA

View Full Version : CPYF



Liebhoff
13-02-03, 08:13
Ich möchte mit CPYF eine Datei (Datei1) in eine andere (Datei2) kopieren.

Problem: Datei 1 enthält nur 1 Zeichenfeld Datei2 dagegen einzelne Datenbankfelder. Der Satzaufbau ist aber gleich, so daß zumindest schon mal alle CHAR Felder sauber übertragen werden. Numerische Felder ohne Aufbereitung im String ebenfalls. z.B. wird aus 0001230 dann im entsprechnden Feld in Datei2 12,30. Habe ich aber in Datei1 -12,30 stehen, so erfolgt keine Übertragung. Wie kann ich den Kopiebefehl dazu bewegen, die Formatierung richtig zu berücksichtigen, Vorzeichen und Komma ? Den weg über ein Umsetztprogamm möchte ich vermeiden.

Danke für Eure Vorschläge

Thomas

Fuerchau
13-02-03, 08:35
Der CPYF ist dafür leider nicht geeignet.
Aber versuch es doch mal mit SQL:

insert into datei2
select substr(satz, 1, 10), substr(satz, 11, 5), dec(substr(satz, 16, 4)) / 100, ...
from datei1

In dieser Form wird das erste Feld des Select in das 1. Feld der Datei2 übertragen, das 2. in das 2. usw.
Alternativ kannst du die Felder auch aufzählen:

insert into datei1 (F1, f2, F3, ...)
values (select ... )

Als "Satz" ist das einzeige Feld aus Datei1 gemeint.
Mit substr(feld, pos, len) kannst du die einzelnen Felder aus dem Satz entnehmen.
Mit dec(xxx) formatierst du ein Zeichenfeld in Dezimal um. Dabei ist folgendes zu beachten:
Das Zeichenfeld darf nur Zahlen, ein Komma und ein Vorzeichen (rechts) enthalten.
Ist das Zielfeld mit Nachkomma und der Quellwert enthält kein Komma aber eine entsprechende Aufbereitung, so dividiere einfach durch 10^n, wobei n die Anzahl Nachkomma ergeben soll, also 10, 100, 1000 usw.
Enthält ein Feld keine gültigen Zahlen, bricht der SQL-Befehl leider ab.