Anmelden

View Full Version : Spools durchsuchen



Seiten : 1 [2] 3

Bruno Jakob
02-10-03, 07:20
Keine Ahnung, wo die Textdatei hingekommen ist, also nochmal als Anhang und zusätzlich hier im Beitrag:

/* ************************************************** *********** */
/* Name der Arbeitsdatei festlegen */
/* ************************************************** *********** */
arbeitsdat = "QTEMP/XXXXX"

/* ************************************************** *********** */
/* outq: 10 Stellen Name der OUTQ, 10 Stellen Bibl. */
/* ************************************************** *********** */
outq = 'PRT01 *LIBL '

/* ************************************************** *********** */
/* Arbeitsdatei erstellen bzw. leermachen */
/* Satzlänge u. Umständen vergrößern */
/* ************************************************** *********** */
"CRTPF FILE("arbeitsdat") RCDLEN(200)"
"CLRPFM "arbeitsdat

/* ************************************************** *************** */
/* USERSPACE erstellen */
/* ************************************************** *************** */
attri = ' '
initz = ' '
spclen = '00000400'x
"CALL PGM(QUSCRTUS) PARM('SPLARC QTEMP '",
"&ATTRI &SPCLEN &INITZ *ALL 'Userspace für SPLARC1')"
select
when rc = 'CPF9870' then nop /* Userspace existiert schon */
when rc <> 0 then do /* Userspace nicht erstellt */
say 'USRSPC nicht erstellt.'
end
otherwise nop
end

/* ************************************************** *************** */
/* USERSPACE füllen */
/* ************************************************** *************** */
user = '*ALL '

form = '*ALL '
data = '*ALL '

"CALL PGM(QUSLSPL) PARM('SPLARC QTEMP '",
"'SPLF0100' &USER &OUTQ &FORM &DATA)"
if rc <> 0 then do /* Userspace nicht gefüllt. */
say 'USRSPC nicht gefüllt.'
end

/* ************************************************** *************** */
/* USERSPACE Initialisierungsinformationen empfangen */
/* ************************************************** *************** */
strpos = '0000007D'x /* Hier steht Anzahl Einträge im Userspace */
leng = '00000010'x /* gespeichert sind. */
"CALL PGM(QUSRTVUS) PARM('SPLARC QTEMP '",
"&STRPOS &LENG &DATEN)"
if rc <> 0 then do /* INIT-Infos nicht empfang. */
say 'USRSPC-Init nicht gelesen.'
end

/* ************************************************** *************** */
/* USERSPACE Einträge empfangen */
/* ************************************************** *************** */
strposd = c2d(substr(daten,1,4)) /* Startpos der Einträge */
strposd = strposd + 1
anzahl = c2d(substr(daten,9,4)) /* Anzahl der Einträge */
laenge = c2d(substr(daten,13,4)) /* Länge eines Eintrages */
leng = d2c(laenge,4)
daten = copies(' ',laenge)

do anzahl
strpos = d2c(strposd,4)
"CALL PGM(QUSRTVUS) PARM('SPLARC QTEMP '",
"&STRPOS &LENG &DATEN)"
if rc <> 0 then do /* Eintrag nicht empfangen */
say 'USRSPC-Eintrag nicht gelesen.'
end

/* ************************************************** *************** */
/* Spool-File Informationen empfangen */
/* ************************************************** *************** */
splinfo = copies(' ',220)
splilaenge = d2c(220,4)
splifmt = 'SPLA0100'
splijobn = '*INT '
jobid = substr(daten,51,16)
splid = substr(daten,67,16)
splispln = '*INT '
splisplnr = d2c(-1,4)

"CALL PGM(QUSRSPLA) PARM(&SPLINFO &SPLILAENGE",
"&SPLIFMT &SPLIJOBN &JOBID &SPLID &SPLISPLN &SPLISPLNR)"
if rc <> 0 then do /* Eintrag nicht empfangen */
say 'SPLF-Info nicht empfangen.'
end

