{
{   The purpose of this request is to build a data_representation from a
{ format string and one or more clt$data_values.
{
{   This representation is returned in a sequence.  The first data item in the
{ sequence is a clt$data_representation_count, i.e.  the number of strings
{ used in the representation.  The remaining data is a series of
{ clt$string_size, clt$string_value pairs with the length of each
{ clt$string_value determined by the corresponding clt$string_size.
{
{       CLP$FORMAT_VALUES (FORMAT_STRING, VALUE, MAX_STRING,
{         WORK_AREA, DATA_REPRESENTATION, STATUS)
{
{ FORMAT_STRING: (input) This parameter specifies the format of the text lines.
{       This string consists of display characters and formatting directives.
{       The display characters are copied to the text lines directly.  The
{       format directives all start with a "+" character and have the following
{       effects.  (nn'th data_value here refers to the nn'th data_value of
{       the data_value list element currently in effect.)
{
{       If format string is NIL then the format '+S' is used.
{
{       +Enn Define a soft end of line.  This position will be used to break
{             the line if the line extends past the string width.  nn defines
{             the indentation for the new line.
{
{       +Fc: Define a fill character 'c'.  This must be immediately followed
{             by another directive with no interveening '+' character.  The
{             fill character is used with the +W, +H, and +X directives.
{
{       +Hnn: Horizontally tab to column.  If nn is specified, it tabs to
{             column nn starting a new line if the current column is too large.
{             If nn is ommitted, it tabs to the next tab of 9, 17, 25, etc.
{             The fill character is used to pad the line to the column.
{
{       +K: Keep the text between pairs of +K directives together on one line.
{
{       +Lxnn: Puts the specified data value label to the string.
{             If nn is specified and not 0, the nn'th data value label is used.
{             If nn is not specified, the next data value label is used.  If nn
{             is 0, the label of the previously referenced value is used.  The
{             'x' specifies how to show record labels.  'U' specifies that they
{             be in upper case characters.  'L' specifies that they be in lower
{             case characters.  'I' specifies that only the initial letters
{             of words be capitalized.  If the 'x' is not specified, 'L' is
{             used.
{
{       +Nnn: Specifies a hard end of line.  This causes the current line to
{             be ended and a new line started with nn leading spaces.
{
{       +Pxnn: Convert the specified data value using element representation.
{             If nn is specified and not 0, the nn'th data value is used.
{             If nn is not specified, the next data value is used.  If nn
{             is 0, the previously referenced value is used.  The 'x'
{             specifies how to convert names.  'U' specifies that names be in
{             upper case characters.  'L' specifies that names be in lower
{             case characters.  'I' specifies that only the initial letters
{             of words be capitalized.  If the 'x' is not specified, 'L' is
{             used.
{
{       +R: Causes a portion of the format to be repeated.  The portion
{             repeated is between '+R' pairs at the same nesting level (see
{             '+('.  The repeated format is processed until all values at
{             this nesting level are used.  If all values have been used when
{             the '+R' is encountered, the repeated portion is not processed
{             at all.
{
{       +Sxnn: Convert the specified data value using source representation.
{             If nn is specified and not 0, the nn'th data value is used.
{             If nn is not specified, the next data value is used.  If nn
{             is 0, the previously referenced value is used.  The 'x'
{             specifies how to convert names.  'U' specifies that names be in
{             upper case characters.  'L' specifies that names be in lower
{             case characters.  'I' specifies that only the initial letters
{             of words be capitalized.  If the 'x' is not specified, 'L' is
{             used.
{
{       +Wjnn: Define a fixed field width for the display of the value that
{             follows as 'nn'.  If the value is larger than this width, it will
{             be truncated (on the left for right justification; on the right
{             for left justification and center justification).  If the value
{             is smaller than this width, it will be justified as specified
{             and padded by the fill character as defined by the 'F' directive.
{             'j' optionally specifies the justification.  'R' selects right
{             justification, 'L' selects left justification (the default) and
{             'C' selects center justification.  If nn is not specified a
{             value of 31 is used.  NOTE:  This must be immediately followed
{             by another directive with no interveening '+' character.
{
{       +Xnn: Expand count as fill character.  The fill character is put to
{             the string nn times.
{
{       +(nn: Move to the next nesting level.  This causes the '+P' and '+S'
{             directives to refer to subvalues of the next (or nnth) value.
{
{       +): Return to the previous nesting level.
{
{       ++: Places a '+' into the string.
{
{       +-: Places the null string '' into the string.  This allows one to
{             follow a directive by a number without the interpretation of
{             the number as part of the directive.  eg. +p+-5 means put the
{             next parameter to the string then put '5' to the string.
{
{ MAX_STRING: (input)  This parameter specifies the maximum length of strings
{       in the representation of the value.
{
{ WORK_AREA: (input, output)  This parameter specifies an area of storage that
{       will be used to construct the value's representation.  The current
{       position of this sequence pointer is updated to reflect the amount of
{       storage used by the request.  The value's respresentation occupies the
{       used part of this sequence.
{
{ DATA_REPRESENTATION: (output)  This parameter specifies the data value's
{       representation as described above.
{
{ STATUS: (output) This parameter specifies the request status.
{       CONDITIONS: cle$work_area_overflow
{                   cle$bad_data_rep_option
{                   cle$bad_data_value
{
