Hallo,

für unser Anwendungsmodernisierungsprojekt benötige ich die Möglichkeit, aus einer C# Anwendung heraus das Kennwort des eigenen Benutzerprofils zu ändern, sei es weil es abgelaufen ist oder der Anwender von sich aus ändern möchte. Als notwendigen Wrapper, wollte ich eine SQL-Prozedur verwenden.

Seitens API habe ich die QSYCHGPW u. ihre Definition gefunden und mich dann an einer external SQL Procedure versucht.(https://www.ibm.com/support/knowledg...s/QSYCHGPW.htm)

Code:
-- Erstellen 'QSYS/QSYCHGPW'
CREATE PROCEDURE ChgPwd(IN UserId CHAR(10), IN CurrentPwd CHAR(10), IN NewPwd CHAR(10), INOUT ErrorCode CHAR(15))
    LANGUAGE C MODIFIES SQL DATA
    EXTERNAL NAME 'QSYS/QSYCHGPW'
    PARAMETER STYLE GENERAL;

-- CALL
CALL ChgPwd('MEINUSR', 'PWALT', 'PWNEU', '');
Leider ohne Erfolg. Ebenso habe ich die optionale Parametergruppe als Parameter implementiert u. diverse Versuche unternommen - letztendlich alle ohne Erfolg. Einen konkrete Verdacht habe ich nicht, lediglich die Vermutung, dass es evtl. am letzten Parameter oder den optionalen liegen könnte.

Eine SQL Prozedur für den Aufruf der QSYS2.QCMDEXC analog dazu hat funktioniert, jedoch existieren hier nur IN-Parameter.

Den Hinweis zu den External SQL Procedures habe ich u.a. im folgenden gefunden:
http://www-01.ibm.com/support/docvie...d=nas8N1017493

Die Frage ist auch, ob es über meinen Weg funktionieren kann, oder ich ein RPGLE dafür schreiben müsste (in Anlehnung an: http://www-01.ibm.com/support/docvie...d=nas8N1014053 oder http://www.code400.com/forum/forum/t...chgpw-qwcrsval)