Die CCSID ist auf jeden Fall ein Problem:

Invarianter und Varianter Zeichensatz
Invarianter Zeichensatz
Alle Zeichen, die über alle CCSID‘s(EBCDIC) bzw.
Codepage‘s(ASCII) den selben Hexwertbehalten:
A –Z a –z 0 –9
+ < = > % & * " ' ( ) , _ -. / : ; ?
Varianter Zeichensatz
Alle anderen Zeichen, die je nach CCSID oder
Codepage unterschiedliche Hexwerte aufweisen.

Wie du siehst, ist das "!" von der CCSID abhängig.
Lass dir gesagt sein:
Zwischen Bildschirm und Job findet keine Codewandlung statt!
Die Hostcodepage muss also zum Job passen.
Wo nun die AS/400 Kennworte ablegt kann ich nicht sagen. Jedoch wird dies wohl im USRPRF liegen.
Ob nun beim Zugriff auf dieses (wie bei der DB) eine Codewandlung ergibt ist nicht dokumentiert, ich glaube es aber nicht.

Betrachte mal den QINTER-Subsystem-Job (das Subsystem ist auch ein Job und steuert die QDSIGNON) bzgl. seiner CCSID.

Sonderzeichen stellen also immer Schwierigkeiten dar wenn ggf. unterschiedliche CCSID's eine Rolle spielen.
Du kannst ja dein Terminal mal auf unterschiedliche Hostcodepages stellen (037, 500, 273, 1141).
Vielleicht passt ja eine der CCSID's zum Kennwort.
Dann weißt du wenigstens, welche CCSID vom System als Default verwendet wird, wenn QCCSID auf *HEX steht.

Fazit:
Ich empfehle grundsätzlich die QCCSID auf den Wert passend zur Haupt-Systemsprache zu stellen.