CRM-EXPO 2002 - Midrange Magazin
CRM-EXPO 2002 - Midrange Magazin
CRM-EXPO 2002 - Midrange Magazin
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Technik & Integration<br />
CPYF aus Datumsfelder<br />
44 www.midrangemagazin.de November <strong>2002</strong><br />
Technik-Forum<br />
Sie sind nun wieder eingeladen, die Diskussion spezieller technischer Probleme mit zu verfolgen.<br />
Bitte schicken Sie Fragen, Anregungen oder Antworten zu den vorgestellten Themen – ebenso wie Ihre Kritik<br />
– an unsere eMail-Adressen dieter.bender@<strong>Midrange</strong><strong>Magazin</strong>.de oder Redaktion@<strong>Midrange</strong><strong>Magazin</strong>.de<br />
Frage: Wir haben in einer physischen<br />
Datei Felder im Datumsformat definiert<br />
und möchten aus einer bestehenden Datei,<br />
in der das Feld 8stellig numerisch<br />
definiert ist, den Inhalt mit CPYF kopieren.<br />
In den Feldern steht anschließend<br />
„Schrott“, oder wir bekommen Abbrüche.<br />
Ist das überhaupt machbar, oder<br />
müssen wir da ein Konvertierungsprogramm<br />
schreiben?<br />
Antwort: Eine automatische Übertragung<br />
beim CPYF kann nicht so ohne<br />
weiteres funktionieren, da das System ja<br />
nicht automatisch erkennen kann, wie<br />
das Feld zu interpretieren ist; also wo<br />
steht das Jahr, wo der Monat, wo der<br />
Tag, oder wie sonst ist das Datum zusammengesetzt.<br />
Für numerische Felder<br />
gibt es da keinerlei Regelwerk, alphabetische<br />
Felder sind eventuell noch interpretierbar,<br />
wenn sie Trennzeichen enthalten<br />
und sich an das Datumsformat<br />
des Jobs halten. Zudem ist bei all diesen<br />
Feldarten nicht sichergestellt, dass gültige<br />
Daten drinstehen. In Datumsfeldern<br />
create view bestellV as<br />
select bestellung_id, kunde,<br />
date(<br />
substring(char(datum), 5, 2) !! ‘.’ !!<br />
substring(char(datum), 3, 2) !! ‘.’ !!<br />
substring(char(datum), 1, 2)<br />
) as datum,<br />
bearbeiter<br />
from bestell<br />
Abbildung 1: Beispiel 1 einer SQL-<br />
Eingabe zum Kopieren von Datumsfelder<br />
in numerische Felder<br />
gibt es strengere Regeln, deshalb kann es<br />
auch zu Abbrüchen kommen.<br />
Eines Programms bedarf es zur Umsetzung<br />
nicht unbedingt, am einfachsten<br />
geht es mit SQL. Angenommen wir<br />
haben eine Datei BESTELL mit den<br />
Feldern BESTELLUNG_ID, KUNDE,<br />
DATUM und BEARBEITER; im Feld<br />
Datum steht für den 16.8.<strong>2002</strong> zum Beispiel<br />
der Wert <strong>2002</strong>0816 in einem numerischen<br />
Feld und wir wollen dies in<br />
eine gleich aufgebaute Datei kopieren.<br />
Zunächst erstellen wir uns eine logische<br />
Datei, am einfachsten mit SQL. Die<br />
SQL-Anweisung, die wir zum Beispiel<br />
nach STRSQL am interaktiven SQL-<br />
Prompt eingeben müssen, ist in Abbildung<br />
1 zu sehen.<br />
Für andere Datumsformate im Job müssen<br />
die Trennzeichen entsprechend geändert<br />
oder es müssen Komponenten<br />
umgestellt werden.<br />
Von dieser View kann man jetzt mit einem<br />
ganz gewöhnlichen CPYF kopieren;<br />
die Umsetzung wird von der View<br />
geleistet.<br />
Selbstverständlich funktioniert dieses<br />
Verfahren auch mit einem einheitlichen<br />
SQL-Statement ohne anschließendes<br />
Kopieren, dann wird auch keine View<br />
benötigt.<br />
Das SQL Statement hätte dann für unser<br />
Beispiel das Aussehen von Abbildung 2.<br />
Wenn die Datumsfelder Alfa-Felder<br />
sind, kann die Konvertierung nach<br />
„char“ weggelassen werden. Diese<br />
Statements sind leicht an andere Formate<br />
anzupassen.<br />
Den Autor Dieter Bender erreichen<br />
Sie unter<br />
> Dieter.Bender@<strong>Midrange</strong><strong>Magazin</strong>.de<br />
insert into bestellNeu<br />
(bestellung_id, kunde,<br />
datum, bearbeiter)<br />
select bestellung_id, kunde,<br />
date(<br />
substring(char(datum), 5, 2) !! ‘.’ !!<br />
substring(char(datum), 3, 2) !! ‘.’ !!<br />
substring(char(datum), 1, 2)<br />
) as datum,<br />
bearbeiter<br />
from bestell<br />
Abbildung 2: Beispiel 2 einer SQL-<br />
Eingabe zum Kopieren von Datumsfelder<br />
in numerische Felder