[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2018
    Beiträge
    20

    QSH und Zeichensatz

    Hallo,

    ich habe (mal wieder) ein Problem mit Code-Pages/EBCDIC.

    Mein Arbeitsverzeichnis liegt in einem IFS-Verzeichnis ( Root:/WORKDIR ). Ich rufe auf der AS400 eine Shell-Sitzung auf (QSH) und erstelle in einem Shell-Script eine neue Datei. Die eigentliche Ausgabe erfolgt mit AWK.
    Das Script selber editiere ich mit meinem Windows-Editor in diesem Verzeichnis.

    Soweit so gut. Das Shell-Script kann ich mit meinem PC und auf der AS400 anzeigen und im Klartext sehen. Wenn ich die Datei mit WRKLNK anzeige, sehe ich die CCSID 1252.
    Das Script erzeugt eine neue Datei, diese kann ich auf der AS400 mittels cat anzeigen, sehe auf meinem Windows-PC aber nur Binärdaten. Die CCSID dieser Datei ist 273. Also, clever wie ich bin, habe ich die Datei dann mittels CHGATR auf 1252 geändert.
    Das Ergebnis: In der QSH-Session UND auf dem PC sehe ich Binärdaten ?!?!

    Man kann das Problem umgehen, indem eine leere Datei mit dem PC angelegt wird, und die neue Datei immer als Kopie dieser leeren Datei angelegt wird, anstatt neu durch das Script:

    #cp EMPTY_BASE.txt NEWFILE.txt
    #cat SOMEFILE | awk '/.../ { ... }' >> NEWFILE.txt

    Aber warum ist das so??

    Viele Grüße
    Michael

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    2.304
    Mit DSPF kann man Dateien im IFS anzeigen und mit EDTF ändern.

    CHGATR *CCSID ändert nur die CCSID einer Datei, setzt jedoch nicht ihren Inhalt dazu passend um.

    Wenn die QSHELL eine neue Datei anlegt, nimmt sie die Standard-CCSID des Jobs bzw. (falls vorhanden) den Wert aus der Umgebungsvariable QIBM_CCSID.

    QIBM_CCSID (CCSID for translation)
    When this variable is set to a numeric value, qsh and various utilities use the value for creating files and translating data from the CCSID of the job. The default value is "0" for the default job CCSID. A value of "65535" means no translation is done. (Quelle)
    Siehe auch: CCSID of QSHELL generated IFS file

  3. #3
    Registriert seit
    Dec 2005
    Beiträge
    276
    Hallo Michael,

    erstelle dir die Datei vorher mittels 'touch -C <ccsid> <filename>' und befülle sie erst danach.

    MFG Zerberus
    MFG Zerberus

  4. #4
    Registriert seit
    Jan 2018
    Beiträge
    20
    Danke sehr, Pikachu. Das ist die Lösung.
    Und wenn man QIBM_CCSID dann auch exportiert, klappt es auch mit AWK .

    Vielen Dank auch für den Link!

  5. #5
    Registriert seit
    Jan 2018
    Beiträge
    20
    Vielen Dank Zerberus, das funktioniert wesentlich besser, als per Windows-PC eine Datei anzulegen.

    Ich hatte touch im Script benutzt, um Dateien bestimmten Alters zu finden, aber der Parameter -C ist mir dabei nicht aufgefallen. Muss meine Brille mal häufiger putzen.

Similar Threads

  1. Antworten: 10
    Letzter Beitrag: 16-08-14, 18:12
  2. Drucken mit polnischen Zeichensatz
    By Andreas Herzfeldt in forum NEWSboard Drucker
    Antworten: 3
    Letzter Beitrag: 27-06-01, 17:22
  3. Zeichensatz anzeigen
    By Burgy Zapp in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 03-04-01, 20:07

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •