PDA

View Full Version : CPYTOIMPF -> CSV m. Header ???



FNeurieser
20-04-12, 12:44
Hallo werte Community,

ich versuche seit geraumer Zeit einen CSV-File mit vorgeschaltetem Header zu übertragen.
Und zwar verwende ich dazu in einem CL den QSH-Befehl. Aber jedesmal bekomme ich die Meldung,
dass der Pfad zu lang sei (siehe Bild). Die Variable &QCMD ist mit einer Länge von 512 definiert.

http://img.neurieser.eu/screens/as400/qsh01.png

512 kann doch für das IFS nicht zu lang sein, oder täusche ich mich da?

Kann mir bitte jemand sagen woran das liegt bzw. ob es eine Alternative gibt,
die mit geringem Aufwand verbunden ist?

Danke schon mal im Voraus.

Fuerchau
20-04-12, 12:49
Das sieht für mich so aus, als ob du jede Menge Pfade ausgeben willst (das Bild kommt nicht so gut rüber).

Ich vermute mal, du willst eher

echo "\xxx\, \yyy\" >/Pfad/File

machen.

FNeurieser
20-04-12, 13:10
Ja genau,

aber die Felder sind ja zusammengefaßt:

QSH('echo \BMWGR\, \BMWUG\, ... und so weiter bis zum letzten Feld \BMR20\ und gleich danach die Pfadangabe mittels der Pipe
> /dfue013/baumeister20111224001.csv')

also sieht das ganze dann so aus:

QSH('echo \BMWGR\, \BMWUG\, ... \BMR20\ > /dfue013/baumeister20111224001.csv')

stimmt denn das so nicht???

Fuerchau
20-04-12, 13:15
Wie immer, die Hochkommata:

QSH('echo ''\BMWGR\, \BMWUG\, ... \BMR20\'' > /dfue013/baumeister20111224001.csv')

Wobei eigentlich ein "\" als Feldname bei CSV eher ungewöhnlich ist.
Entweder man lässt die Begrenzer weg oder man nimmt Anführungszeichen (kein Hochkomma!).

FNeurieser
20-04-12, 13:21
Ha, immer wieder der gleiche Fehler...

Danke Dir recht herzlich. Bzgl. der "\" -> das habe ich aus einem früheren Beitrag herausgelesen.

FNeurieser
20-04-12, 13:45
Hallo nochmal


Wie immer, die Hochkommata:

QSH('echo ''\BMWGR\, \BMWUG\, ... \BMR20\'' > /dfue013/baumeister20111224001.csv')
.

sollte es nicht eigentlich so heißen:


QSH(' echo "BMWGR";"BMWUG";..."BMR020" > /dfue013/baumeister20111224001.csv')


oder verstehe ich das jetzt grundsätzlich falsch? ich dachte mir, dass der Strichpunkt der Feldbegrenzer ist.

Sorry nochmal für die Fragerei

Fuerchau
20-04-12, 13:58
Bedenke, dass an QSH der Inhalt ohne das 1. und letzte Hochkomma übergeben wird.
In QSH werden einzelne Befehle mit ";" getrennt. D.h., deine Befehle sehen dann so aus:

echo "BMWGR";
"BMWUG";

usw.

Das ";" ist also kein Bestandteil des Textes.

Konstanten werden in 2 Arten verwendet:
Hochkomma als feste Konstante, Anführungszeichen als variable Konstante (Ersetzungen von Umgebungsvariablen u.a.).

Du musst also alles in Hochkommata angeben. Da das QSH-Kommando selber nun auch in Hochkamma übergeben wird, sind eingebettet Hochkommata zu verdoppelt.
Also

QSH('echo ''"BMWGR";"BMWUG";....'' >/Pfad/Datei')

Beachte also den Unterschied zwischen doppelte Hochkoma und Anführungszeichen.

FNeurieser
20-04-12, 14:03
Hallo und danke

möchte mich nochmal bei Dir für Deine unermüdliche Hilfe bedanken.

LG
Franz