View Full Version : Spoolfiles in Excell
Hallo
ich möchte viele Spoolfiles in ein Excellsheet kopieren.
Ich brächte da noch ein paar denkanstöße.
Also wenn ich einen Spool per CPYSPLF in eine Physische Datei Kopiere bekomme ich einen File mit einer Variablen, die in meinem Fall ca 125 Zeichen Lang ist.
Hohle ich mir das gute stück dann per Navigator runter. Habe ich zwar einn Schönes Excellsheet, aber nicht so wie ich es brauche.
Beispiel der ersten Drei Zeilen:
000001 5722SS1 V5R4M0 060210 Mit Ausgabewarteschlange arbeiten ....
000002 Datei Ben. Ben.daten Status Seite Kopien Form.art Pty Dateinummer Job Nummer Datum Uhrzeit
000003 xyz Muster Daten RDY 1 1 *STD 5 2 XY1234 129123 07/08/08 18:53:38
in meinem Excellsheet kommt dann jede Zeile Logischerweise in ein Feld.
Hat die AS eine möglichkeit das Kopieren eienes Spools mit so durchzuführen, dass ich die Felder Job, Nummer usw. auch erhalte. Dann wäre das exportieren nach Excell auch nicht so schwer.
:o
ich möchte kein Tool Kaufen. Sonder würde es gerne selbst lösen.
Ich könnte den entstandenen File auch per CL auslesen und die Daten als Variable per chgvar speichern, aber was mach ich dann damit? Ich glaube per cl kann ich keinen file erstellen und mit Variablen füllen. Mit SQL ginge das aber oder.
Die Spools sind im prinzip alle gleich.
Dazu kannst du ganz gut mit MS-Query die Daten zerlegen.
Am Besten kannst du einen SQL per STRSQL ausprobieren, diesen dann ggf. per CREATE VIEW als LF erstellen und diese dann
a) per Opsnav
b) per MS-Query
in Excel laden:
select
substr(feld, pos, len) as x1,
substr(feld, pos, len) as x2,
dec(substr(feld, pos, len), anz, nk) as x3,
...
from MyCpySplf
where substr(feld, pos, len) = 'xxx'
Als "feld" ist das Satzfeld zu nehmen, pos und len entnimmst du dem Spoolfile.
In der Where-Klausel definierst du nur die Zeilen mit relavanten Informationen.
Super danke.
Habe mir ein Qry gebastelt und dieses erstellt mir einen schicken File.
Das QRY ruf ich in einem CL auf und gut ist.
Per Navigator klappt das super. Die Felder werden richtig in EXCEL umgewandelt.
Per
CPYTOIMPF FROMFILE(QTEMP/SPOOL) +
TOSTMF('/HOME/SPOOL.XLS') +
MBROPT(*REPLACE) FROMCCSID(*FILE)
STMFCODPAG(*STMF) RCDDLM(*CRLF) +
DTAFMT(*FIXED) STRDLM(*NONE)
macht er es nicht richtig. Falsche Zeichensatz und nicht in Spalten einsortiert.
Hat da noch jemand einen Tip?
Ich nehme mal an, dass die QTEMP/SPOOL bereits einzelne Felder enthält und nicht mehr den kompletten Spoolsatz.
In diesem Fall benötigst du
STMFCODPAG(1252) <= ANSI-Zeichensatz
DTAFMT(*DLM) <= Feldtrenner
FLDDLM(';') <= CSV-Trenner
Hmmm,
das ergebniss sieht so aus:
ÓÅðô÷ð×ò@@@,ÓÉÅÂÙÂ@@@@,ÓÅðô÷ð@ @@@,@ÙÄè@@@,@@@@ñ@,@@@@ñ@@,\âãÄ@@@@@@@,@õ @@,@@@@@@@@ò@@@,ÓÅÃðöÁ@@@@@,ñòùñòó@, ÷aðøaðø@,ñøzõózóø
und mein CL so:
PGM
DLTF FILE(QTEMP/SPOOL)
MONMSG MSGID(CPF0000)
DLTF FILE(userlib/SPOOL)
MONMSG MSGID(CPF0000)
DLTF FILE(userlib/SPOOL_AUS)
MONMSG MSGID(CPF0000)
CRTPF FILE(userlib/SPOOL) RCDLEN(130)
CPYSPLF FILE(QPRTSPLQ) TOFILE(userlib/SPOOL) +
JOB(151353/user/QPADEV0099) SPLNBR(4)
RUNQRY QRY(userlib/SPOOL)
CPYF FROMFILE(userlib/SPOOL_AUS) +
TOFILE(QTEMP/SPOOL) MBROPT(*REPLACE) +
CRTFILE(*YES)
CPYTOIMPF FROMFILE(QTEMP/SPOOL) +
TOSTMF('/HOME/user/SPOOL.txt') +
MBROPT(*REPLACE) FROMCCSID(*FILE) +
STMFCODPAG(1252) RCDDLM(*CRLF) +
DTAFMT(*DLM) STRDLM(*NONE) FLDDLM(';')
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.