     PGM PARM(&USER &PWD_CUR &PWD_NEW &MSGID &MSGTXT)

     DCL        VAR(&USER)    TYPE(*CHAR) LEN(10)
     DCL        VAR(&PWD_CUR) TYPE(*CHAR) LEN(10)
     DCL        VAR(&PWD_NEW) TYPE(*CHAR) LEN(10)
     DCL        VAR(&MSGID)   TYPE(*CHAR) LEN(7)
     DCL        VAR(&MSGDTA)  TYPE(*CHAR) LEN(100)
     DCL        VAR(&MSGTXT)  TYPE(*CHAR) LEN(132)
     DCL        VAR(&ERROR)   TYPE(*CHAR) LEN(116)

     MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(END))

     CHGVAR VAR(%BIN(&ERROR 1 4)) VALUE(116)
     CHGVAR VAR(%BIN(&ERROR 5 4)) VALUE(000)

/* Initialisation                                                    */
     CHGVAR     &MSGTXT ' '
     CHGVAR     &MSGDTA ' '
     CHGVAR     &MSGID  ' '

/* Change Password API                                               */
     CALL       QSYCHGPW PARM(&USER &PWD_CUR &PWD_NEW &ERROR)

/* Get Message Text                                                  */
     CHGVAR     VAR(&MSGID)  VALUE(%SST(&ERROR 9 7))
     CHGVAR     VAR(&MSGDTA) VALUE(%SST(&ERROR 17 100))
     IF         (&MSGID *NE *BLANKS) THEN(DO)
             RTVMSG     MSGID(&MSGID) MSGF(QCPFMSG) MSGDTA(&MSGDTA) +
                          MSG(&MSGTXT)
     ENDDO

END:
     ENDPGM
