
Character data is created by specifying a “C” for the type in a
DC or DS declarative. In this format,
each character occupies 1 byte of storage.
Characters are represented using the EBCDIC encoding sequence where each
character is presented using 8 bits. As
a result, there are 28 = 256 possible bit patterns or characters
which can be formed.
A character field can be created using either of the following
formats,
name DC
dCLn’constant’
or
name DS dCLn
where ‘name’ is an optional
field name
‘d’ is a duplication factor used to create consecutive
copies of the field (default = 1 copy)
‘C’ represents the character data type
‘L’ represents an optional length (default = 1 byte)
‘n’ is the number of bytes in the field
‘constant’ is an initial value of the field in character
format.
It is important to note that if a name for a field is specified,
it will represent the address of the first byte of the field. Additionally, the name of the field will be
associated with a length attribute which equals the number of bytes in the
field. If the “Ln” construction is
omitted in a DS, the length will default to 1 byte. If the “Ln” construction is
omitted in a DC, the length of the constant determines the field length. The
length of a field defined using DC is limited to a maximum of 256 bytes and the
length of a field defined using DS is 65,535 bytes.
When specifying a constant, the length of the constant and the
length of the field may differ in size.
If the length of the constant is shorter than the field length, the assembler
will pad the constant on the right with blanks to fill up the field. If the constant is longer than the field,
the constant will be truncated on the right so that it will fit inside the
field. The assembler does not generate
a warning message when this occurs.
During assembly, fields that were defined consecutively in the
source code with DC’s or DS’s, are assigned consecutive storage locations in
the program according to the value of the location counter which is maintained
by the assembler. For example, in the
fields below, if FIELDA is associated with address x’1000’, then FIELDB is
located at x’1003’ and FIELDC is located at x’100C’.
LOCATION
1000 FIELDA DS CL3
1003 FIELDB DS CL9
100C FIELDC DS CL3
An exception to sequential
allocation of fields occurs if the duplication factor is specified as 0. In this case the location counter is not
advanced and the next field redefines the previous field. Consider the following example and note the
location counter values.
LOCATION
1000 FIELDA DS 0CL5
1000 FIELDB DC CL2’AB’
1006 FIELDC DC CL3’CDE’
In this case, FIELDB and FIELDC are allocated addresses “inside”
FIELDA.

Some Typical DS’s and DC’s:
A
DS CL8 An 8-byte character field
B
DS C A 1 byte character field
C
DS CL2000 A 2000 byte field
NAME
DS 0CL20 A field that is subdivided
LNAME
DS CL10 The first subfield
FNAME
DS CL10 The second subfield
BLANK1
DC CL80’ ’ A blank 80-byte field, L’BLANK1 = 80
BLANK2
DC 80C’ ’ 80 consecutive 1-byte fields, L’BLANK2 =
1
D
DC CL2’ABC’ Constant too long
- right truncation, D= ’AB’
E
DC CL5’AB’ Constant too short - padded, E = ’AB ’
F
DC 3C’XY’ L’F = 2, 3 fields created (XYXYXY), F =
’XY’
DC C’COST’ An unnamed,
initialized field
Note - L’ indicates the length attribute of the following
field.

1. A common coding error that occurs when defining a field with a
constant, is to choose DS instead of DC.
Consider the following example,
LNAME
DS CL10’SMITH’
On first glance, the code
appears correct, and in fact, it is syntactically correct. The assembler will not complain about the
construction. But the constant is
treated as a comment and the field remains uninitialized.
2. Pay careful attention to the constants you provide. If the constant is too long, it will be
truncated. If it is too short, it will be
padded with blanks.
3. Learn to recognize a
working subset of characters and their hexadecimal equivalents. The list below ,consisting of the alphabet,
a blank, the digits, and some punctuation symbols, is a good start.
Character
Hex Equivalent Character Hex Equivalent
A C1 0
F0
B C2
1 F1
C C3
2 F2
D C4
3 F3
E C5
4 F4
F C6
5 F5
G C7
6 F6
H C8
7 F7
I C9
8 F8
J D1
9 F9
K D2
BLANK 40
L D3
,(COMMA) 6B
M D4
. (PERIOD) 4B
N D5
* (ASTERISK) 5C
O D6
P D7
Q D8
R D9
S E2
T E3
U E4
V E5
W E6
X E7
Y E8
Z E9