Acceptance of double-byte character set data

The parse service routine accepts double-byte character set (DBCS) strings in addition to EBCDIC character strings. The shift-out character (X'0E') indicates a change from EBCDIC to DBCS; the shift-in character (X'0F') indicates the reverse. Each double-byte character requires a double-byte representation so that valid DBCS strings contain an even number of bytes. With the exception of blank, which is X'4040', each byte has a value from X'41' to X'FE'. If the DBCS string contains an incorrect character, parse replaces it with X'4195'.

Double-byte characters can appear in comments and certain types of strings of user data. If the programming language you are using supports DBCS data, default values can also contain valid DBCS strings. DBCS strings that appear where they are not accepted could cause an error condition. The types of user strings that can contain DBCS data along with the associated parse macro and operand follows:

Type of String Macro Operand
Self delimiting string IKJPOSIT STRING
Quoted string IKJPOSIT QSTRING
Parenthesized string IKJPOSIT PSTRING
Value string IKJPOSIT VALUE
Quoted character constant IKJTERM CONSTANT
Quoted character string IKJIDENT CHAR or HEX

Parse does not accept DBCS strings in prompting mode. In addition, you cannot use DBCS strings in quoted data set names, quoted passwords for data sets, or quoted passwords for user IDs because MVS™ does not accept DBCS strings in those cases. However, the parse macro, IKJPOSIT, treats X'0E' and X'0F' as DBCS delimiters in quoted data set names (DSNAME and DSTHING parameters), quoted passwords for data sets (DSNAME and DSTHING parameters), and quoted passwords for user IDs (USERID and UID2PSWD parameters).

Check all hexadecimal data that you pass to parse to be sure that X'0E' and X'0F' represent the shift-out and shift-in characters when appropriate. Previously, parse treated those characters simply as hexadecimal data. Now, when used in the strings mentioned earlier in this topic, parse treats them as DBCS delimiters. Therefore, change X'0E' and X'0F' to some other values if they do not represent the shift-out and shift-in characters and you are passing them through the parse service.