{
{   The purpose  of  this  request  is to produce a parameter descriptor table
{ (PDT) from input that follows the form of  an  SCL  PROC  declaration.   The
{ caller  is  responsible  for dynamically providing the input to this request
{ via a procedure specified by the get_line parameter.
{
{       CLP$SCAN_PROC_DECLARATION (INPUT_TYPE, GET_LINE, PROC_NAME_AREA,
{         PARAMETER_NAME_AREA, PARAMETER_AREA, SYMBOLIC_PARAMETER_AREA,
{         EXTRA_INFO_AREA, PROC_NAMES, PDT, SYMBOLIC_PARAMETERS, STATUS)
{
{ INPUT_TYPE: (input) This parameter specifies what the first  "word"  of  the
{       input should be:
{
{       clc$proc_input  - The PROC option is used for scanning the declaration
{             of an SCL PROCedure, or for the dynamic building of  a  pdt  for
{             use by a command processor or program.
{
{       clc$pdt_input  -  The PDT option is used for static building of a pdt,
{             e.g.  when a source language definition of  the  pdt  is  to  be
{             produced.   When this option is selected only one <proc name> is
{             permitted in the declaration and the expressions for the minimum
{             and  maximum number of value sets and values, and the qualifiers
{             for the various value kinds are not evaluated but  are  returned
{             only in symbolic form.
{
{ GET_LINE:  (input)  This parameter specifies the procedure that this request
{       calls to get its input.  The procedure is responsible  for  processing
{       continuation  and  discarding  lines  that  are  empty or contain only
{       spaces or comments.  End  of  input  is  signalled  by  the  procedure
{       returning an empty line (i.e.  one whose size is zero).
{
{             get_line (LINE, INDEX, TOKEN, STATUS)
{
{       LINE: (output)   This   parameter   specifies  the  next  line  to  be
{             processed.
{
{       INDEX: (output) This parameter specifies the index  of  the  character
{             following the first token in the line.
{
{       TOKEN: (output)  This parameter specifies the first token in the line.
{
{       STATUS:  (output)  This parameter specifies the procedure's completion
{             status.
{
{ PROC_NAME_AREA: (input) This parameter specifies the  area  into  which  the
{       array of <proc name>s will be placed.
{
{ PARAMETER_NAME_AREA:  (input)  This  parameter specifies the area into which
{       the array of parameter names will be placed.
{
{ PARAMETER_AREA: (input) This parameter specifies the  area  into  which  the
{       array of parameter descriptors will be placed.
{
{ SYMBOLIC_PARAMETER_AREA: (input) This  parameter  specifies  the  area  into
{       which the array of symbolic parameter information will be placed.
{
{ EXTRA_INFO_AREA:  (input)  This  parameter  specifies  the  area  into which
{       information such as  keyword  value  tables  and  default  value  list
{       strings will be placed.
{
{ PROC_NAMES:  (output)  This  parameter specifies the pointer to the array of
{       <proc name>s.
{
{ PDT: (output) This parameter specifies the Parameter Descriptor Table.
{
{ SYMBOLIC_PARAMETERS: (output) This parameter specifies the pointer to  array
{       of symbolic parameter information.
{
{ STATUS: (output) This parameter specifies the request status.
{       CONDITIONS: clc$min_ecc_proc_declaration ..
{             clc$max_ecc_proc_declaration, clc$min_ecc_expression_result ..
{             clc$max_ecc_expression_result, clc$min_ecc_expression ..
{             clc$max_ecc_expression, clc$min_ecc_function_processing ..
{             clc$max_ecc_function_processing, clc$min_ecc_variable ..
{             clc$max_ecc_variable, clc$min_ecc_file_reference ..
{             clc$max_ecc_file_reference, clc$min_ecc_lexical ..
{             clc$max_ecc_lexical
{       IDENTIFIER: 'CL'
{
