Anmelden

View Full Version : QSH und echo



camouflage
10-10-12, 16:48
Hi,
Ich baue mir in einem RPG-Programm einen übergebenen (CL) String zusammen und möchte den nun via QSH und echo an das IFS übergeben. Funktioniert soweit gut, nur bekomme ich im übergebenen File Hieroglyphen. Ich nehme mal an, das hängt mit der CCSID zusammen.

Job CCSID ist 500.

Für Hinweise bin ich dankbar.

Fuerchau
10-10-12, 17:25
Ich wäre für Hinweise was genau du da machst ebenso dankbar.
Wer erstellt die IFS-Datei?
Dein CLP?
Das "echo" per Ausgabeumleitung?

Das Problem könnte eben sein, dass die IFS-Datei dann auch CCSID 500 hat und somit EBCDIC-Code enthält.

camouflage
11-10-12, 08:09
Hallo Baldur,

Ich erstelle eine Import-CSV Datei mit den Feldnamen als Header. Dafür erstelle ich als erstes einen kompletten Headerstring für QSH welcher in einem RPG Programm aufbereitet wird, also mit echo und Target. Diesen schiebe ich mit QSH CMD(&string) in's IFS und gleich einen CPYTOIMPF hinterher. Das File besteht nicht im IFS. Die Daten vom CPYT... sind ok, nur der Header zickt.
Besser so?

btw, ich möchte das nicht mit SQL lösen, soll im RPG bleiben.

Fuerchau
11-10-12, 08:22
Beim CPYTOIMPF gibst du ja eine Ziel-CCSID an, deshalb die korrekte Darstellung.
Mit dem Echo wird die neue IFS-Datei erstellt, da du dabei aber keine CCSID angeben kannst, wird die Job-CCSID genommen.
Du musst also eine leere Datei erstellen, die CCSID setzen und dann per Echo die Daten anhängen.

qsh cmd('echo >/Home/MyFile.csv;touch -C 1252 /Home/MyFile.csv;echo ''HDR;'' >/Home/MyFile.csv')

Mittels "touch -C File" wird die CCSID der Datei gesetzt, eine Datenumsetzung erfolgt nicht!

camouflage
11-10-12, 08:26
Alles klar, bau mir den String so zusammen. Danke.

camouflage
12-10-12, 09:50
Hallo Baldur,

Hat leider nicht den gewünschten Erfolg gebracht - immer noch der gleiche Inhalt.

Hab noch einen Test mit dem deinem Beispiel gefahren - funktioniert auch nicht.

Der nachfolgende CPYTOIMPF mault mich dann auch noch wegen der CCSID an.


Noch andere Ideen, bevor ich den String einfach in ein Flatfile setze und dieses dann mittels normalem CPYTOIMPF übertrage?

Gruss

camouflage
12-10-12, 10:44
Gelöst!



qsh cmd('echo >/Home/MyFile.csv;touch -C 1252 /Home/MyFile.csv;echo ''HDR;'' >/Home/MyFile.csv')

Mittels "touch -C File" wird die CCSID der Datei gesetzt, eine Datenumsetzung erfolgt nicht!

Der erste echo darf nicht sein, da das File schon falsch erstellt wird. Ich habe den touch vorangestellt und den echo hinterher - et voilà, schon klappts.

also:
qsh cmd('touch -C 1252 /Home/MyFile.csv;echo ''HDR;'' >/Home/MyFile.csv')

Fuerchau
12-10-12, 10:59
OK, dann scheint der touch die Datei wohl schon anzulegen was ich nicht wusste.
Ein nachträglicher touch sollte aber immer noch möglich sein da auch ein CHGATR später immer noch möglich ist.

BenderD
12-10-12, 11:39
@touch: -C legt an, -c nicht und CCSID für existierende bleibt
@CCSID: da gibt es eine EnvVar QIBM_CCSID (o.ä.), zum ändern für eine vorhandene Streamfile gibt es setccsid
setccsid 1252 muell.txt

D*B

Fuerchau
12-10-12, 11:59
Danke für den Hinweis, dann war ich ja nicht sooo schlecht :).