-
Feld mit loval via SQL belegen
Hallo zusammen,
aus einem PC-Programm sollen Daten in unsere Buchhaltung auf der iSeries importiert werden. Hierzu gibt es seitens der Buchhaltung eine Standard-Schnittstelle.
Diese ist so intelligent, dass Felder, die mit *loval belegt sind, in der Zieldatei nicht verändert werden.
Die Daten werden auf PC Seite via SQL über die CO400-Treiber von SystemObjects in die DB2/400 geschrieben.
Und jetzt mein Problem:
Wie kann ich Felder mit loval belegen? Gibt es im Sql ein Schlüsselwort für loval?
Wenn ich das richtig sehe, speichert die DB2 numerische Loval-Werte einfach z.B. mit -9 ab. Strings werden aber mit Hex(00) gespeichert und nicht mit Hex(40) für Blank.
Wer weiß Rat? Bin für jeden Tipp dankbar.
Booley
-
Da LOVAL eine Eigenart des RPG ist, müssen die Felder vom PC-Programm entsprechend mit dem kleinsten möglichen Wert belegt werden:
-9
-99
-999
-9999
-9.9
usw. je nach Ausprägung des Feldes. Es können allerdings Schwierigkeiten auftreten, da das PC-Programm ggf. mit Double arbeitet und es somit zu Rundungsproblemen bei Nachkomma kommt.
Für Zeichenfelder müssen entsprechend lange HEX'00'-Werte übergeben werden. Dies ist allerdings nahezu unmöglich, da Hex'00' als Ende einer Zeichenkette erkannt wird und somit leere Felder per SQL übergeben werden. Diese werden wiederum selbständig mit Leerzeichen aufgefüllt.
Diesbezüglich muss also die Intelligenz des AS/400-Programmes angepasst werden.
-
Hallo,
erst einmal danke für die schnelle Antwort. Dann habe ich das Prinzip also anscheinend schon mal richtig verstanden. Bleibt das Hey(00) Problem.
Dummer Weise ist von unserer Seite kein RPG-Programm dazwischen, dass diese Aufgabe mit loval übernehmen kann. Und wir wollten es eigentlich auch vermeiden, da noch eines zwischen zu hängen, da dies nur das erste von vielen PC-Schnittstellen-Programmen ist.
Kann ich denn nicht auch über SQL Hex-Werte als Values angeben?
Gruß
Booley
-
Klar geht das: X'00....' in der Anzahl benötigter Zeichen.
-
 Zitat von Fuerchau
Klar geht das: X'00....' in der Anzahl benötigter Zeichen.
Unter Release V5R3M0 könnte statt einer Aufzählung auch die Scalare Funktion Repeat verwendet werden:
PHP-Code:
Repeat(x'00', Length(MyFld))
Vor Release V5R3M0 könnte mit Hilfe der Scalaren Funktionen TRANSLATE und SPACE ein Feld komplett mit x'00' gefüllt werden.
PHP-Code:
Translate(Space(Length(MyFld)), x'00', ' ')
Birgitta
-
Alles klar, jetzt klappt's.
Vielen Dank an alle!
Booley
Similar Threads
-
By svente in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 23-01-07, 09:49
-
By rr2001 in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 11-07-06, 14:10
-
By malzusrex in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 27-04-05, 15:36
-
By epsih2 in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 29-11-04, 10:06
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