Das liegt wie immer an Sonderzeichen im String.
Woher kommt dein Prüfausdruck ?
Ist der als Konstante im Programm definiert und enthält variante Zeichen (CCSID-Spezifisch) ?
Konstanten werden zur Compilezeit in die CCSID des Job's gewandelt. Hat der Job 65535 ist der Code entsprechend der Eingabe bzw. der CCSID der Quelle.

Du musst also immer dafür sorgen, dass der Ausdruck und Prüfstring CCSID-mäßig zu einander passen.

Das kannst du ggf. damit erreichen, dass du den Ausdruck aus einer PF oder MSGF (mit CCSID!) zur Laufzeit ermittelst.
Der Job darf dabei natürlich nicht auf CCSID 65535 stehen!