spoolname = substr(splinfo,67,10)
jobname = substr(splinfo,41,10)
benutzer = substr(splinfo,51,10)
jobnummer = substr(splinfo,61,6)
spoolnr = c2d(substr(splinfo,77,4))
status = substr(splinfo,101,10)


/* ************************************************** *************** */
/* Spool-Datei in Datei kopieren */
/* ************************************************** *************** */
"CPYSPLF FILE(&SPOOLNAME) TOFILE("arbeitsdat")",
"JOB(&JOBNUMMER/&BENUTZER/&JOBNAME)",
"SPLNBR(&SPOOLNR) MBROPT(*ADD) CTLCHAR(*FCFC)"
if rc <> 0 then do
say 'SPLF nicht kopiert.'
end

/* ************************************************** *************** */
/* Position für nächsten Eintrag erhöhen */
/* ************************************************** *************** */
strposd = strposd + laenge
end
exit

MKnoll
02-10-03, 12:06
Hallo Bruno,

danke nochmal für die Prozedur. Ich bin damit auch problemlos klargekommen.

Ist wie Du schon sagtest zwar für meine Aufgabe erst die halbe Miete - aber trotzdem einfach Klasse. Und ich denke, ich kann das ohne Schwierigkeiten an meine Problemstellung anpassen.
Super !

Eines hat es außerdem noch gebracht - mein Interesse an REXX ist geweckt worden !


Mirko

karin-vogelmann
14-10-03, 15:57
hallo bruno,

verfolge gespannt die thematik und würde deine rexx-prozedur gerne auch mal ausprobieren. was muß ich denn da machen? ich habe leider keinen blassen schimmer..

gruß, karin

malzusrex
14-10-03, 17:02
hallo karin,

dank dieses forums bin ich auch darauf gebracht worden, wie das mit dem REXX geht.
1.) die REXX-Prozedur speichern (zb. MyLib/QREXSRC Member TEST1)
2.) STRREXPRC SRCMBR(TEST1) SRCFILE(MyLib/QREXSRC)

dann führt er das teil aus

tschau ronald

Bruno Jakob
15-10-03, 07:48
Hallo Karin,

genau so wie Ronald das schreibt.

Weitere Informationen über REXX im InformationCenter, Programming REXX. Der Programmer's Guide ist ein ganz guter Einstieg.

Gruß
Bruno

karin-vogelmann
16-10-03, 13:33
hi!
habe es versucht, bekomme leider einen fehler :

USRSPC nicht erstellt.
USRSPC nicht gef}llt.
USRSPC-Init nicht gelesen.
62 +++ strposd = c2d(substr(daten, 1, 4));
Fehler in Zeile 62: Falscher Aufruf an Routine.
Die Eingabetaste drücken, um die Terminalsitzung zu beenden.

was nun?
gruß, karin

malzusrex
16-10-03, 14:08
hallo karin,

ich denke einmal da wird sich ein tippfehler eingeschlichen haben.
ich gebe dir den script noch einmal als file zum saugen

ronald

karin-vogelmann
16-10-03, 14:33
hallo ronald,

ja, nun klappt es bestens!

merci, karin

Fuerchau
16-10-03, 17:08
Nein, es ist kein Tippfehler, sondern die automatische Entfernung von Leerzeichen dieses Forums.

Bei den API-Aufrufen ist die Anzahl der Leerzeichen EXTREM wichtig, ist der Parameter z.b. mit 20 Zeichen (Objekt Lib) definiert, so müssen halt in den Stellen 1-10 der Name und 11-20 die Lib stehen. Es ist also ggf. mit Leerzeichen aufzufüllen !

karin-vogelmann
17-10-03, 07:53
moin,

ich meine, die leerzeichen bei outq und lib ergänzt zu haben, dennoch kam der fehler. vielleicht ging ja noch ein blank irgendwo unter? oder ich habe mich verzählt.

auf alle fälle klappt's nun bestens und für die suche zwischendurch ist das tool echt supi!

gruß, karin