If you are editing a data set that contains both EBCDIC and DBCS
data, note these rules about CHANGE strings:
- The SO and SI characters that delimit the CHANGE string are used
as part of the string only if necessary. If you specify replacement
of an EBCDIC string with a DBCS string, they are used. If you specify
replacement of a DBCS string with another DBCS string, they are not
used.
- If you specify in a CHANGE string that an SO or SI character be
changed to another character, the result is unpredictable.
- If you specify a CHANGE string that causes a field length of zero
and the boundary falls between the SO and SI characters, the SO/SI or
SI/SO character strings that are next to each other are replaced with
a DBCS blank. If the boundary does not fall between the SO and SI
characters, the SO/SI or SI/SO characters that are next to each other
are removed.
- If the lengths of the two strings specified in CHANGE are
different, these actions occur:
- If string1 is shorter than string2, the data to
the right of string1 is shifted to the left up to some
breakpoint. Breakpoints include the border between an EBCDIC field
and a DBCS field, a double or single blank, or the right boundary set
by a BOUNDS command.
- If string1 is longer than string2,
blanks in the record to the right of string1 are used
to make room. When blanks in a DBCS field are used, they are
used in units of 2 bytes.
- If a DBCS field crosses the right boundary, CHANGE can cause an
odd-length DBCS field. If this happens, the right boundary is ignored
and the operation takes place.