Data descriptors may be used in compilers,[1] as a software structure at run time in languages like Ada[2] or PL/I, or as a hardware structure in some computers such as Burroughs large systems with their descriptors.
Data descriptors are typically used at run-time to pass argument information to called subroutines.
OpenVMS[3] and Multics[4] have system-wide language-independent standards for argument descriptors.
Descriptors are also used to hold information about data that is only fully known at run-time, such as a dynamically allocated array.
The following descriptor is used by IBM Enterprise PL/I to describe a character string:[5] Here is the source of an array descriptor from Multics.