
{ The CLT$PARAMETERS type is used within appropriate CLT$BLOCK's for the
{ storage of command or function parameters.
{
{ The AREA field points to a SEQuence (allocated in OSV$TASK_SHARED_HEAP^)
{ which contains the data for the parameters noted below.
{
{ The EVALUATED field is initially FALSE and is set to TRUE once parameters
{ have been evaluated for the block.
{
{ The NAMES field points to the parameter names array.  The array is stored in
{ the AREA sequence for a procedure, but remains in the work area that was used
{ during parameter evaluation otherwise.  The NAMES field is NIL if the command
{ or function has no parameters or if evaluation was performed via
{ clp$evaluate_parameters.
{
{ The PROCEDURE_PARAMETERS field is TRUE if the block is for a command or
{ function procedure and FALSE otherwise.
{
{ The COMMAND_STATUS_SPECIFIED field is TRUE for a command procedure whose
{ standard status parameter was specified.
{
{ The elements of the ACCESSES field describe the parameters for a procedure.
{ A CLC$PASS_BY_VALUE (non-VAR) parameter is treated like a CLC$READ_ONLY
{ variable.  A CLC$PASS_BY_REFERENCE (VAR) parameter is treated like a
{ CLC$READ_WRITE variable.  The DESCRIPTORs and VALUE_QUALIFIERS for the
{ CLC$PASS_BY_VALUE (non-VAR) parameters are stored in the AREA sequence.  The
{ VALUEs for CLC$PASS_BY_VALUE (non-VAR) parameters are stored in the VALUES
{ sequence.  The DESCRIPTORs for CLC$READ_WRITE (VAR) parameters are stored
{ separately (see variable storage management).  The ACCESSES field is NIL if
{ the procedure has no parameters.
{
{ The VALUES field points to a SEQuence (allocated in OSV$TASK_SHARED_HEAP^)
{ which contains the data for the CLC$PASS_BY_VALUE (non-VAR) parameters.
{
{ The UNBUNDLED_PDT field is used (non-NIL) for a command or function.
{
{ The COMMAND_STATUS_VARIABLE field is non-NIL for a command whose
{ standard status parameter was specified.
{
{ The PARAMETER_VALUE_TABLE field is used (non-NIL) for a command that has
{ parameters and whose parameter evaluation was performed via
{ CLP$SCAN_PARAMETER_LIST.  The data it points to remains in the work area that
{ was used during parameter evaluation.


  TYPE
    clt$parameters = record
      area: ^SEQ ( * ),
      evaluated: boolean,
      names: ^clt$pdt_parameter_names,
      case procedure_parameters: boolean of
      = TRUE =
        command_status_specified: boolean,
        accesses: ^clt$parameter_accesses,
        values: ^SEQ ( * ),
      = FALSE =
        unbundled_pdt: ^clt$unbundled_pdt,
        command_status_variable: ^clt$variable_ref_expression,
        parameter_value_table: ^clt$parameter_value_table,
      casend,
    recend;

*copyc clt$parameter_accesses
*copyc clt$parameter_value_table
*copyc clt$pdt_parameter_names
*copyc clt$unbundled_pdt
*copyc clt$variable_ref_expression
