-
Bist du sicher dass du die Datei neu erstellst ?
Wenn nicht, wird die vorhandene CCSID verwendet.
-
ja.
habe alle dateien, auch qtemp händisch gelöscht.
ich habe nochmal einen Test mit einer anderen Physischen datei gemacht und da war zumindest der Text zu lesen.
Ohhh, ich verstehe das auch nicht.
-
Uhi,
wenn ich mir das Objekt im IFS per WRKLNK anschaue ist es auch in Klarschrift.
-
Schau dir die Attribute der IFS-Datei an, insbesonders die CCSID.
Die Anzeige per WRKLNK setzt auch automatisch ASCII für die Anzeige korrekt um, so dass dies keine Aussage ist.
Ach ja, welche CCSID hat denn deine PF in der QTEMP ?
CPYTOIMPF benötigt da auch was anderes als 65535 sonst klappts nicht mit der Umsetzung.
Für CSV-Ausgabe nehme ich auch einfach SQL:
select trim(feld1) concat ';' concat trim(feld2) concat ';' ...
from myfile
Die so erstellte Datei kopiere ich dann eifache per CPYTOSTMF.
-
Guten Morgen
vielen lieben dank für die schnelle hilfe jedes mal!!!!
Also es liegt datsächlich an der CSSID wüdre ich sagen. Ich habe einen File den ich per DSPOBJD *outfile generiere, der hat eine CSSID 273. Wenn ich den in Qtemp kopiere und dann per CPYTOIMPF ins IFS klappt es, aber wenn ich einen File per CRTPF erstelle bekomme ich nur eine CSSID 65335 hin. Gebe ich eine andere bei der erstellung an sagt die AS iss nicht. Mache ich vorher einen CHGJOB auf CSSID 273 erstellt er ihn mir trotzdem mit 65335. Wie erstelle ich den einen File mit einer CSSID 273?
-
Per SQL finde ich auch interressant.
Ich habe mir ein kleines QRY angelegt , welches ich in meinem CL laufen lasse. Kann ich das ergebniss auch aus dem QRY in eine .CVS ausgeben?
-
CRTPF ohne DDS erstellt immer mit CCSID *HEX (65535).
CREATE TABLE per SQL erstellt bei Zeichenfeldern grundsätzlich mit CCSID, da diese auf Feldebene angegeben wird.
*HEX muss man explizit angeben oder man verwendet binary Felder.
Am Besten eignet sich da QM-Query, da diese zur Laufzeit auch eine Ausgabedatei erstellen können. Hier wird SQL verwendet und somit auch mit CCSID gearbeitet.
Für dein Spoolproblem könnte die Lösung ja nun so aussehen:
CRTPF in QTEMP mit CCSID 65535
CPYSPLF
STRQMQRY QMQRY(MYSQL) OUTPUT(*OUTFILE) OUTFILE(QTEMP/MYOUT)
CPYTOIMPF
Der QMQRY MYSQL kann dann direkt deinen Select enthalten.
Wenn du willst, kannst du auch Parameter verwenden um den Dateinamen z.B. dynamisch zu haben:
select ....
from &myfile
STRQMQRY ... SETVAR((MYFILE 'QTEMP/MYSPLF'))
Wenn du nun mehrere Spools zu einer Ausgabe zusammenfassen musst, kannst du beim 1. QMQRY OUTMBR(*FIRST *REPLACE) und in den folgenden OUTMBR(*FIRST *ADD) angeben. *REPLACE/*ADD kannst du auch in eine Variable packen.
In einem anderen Thread hat einer getestet, dass bei großen Datenmengen die CSV-Aufbereitung in SQL schneller ist, als im CPYTOIMPF.
Ausserdem ist man ggf. variabler was die Vornullen oder für Excel die Zeichenbehandlung angeht:
char(feld) <= linksbündig ohne Vornull
digits(feld) <= mit Vornull, allerdings ohne Komma, kann man aber mit substr() aufteilen.
Auch die Interpretation von Numerisch als Zeichen für Excel kann in SQL gelöst werden:
'''' concat digits(mynum) concat ';' <= man beachte die 4 Hochkomma
Die PF enthält dann bereits das CSV-Format, man kann es schön testen und anschließend reicht ein CPYTOSTMF, der eben schneller als CPYTOIMPF ist.
-
Hi
also ich habe jetzt mal wieder etwas gelernt: QMQRY
Link: iSeries / AS400 FAQ: How can I get started with QMQRY (Query Management Query)?
habe mein CL wie folgt angepasst:
PGM
DLTF FILE(QTEMP/SPOOL_QM)
MONMSG MSGID(CPF0000)
DLTF FILE(QTEMP/SPOOL_AUS)
MONMSG MSGID(CPF0000)
RMVLNK OBJLNK('/HOME/USER/spool.cSV')
MONMSG MSGID(CPF0000)
CRTPF FILE(QTEMP/SPOOL_QM) RCDLEN(132)
CPYSPLF FILE(QPRTSPLQ) TOFILE(QTEMP/SPOOL_QM) +
JOB(151353/USER/QPADEV0099) SPLNBR(4)
STRQMQRY QMQRY(LIB/QRY) OUTPUT(*OUTFILE) +
OUTFILE(QTEMP/SPOOL_AUS)
CPYTOIMPF FROMFILE(QTEMP/SPOOL_AUS) +
TOSTMF('/HOME/USER/SPOOL.CSV') +
MBROPT(*REPLACE) STMFCODPAG(*PCASCII) +
RCDDLM(*CRLF)
ENDPGM
leider bekomme ich immer noch die gleichen fehlerhaften Zeichen.
Es muss aber an der CSSID liegen.
Hilfe.
-
wenn ich
CRTPF FILE(QTEMP/TEST) RCDLEN(132)
und dann
upddta
und dann
CPYTOIMPF
kommt auch Müll raus.
-
Ist doch kein Wunder, da CPYTOIMPF eine CCSID braucht. Verwende in diesem Fall CPYTOSTMF ... STMFCODPAG(1252).
-
ja da hast du af jedenfall recht.
Ich habe nur das Problem das er dann meckert, weil ich mehr als drei felder habe.
ich suche die fehlermeldung nochmal
-
Ich mache das mit RUNQRY QRY(&QRY) OUTTYPE(*OUTFILE) OUTFILE(&QRY/QTEMP)
Dieses File kann man dann mit CPYTOIMPF kopieren.
Ab V6.1 kann man angeblich auch Header ausgeben, wenn ich mich nicht irre.
Allerdings ist CSV für EXCEL nicht ideal geeignet(eigenmächtige Änderung des Datentyps bei automatischem Öffnen)
Similar Threads
-
By System_Error_1 in forum NEWSboard Drucker
Antworten: 7
Letzter Beitrag: 22-09-09, 08:39
-
By Asti in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 26-10-06, 14:29
-
By SelfPity in forum NEWSboard Windows
Antworten: 16
Letzter Beitrag: 21-10-06, 17:45
-
By y-tom in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 24-05-06, 13:59
-
By cassandra in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 26-10-04, 15:54
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