PDA

View Full Version : cmd mit qcmdexc aufrufe



K_Tippi
21-07-16, 15:02
Hallo Gemeinde,
ich möchte einen CMD mittels QCMDEXC aufrufen, bekomme aber immer die Medldung dass der Längenparameter nicht auf das letzte Keyword folgen kann.

den CMD habe ich zusammengebaut
SNDMAIL TOADR('klaus.tippmann@xy.de) *none subject(
Kundenanlage) MSG('Kunde für SAP') MSGESCCHR(*NONE) MAILTXTF
MT(*TEXT) ATTACH() FROMADR(abc@xy.de)
*none save(*no) CFMDEL(*NO) IDX(*NONE)

Aufruf klassich oder in Free
leng = 512;
//callqcmd2(cmd2:leng);
/end-free
c call 'QCMDEXC'
c parm cmd2
c parm leng

Fehler im Joblog

call testovr
Positional value cannot follow keyword parameter.
Positional value cannot follow keyword parameter.
Error found on SNDMAIL command.
Errors occurred in command.

was mach ich falsch?

Danke im Voraus
Klaus

Fuerchau
21-07-16, 15:17
Schau dir den Inhalt deines Zusammenbaus an!
Die Meldung besagt, dass Parameter ohne Schlüsselwort nicht auf Parameter mit Schlüsselwort folgen dürfen. Die Art deines Aufrufes ist in beiden Fällen korrekt und hat mit dem CALL nichts zu tun.
Ich vermute mal, dass das "*none" vor "save.." nicht korrekt ist.

dholtmann
21-07-16, 16:44
Ich hab da mal was gebastelt was dir vllt hilft:

Prototyp:

dcl-pr callcmd extpgm('QCMDEXC');
command char(5000) options(*varsize);
Length packed(15:5);
end-pr;


Variablen:


dcl-s cha_cmd char(5000) inz(*blanks);
dcl-s pac_cmd packed(15:5) inz(*zeros);


Aufruf:


cha_cmd = 'DEIN CMD BEFEHL';
pac_cmd = %len(%trim(cha_cmd));
monitor;
callcmd(cha_cmd:pac_cmd);
on-error;
ind_fehler = *on;
endmon;


So setze ich jeden CMD Befehl problemlos ab, vllt kannst du das einfach nutzen.

Edit:
Hab nicht aufmerksam gelesen: Fuerchau (http://newsolutions.de/forum-systemi-as400-i5-iseries/members/160-Fuerchau) hat natürlich recht.

cbe
21-07-16, 16:58
SNDMAIL TOADR('klaus.tippmann@xy.de) *none subject(
Kundenanlage) MSG('Kunde für SAP') MSGESCCHR(*NONE) MAILTXTF
MT(*TEXT) ATTACH() FROMADR(abc@xy.de)
*none save(*no) CFMDEL(*NO) IDX(*NONE)

Positional value cannot follow keyword parameter.

Die Fehlermeldung sagt es doch eigentlich:
Positional value (im Bsp.: *none) cannot follow keyword parameter. (im Bsp: TOADR)

Sobald Du in einem Kommando anfängst, die Parameter benannt zu verwenden, musst Du das bei allen weiteren machen.

Gib Dein Kommando genauso mal in einer Kommandozeile ein, da kommt dann derselbe Fehler.

Davon abgesehen hast Du diverse ' vergessen :)

K_Tippi
26-07-16, 06:41
Danke an euch,
manchmal sieht man den Wald vor lauter Baume nicht

Klaus