PL/1 offers the programmer nearly complete control over data attributes. it is possible to specify a variable downto the number of digits or bits it is to occupy, and the compiler will provide this if possible. The Compiler can also, if requested, check assignment to this variable to insure that the declared size is not exceeded. Strings can have constant lenghts or vary from zero to a maximum number of bits or bytes, with the compiler keeping track of the current lenght.
PL/1 provides a wide variety of data types, including the usual arithmetic types FIXED,FLOAT,REAL or COMPLEX. it offers true strings(CHARACTER or BIT) with enforcement of declared maximum lengths, unlike C which does no checking on assignments to strings. Other data types are POINTER and OFFSET, and GRAPHIC(Double-byte characters).PICTURE data, provides automatic editing and de-editing on assignments according to a predefined mask. More esoteric data types are LABEL and ENTRY variables, AREA,EVENTS,FILE and so on.