Anmelden

View Full Version : Spoolfiles in Excell



Seiten : [1] 2 3 4

Techniker
12-08-08, 13:27
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

Techniker
12-08-08, 13:31
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.

Fuerchau
12-08-08, 13:35
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.

Techniker
12-08-08, 16:03
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?

Fuerchau
12-08-08, 16:29
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

Techniker
12-08-08, 16:47
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(';')

Fuerchau
12-08-08, 16:57
Bist du sicher dass du die Datei neu erstellst ?
Wenn nicht, wird die vorhandene CCSID verwendet.

Techniker
12-08-08, 17:04
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.

Techniker
12-08-08, 17:06
Uhi,

wenn ich mir das Objekt im IFS per WRKLNK anschaue ist es auch in Klarschrift.

Fuerchau
12-08-08, 17:53
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.