Here is another discussion on that topic.
Since the QMHSNDM API has no parameters to specify VALUES or DFT, you can’t pass them in when you call the API.
If you must use them, then simply use the SNDUSRMSG command. That’s why it exists — for you to run it in a program.
There are two general ways to do it. You can build a command string and pass it to the QCAPCMD API (or QCMDEXC); or you can compile a CL module that executes the command and processes the reply. I would compile the ILE CL module in order to have all of the code encapsulated as well as compiled.
That’s one of the major points of “ILE”. You can bind a CL module to your RPG without concern that they’re different languages. (Okay, there are some potential concerns such as single-byte character parm handling.)