[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2018
    Beiträge
    98

    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.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Sep 2018
    Beiträge
    98
    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!


  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Sep 2018
    Beiträge
    98
    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!

  6. #6
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    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!)

  7. #7
    Registriert seit
    Jan 2007
    Beiträge
    1.002
    Zitat Zitat von Robi Beitrag anzeigen
    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

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    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.
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  9. #9
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Zitat Zitat von camouflage Beitrag anzeigen
    .... 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!)

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Und zur Not gibts den [%]XLATE ja auch noch.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #11
    Registriert seit
    Sep 2018
    Beiträge
    98
    Zitat Zitat von B.Hauser Beitrag anzeigen
    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!

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Das hatte ich hier auch schon empfohlen:
    http://newsolutions.de/forum-systemi...778#post124778
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Nicht druckbare Zeichen drucken
    By angelone in forum NEWSboard Drucker
    Antworten: 13
    Letzter Beitrag: 17-09-07, 15:31
  2. Kyocera FS-3820N druckt Zeichen nicht
    By Muchi in forum NEWSboard Drucker
    Antworten: 0
    Letzter Beitrag: 29-12-05, 15:40
  3. SQL-Statement für nicht-druckbare Zeichen
    By M Scheid in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 04-11-04, 13:26
  4. 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
  •