PDA

View Full Version : CPYSPLF unterschiedliches Verhalten im Batch und interaktiv



Seiten : [1] 2 3 4 5 6 7 8

nico1964
10-08-17, 11:55
Hallo,

wir haben heute ein komisches Verhalten beobachten können und können uns das nicht erklären.


CPYSPLF als PDF ins IFS
Wenn der USER interaktiv aufruft funktioniert es Tadellos.

Wird der selbe Befehl innerhalb eines Programms welches unter dem selben User im Batch läuft bringt MCH3601


Spoolfile ist zum Zeitpunkt des Absturzes vorhanden.


Irgendeine Idee. Bitte dringend.

Robi
10-08-17, 12:34
Wie rufst du das auf?
3601 sagt: da fehlt ein Parameter!

KingofKning
10-08-17, 12:35
Parameter werden ja interaktiv anders übergeben als im CLP.

Hier stand auch mal was zum Thema. http://newsolutions.de/forum-systemi-as400-i5-iseries/threads/11182-MCH3601

nico1964
10-08-17, 12:37
Der Aufruf aus dem CL ist
CPYSPLF FILE(BZV3AA) TOFILE(*TOSTMF) +
JOB(&NBR/&USER/&JOB) SPLNBR(*LAST) +
TOMBR(*FIRST) +
TOSTMF(&PFAD) WSCST(*PDF) STMFOPT(*REPLACE)

Die variablen werden sauber versorgt die für den Job über RTVJOBA und der Pfad nach gewissen Vorgaben.

und wenn ich den Befehl in ein CL gebe und dieses händisch aufrufe funktioniert es

Fuerchau
10-08-17, 12:49
Woher kommt &Pfad?
Ich denke mal, dass hier die Übergabe an das CLP wieder nicht mit der definierten Länge der Variablen &Pfad übereinstimmt!
Ein SBMJOB CMD(CALL MYPGM PARM(&VAR)) funktioniert nur mit Variablen, die <= 32 Stellen sind.
Leerzeichen am Ende für den PARM werden abgeschnitten!

Die Alternative hatte ich auch schon mal erwähnt:
&VAR 1 Zeichen länger definieren und ein 'X' reinhauen. Da du 1 Byte mehr submittest als per Definition erwartet werden, bekommt das MYPGM die Daten ohne X.

nico1964
10-08-17, 12:57
Der Pfad wird so im CL
CHGVAR VAR(&PFAD) VALUE('/HOME/' *CAT &USER *TCAT +
'/xx_xxxxxxl_' *CAT %SUBSTRING(&DATE 1 2) *CAT +
'_' *CAT %SUBSTRING(&DATE 3 2) *CAT '_' *CAT +
%SUBSTRING(&DATE 5 2) *CAT '_xxxxxx.PDF')
aufbereitet nix mit parameterübergabe

Fuerchau
10-08-17, 13:02
Wenn der Fehler auftritt muss das Programm benannt sein, dass den MCH auslöst.
Bist du sicher, dass das der CPYSPLF ist?

nico1964
10-08-17, 13:08
Im Joblog steht das Programm xxxx hat auf Anweisungsnummer 0006200 den MCH3601 empfangen und das ist

0062.00 CPYSPLF FILE(BZV3AA) TOFILE(*TOSTMF) +
0063.00 JOB(&NBR/&USER/&JOB) SPLNBR(*LAST) +
0064.00 TOMBR(*FIRST) +
0065.00 TOSTMF(&PFAD) WSCST(*PDF) STMFOPT(*REPLACE)

Robi
10-08-17, 13:59
es werden im Befehl diese Variablen verwendet:

CPYSPLF FILE(BZV3AA) TOFILE(*TOSTMF) +
JOB(&NBR/&USER/&JOB) SPLNBR(*LAST) +
TOMBR(*FIRST) +
TOSTMF(&PFAD) WSCST(*PDF) STMFOPT(*REPLACE)

wird eine davon im cl empfangen?
bzw hätte eine davon empfangen werden sollen.
ich denke, die kommt einfach nicht an das CL!

nico1964
10-08-17, 14:11
Hier die wesentlichen Auszüge aus dem CL

PGM PARM(&EMAIL &PGM)
DCL VAR(&EMAIL) TYPE(*CHAR) LEN(200)
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
DCL VAR(&PFAD) TYPE(*CHAR) LEN(50)
DCL VAR(&DATE) TYPE(*CHAR) LEN(6)
DCL VAR(&SUBJECT) TYPE(*CHAR) LEN(60)
DCL VAR(&LAST) TYPE(*CHAR) LEN(6)
DCL VAR(&JOB) TYPE(*CHAR) LEN(10)
DCL VAR(&NBR) TYPE(*CHAR) LEN(6)
DCL VAR(&PGM) TYPE(*CHAR) LEN(10)
DCL VAR(&SYSTEM) TYPE(*CHAR) LEN(40)
DCL VAR(&NAME) TYPE(*CHAR) LEN(10)

CHGVAR VAR(&LAST) VALUE('*LAST')
CHGVAR VAR(&NAME) VALUE(' ')
RTVJOBA JOB(&JOB) USER(&USER) NBR(&NBR) DATE(&DATE)
RTVNETA SYSNAME(&SYSTEM)


IF COND(&PGM *EQ 'LEACABSA') THEN(DO)
CHGVAR VAR(&PFAD) VALUE('/HOME/' *CAT &USER *TCAT +
'/DT_Zettel_' *CAT %SUBSTRING(&DATE 1 2) *CAT +
'_' *CAT %SUBSTRING(&DATE 3 2) *CAT '_' *CAT +
%SUBSTRING(&DATE 5 2) *CAT '_Ausland.PDF')
CPYSPLF FILE(BZV3AA) TOFILE(*TOSTMF) +
JOB(&NBR/&USER/&JOB) SPLNBR(*LAST) +
TOMBR(*FIRST) +
TOSTMF(&PFAD) WSCST(*PDF) STMFOPT(*REPLACE)
CHGVAR VAR(&SUBJECT) +
VALUE('DT-Zettel 20' *CAT +
%SUBSTRING(&DATE 1 2) *CAT '.' *CAT +
%SUBSTRING(&DATE 3 2) *CAT '.' *CAT +
%SUBSTRING(&DATE 5 2) *CAT ' Ausland - ' +
*CAT &SYSTEM)
SNDSMTPEMM RCP((&EMAIL)) SUBJECT(&SUBJECT) ATTACH((&PFAD *PDF +
*BIN)) CHARSET(*UTF8 *DFT) CONTENT(*PLAIN)
GOTO CMDLBL(ENDE)
ENDDO