Anmelden

View Full Version : OUTQ überwachen und CPYSPLF



Cobolaner
20-04-07, 12:39
Hallo Zusammen und vielleicht kann mir jemand auf die Sprünge helfen.
Wir überwachen mit, einer DTAQ, OUTQ_A.
Der Anwender soll nun aus seiner OUTQ_B, benötigte SPLF's in die OUTQ_A schieben.
Mit einem CL-Pgm wird in OUTQ_A die SPLF mit CPYSPLF in eine PF geschrieben, daß klappt auch, wenn es zu einem Job nur EINE SPLF gab.
Jetzt wurden mit einem Job aber gleich 5 Listen erstellt, die sich nur durch die SPLFNBR unterscheiden.
Obwohl von diesen 5 Listen nur EINE benötigt wird und in OUTQ_A verschoben wurde, fällt der CPYSPLF auf die Nase mit: Mehrere Dateien mit angegebenem Namen in Job xxxxxxx gefunden. Wie kann ich es regeln, daß der CPYSPLF nur die EINE Liste in OUTQ_A sieht?
Ich wünsche Euch ein schönes Wochenende
und besten Dank schon einmal
- Cobolaner -

kuempi von stein
20-04-07, 12:46
Hello,

wenn Du beim CPYSPLF die SPLFNBR mit angibst, sollte der Copy eigentlich funktionieren ohne Probleme.

k.

WoD
20-04-07, 12:51
Hallo,
der Parameter SPLNBR ist Standard *ONLY d.h. es gibt nur eine

Sollte deine Liste immer die Letzte sein
kannst du *LAST eingeben,

ansonsten musst du die Spool-Nr eintragen.

Cobolaner
20-04-07, 12:57
in OUTQ_A wurde die SPLF mit der Nummer 3 (von 5 Listen) verschoben, wenn ich *LAST nehme, nimmt der CPYSPLF doch die Liste aus der OUTQ_B mit der Nummer 5, oder?

Cobolaner

Fuerchau
20-04-07, 13:05
Schau dir den DTAQ-Eintrag genau an:


DCL VAR(&SPLATR) TYPE(*CHAR) LEN(40)
DCL VAR(&DATA) TYPE(*CHAR) LEN(128) /* DATQ-Daten */

CHGVAR VAR(&SPLATR) VALUE(%SST(&DATA 5 40))

IF COND(&SPLATR *NE '*NONE') THEN(DO)

SNDNETSPLF FILE(%SST(&SPLATR 1 10)) TOUSRID((&USER +
&SYSTEM)) JOB(%SST(&SPLATR 31 +
6)/%SST(&SPLATR 21 10)/%SST(&SPLATR 11 +
10)) SPLNBR(%BIN(&SPLATR 37 4)) +
DTAFMT(*ALLDATA)

ENDDO

Anstelle von SNDNETSPLF kannst du ja CPYSPLF nehmen.

WoD
20-04-07, 13:05
Hallo

Richtig, immer die größte Spool-Nr
Du brauchst dir keinen Kopf zu machen welche Nr die hat.


Ist immer Spool-Nr 3 diejenige , dann trag einfach 0003 in Spool-nr ein.

Cobolaner
20-04-07, 13:13
ich werde es testen (aber erst nächste Woche).
Euch ein schönes Wochenende.
-Cobolaner-

Fuerchau
20-04-07, 14:03
Da sich die Spool-Befehle nicht für die OUTQ interessieren, spricht SPLNBR(*LAST) ggf. die falsche Spool an.

Da die DTAQ genau die Spoolfile benennt, kann man auch genau mit diesen Infos arbeiten.

Andreas Herzfeldt
23-04-07, 09:12
Hallo Cobolaner,

denk dran, das die SPLNBR in der DTAQ binär ist !

CHGVAR VAR(&SPOOLNBR) VALUE(%SUBSTRING(&FIELD 49 4))
CHGVAR VAR(&SPOOLN) VALUE(%BINARY(&SPOOLNBR))
CHGVAR VAR(&SPOOLNT) VALUE(&SPOOLN)

Andreas

Fuerchau
23-04-07, 10:38
Das kannst du auch abkürzen, da %BIN auch Position und Länge erlaubt:

CHGVAR VAR(&SPOOLN) VALUE(%BIN(&FIELD 49 4))