-
Nicht druckbare Zeichen
Hallo,
gibt es die Möglichkeit in einem ILE-Programm innerhalb eines Feldes nicht druckbare Zeichen zu ermitteln? Ich denke da an eine Tabelle, welche die Werte beinhaltet, die nicht gedruckt werden können (z.B. Steuerzeichen). Ist auf der AS/400 eine solche Tabelle in irgendeiner Form vorhanden? Mein Problem ist, dass ich Daten für die externe Weiterverarbeitung bereitstelle und diese auf dem Fremdsystem aufgrund von nicht druckbaren Zeichen nicht verarbeitet werden. Daher wollte ich diese zuvor ausfiltern und durch ein Blank ersetzen.
-
Nicht druckbare Zeichen liegen alle unterhalb des Blanks.
Siehe z.B. hier:
https://en.wikibooks.org/wiki/Charac...DIC/EBCDIC_273
Diese Zeichen können aber auf dem regulären Weg eher nicht ins System kommen.
Um welche Zeichen handelt es sich im speziellen?
-
Das Problem entsteht, wenn der Anwender beispielsweise aus Emails Daten in die AS/400 übernimmt. Dann ist ein offensichtliches Blank eben nicht Blank, sondern ein nicht druckbares Zeichen.
Hier ein Beispiel:
635 ? 637 Ajax Av
FFF434FFF4C98A4CA
63506063701117015
Der Hex-Wert "36" ist in der Erfassungsmaske für den Anwender ein Blank (Hex40)- hier jedoch nicht. Insofern würde es mit Hex 40 und kleiner ja stimmen!
-
Das ist ein Problem bei der Überführung von Unicode in ANSI bzw. anschließend in EBCDIC.
In Unicode bzw. UTF8 können Zeichen vorkommen, die in ANSI 1252 bzw. EBCDIC 273/1141 unbekannt sind.
Bei einer Standardkonvertierung von UTF8 in 1252 werden unbekannte Zeichen in normales "?" übersetzt.
Kommen Zeichen z.B. aus HTML (Mails) gibts dort das Zeichen " " (Numeric backspace, x'A0'), und das entspricht nun EBCDIC x'36'.
Da es nun keinen Translate in dieser Form gibt, kannst du per Schleife alle Zeichen kleiner x'40' (Blank) ersetzen oder per SQL TRANSLATE mit einer manuellen Ersetzungstabelle x'000102....3E3F' gegen Blank austauschen.
Im RPGLE gibts %XLATE/XLATE, dem du auch entsprechenden Ersetzungsztabellen mitgeben kannst.
-
Hallo,
wollte mich nochmals kurz zu dem Problem melden. der entscheidende Punkt war: Alles was kleiner ist als x'40' ist! Das hat wunderbar geklappt.
Variable einlesen, jede Stelle auf < x'40' prüfen und ggf. gegen ein Blank austauschen. Habe jetzt schon verschiedene Test's gefahren. Bis jetzt funktioniert es einwandfrei!
Herzlichen Dank für Deine Hilfe! 
-
Filetranslation kann das ohne Schleife
Früher war das ein F in Stelle 53 in der Headerkarte.
Und eine '**' Tabelle mit alter Wert / neuer Wert oder umgekehrt, je nachdem ob die Tabelle sich auf eine Input oder Output Datei bezieht.
Kennt heute kaum noch einer
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
 Zitat von Robi
Filetranslation kann das ohne Schleife
Früher war das ein F in Stelle 53 in der Headerkarte.
Kennt heute kaum noch einer
Verständlich, wenn du noch einen Steinzeitcode mit RPG erstellen möchtest. RPGLE kennt das nicht mehr. Ein Vorteil hat es natürlich, PDM funktioniert dann noch voll umfänglich. Die Schleifenlösung finde ich die Beste.
kf
-
Bekommt man natürlich auch mit einem SQL Update hin:
PHP-Code:
Update Table set Text = Translate(Text, x'404040404040404040404040404040404040404040404040404040404040404040', x'202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F41')
Die Hex-Zeichen von x'00' bis x'1F' gehören natürlich auch noch konvertiert! Kann man ja noch in die Strings einfügen.
-
 Zitat von camouflage
.... RPGLE kennt das nicht mehr....
Das ist falsch.
Ftrans gibt es noch
Ob in free weis ich nicht, die Pgmme die das benutzen sind alle noch nicht free.
Wer regelmässig (Schrott)-Daten von anderen Systemen bekommt oder Steuerdateien für andere Systeme mit exotischn werten erstellen muß, sollte sich damit beschäftigen.
Wer nur in der DB rum eiert braucht das vermutlich nicht
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Und zur Not gibts den [%]XLATE ja auch noch.
-
 Zitat von B.Hauser
Bekommt man natürlich auch mit einem SQL Update hin:
PHP-Code:
Update Table set Text = Translate(Text, x'404040404040404040404040404040404040404040404040404040404040404040', x'202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F41')
Die Hex-Zeichen von x'00' bis x'1F' gehören natürlich auch noch konvertiert! Kann man ja noch in die Strings einfügen.
Gute Idee!! Ich danke Dir!
-
Similar Threads
-
By angelone in forum NEWSboard Drucker
Antworten: 13
Letzter Beitrag: 17-09-07, 15:31
-
By Muchi in forum NEWSboard Drucker
Antworten: 0
Letzter Beitrag: 29-12-05, 15:40
-
By M Scheid in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 04-11-04, 13:26
-
By vah in forum NEWSboard load'n'go
Antworten: 0
Letzter Beitrag: 08-03-01, 13:33
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