{
{   A Value  Kind Specifier (VKS) is used to specify to the expression scanner
{ the desired kind of result for the expression.  Thus, a VKS is an  important
{ component  of  each parameter descriptor in a command's parameter descriptor
{ table (PDT).
{
{   A VKS can specify that a value be specified as either  a  particular  kind
{ (with qualifying information for certain kinds) and/or a "keyword value".
{
{   The fields of a value kind specifier are defined as:
{
{   KEYWORD_VALUES: specifies  an  array of "keyword values" allowed as result
{ values.  IF this field is NIL there are no keyword values for the result.
{
{   KIND: specifies the kind of result  allowed.   Certain  value  kinds  have
{ special interpretations or additional qualifying information as follows:
{
{       clc$keyword_value:  specifies that only keyword values are allowed for
{             the result.
{
{       clc$any_value: specifies that any kind of value  is  allowed  for  the
{             result.
{
{       clc$variable_reference:  specifies that the result must be a reference
{             to a previously declared variable.
{
{             ARRAY_ALLOWED: specifies whether an array reference is  allowed.
{
{             VARIABLE_KIND: specifies  the  kind  of  variable  desired.   If
{                   clc$any_value  is  given  for  this  field,  any  kind  of
{                   variable is allowed.
{
{       clc$application_value:  specifies  that  the  "expression"  is  to  be
{             scanned  by  a procedure supplied by the application rather than
{             the standard expression scanner supplied by SCL.
{
{             VALUE_NAME: specifies a name for the application value that  can
{                   be placed in the descriptor field of a clt$value, returned
{                   as  the  value  of  the  $value_kind  function,  used   in
{                   messages, etc.
{
{             SCANNER:  specifies  the  procedure  that  scans the application
{                   value.
{
{                   KIND: specifies  how  the  application  value  scanner  is
{                         located as follows:
{
{                         clc$unspecified_av_scanner:    specifies   that   no
{                               scanner has been supplied  and  that  the  SCL
{                               interpreter should store the application value
{                               in the sequence as an ost$string.  This option
{                               permits the definition of an application value
{                               parameter on, for example, an SCL PROC without
{                               the  need  for  the PROC writer to be aware of
{                               what  procedure   is   responsible   for   the
{                               evaluation of this particular kind of value.
{
{                         clc$linked_av_scanner:  specifies  that a pointer to
{                               the scanning procedure has been supplied.
{
{                               PROC: specifies the pointer to the application
{                                     value scanner.
{
{                         clc$unlinked_av_scanner: specifies that the scanning
{                               procedure must be  loaded  before  it  can  be
{                               called.
{
{                               NAME: specifies  the  name  of the application
{                                     value scanner procedure.
{
{       clc$file_value: specifies that the result must be a <file|catalog>.
{
{       clc$name_value: specifies that the result must be a name.
{
{             MIN_NAME_SIZE: specifies the minimum number of characters  there
{                   must be in the result name.
{
{             MAX_NAME_SIZE:  specifies the maximum number of characters there
{                   may be in the result name.
{
{       clc$string_value: specifies that the result must be a string.
{
{             MIN_STRING_SIZE: specifies  the  minimum  number  of  characters
{                   there must be in the result string.
{
{             MAX_STRING_SIZE:  specifies  the  maximum  number  of characters
{                   there may be in the result string.
{
{       clc$integer_value: specifies that the result must be an integer.
{
{             MIN_INTEGER_VALUE: specifies the minimum value of the result.
{
{             MAX_INTEGER_VALUE: specifies the maximum value of the result.
{
{       clc$real_value: specifies that the result must be a real number.
{
{       clc$boolean_value: specifies that the result must be a boolean.
{
{       clc$status_value: specifies that the result must be an ost$status.
{
