Note: A hexadecimal string is not a representation of a number. Rather, it is an escape
mechanism that lets a user describe a character in terms of its encoding (and, therefore, is
machine-dependent). In EBCDIC, '40'X is the encoding for a blank. In every case, a string
of the form '.....'x is simply an alternative to a straightforward string. In EBCDIC 'C1'x and
'A' are identical, as are '40'x and a blank, and must be treated identically.
Also note that in Assembler language hexadecimal numbers are represented with the X in front of
the number. REXX only accepts hexadecimal numbers as was described in the previous note. In
this book you will see hexadecimal numbers represented in both ways, but when you are coding a
hexadecimal string in REXX, place the X after the number.
Implementation maximum: The packed length of a hexadecimal string (the string with blanks
removed) cannot exceed 250 bytes.
Binary Strings:
A binary string is a literal string, expressed using a binary representation of its encoding. It is any
sequence of zero or more binary digits (0 or 1) in groups of 8 (bytes) or 4 (nibbles). The first group
may have fewer than four digits; in this case, up to three 0 digits are assumed to the left of the
first digit, making a total of four digits. The groups of digits are optionally separated by one or
more blanks, and the whole sequence is delimited by matching single or double quotation marks
and immediately followed by the symbol b or B. (Neither b nor B can be part of a longer symbol.)
The blanks, which may be present only at byte or nibble boundaries (and not at the beginning or
end of the string), are to aid readability. The language processor ignores them.
A binary string is a literal string formed by packing the binary digits given. If the number of binary
digits is not a multiple of eight, leading zeros are added on the left to make a multiple of eight
before packing. Binary strings allow you to specify characters explicitly, bit by bit.
These are valid binary strings:
'11110000'b /* == 'f0'x */
"101 1101"b /* == '5d'x */
'1'b /* == '00000001'b and '01'x */
'10000 10101010'b /* == '0001 0000 1010 1010'b */
''b /* == '' */
Implementation maximum: The packed length of a hexadecimal string (the string with blanks
removed) cannot exceed 250 bytes.
Symbols:
Symbols are groups of characters, selected from the:
v English alphabetic characters (A–Z and a–z
2
)
v Numeric characters (0–9)
v Characters .!
3
? and _ (underscore).
v Double-Byte Character Set (DBCS) characters (X'41'–X'FE')—ETMODE must be in effect for
these characters to be valid in symbols.
Any lowercase alphabetic character in a symbol is translated to uppercase (that is, lowercase a–z
to uppercase A–Z) before use.
These are valid symbols:
Fred
Albert.Hall
WHERE?
<.H.E.L.L.O> /* This is DBCS */
For information about Double-Byte Character Set (DBCS) characters, see Appendix C,
“Double-Byte Character Set (DBCS) Support,” on page 395.
2. Note that some code pages do not include lowercase English characters a–z.
3. The encoding of the exclamation point character depends on the code page in use.
REXX General Concepts
112
CICS TS for VSE/ESA: REXX Guide