"VALUES(SQLCODE,SQLSTATE) INTO SQLCODE_OUT,SQLSTATE_OUT" will work but "SET (SQLCODE_OUT,SQLSTATE_OUT) = (SQLCODE,SQLSTATE);" won't work. To use SET statement in above manner you have to use TableName.ColumnName as per my today's understanding. Please correct me in case.
"I don't have access to SYSIBM schema and SYSIBM>SYSDUMMY1". Tell your DBA that access to this table (actually in some versions it is a view) is a basic requirement of writing good SQL. Not granting select on it to PUBLIC is an indication of someone who doesn't understand what they are doing.
What version/FP of DB2 are you using? A few years ago there were some fixes in this area to change the processing of SET SQLCODE_OUT = SQLCODE from an SQL statement (which destroyed SQLSTATE) into a C language statement.