Translate with Table (XLATEWT)


Op Code (Hex) Operand 1 Operand 2 Operand 3
109F Receiver Source Table
Operand 1: Character variable scalar.

Operand 2: Character scalar.

Operand 3: Character scalar.

Description

The source characters are translated under control of the translate table and placed in the receiver. The operation begins with the leftmost character of operand 2 and proceeds character-by-character, left-to-right.

Characters are translated as follows:

If operand 3 is less than 256 bytes long, the character in the source may specify an offset beyond the end of operand 3. If operand 2 is longer than operand 1, then only the leftmost portion of operand 2, equal to the length of operand 1, is translated. If operand 2 is shorter than operand 1, then only the leftmost portion of operand 1, equal to the length of operand 2, is changed. The remaining portion of operand 1 is unchanged.

If operand 1 overlaps with operand 2 and/or 3, the overlapped operands are updated for every character translated. The operation proceeds from left to right, one character at a time. The following example shows the results of an overlapped operands translate operation. Operands 1, 2, and 3 have the same coincident character string with a value of hex 050403020103.

Hex 050403020103-Initial value

Hex 030403020103-After the 1st character is translated

Hex 030103020103-After the 2nd character is translated

Hex 030102020103-After the 3rd character is translated

Hex 030102020103-After the 4th character is translated

Hex 030102020103-After the 5th character is translated

Hex 030102020102-After the 6th character, the final result

Note that the instruction does not use the length specified for the table operand to constrain access of the bytes addressed by the table operand.

If operand 3 is less than 256 characters long, and a source character specifies an offset beyond the end of operand 3, the result characters are obtained from byte locations in the space following operand 3. If that portion of the space is not currently allocated, a space addressing violation  (hex 0601) exception is signaled. If operand 3 is a constant with a length less than 256, source characters specifying offsets greater than or equal to the length of the constant are translated into unpredictable characters.

All of the operands support variable length substring compound scalars.

Substring operand references that allow for a null substring reference (a length value of zero) may be specified for all of the operands on this instruction. Specifying a null substring reference for the table operand does not affect the operation of the instruction. In this case, the bytes addressed by the table operand are still accessed as described above. This is due to the definition of the function of this instruction which does not use the length specified for the table operand to constrain access of the bytes addressed by the table operand. The effect of specifying a null substring reference for either or both of the receiver and the source operands is that no result is set.

Authorization Required

Lock Enforcement

Exceptions

06 Addressing

08 Argument/Parameter

10 Damage Encountered

1C Machine-Dependent

20 Machine Support

22 Object Access

24 Pointer Specification

2E Resource Control Limit

32 Scalar Specification

36 Space Management

44 Protection Violation