?? RIGHT := 110 ??
?? NEWTITLE := 'NOS/VE Accounting and Validation: Administer Validations' ??
MODULE avm$administer_validations;
*copyc avc$compile_test_code
?? NEWTITLE := 'Global Declarations referenced by this module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc ame$condition_codes
*copyc avc$validation_record_names
*copyc ave$admin_validations_errors
*copyc ave$template_file_mgr_errors
*copyc avt$validation_key
*copyc avv$field_kind_names
?? POP ??
*copyc avp$change_account_record
*copyc avp$change_account_member_rec
*copyc avp$change_acct_proj_field
*copyc avp$change_acct_proj_value
*copyc avp$change_accum_limit_field
*copyc avp$change_accum_limit_value
*copyc avp$change_capability_field
*copyc avp$change_capability_value
*copyc avp$change_date_time_field
*copyc avp$change_date_time_value
*copyc avp$change_file_field
*copyc avp$change_file_value
*copyc avp$change_integer_field
*copyc avp$change_integer_value
*copyc avp$change_job_class_field
*copyc avp$change_job_class_value
*copyc avp$change_labeled_names_field
*copyc avp$change_labeled_names_value
*copyc avp$change_limit_field
*copyc avp$change_limit_value
*copyc avp$change_login_password_field
*copyc avp$change_login_password_value
*copyc avp$change_name_field
*copyc avp$change_name_value
*copyc avp$change_project_record
*copyc avp$change_project_member_rec
*copyc avp$change_real_field
*copyc avp$change_real_value
*copyc avp$change_ring_privilege_field
*copyc avp$change_ring_privilege_value
*copyc avp$change_string_field
*copyc avp$change_string_value
*copyc avp$change_user_record
*copyc avp$change_val_field_name
*copyc avp$check_for_served_family
*copyc avp$close_validation_file
*copyc avp$create_account_member_rec
*copyc avp$create_account_record
*copyc avp$create_accum_limit_field
*copyc avp$create_capability_field
*copyc avp$create_date_time_field
*copyc avp$create_file_field
*copyc avp$create_integer_field
*copyc avp$create_limit_field
*copyc avp$create_name_field
*copyc avp$create_project_member_rec
*copyc avp$create_project_record
*copyc avp$create_real_field
*copyc avp$create_string_field
*copyc avp$create_user_record
*copyc avp$delete_account_record
*copyc avp$delete_account_member_rec
*copyc avp$delete_project_record
*copyc avp$delete_project_member_rec
*copyc avp$delete_user_record
*copyc avp$delete_validation_field
*copyc avp$end_subutility_session
*copyc avp$family_administrator
*copyc avp$get_acct_proj_display_value
*copyc avp$get_acct_proj_field_desc
*copyc avp$get_accum_limit_display_val
*copyc avp$get_accum_limit_field_desc
*copyc avp$get_capabil_display_value
*copyc avp$get_capability
*copyc avp$get_capability_field_desc
*copyc avp$get_command_table
*copyc avp$get_date_time_display_value
*copyc avp$get_date_time_field_desc
*copyc avp$get_field_name
*copyc avp$get_file_display_value
*copyc avp$get_file_field_desc
*copyc avp$get_integer_display_value
*copyc avp$get_integer_field_desc
*copyc avp$get_job_class_display_value
*copyc avp$get_job_class_field_desc
*copyc avp$get_labeled_names_dis_value
*copyc avp$get_labeled_names_field_des
*copyc avp$get_limit_display_value
*copyc avp$get_limit_field_desc
*copyc avp$get_login_pw_display_value
*copyc avp$get_login_pw_field_desc
*copyc avp$get_name_display_value
*copyc avp$get_name_field_desc
*copyc avp$get_real_display_value
*copyc avp$get_real_field_desc
*copyc avp$get_ring_priv_display_value
*copyc avp$get_ring_priv_field_desc
*copyc avp$get_string_display_value
*copyc avp$get_string_field_desc
*copyc avp$get_validation_field_kind
*copyc avp$get_validation_field_names
*copyc avp$make_acct_proj_scl_value
*copyc avp$make_accum_limit_scl_value
*copyc avp$make_capability_scl_value
*copyc avp$make_date_time_scl_value
*copyc avp$make_integer_scl_value
*copyc avp$make_job_class_scl_value
*copyc avp$make_labeled_names_scl_valu
*copyc avp$make_limit_scl_value
*copyc avp$make_login_pw_scl_value
*copyc avp$make_name_scl_value
*copyc avp$make_real_scl_value
*copyc avp$make_ring_priv_scl_value
*copyc avp$make_string_scl_value
*copyc avp$open_validation_file
*copyc avp$read_account_member_record
*copyc avp$read_account_record
*copyc avp$read_project_member_record
*copyc avp$read_project_record
*copyc avp$read_user_record
*copyc avp$release_record_id
*copyc avp$restore_validation_field
*copyc avp$system_administrator
*copyc avp$verify_validation_name
*copyc clp$begin_utility
?? NEWTITLE := 'Dummy title' ??
*copyc clp$build_standard_title
*copyc clp$change_pdt
*copyc clp$close_display
*copyc clp$convert_date_time_to_string
*copyc clp$convert_integer_to_string
*copyc clp$convert_integer_to_rjstring
*copyc clp$convert_string_to_integer
*copyc clp$convert_string_to_name
*copyc clp$convert_value_to_string
*copyc clp$count_list_elements
*copyc clp$end_include
*copyc clp$end_utility
*copyc clp$evaluate_file_reference
*copyc clp$evaluate_parameters
*copyc clp$get_command_origin
*copyc clp$get_path_description
*copyc clp$include_file
*copyc clp$make_list_value
*copyc clp$make_name_value
*copyc clp$make_record_value
*copyc clp$make_unspecified_value
*copyc clp$new_display_line
*copyc clp$new_display_page
*copyc clp$new_page_procedure
*copyc clp$only_validate_name
*copyc clp$open_display_reference
*copyc clp$put_display
*copyc clp$put_partial_display
*copyc clp$reset_for_next_display_page
*copyc clp$trimmed_string_size
*copyc fsp$build_file_ref_from_elems
*copyc fsp$path_element
*copyc jmc$system_family
*copyc osp$append_status_parameter
*copyc osp$disestablish_cond_handler
*copyc osp$establish_block_exit_hndlr
*copyc osp$generate_message
*copyc osp$generate_output_message
*copyc osp$set_status_abnormal
*copyc pmp$get_account_project
*copyc pmp$get_default_date_time_form
*copyc pmp$get_family_names
*copyc pmp$get_user_identification
*copyc pmp$format_compact_date
*copyc pmp$format_compact_time
*copyc sfp$convert_stat_code_to_name
*copyc sfp$convert_stat_name_to_code
?? OLDTITLE ??
?? NEWTITLE := 'Global Declarations declared by this module', EJECT ??

{ The following type is used to keep track of information about each ADMINISTER_VALIDATIONS subutility that
{ gets invoked.  The information is kept in a "last in first out" chain.

  TYPE
    avt$subutility_session_info = record
      id: ost$name,
      rewrite_record: boolean,
      key: avt$validation_key,
      previous_account_default: avt$account_name,
      previous_project_default: avt$project_name,
      previous_user_default: ost$user_name,
      validation_record_name: ost$name,
      subutility_name: ost$name,
      subutility_prompt: string (osc$max_name_size),
      previous_session_information: ^avt$subutility_session_info,
    recend;

{ The following constants define the utility names and prompts for ADMINISTER_VALIDATIONS and its
{ subutilities.

  CONST
    avc$admv_utility_name = 'ADMINISTER_VALIDATIONS         ',
    avc$admv_utility_prompt = 'ADMV',
    avc$chaa_utility_name = 'CHANGE_ACCOUNT                 ',
    avc$chaa_utility_prompt = 'CHAA',
    avc$chaam_utility_name = 'CHANGE_ACCOUNT_MEMBER          ',
    avc$chaam_utility_prompt = 'CHAAM',
    avc$chap_utility_name = 'CHANGE_PROJECT                 ',
    avc$chap_utility_prompt = 'CHAP',
    avc$chapm_utility_name = 'CHANGE_PROJECT_MEMBER          ',
    avc$chapm_utility_prompt = 'CHAPM',
    avc$chau_utility_name = 'CHANGE_USER                    ',
    avc$chau_utility_prompt = 'CHAU',
    avc$crea_utility_name = 'CREATE_ACCOUNT                 ',
    avc$crea_utility_prompt = 'CREA',
    avc$cream_utility_name = 'CREATE_ACCOUNT_MEMBER          ',
    avc$cream_utility_prompt = 'CREAM',
    avc$crep_utility_name = 'CREATE_PROJECT                 ',
    avc$crep_utility_prompt = 'CREP',
    avc$crepm_utility_name = 'CREATE_PROJECT_MEMBER          ',
    avc$crepm_utility_prompt = 'CREPM',
    avc$creu_utility_name = 'CREATE_USER                    ',
    avc$creu_utility_prompt = 'CREU',
    avc$manaf_utility_name = 'MANAGE_ACCOUNT_FIELDS          ',
    avc$manaf_utility_prompt = 'MANAF',
    avc$manamf_utility_name = 'MANAGE_ACCOUNT_MEMBER_FIELDS   ',
    avc$manamf_utility_prompt = 'MANAMF',
    avc$manpf_utility_name = 'MANAGE_PROJECT_FIELDS          ',
    avc$manpf_utility_prompt = 'MANPF',
    avc$manpmf_utility_name = 'MANAGE_PROJECT_MEMBER_FIELDS   ',
    avc$manpmf_utility_prompt = 'MANPMF',
    avc$manuf_utility_name = 'MANAGE_USER_FIELDS             ',
    avc$manuf_utility_prompt = 'MANUF';

  VAR
    avv$unlimited_date_time: [STATIC, READ] ost$date_time := [255, 12, 31, 23, 59, 59, 999];

  VAR
    avv$unlimited_time_increment: [STATIC, READ] pmt$time_increment :=
          [osc$max_integer, osc$max_integer, osc$max_integer, osc$max_integer, osc$max_integer,
          osc$max_integer, osc$max_integer];

  VAR
    avv$zero_time_increment: [STATIC, READ] pmt$time_increment := [0, 0, 0, 0, 0, 0, 0];

{ Function table used in ADMV subutilities.

{ table admv_subutil_func_table type=function
{ function ($current_object, $co)                        p=avp$$current_object          a=hidden
{ function ($validation_field_names, $vfn)               p=avp$$validation_field_names  a=hidden
{ function ($validation, $validation_field, $vf)         p=avp$$validation
{ tablend

?? PUSH (LISTEXT := ON) ??

VAR
  admv_subutil_func_table: [STATIC, READ] ^clt$function_processor_table := ^admv_subutil_func_table_entries,

  admv_subutil_func_table_entries: [STATIC, READ] array [1 .. 7] of clt$function_proc_table_entry := [
  {} ['$CO                            ', clc$abbreviation_entry, clc$hidden_entry, 1, clc$linked_call,
        ^avp$$current_object],
  {} ['$CURRENT_OBJECT                ', clc$nominal_entry, clc$hidden_entry, 1, clc$linked_call,
        ^avp$$current_object],
  {} ['$VALIDATION                    ', clc$nominal_entry, clc$normal_usage_entry, 3, clc$linked_call,
         ^avp$$validation],
  {} ['$VALIDATION_FIELD              ', clc$alias_entry, clc$normal_usage_entry, 3, clc$linked_call,
        ^avp$$validation],
  {} ['$VALIDATION_FIELD_NAMES        ', clc$nominal_entry, clc$hidden_entry, 2, clc$linked_call,
        ^avp$$validation_field_names],
  {} ['$VF                            ', clc$abbreviation_entry, clc$normal_usage_entry, 3,
        clc$linked_call, ^avp$$validation],
  {} ['$VFN                           ', clc$abbreviation_entry, clc$hidden_entry, 2, clc$linked_call,
        ^avp$$validation_field_names]];

?? POP ??

  VAR
    account_administrator: boolean,
    current_subutility_session_info: ^avt$subutility_session_info := NIL,
    default_account: avt$account_name,
    default_project: avt$project_name,
    default_user: ost$user_name,
    executing_account: avt$account_name,
    executing_family: ost$family_name,
    executing_project: avt$project_name,
    executing_user: ost$user_name,
    project_administrator: boolean,
    user_administrator: boolean,
    validation_file_information: avt$template_file_information,
    validation_file_open: boolean := FALSE,
    validation_file_path: fst$path;

*copyc clv$display_variables
?? OLDTITLE ??
?? NEWTITLE := 'avp$administer_validations', EJECT ??

{ PURPOSE:
{   This is the starting point for the ADMINISTER_VALIDATIONS utility.  ADMINISTER_VALIDATIONS is used to
{   create and maintain user, account, account member, project, and project member validations.

  PROCEDURE [XDCL] avp$administer_validations
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

?? PUSH (LISTEXT := ON) ??
    ?IF avc$compile_test_code THEN
?? POP ??

{ PROCEDURE (osm$admv) administer_validations, admv (
{   validation_level, vl: key
{       (user, u)
{       (account, a)
{       (project, p)
{     keyend = user
{   administrator, a: key
{       (system, s)
{       (family, f)
{       none
{     keyend = family
{   status)

?? PUSH (LISTEXT := ON) ??

      VAR
        pdt: [STATIC, READ, cls$declaration_section] record
          header: clt$pdt_header,
          names: array [1 .. 5] of clt$pdt_parameter_name,
          parameters: array [1 .. 3] of clt$pdt_parameter,
          type1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 6] of clt$keyword_specification,
            default_value: string (4),
          recend,
          type2: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 5] of clt$keyword_specification,
            default_value: string (6),
          recend,
          type3: record
            header: clt$type_specification_header,
          recend,
        recend := [[1, [88, 4, 21, 13, 55, 13, 534], clc$command, 5, 3, 0, 0, 0, 0, 3, 'OSM$ADMV'],
              [['A                              ', clc$abbreviation_entry, 2],
              ['ADMINISTRATOR                  ', clc$nominal_entry, 2],
              ['STATUS                         ', clc$nominal_entry, 3],
              ['VALIDATION_LEVEL               ', clc$nominal_entry, 1],
              ['VL                             ', clc$abbreviation_entry, 1]], [

{ PARAMETER 1

        [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
              clc$standard_parameter_checking, 229, clc$optional_default_parameter, 0, 4],

{ PARAMETER 2

        [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
              clc$standard_parameter_checking, 192, clc$optional_default_parameter, 0, 6],

{ PARAMETER 3

        [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
              clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

        [[1, 0, clc$keyword_type], [6], [['A                              ', clc$abbreviation_entry,
              clc$normal_usage_entry, 2], ['ACCOUNT                        ', clc$nominal_entry,
              clc$normal_usage_entry, 2], ['P                              ', clc$abbreviation_entry,
              clc$normal_usage_entry, 3], ['PROJECT                        ', clc$nominal_entry,
              clc$normal_usage_entry, 3], ['U                              ', clc$abbreviation_entry,
              clc$normal_usage_entry, 1], ['USER                           ', clc$nominal_entry,
              clc$normal_usage_entry, 1]], 'user'],

{ PARAMETER 2

        [[1, 0, clc$keyword_type], [5], [['F                              ', clc$abbreviation_entry,
              clc$normal_usage_entry, 2], ['FAMILY                         ', clc$nominal_entry,
              clc$normal_usage_entry, 2], ['NONE                           ', clc$nominal_entry,
              clc$normal_usage_entry, 3], ['S                              ', clc$abbreviation_entry,
              clc$normal_usage_entry, 1], ['SYSTEM                         ', clc$nominal_entry,
              clc$normal_usage_entry, 1]], 'family'],

{ PARAMETER 3

        [[1, 0, clc$status_type]]];

?? POP ??

      CONST
        p$validation_level = 1,
        p$administrator = 2,
        p$status = 3;

      VAR
        pvt: array [1 .. 3] of clt$parameter_value;

?? PUSH (LISTEXT := ON) ??
    ?ELSE
?? POP ??

{ PROCEDURE (osm$admv) administer_validations, admv (
{   status)

?? PUSH (LISTEXT := ON) ??

      VAR
        pdt: [STATIC, READ, cls$declaration_section] record
          header: clt$pdt_header,
          names: array [1 .. 1] of clt$pdt_parameter_name,
          parameters: array [1 .. 1] of clt$pdt_parameter,
          type1: record
            header: clt$type_specification_header,
          recend,
        recend := [[1, [88, 4, 21, 13, 56, 4, 303], clc$command, 1, 1, 0, 0, 0, 0, 1, 'OSM$ADMV'],
              [['STATUS                         ', clc$nominal_entry, 1]], [

{ PARAMETER 1

        [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
              clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

        [[1, 0, clc$status_type]]];

?? POP ??

      CONST
        p$status = 1;

      VAR
        pvt: array [1 .. 1] of clt$parameter_value;

?? PUSH (LISTEXT := ON) ??
    ?IFEND
?? POP ??
?? EJECT ??

{ The following command table has been manually modified to remove the section and read attributes in order
{ to allow it to be altered at run time.  If the command table is rebuilt, the section and read attributes
{ must be removed.

{ table admv_command_table type=command
{ command (change_account, chaa)                                   p=change_account
{ command (change_account_member, chaam)                           p=change_account_member
{ command (change_default_value, change_default_values, chadv)     p=change_default_values
{ command (change_project, chap)                                   p=change_project
{ command (change_project_member, chapm)                           p=change_project_member
{ command (change_user, chau)                                      p=change_user
{ command (create_account, crea)                                   p=create_account
{ command (create_account_member, cream)                           p=create_account_member
{ command (create_project, crep)                                   p=create_project
{ command (create_project_member, crepm)                           p=create_project_member
{ command (create_user, creu)                                      p=create_user
{ command (delete_account, delete_accounts, dela)                  p=delete_accounts
{ command (delete_account_member, delete_account_members, delam)   p=delete_account_members
{ command (delete_project, delete_projects, delp)                  p=delete_projects
{ command (delete_project_member, delete_project_members, delpm)   p=delete_project_members
{ command (delete_user, delete_users, delu)                        p=delete_users
{ command (display_account, display_accounts, disa)                p=avp$display_account_command
{ command (display_account_member, display_account_members, disam) p=avp$display_acct_member_command
{ command (display_project, display_projects, disp)                p=avp$display_project_command
{ command (display_project_member, display_project_members, dispm) p=avp$display_proj_member_command
{ command (display_user, display_users, disu)                      p=avp$display_user_command
{ command (quit, end_administer_validations, endav, qui)           p=end_administer_validations
{ command (manage_account_fields, manaf)                           p=manage_account_fields
{ command (manage_account_member_fields, manamf)                   p=manage_account_member_fields
{ command (manage_project_fields, manpf)                           p=manage_project_fields
{ command (manage_project_member_fields, manpmf)                   p=manage_project_member_fields
{ command (manage_user_fields, manuf)                              p=manage_user_fields
{ command (use_validation_file, usevf)                             p=use_validation_file l=manual
{ tablend

?? PUSH (LISTEXT := ON) ??

    VAR
      admv_command_table: [STATIC] ^clt$command_table := ^admv_command_table_entries,

      admv_command_table_entries: [STATIC] array [1 .. 69] of clt$command_table_entry := [
            {} ['CHAA                           ', clc$abbreviation_entry, clc$advertised_entry, 1,
            clc$automatically_log, clc$linked_call, ^change_account],
            {} ['CHAAM                          ', clc$abbreviation_entry, clc$advertised_entry, 2,
            clc$automatically_log, clc$linked_call, ^change_account_member],
            {} ['CHADV                          ', clc$abbreviation_entry, clc$advertised_entry, 3,
            clc$automatically_log, clc$linked_call, ^change_default_values],
            {} ['CHANGE_ACCOUNT                 ', clc$nominal_entry, clc$advertised_entry, 1,
            clc$automatically_log, clc$linked_call, ^change_account],
            {} ['CHANGE_ACCOUNT_MEMBER          ', clc$nominal_entry, clc$advertised_entry, 2,
            clc$automatically_log, clc$linked_call, ^change_account_member],
            {} ['CHANGE_DEFAULT_VALUE           ', clc$nominal_entry, clc$advertised_entry, 3,
            clc$automatically_log, clc$linked_call, ^change_default_values],
            {} ['CHANGE_DEFAULT_VALUES          ', clc$alias_entry, clc$advertised_entry, 3,
            clc$automatically_log, clc$linked_call, ^change_default_values],
            {} ['CHANGE_PROJECT                 ', clc$nominal_entry, clc$advertised_entry, 4,
            clc$automatically_log, clc$linked_call, ^change_project],
            {} ['CHANGE_PROJECT_MEMBER          ', clc$nominal_entry, clc$advertised_entry, 5,
            clc$automatically_log, clc$linked_call, ^change_project_member],
            {} ['CHANGE_USER                    ', clc$nominal_entry, clc$advertised_entry, 6,
            clc$automatically_log, clc$linked_call, ^change_user],
            {} ['CHAP                           ', clc$abbreviation_entry, clc$advertised_entry, 4,
            clc$automatically_log, clc$linked_call, ^change_project],
            {} ['CHAPM                          ', clc$abbreviation_entry, clc$advertised_entry, 5,
            clc$automatically_log, clc$linked_call, ^change_project_member],
            {} ['CHAU                           ', clc$abbreviation_entry, clc$advertised_entry, 6,
            clc$automatically_log, clc$linked_call, ^change_user],
            {} ['CREA                           ', clc$abbreviation_entry, clc$advertised_entry, 7,
            clc$automatically_log, clc$linked_call, ^create_account],
            {} ['CREAM                          ', clc$abbreviation_entry, clc$advertised_entry, 8,
            clc$automatically_log, clc$linked_call, ^create_account_member],
            {} ['CREATE_ACCOUNT                 ', clc$nominal_entry, clc$advertised_entry, 7,
            clc$automatically_log, clc$linked_call, ^create_account],
            {} ['CREATE_ACCOUNT_MEMBER          ', clc$nominal_entry, clc$advertised_entry, 8,
            clc$automatically_log, clc$linked_call, ^create_account_member],
            {} ['CREATE_PROJECT                 ', clc$nominal_entry, clc$advertised_entry, 9,
            clc$automatically_log, clc$linked_call, ^create_project],
            {} ['CREATE_PROJECT_MEMBER          ', clc$nominal_entry, clc$advertised_entry, 10,
            clc$automatically_log, clc$linked_call, ^create_project_member],
            {} ['CREATE_USER                    ', clc$nominal_entry, clc$advertised_entry, 11,
            clc$automatically_log, clc$linked_call, ^create_user],
            {} ['CREP                           ', clc$abbreviation_entry, clc$advertised_entry, 9,
            clc$automatically_log, clc$linked_call, ^create_project],
            {} ['CREPM                          ', clc$abbreviation_entry, clc$advertised_entry, 10,
            clc$automatically_log, clc$linked_call, ^create_project_member],
            {} ['CREU                           ', clc$abbreviation_entry, clc$advertised_entry, 11,
            clc$automatically_log, clc$linked_call, ^create_user],
            {} ['DELA                           ', clc$abbreviation_entry, clc$advertised_entry, 12,
            clc$automatically_log, clc$linked_call, ^delete_accounts],
            {} ['DELAM                          ', clc$abbreviation_entry, clc$advertised_entry, 13,
            clc$automatically_log, clc$linked_call, ^delete_account_members],
            {} ['DELETE_ACCOUNT                 ', clc$nominal_entry, clc$advertised_entry, 12,
            clc$automatically_log, clc$linked_call, ^delete_accounts],
            {} ['DELETE_ACCOUNTS                ', clc$alias_entry, clc$advertised_entry, 12,
            clc$automatically_log, clc$linked_call, ^delete_accounts],
            {} ['DELETE_ACCOUNT_MEMBER          ', clc$nominal_entry, clc$advertised_entry, 13,
            clc$automatically_log, clc$linked_call, ^delete_account_members],
            {} ['DELETE_ACCOUNT_MEMBERS         ', clc$alias_entry, clc$advertised_entry, 13,
            clc$automatically_log, clc$linked_call, ^delete_account_members],
            {} ['DELETE_PROJECT                 ', clc$nominal_entry, clc$advertised_entry, 14,
            clc$automatically_log, clc$linked_call, ^delete_projects],
            {} ['DELETE_PROJECTS                ', clc$alias_entry, clc$advertised_entry, 14,
            clc$automatically_log, clc$linked_call, ^delete_projects],
            {} ['DELETE_PROJECT_MEMBER          ', clc$nominal_entry, clc$advertised_entry, 15,
            clc$automatically_log, clc$linked_call, ^delete_project_members],
            {} ['DELETE_PROJECT_MEMBERS         ', clc$alias_entry, clc$advertised_entry, 15,
            clc$automatically_log, clc$linked_call, ^delete_project_members],
            {} ['DELETE_USER                    ', clc$nominal_entry, clc$advertised_entry, 16,
            clc$automatically_log, clc$linked_call, ^delete_users],
            {} ['DELETE_USERS                   ', clc$alias_entry, clc$advertised_entry, 16,
            clc$automatically_log, clc$linked_call, ^delete_users],
            {} ['DELP                           ', clc$abbreviation_entry, clc$advertised_entry, 14,
            clc$automatically_log, clc$linked_call, ^delete_projects],
            {} ['DELPM                          ', clc$abbreviation_entry, clc$advertised_entry, 15,
            clc$automatically_log, clc$linked_call, ^delete_project_members],
            {} ['DELU                           ', clc$abbreviation_entry, clc$advertised_entry, 16,
            clc$automatically_log, clc$linked_call, ^delete_users],
            {} ['DISA                           ', clc$abbreviation_entry, clc$advertised_entry, 17,
            clc$automatically_log, clc$linked_call, ^avp$display_account_command],
            {} ['DISAM                          ', clc$abbreviation_entry, clc$advertised_entry, 18,
            clc$automatically_log, clc$linked_call, ^avp$display_acct_member_command],
            {} ['DISP                           ', clc$abbreviation_entry, clc$advertised_entry, 19,
            clc$automatically_log, clc$linked_call, ^avp$display_project_command],
            {} ['DISPLAY_ACCOUNT                ', clc$nominal_entry, clc$advertised_entry, 17,
            clc$automatically_log, clc$linked_call, ^avp$display_account_command],
            {} ['DISPLAY_ACCOUNTS               ', clc$alias_entry, clc$advertised_entry, 17,
            clc$automatically_log, clc$linked_call, ^avp$display_account_command],
            {} ['DISPLAY_ACCOUNT_MEMBER         ', clc$nominal_entry, clc$advertised_entry, 18,
            clc$automatically_log, clc$linked_call, ^avp$display_acct_member_command],
            {} ['DISPLAY_ACCOUNT_MEMBERS        ', clc$alias_entry, clc$advertised_entry, 18,
            clc$automatically_log, clc$linked_call, ^avp$display_acct_member_command],
            {} ['DISPLAY_PROJECT                ', clc$nominal_entry, clc$advertised_entry, 19,
            clc$automatically_log, clc$linked_call, ^avp$display_project_command],
            {} ['DISPLAY_PROJECTS               ', clc$alias_entry, clc$advertised_entry, 19,
            clc$automatically_log, clc$linked_call, ^avp$display_project_command],
            {} ['DISPLAY_PROJECT_MEMBER         ', clc$nominal_entry, clc$advertised_entry, 20,
            clc$automatically_log, clc$linked_call, ^avp$display_proj_member_command],
            {} ['DISPLAY_PROJECT_MEMBERS        ', clc$alias_entry, clc$advertised_entry, 20,
            clc$automatically_log, clc$linked_call, ^avp$display_proj_member_command],
            {} ['DISPLAY_USER                   ', clc$nominal_entry, clc$advertised_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_user_command],
            {} ['DISPLAY_USERS                  ', clc$alias_entry, clc$advertised_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_user_command],
            {} ['DISPM                          ', clc$abbreviation_entry, clc$advertised_entry, 20,
            clc$automatically_log, clc$linked_call, ^avp$display_proj_member_command],
            {} ['DISU                           ', clc$abbreviation_entry, clc$advertised_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_user_command],
            {} ['ENDAV                          ', clc$alias_entry, clc$advertised_entry, 22,
            clc$automatically_log, clc$linked_call, ^end_administer_validations],
            {} ['END_ADMINISTER_VALIDATIONS     ', clc$alias_entry, clc$advertised_entry, 22,
            clc$automatically_log, clc$linked_call, ^end_administer_validations],
            {} ['MANAF                          ', clc$abbreviation_entry, clc$advertised_entry, 23,
            clc$automatically_log, clc$linked_call, ^manage_account_fields],
            {} ['MANAGE_ACCOUNT_FIELDS          ', clc$nominal_entry, clc$advertised_entry, 23,
            clc$automatically_log, clc$linked_call, ^manage_account_fields],
            {} ['MANAGE_ACCOUNT_MEMBER_FIELDS   ', clc$nominal_entry, clc$advertised_entry, 24,
            clc$automatically_log, clc$linked_call, ^manage_account_member_fields],
            {} ['MANAGE_PROJECT_FIELDS          ', clc$nominal_entry, clc$advertised_entry, 25,
            clc$automatically_log, clc$linked_call, ^manage_project_fields],
            {} ['MANAGE_PROJECT_MEMBER_FIELDS   ', clc$nominal_entry, clc$advertised_entry, 26,
            clc$automatically_log, clc$linked_call, ^manage_project_member_fields],
            {} ['MANAGE_USER_FIELDS             ', clc$nominal_entry, clc$advertised_entry, 27,
            clc$automatically_log, clc$linked_call, ^manage_user_fields],
            {} ['MANAMF                         ', clc$abbreviation_entry, clc$advertised_entry, 24,
            clc$automatically_log, clc$linked_call, ^manage_account_member_fields],
            {} ['MANPF                          ', clc$abbreviation_entry, clc$advertised_entry, 25,
            clc$automatically_log, clc$linked_call, ^manage_project_fields],
            {} ['MANPMF                         ', clc$abbreviation_entry, clc$advertised_entry, 26,
            clc$automatically_log, clc$linked_call, ^manage_project_member_fields],
            {} ['MANUF                          ', clc$abbreviation_entry, clc$advertised_entry, 27,
            clc$automatically_log, clc$linked_call, ^manage_user_fields],
            {} ['QUI                            ', clc$abbreviation_entry, clc$advertised_entry, 22,
            clc$automatically_log, clc$linked_call, ^end_administer_validations],
            {} ['QUIT                           ', clc$nominal_entry, clc$advertised_entry, 22,
            clc$automatically_log, clc$linked_call, ^end_administer_validations],
            {} ['USEVF                          ', clc$abbreviation_entry, clc$advertised_entry, 28,
            clc$manually_log, clc$linked_call, ^use_validation_file],
            {} ['USE_VALIDATION_FILE            ', clc$nominal_entry, clc$advertised_entry, 28,
            clc$manually_log, clc$linked_call, ^use_validation_file]];

?? POP ??

{ table admv_function_table type=function
{ function ($account_list, $al)                                    p=avp$$account_list
{ function ($account_member_list, $aml)                            p=avp$$account_member_list
{ function ($current_default, $cd)                                 p=avp$$current_default      a=hidden
{ function ($family_list, $fl)                                     p=avp$$family_list
{ function ($project_list, $pl)                                    p=avp$$project_list
{ function ($project_member_list, $pml)                            p=avp$$project_member_list
{ function ($user_list, $ul)                                       p=avp$$user_list
{ tablend

?? PUSH (LISTEXT := ON) ??

VAR
  admv_function_table: [STATIC, READ] ^clt$function_processor_table := ^admv_function_table_entries,

  admv_function_table_entries: [STATIC, READ] array [1 .. 14] of clt$function_proc_table_entry := [
  {} ['$ACCOUNT_LIST                  ', clc$nominal_entry, clc$normal_usage_entry, 1, clc$linked_call,
         ^avp$$account_list],
  {} ['$ACCOUNT_MEMBER_LIST           ', clc$nominal_entry, clc$normal_usage_entry, 2, clc$linked_call,
         ^avp$$account_member_list],
  {} ['$AL                            ', clc$abbreviation_entry, clc$normal_usage_entry, 1,
        clc$linked_call, ^avp$$account_list],
  {} ['$AML                           ', clc$abbreviation_entry, clc$normal_usage_entry, 2,
        clc$linked_call, ^avp$$account_member_list],
  {} ['$CD                            ', clc$abbreviation_entry, clc$hidden_entry, 3, clc$linked_call,
        ^avp$$current_default],
  {} ['$CURRENT_DEFAULT               ', clc$nominal_entry, clc$hidden_entry, 3, clc$linked_call,
        ^avp$$current_default],
  {} ['$FAMILY_LIST                   ', clc$nominal_entry, clc$normal_usage_entry, 4, clc$linked_call,
         ^avp$$family_list],
  {} ['$FL                            ', clc$abbreviation_entry, clc$normal_usage_entry, 4,
        clc$linked_call, ^avp$$family_list],
  {} ['$PL                            ', clc$abbreviation_entry, clc$normal_usage_entry, 5,
        clc$linked_call, ^avp$$project_list],
  {} ['$PML                           ', clc$abbreviation_entry, clc$normal_usage_entry, 6,
        clc$linked_call, ^avp$$project_member_list],
  {} ['$PROJECT_LIST                  ', clc$nominal_entry, clc$normal_usage_entry, 5, clc$linked_call,
         ^avp$$project_list],
  {} ['$PROJECT_MEMBER_LIST           ', clc$nominal_entry, clc$normal_usage_entry, 6, clc$linked_call,
         ^avp$$project_member_list],
  {} ['$UL                            ', clc$abbreviation_entry, clc$normal_usage_entry, 7,
        clc$linked_call, ^avp$$user_list],
  {} ['$USER_LIST                     ', clc$nominal_entry, clc$normal_usage_entry, 7, clc$linked_call,
         ^avp$$user_list]];

?? POP ??

    VAR
      admv_utility_attributes: ^clt$utility_attributes,
      ignore_status: ost$status,
      path: ^array [1 .. * ] of pft$name,
      served_family: boolean,
      user_identification: ost$user_identification,
      validation_file: clt$file;

?? PUSH (LISTEXT := ON) ??
    ?IF avc$compile_test_code THEN
*copyc avt$validation_level

      VAR
        family_administrator: boolean,
        parameter: clt$value,
        system_administrator: boolean,
        validation_level: avt$validation_level;

      PROCEDURE [XREF] initialize
        (    validation_level: avt$validation_level;
             system_admin: boolean;
             family_admin: boolean;
         VAR status: ost$status);

*copyc mmp$delete_scratch_segment
*copyc ost$heap

      VAR
        osv$job_pageable_heap: [XREF] ^ost$heap,
        osv$task_shared_heap: [XREF] ^ost$heap,
        osv$task_private_heap: [XREF] ^ost$heap;
    ?IFEND
?? POP ??
?? NEWTITLE := 'condition_handler', EJECT ??

{ PURPOSE:
{   This is a block exit condition handler that is used to insure that the
{   validation file is closed.

    PROCEDURE condition_handler
      (    condition: pmt$condition;
           condition_information: ^pmt$condition_information;
           save_area: ^ost$stack_frame_save_area;
       VAR handler_status: ost$status);

      VAR
        ignore_status: ost$status;

      ?IF avc$compile_test_code THEN
        VAR
          segment_pointer: amt$segment_pointer;

        segment_pointer.kind := amc$heap_pointer;
        segment_pointer.heap_pointer := osv$task_private_heap;
        mmp$delete_scratch_segment (segment_pointer, ignore_status);
        segment_pointer.heap_pointer := osv$task_shared_heap;
        mmp$delete_scratch_segment (segment_pointer, ignore_status);
        segment_pointer.heap_pointer := osv$job_pageable_heap;
        mmp$delete_scratch_segment (segment_pointer, ignore_status);
      ?IFEND

      IF validation_file_open THEN
        avp$close_validation_file (validation_file_information, ignore_status);
      IFEND;

    PROCEND condition_handler;
?? OLDTITLE, EJECT ??
?? NEWTITLE := 'hide_unnecessary_commands', EJECT ??

{ PURPOSE:
{   This procedure is used to hide commands that the user would not be able to use because of the user's
{   authority.
{ NOTES:
{   Any form of the command name may be passed to this routine and all forms of that command will be hidden.

    PROCEDURE hide_unnecessary_commands
      (VAR command_table: ^clt$command_table);

?? NEWTITLE := 'change_command_availability', EJECT ??

{ PURPOSE:
{   This procedure changes the availability entry for the specified command.
{ NOTES:
{   Any form of the command name may be passed to this routine and all forms of that command will be hidden.

      PROCEDURE change_command_availability
        (    command_name: string ( * <= osc$max_name_size);
             availability: clt$named_entry_availability;
         VAR command_table: ^clt$command_table);

        VAR
          command_ordinal: clt$named_entry_ordinal,
          index: integer;

      /find_command_ordinal/
        BEGIN
          FOR index := LOWERBOUND (command_table^) TO UPPERBOUND (command_table^) DO
            IF command_table^ [index].name = command_name THEN
              command_ordinal := command_table^ [index].ordinal;
              EXIT /find_command_ordinal/;
            IFEND;
          FOREND;
          RETURN;
        END /find_command_ordinal/;

        FOR index := LOWERBOUND (command_table^) TO UPPERBOUND (command_table^) DO
          IF command_table^ [index].ordinal = command_ordinal THEN
            command_table^ [index].availability := availability;
          IFEND;
        FOREND;

      PROCEND change_command_availability;
?? OLDTITLE, EJECT ??

{ Hide the commands that the user would not be able to use anyway.

      IF NOT (avp$system_administrator () OR avp$family_administrator ()) THEN
        change_command_availability ('CREATE_ACCOUNT', clc$advanced_usage_entry, command_table);
        change_command_availability ('DELETE_ACCOUNT', clc$advanced_usage_entry, command_table);
        change_command_availability ('MANAGE_ACCOUNT_FIELDS', clc$advanced_usage_entry, command_table);
        change_command_availability ('MANAGE_ACCOUNT_MEMBER_FIELDS', clc$advanced_usage_entry, command_table);
        change_command_availability ('MANAGE_PROJECT_FIELDS', clc$advanced_usage_entry, command_table);
        change_command_availability ('MANAGE_PROJECT_MEMBER_FIELDS', clc$advanced_usage_entry, command_table);
        change_command_availability ('MANAGE_USER_FIELDS', clc$advanced_usage_entry, command_table);
        change_command_availability ('USE_VALIDATION_FILE', clc$advanced_usage_entry, command_table);

        IF NOT user_administrator THEN
          change_command_availability ('CREATE_USER', clc$advanced_usage_entry, command_table);
          change_command_availability ('DELETE_USER', clc$advanced_usage_entry, command_table);
        IFEND;

        IF NOT account_administrator THEN
          change_command_availability ('CHANGE_ACCOUNT', clc$advanced_usage_entry, command_table);
          change_command_availability ('CHANGE_ACCOUNT_MEMBER', clc$advanced_usage_entry, command_table);
          change_command_availability ('CREATE_ACCOUNT_MEMBER', clc$advanced_usage_entry, command_table);
          change_command_availability ('CREATE_PROJECT', clc$advanced_usage_entry, command_table);
          change_command_availability ('DELETE_ACCOUNT_MEMBER', clc$advanced_usage_entry, command_table);
          change_command_availability ('DELETE_PROJECT', clc$advanced_usage_entry, command_table);
          change_command_availability ('DISPLAY_ACCOUNT', clc$advanced_usage_entry, command_table);
          change_command_availability ('DISPLAY_ACCOUNT_MEMBER', clc$advanced_usage_entry, command_table);

          IF NOT project_administrator THEN
            change_command_availability ('CHANGE_DEFAULT_VALUE', clc$advanced_usage_entry, command_table);
            change_command_availability ('CHANGE_PROJECT', clc$advanced_usage_entry, command_table);
            change_command_availability ('CHANGE_PROJECT_MEMBER', clc$advanced_usage_entry, command_table);
            change_command_availability ('CREATE_PROJECT_MEMBER', clc$advanced_usage_entry, command_table);
            change_command_availability ('DELETE_PROJECT_MEMBER', clc$advanced_usage_entry, command_table);
            change_command_availability ('DISPLAY_PROJECT', clc$advanced_usage_entry, command_table);
            change_command_availability ('DISPLAY_PROJECT_MEMBER', clc$advanced_usage_entry, command_table);
          IFEND;
        IFEND;
      IFEND;
    PROCEND hide_unnecessary_commands;
?? OLDTITLE ??
?? NEWTITLE := 'get_executing_user_information', EJECT ??

{ PURPOSE:
{   This procedure is used to retrieve information about the user that is executing ADMINISTER_VALIDATIONS.

    PROCEDURE get_executing_user_information
      (VAR family: ost$family_name;
       VAR user: ost$user_name;
       VAR account: avt$account_name;
       VAR project: avt$project_name;
       VAR account_administrator: boolean;
       VAR project_administrator: boolean;
       VAR user_administrator: boolean;
       VAR status: ost$status);

      VAR
        ignore_status: ost$status,
        user_identification: ost$user_identification;

      status.normal := TRUE;

{ Get executing user's identification.

      pmp$get_user_identification (user_identification, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
      family := user_identification.family;
      user := user_identification.user;

      pmp$get_account_project (account, project, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

{ Determine if the user is an account administrator.

      account_administrator := FALSE;
      avp$get_capability (avc$account_administration, avc$account_member, account_administrator,
            ignore_status);

{ Determine if the user is a project administrator.

      project_administrator := FALSE;
      avp$get_capability (avc$project_administration, avc$project_member, project_administrator,
            ignore_status);

{ Determine if the user has user administration capability.

      user_administrator := FALSE;
      avp$get_capability (avc$user_administration, avc$account_member, user_administrator, ignore_status);
      IF NOT user_administrator THEN
        avp$get_capability (avc$user_administration, avc$project_member, user_administrator, ignore_status);
      IFEND;

    PROCEND get_executing_user_information;
?? OLDTITLE ??
?? NEWTITLE := 'open_default_validation_file', EJECT ??

{ PURPOSE:
{   This procedure is used to open the validation file for the family the user is logged into.

    PROCEDURE open_default_validation_file
      (VAR status: ost$status);

      VAR
        default_validation_file: fst$path;

      status.normal := TRUE;

      ?IF avc$compile_test_code THEN
        default_validation_file := '$USER.$VALIDATIONS';
      ?ELSE
        default_validation_file := '$FAMILY.$SYSTEM.$VALIDATIONS';
      ?IFEND

      avp$open_validation_file (default_validation_file, NIL, NIL, FALSE, validation_file_information,
            status);
      IF NOT status.normal THEN
        IF status.condition = ave$must_specify_password THEN

{ If the validation file has a security password and the executing user is a family or system administrator,
{ the security password must be specified to open the validation file.  The family or system administrator
{ must execute the USE_VALIDATON_FILE command, specifying the correct password, in order to open the
{ validation file.

          osp$set_status_abnormal ('AV', ave$must_execute_usevf_cmd, '', status);
        IFEND;
      IFEND;

    PROCEND open_default_validation_file;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    ?IF avc$compile_test_code THEN
      IF pvt [p$validation_level].value^.keyword_value = 'USER' THEN
        validation_level := avc$user_level;
      ELSEIF pvt [p$validation_level].value^.keyword_value = 'ACCOUNT' THEN
        validation_level := avc$account_level;
      ELSE
        validation_level := avc$project_level;
      IFEND;

      IF pvt [p$administrator].value^.keyword_value = 'SYSTEM' THEN
        system_administrator := TRUE;
        family_administrator := FALSE;
      ELSEIF pvt [p$administrator].value^.keyword_value = 'FAMILY' THEN
        system_administrator := FALSE;
        family_administrator := TRUE;
      ELSE
        system_administrator := FALSE;
        family_administrator := FALSE;
      IFEND;

      initialize (validation_level, system_administrator, family_administrator, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
    ?IFEND
    osp$establish_block_exit_hndlr (^condition_handler);

{ Get executing user's identity and relevent capabilities.

    get_executing_user_information (executing_family, executing_user, executing_account, executing_project,
          account_administrator, project_administrator, user_administrator, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Do not allow ADMINISTER_VALIDATIONS on a file server client.

    avp$check_for_served_family (executing_family, served_family);
    IF served_family THEN
      osp$set_status_abnormal ('AV', ave$not_allowed_on_client, 'ADMINISTER_VALIDATIONS', status);
      RETURN;
    IFEND;

{ Set defaults to executing values.

    default_account := executing_account;
    default_project := executing_project;
    default_user := executing_user;

{ Open the validation file for the family the use is executing on.

    open_default_validation_file (status);
    IF status.normal THEN
      validation_file_open := TRUE;
      #SPOIL (validation_file_open);
    ELSE
      validation_file_open := FALSE;
      #SPOIL (validation_file_open);
      osp$generate_message (status, ignore_status);
      status.normal := TRUE;
    IFEND;

{ Hide the commands that the user is not allowed to use.

    hide_unnecessary_commands (admv_command_table);

{ Start up the ADMV utility.

    PUSH admv_utility_attributes: [1 .. 3];
    admv_utility_attributes^ [1].key := clc$utility_prompt;
    admv_utility_attributes^ [1].prompt.value := avc$admv_utility_prompt;
    admv_utility_attributes^ [1].prompt.size := clp$trimmed_string_size
          (admv_utility_attributes^ [1].prompt.value);
    admv_utility_attributes^ [2].key := clc$utility_command_table;
    admv_utility_attributes^ [2].command_table := admv_command_table;
    admv_utility_attributes^ [3].key := clc$utility_function_proc_table;
    admv_utility_attributes^ [3].function_processor_table := admv_function_table;
    clp$begin_utility (avc$admv_utility_name, admv_utility_attributes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$include_file (clc$current_command_input, '', avc$admv_utility_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$end_utility (avc$admv_utility_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF validation_file_open THEN
      IF NOT status.normal THEN
        avp$close_validation_file (validation_file_information, ignore_status);
      ELSE
        avp$close_validation_file (validation_file_information, status);
      IFEND;
    IFEND;

    osp$disestablish_cond_handler;

  PROCEND avp$administer_validations;
?? OLDTITLE ??
?? NEWTITLE := 'ADMINISTER_VALIDATIONS Subcommand Processors', EJECT ??
?? NEWTITLE := 'change_account', EJECT ??

{ PURPOSE:
{   This procedure initates the CHANGE_ACCOUNT subutility.

  PROCEDURE change_account
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chaa) change_account, chaa (
{   account, a: name = default__31__character__account
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 3] of clt$pdt_parameter_name,
        parameters: array [1 .. 2] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type2: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 10, 12, 10, 3, 131], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CHAA'],
            [['A                              ', clc$abbreviation_entry, 1],
            ['ACCOUNT                        ', clc$nominal_entry, 1],
            ['STATUS                         ', clc$nominal_entry, 2]], [

{ PARAMETER 1

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 2

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default__31__character__account'],

{ PARAMETER 2

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$account = 1,
      p$status = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      command_table_size: integer,
      key: avt$validation_key,
      pdt_changes: ^clt$pdt_changes,
      record_id: ost$name,
      rewrite_record: boolean;

    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the ACCOUNT parameter.

    PUSH pdt_changes: [1 .. 1];
    pdt_changes^ [1].number := p$account;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_account;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file has been opened.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    key.account_name := pvt [p$account].value^.name_value;
    key.project_name := osc$null_name;
    key.user_name := osc$null_name;

{ Bring in a copy of the account validation record and set up to start changing
{ validation field values.

    avp$change_account_record (key.account_name, record_id, command_table_size, validation_file_information,
          status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    create_change_subutility (avc$chaa_utility_name, avc$chaa_utility_prompt, avc$account_record_name, key,
          record_id, command_table_size, rewrite_record, status);

  PROCEND change_account;
?? OLDTITLE ??
?? NEWTITLE := 'change_account_member', EJECT ??

{ PURPOSE:
{   This procedure initates the CHANGE_ACCOUNT_MEMBER subutility.

  PROCEDURE change_account_member
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chaam) change_account_member, chaam (
{   user, u: any of
{       key
{         public
{       keyend
{       name
{     anyend = default___31___character___user
{   account, a: name = default__31__character__account
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 5] of clt$pdt_parameter_name,
        parameters: array [1 .. 3] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
          default_value: string (31),
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type3: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 10, 13, 12, 11, 586], clc$command, 5, 3, 0, 0, 0, 0, 3, 'OSM$ADMV_CHAAM'],
            [['A                              ', clc$abbreviation_entry, 2],
            ['ACCOUNT                        ', clc$nominal_entry, 2],
            ['STATUS                         ', clc$nominal_entry, 3],
            ['U                              ', clc$abbreviation_entry, 1],
            ['USER                           ', clc$nominal_entry, 1]], [

{ PARAMETER 1

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 69, clc$optional_default_parameter, 0, 31],

{ PARAMETER 2

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 3

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['PUBLIC                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 5, [[1, 0, clc$name_type], [1, osc$max_name_size]],
            'default___31___character___user'],

{ PARAMETER 2

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default__31__character__account'],

{ PARAMETER 3

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$user = 1,
      p$account = 2,
      p$status = 3;

    VAR
      pvt: array [1 .. 3] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      command_table_size: integer,
      key: avt$validation_key,
      pdt_changes: ^clt$pdt_changes,
      record_id: ost$name,
      rewrite_record: boolean;

    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the USER and ACCOUNT parameters.

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$user;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_user;
    pdt_changes^ [2].number := p$account;
    pdt_changes^ [2].kind := clc$pdtc_default_value;
    pdt_changes^ [2].default_value := ^default_account;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    key.account_name := pvt [p$account].value^.name_value;
    key.project_name := osc$null_name;
    IF pvt [p$user].value^.kind = clc$keyword THEN
      key.user_name := pvt [p$user].value^.keyword_value;
    ELSE
      key.user_name := pvt [p$user].value^.name_value;
    IFEND;

{ Bring in a copy of the account member validation record and set up to start
{ changing validation field values.

    avp$change_account_member_rec (key.account_name, key.user_name, record_id, command_table_size,
          validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    create_change_subutility (avc$chaam_utility_name, avc$chaam_utility_prompt,
          avc$account_member_record_name, key, record_id, command_table_size, rewrite_record, status);

  PROCEND change_account_member;
?? OLDTITLE ??
?? NEWTITLE := 'change_default_values', EJECT ??

{ PURPOSE:
{   This is the command processor for the CHANGE_DEFAULT_VALUE subcommand.

  PROCEDURE change_default_values
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chadv) change_default_value, chadv (
{   account, a: (BY_NAME) name = $optional
{   project, p: (BY_NAME) name = $optional
{   user, u: (BY_NAME) name = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 7] of clt$pdt_parameter_name,
        parameters: array [1 .. 4] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type4: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 12, 15, 5, 54, 238], clc$command, 7, 4, 0, 0, 0, 0, 4, 'OSM$ADMV_CHADV'],
            [['A                              ', clc$abbreviation_entry, 1],
            ['ACCOUNT                        ', clc$nominal_entry, 1],
            ['P                              ', clc$abbreviation_entry, 2],
            ['PROJECT                        ', clc$nominal_entry, 2],
            ['STATUS                         ', clc$nominal_entry, 4],
            ['U                              ', clc$abbreviation_entry, 3],
            ['USER                           ', clc$nominal_entry, 3]], [

{ PARAMETER 1

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 5,
            clc$optional_parameter, 0, 0],

{ PARAMETER 2

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 5,
            clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [7, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 5,
            clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 3

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 4

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$account = 1,
      p$project = 2,
      p$user = 3,
      p$status = 4;

    VAR
      pvt: array [1 .. 4] of clt$parameter_value;

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF pvt [p$account].specified THEN
      default_account := pvt [p$account].value^.name_value;
    IFEND;

    IF pvt [p$project].specified THEN
      default_project := pvt [p$project].value^.name_value;
    IFEND;

    IF pvt [p$user].specified THEN
      default_user := pvt [p$user].value^.name_value;
    IFEND;

  PROCEND change_default_values;
?? OLDTITLE ??
?? NEWTITLE := 'change_project', EJECT ??

{ PURPOSE:
{   This procedure initates the CHANGE_PROJECT subutility.

  PROCEDURE change_project
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chap) change_project, chap (
{   project, p: name = default__31__character__project
{   account, a: name = default__31__character__account
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 5] of clt$pdt_parameter_name,
        parameters: array [1 .. 3] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type3: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 10, 13, 14, 33, 409], clc$command, 5, 3, 0, 0, 0, 0, 3, 'OSM$ADMV_CHAP'],
            [['A                              ', clc$abbreviation_entry, 2],
            ['ACCOUNT                        ', clc$nominal_entry, 2],
            ['P                              ', clc$abbreviation_entry, 1],
            ['PROJECT                        ', clc$nominal_entry, 1],
            ['STATUS                         ', clc$nominal_entry, 3]], [

{ PARAMETER 1

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 2

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 3

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default__31__character__project'],

{ PARAMETER 2

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default__31__character__account'],

{ PARAMETER 3

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$project = 1,
      p$account = 2,
      p$status = 3;

    VAR
      pvt: array [1 .. 3] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      command_table_size: integer,
      key: avt$validation_key,
      pdt_changes: ^clt$pdt_changes,
      scription_table,
      record_id: ost$name,
      rewrite_record: boolean;

    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the PROJECT and ACCOUNT parameters.

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$project;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_project;
    pdt_changes^ [2].number := p$account;
    pdt_changes^ [2].kind := clc$pdtc_default_value;
    pdt_changes^ [2].default_value := ^default_account;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure the validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    key.account_name := pvt [p$account].value^.name_value;
    key.project_name := pvt [p$project].value^.name_value;
    key.user_name := osc$null_name;

{ Bring in a copy of the project validation record and set up to start changing
{ validation field values.

    avp$change_project_record (key.account_name, key.project_name, record_id, command_table_size,
          validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    create_change_subutility (avc$chap_utility_name, avc$chap_utility_prompt, avc$project_record_name, key,
          record_id, command_table_size, rewrite_record, status);

  PROCEND change_project;
?? OLDTITLE ??
?? NEWTITLE := 'change_project_member', EJECT ??

{ PURPOSE:
{   This procedure initates the CHANGE_PROJECT_MEMBER subutility.

  PROCEDURE change_project_member
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chapm) change_project_member, chapm (
{   user, u: any of
{       key
{         public
{       keyend
{       name
{     anyend = default___31___character___user
{   account, a: name = default__31__character__account
{   project, p: name = default__31__character__project
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 7] of clt$pdt_parameter_name,
        parameters: array [1 .. 4] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
          default_value: string (31),
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type4: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 10, 13, 17, 24, 338], clc$command, 7, 4, 0, 0, 0, 0, 4, 'OSM$ADMV_CHAPM'],
            [['A                              ', clc$abbreviation_entry, 2],
            ['ACCOUNT                        ', clc$nominal_entry, 2],
            ['P                              ', clc$abbreviation_entry, 3],
            ['PROJECT                        ', clc$nominal_entry, 3],
            ['STATUS                         ', clc$nominal_entry, 4],
            ['U                              ', clc$abbreviation_entry, 1],
            ['USER                           ', clc$nominal_entry, 1]], [

{ PARAMETER 1

      [7, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 69, clc$optional_default_parameter, 0, 31],

{ PARAMETER 2

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 3

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 4

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['PUBLIC                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 5, [[1, 0, clc$name_type], [1, osc$max_name_size]],
            'default___31___character___user'],

{ PARAMETER 2

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default__31__character__account'],

{ PARAMETER 3

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default__31__character__project'],

{ PARAMETER 4

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$user = 1,
      p$account = 2,
      p$project = 3,
      p$status = 4;

    VAR
      pvt: array [1 .. 4] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      command_table_size: integer,
      key: avt$validation_key,
      pdt_changes: ^clt$pdt_changes,
      record_id: ost$name,
      rewrite_record: boolean;

    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the USER, ACCOUNT and PROJECT parameters.

    PUSH pdt_changes: [1 .. 3];
    pdt_changes^ [1].number := p$user;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_user;
    pdt_changes^ [2].number := p$account;
    pdt_changes^ [2].kind := clc$pdtc_default_value;
    pdt_changes^ [2].default_value := ^default_account;
    pdt_changes^ [3].number := p$project;
    pdt_changes^ [3].kind := clc$pdtc_default_value;
    pdt_changes^ [3].default_value := ^default_project;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    key.account_name := pvt [p$account].value^.name_value;
    key.project_name := pvt [p$project].value^.name_value;
    IF pvt [p$user].value^.kind = clc$keyword THEN
      key.user_name := pvt [p$user].value^.keyword_value;
    ELSE
      key.user_name := pvt [p$user].value^.name_value;
    IFEND;

{ Bring in a copy of the project member validation record and set up to start
{ changing validation field values.

    avp$change_project_member_rec (key.account_name, key.project_name, key.user_name, record_id,
          command_table_size, validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    create_change_subutility (avc$chapm_utility_name, avc$chapm_utility_prompt,
          avc$project_member_record_name, key, record_id, command_table_size, rewrite_record, status);

  PROCEND change_project_member;
?? OLDTITLE ??
?? NEWTITLE := 'change_user', EJECT ??

{ PURPOSE:
{   This procedure initates the CHANGE_USER subutility.

  PROCEDURE change_user
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chau) change_user, chau (
{   user, u: name = default___31___character___user
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 3] of clt$pdt_parameter_name,
        parameters: array [1 .. 2] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type2: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 10, 13, 19, 34, 769], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CHAU'],
            [['STATUS                         ', clc$nominal_entry, 2],
            ['U                              ', clc$abbreviation_entry, 1],
            ['USER                           ', clc$nominal_entry, 1]], [

{ PARAMETER 1

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 2

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default___31___character___user'],

{ PARAMETER 2

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$user = 1,
      p$status = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      command_table_size: integer,
      key: avt$validation_key,
      pdt_changes: ^clt$pdt_changes,
      record_id: ost$name,
      rewrite_record: boolean;

    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the USER parameter.

    PUSH pdt_changes: [1 .. 1];
    pdt_changes^ [1].number := p$user;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_user;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    key.account_name := avc$high_value_name;
    key.project_name := avc$high_value_name;
    key.user_name := pvt [p$user].value^.name_value;

{ Bring in a copy of the user validation record and set up to start changing validation field values.

    avp$change_user_record (key.user_name, record_id, command_table_size, validation_file_information,
          status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    create_change_subutility (avc$chau_utility_name, avc$chau_utility_prompt, avc$user_record_name, key,
          record_id, command_table_size, rewrite_record, status);

  PROCEND change_user;
?? OLDTITLE ??
?? NEWTITLE := 'create_account', EJECT ??

{ PURPOSE:
{   This procedure initates the CREATE_ACCOUNT subutility.

  PROCEDURE create_account
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_crea) create_account, crea (
{   account, a: (CHECK) name = default__31__character__account
{   status)

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 3] of clt$pdt_parameter_name,
      parameters: array [1 .. 2] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (31),
      recend,
      type2: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [88, 11, 30, 10, 6, 17, 511],
    clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CREA'], [
    ['A                              ',clc$abbreviation_entry, 1],
    ['ACCOUNT                        ',clc$nominal_entry, 1],
    ['STATUS                         ',clc$nominal_entry, 2]],
    [
{ PARAMETER 1
    [2, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 5,
  clc$optional_default_parameter, 0, 31],
{ PARAMETER 2
    [3, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_parameter, 0, 0]],
{ PARAMETER 1
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    'default__31__character__account'],
{ PARAMETER 2
    [[1, 0, clc$status_type]]];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$account = 1,
      p$status = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      command_table_size: integer,
      ignore_status: ost$status,
      key: avt$validation_key,
      pdt_changes: ^clt$pdt_changes,
      record_id: ost$name,
      rewrite_record: boolean;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      VAR
       validation_name: avt$validation_name;

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$account) THEN
        validation_name.kind := avc$vnk_account;
        validation_name.account_name := parameter_value_table^ [p$account].value^.name_value;
        avp$verify_validation_name (validation_name, status);
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the ACCOUNT parameter.

    PUSH pdt_changes: [1 .. 1];
    pdt_changes^ [1].number := p$account;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_account;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    key.account_name := pvt [p$account].value^.name_value;
    key.project_name := osc$null_name;
    key.user_name := osc$null_name;

{ Create the account record, bring in a copy of it and set up to start changing
{ validation field values.

    avp$create_account_record (key.account_name, record_id, command_table_size, validation_file_information,
          status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    create_change_subutility (avc$crea_utility_name, avc$crea_utility_prompt, avc$account_record_name, key,
          record_id, command_table_size, rewrite_record, status);

    IF NOT rewrite_record THEN
      avp$delete_account_record (key.account_name, validation_file_information, ignore_status);
    IFEND;

  PROCEND create_account;
?? OLDTITLE ??
?? NEWTITLE := 'create_account_member', EJECT ??

{ PURPOSE:
{   This procedure initates the CREATE_ACCOUNT_MEMBER subutility.

  PROCEDURE create_account_member
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_cream) create_account_member, cream (
{   user, u: (CHECK) any of
{       key
{         public
{       keyend
{       name
{     anyend = default___31___character___user
{   account, a: (CHECK) name = default__31__character__account
{   status)

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 5] of clt$pdt_parameter_name,
      parameters: array [1 .. 3] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 1] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        default_value: string (31),
      recend,
      type2: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (31),
      recend,
      type3: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [88, 11, 30, 10, 7, 3, 64],
    clc$command, 5, 3, 0, 0, 0, 0, 3, 'OSM$ADMV_CREAM'], [
    ['A                              ',clc$abbreviation_entry, 2],
    ['ACCOUNT                        ',clc$nominal_entry, 2],
    ['STATUS                         ',clc$nominal_entry, 3],
    ['U                              ',clc$abbreviation_entry, 1],
    ['USER                           ',clc$nominal_entry, 1]],
    [
{ PARAMETER 1
    [5, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 69,
  clc$optional_default_parameter, 0, 31],
{ PARAMETER 2
    [2, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 5,
  clc$optional_default_parameter, 0, 31],
{ PARAMETER 3
    [3, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_parameter, 0, 0]],
{ PARAMETER 1
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['PUBLIC                         ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ,
    'default___31___character___user'],
{ PARAMETER 2
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    'default__31__character__account'],
{ PARAMETER 3
    [[1, 0, clc$status_type]]];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$user = 1,
      p$account = 2,
      p$status = 3;

    VAR
      pvt: array [1 .. 3] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      command_table_size: integer,
      ignore_status: ost$status,
      key: avt$validation_key,
      pdt_changes: ^clt$pdt_changes,
      record_id: ost$name,
      rewrite_record: boolean;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      VAR
       validation_name: avt$validation_name;

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$account) THEN
        validation_name.kind := avc$vnk_account;
        validation_name.account_name := parameter_value_table^ [p$account].value^.name_value;
        avp$verify_validation_name (validation_name, status);
      IFEND;

      IF (which_parameter.specific) AND (which_parameter.number = p$user) THEN
        validation_name.kind := avc$vnk_user;
        validation_name.user_name := parameter_value_table^ [p$user].value^.name_value;
        avp$verify_validation_name (validation_name, status);
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the USER and ACCOUNT parameters.

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$user;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_user;
    pdt_changes^ [2].number := p$account;
    pdt_changes^ [2].kind := clc$pdtc_default_value;
    pdt_changes^ [2].default_value := ^default_account;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    key.account_name := pvt [p$account].value^.name_value;
    key.project_name := osc$null_name;
    IF pvt [p$user].value^.kind = clc$keyword THEN
      key.user_name := pvt [p$user].value^.keyword_value;
    ELSE
      key.user_name := pvt [p$user].value^.name_value;
    IFEND;

{ Create the account member record, bring in a copy of it and set up to start
{ changing validation field values.

    avp$create_account_member_rec (key.account_name, key.user_name, record_id, command_table_size,
          validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    create_change_subutility (avc$cream_utility_name, avc$cream_utility_prompt,
          avc$account_member_record_name, key, record_id, command_table_size, rewrite_record, status);

    IF NOT rewrite_record THEN
      avp$delete_account_member_rec (key.account_name, key.user_name, validation_file_information,
            ignore_status);
    IFEND;

  PROCEND create_account_member;
?? OLDTITLE ??
?? NEWTITLE := 'create_project', EJECT ??

{ PURPOSE:
{   This procedure initates the CREATE_PROJECT subutility.

  PROCEDURE create_project
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_crep) create_project, crep (
{   project, p: (CHECK) name = default__31__character__project
{   account, a: (CHECK) name = default__31__character__account
{   status)

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 5] of clt$pdt_parameter_name,
      parameters: array [1 .. 3] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (31),
      recend,
      type2: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (31),
      recend,
      type3: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [88, 11, 30, 10, 7, 32, 114],
    clc$command, 5, 3, 0, 0, 0, 0, 3, 'OSM$ADMV_CREP'], [
    ['A                              ',clc$abbreviation_entry, 2],
    ['ACCOUNT                        ',clc$nominal_entry, 2],
    ['P                              ',clc$abbreviation_entry, 1],
    ['PROJECT                        ',clc$nominal_entry, 1],
    ['STATUS                         ',clc$nominal_entry, 3]],
    [
{ PARAMETER 1
    [4, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 5,
  clc$optional_default_parameter, 0, 31],
{ PARAMETER 2
    [2, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 5,
  clc$optional_default_parameter, 0, 31],
{ PARAMETER 3
    [5, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_parameter, 0, 0]],
{ PARAMETER 1
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    'default__31__character__project'],
{ PARAMETER 2
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    'default__31__character__account'],
{ PARAMETER 3
    [[1, 0, clc$status_type]]];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$project = 1,
      p$account = 2,
      p$status = 3;

    VAR
      pvt: array [1 .. 3] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      command_table_size: integer,
      ignore_status: ost$status,
      interactive: boolean,
      key: avt$validation_key,
      message_status: ost$status,
      pdt_changes: ^clt$pdt_changes,
      record_id: ost$name,
      rewrite_record: boolean;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      VAR
       validation_name: avt$validation_name;

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$account) THEN
        validation_name.kind := avc$vnk_account;
        validation_name.account_name := parameter_value_table^ [p$account].value^.name_value;
        avp$verify_validation_name (validation_name, status);
      IFEND;

      IF (which_parameter.specific) AND (which_parameter.number = p$project) THEN
        validation_name.kind := avc$vnk_project;
        validation_name.project_name := parameter_value_table^ [p$project].value^.name_value;
        avp$verify_validation_name (validation_name, status);
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the PROJECT and ACCOUNT parameters.

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$project;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_project;
    pdt_changes^ [2].number := p$account;
    pdt_changes^ [2].kind := clc$pdtc_default_value;
    pdt_changes^ [2].default_value := ^default_account;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    key.account_name := pvt [p$account].value^.name_value;
    key.project_name := pvt [p$project].value^.name_value;
    key.user_name := osc$null_name;

{ Create the project record, bring in a copy of it and set up to start
{ changing validation field values.

    avp$create_project_record (key.account_name, key.project_name, record_id, command_table_size,
          validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    create_change_subutility (avc$crep_utility_name, avc$crep_utility_prompt, avc$project_record_name, key,
          record_id, command_table_size, rewrite_record, status);

    IF NOT rewrite_record THEN
      avp$delete_project_record (key.account_name, key.project_name, validation_file_information,
            ignore_status);
    IFEND;

  PROCEND create_project;
?? OLDTITLE ??
?? NEWTITLE := 'create_project_member', EJECT ??

{ PURPOSE:
{   This procedure initates the CREATE_PROJECT_MEMBER subutility.

  PROCEDURE create_project_member
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_crepm) create_project_member, crepm (
{   user, u: (CHECK) any of
{       key
{         public
{       keyend
{       name
{     anyend = default___31___character___user
{   account, a: (CHECK) name = default__31__character__account
{   project, p: (CHECK) name = default__31__character__project
{   status)

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 7] of clt$pdt_parameter_name,
      parameters: array [1 .. 4] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 1] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        default_value: string (31),
      recend,
      type2: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (31),
      recend,
      type3: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (31),
      recend,
      type4: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [88, 11, 30, 10, 8, 11, 421],
    clc$command, 7, 4, 0, 0, 0, 0, 4, 'OSM$ADMV_CREPM'], [
    ['A                              ',clc$abbreviation_entry, 2],
    ['ACCOUNT                        ',clc$nominal_entry, 2],
    ['P                              ',clc$abbreviation_entry, 3],
    ['PROJECT                        ',clc$nominal_entry, 3],
    ['STATUS                         ',clc$nominal_entry, 4],
    ['U                              ',clc$abbreviation_entry, 1],
    ['USER                           ',clc$nominal_entry, 1]],
    [
{ PARAMETER 1
    [7, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 69,
  clc$optional_default_parameter, 0, 31],
{ PARAMETER 2
    [2, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 5,
  clc$optional_default_parameter, 0, 31],
{ PARAMETER 3
    [4, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 5,
  clc$optional_default_parameter, 0, 31],
{ PARAMETER 4
    [5, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_parameter, 0, 0]],
{ PARAMETER 1
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['PUBLIC                         ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ,
    'default___31___character___user'],
{ PARAMETER 2
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    'default__31__character__account'],
{ PARAMETER 3
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    'default__31__character__project'],
{ PARAMETER 4
    [[1, 0, clc$status_type]]];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$user = 1,
      p$account = 2,
      p$project = 3,
      p$status = 4;

    VAR
      pvt: array [1 .. 4] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      command_table_size: integer,
      ignore_status: ost$status,
      key: avt$validation_key,
      pdt_changes: ^clt$pdt_changes,
      record_id: ost$name,
      rewrite_record: boolean;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      VAR
       validation_name: avt$validation_name;

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$account) THEN
        validation_name.kind := avc$vnk_account;
        validation_name.account_name := parameter_value_table^ [p$account].value^.name_value;
        avp$verify_validation_name (validation_name, status);
      IFEND;

      IF (which_parameter.specific) AND (which_parameter.number = p$project) THEN
        validation_name.kind := avc$vnk_project;
        validation_name.project_name := parameter_value_table^ [p$project].value^.name_value;
        avp$verify_validation_name (validation_name, status);
      IFEND;

      IF (which_parameter.specific) AND (which_parameter.number = p$user) THEN
        validation_name.kind := avc$vnk_user;
        validation_name.user_name := parameter_value_table^ [p$user].value^.name_value;
        avp$verify_validation_name (validation_name, status);
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the USER, ACCOUNT and PROJECT parameters.

    PUSH pdt_changes: [1 .. 3];
    pdt_changes^ [1].number := p$user;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_user;
    pdt_changes^ [2].number := p$account;
    pdt_changes^ [2].kind := clc$pdtc_default_value;
    pdt_changes^ [2].default_value := ^default_account;
    pdt_changes^ [3].number := p$project;
    pdt_changes^ [3].kind := clc$pdtc_default_value;
    pdt_changes^ [3].default_value := ^default_project;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    key.account_name := pvt [p$account].value^.name_value;
    key.project_name := pvt [p$project].value^.name_value;
    IF pvt [p$user].value^.kind = clc$keyword THEN
      key.user_name := pvt [p$user].value^.keyword_value;
    ELSE
      key.user_name := pvt [p$user].value^.name_value;
    IFEND;

{ Create the project member record, bring in a copy of it and set up to start
{ changing validation field values.

    avp$create_project_member_rec (key.account_name, key.project_name, key.user_name, record_id,
          command_table_size, validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    create_change_subutility (avc$crepm_utility_name, avc$crepm_utility_prompt,
          avc$project_member_record_name, key, record_id, command_table_size, rewrite_record, status);

    IF NOT rewrite_record THEN
      avp$delete_project_member_rec (key.account_name, key.project_name, key.user_name,
            validation_file_information, ignore_status);
    IFEND;

  PROCEND create_project_member;
?? OLDTITLE ??
?? NEWTITLE := 'create_user', EJECT ??

{ PURPOSE:
{   This procedure initates the CREATE_USER subutility.

  PROCEDURE create_user
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_creu) create_user, creu (
{   user, u: (CHECK) name = default___31___character___user
{   status)

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 3] of clt$pdt_parameter_name,
      parameters: array [1 .. 2] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (31),
      recend,
      type2: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [88, 11, 30, 10, 5, 4, 247],
    clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CREU'], [
    ['STATUS                         ',clc$nominal_entry, 2],
    ['U                              ',clc$abbreviation_entry, 1],
    ['USER                           ',clc$nominal_entry, 1]],
    [
{ PARAMETER 1
    [3, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 5,
  clc$optional_default_parameter, 0, 31],
{ PARAMETER 2
    [1, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_parameter, 0, 0]],
{ PARAMETER 1
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    'default___31___character___user'],
{ PARAMETER 2
    [[1, 0, clc$status_type]]];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$user = 1,
      p$status = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      command_table_size: integer,
      create_status: ost$status,
      ignore_status: ost$status,
      interactive: boolean,
      key: avt$validation_key,
      pdt_changes: ^clt$pdt_changes,
      record_id: ost$name,
      rewrite_record: boolean;


?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      VAR
       validation_name: avt$validation_name;

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$user) THEN
        validation_name.kind := avc$vnk_user;
        validation_name.user_name := parameter_value_table^ [p$user].value^.name_value;
        avp$verify_validation_name (validation_name, status);
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the USER parameter.

    PUSH pdt_changes: [1 .. 1];
    pdt_changes^ [1].number := p$user;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_user;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    key.account_name := avc$high_value_name;
    key.project_name := avc$high_value_name;
    key.user_name := pvt [p$user].value^.name_value;

{ Create the user record, bring in a copy of it and set up to start
{ changing validation field values.

    avp$create_user_record (key.user_name, record_id, command_table_size, validation_file_information,
          create_status);
    IF NOT create_status.normal THEN
      IF create_status.condition = ave$master_catalog_exists THEN
        interactive := FALSE;
        clp$get_command_origin (interactive, ignore_status);
        IF interactive THEN
          osp$generate_output_message (create_status, ignore_status);
        IFEND;
      ELSE
        status := create_status;
        RETURN;
      IFEND;
    IFEND;

    create_change_subutility (avc$creu_utility_name, avc$creu_utility_prompt, avc$user_record_name, key,
          record_id, command_table_size, rewrite_record, status);

    IF NOT rewrite_record THEN
      avp$delete_user_record (key.user_name, FALSE, validation_file_information, ignore_status);
    IFEND;

{ Report the status from the create.  This is used report the
{ ave$master_catalog_exists error.

    IF status.normal THEN
      status := create_status;
    IFEND;

  PROCEND create_user;
?? OLDTITLE ??
?? NEWTITLE := 'delete_accounts', EJECT ??

{ PURPOSE:
{   This is the command processor for the DELETE_ACCOUNT subcommand.

  PROCEDURE delete_accounts
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_dela) delete_account, delete_accounts, dela (
{   account, accounts, a: (CHECK) any of
{       key
{         all
{       keyend
{       list of name
{     anyend = $required
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 4] of clt$pdt_parameter_name,
        parameters: array [1 .. 2] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type2: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 4, 21, 14, 15, 17, 831], clc$command, 4, 2, 1, 0, 0, 0, 2, 'OSM$ADMV_DELA'],
            [['A                              ', clc$abbreviation_entry, 1],
            ['ACCOUNT                        ', clc$nominal_entry, 1],
            ['ACCOUNTS                       ', clc$alias_entry, 1],
            ['STATUS                         ', clc$nominal_entry, 2]], [

{ PARAMETER 1

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 85, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 2

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$account = 1,
      p$status = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    VAR
      account_parameter_value: ^clt$data_value,
      session_info: ^avt$subutility_session_info;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$account) THEN
        verify_list_of_names_value ('ACCOUNT', parameter_value_table^ [p$account].value, status);
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

{ Make sure no subutility is currently active referencing any of the specified accounts.

    session_info := current_subutility_session_info;
    WHILE session_info <> NIL DO
      IF pvt [p$account].value^.kind = clc$list THEN
        account_parameter_value := pvt [p$account].value;
        WHILE account_parameter_value <> NIL DO
          IF account_parameter_value^.element_value^.name_value = session_info^.key.account_name THEN
            osp$set_status_abnormal ('AV', ave$conflicting_operation, session_info^.subutility_name, status);
            RETURN;
          IFEND;
          account_parameter_value := account_parameter_value^.link;
        WHILEND;
      ELSE { keyword ALL was specified}
        IF (session_info^.validation_record_name = avc$account_record_name) OR
              (session_info^.validation_record_name = avc$account_member_record_name) OR
              (session_info^.validation_record_name = avc$project_record_name) OR
              (session_info^.validation_record_name = avc$project_member_record_name) THEN
          osp$set_status_abnormal ('AV', ave$conflicting_operation, session_info^.subutility_name, status);
          RETURN;
        IFEND;
      IFEND;
      session_info := session_info^.previous_session_information;
    WHILEND;

{ Attempt to delete each account in the list.

    account_parameter_value := pvt [p$account].value;
    IF account_parameter_value^.kind = clc$keyword THEN
      avp$delete_account_record (account_parameter_value^.keyword_value, validation_file_information, status);
    ELSE
      REPEAT
        avp$delete_account_record (account_parameter_value^.element_value^.name_value,
              validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        account_parameter_value := account_parameter_value^.link;
      UNTIL account_parameter_value = NIL;
    IFEND;

  PROCEND delete_accounts;
?? OLDTITLE ??
?? NEWTITLE := 'delete_account_members', EJECT ??

{ PURPOSE:
{   This is the command processor for the DELETE_ACCOUNT_MEMBERS subcommand.

  PROCEDURE delete_account_members
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_delam) delete_account_member, delete_account_members, delam (
{   user, users, u: (CHECK) any of
{       key
{         all
{       keyend
{       list of name
{     anyend = $required
{   account, a: name = default__31__character__account
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 6] of clt$pdt_parameter_name,
        parameters: array [1 .. 3] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type3: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 10, 13, 27, 52, 49], clc$command, 6, 3, 1, 0, 0, 0, 3, 'OSM$ADMV_DELAM'],
            [['A                              ', clc$abbreviation_entry, 2],
            ['ACCOUNT                        ', clc$nominal_entry, 2],
            ['STATUS                         ', clc$nominal_entry, 3],
            ['U                              ', clc$abbreviation_entry, 1],
            ['USER                           ', clc$nominal_entry, 1],
            ['USERS                          ', clc$alias_entry, 1]], [

{ PARAMETER 1

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 85, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 3

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 2

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default__31__character__account'],

{ PARAMETER 3

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$user = 1,
      p$account = 2,
      p$status = 3;

    VAR
      pvt: array [1 .. 3] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      pdt_changes: ^clt$pdt_changes,
      session_info: ^avt$subutility_session_info,
      user_parameter_value: ^clt$data_value;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$user) THEN
        verify_list_of_names_value ('USER', parameter_value_table^ [p$user].value, status);
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value the ACCOUNT parameter.

    PUSH pdt_changes: [1 .. 1];
    pdt_changes^ [1].number := p$account;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_account;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

{ Make sure no subutility is currently active referencing any of the specified account members.

    session_info := current_subutility_session_info;
    WHILE session_info <> NIL DO
      IF (session_info^.validation_record_name = avc$account_member_record_name) AND
            (session_info^.key.account_name = pvt [p$account].value^.name_value) THEN
        IF pvt [p$user].value^.kind = clc$list THEN
          user_parameter_value := pvt [p$user].value;
          WHILE user_parameter_value <> NIL DO
            IF session_info^.key.user_name = user_parameter_value^.element_value^.name_value THEN
              osp$set_status_abnormal ('AV', ave$conflicting_operation, session_info^.subutility_name,
                    status);
              RETURN;
            IFEND;
            user_parameter_value := user_parameter_value^.link;
          WHILEND;
        ELSE { keyword ALL was specified}
          osp$set_status_abnormal ('AV', ave$conflicting_operation, session_info^.subutility_name, status);
          RETURN;
        IFEND;
      IFEND;
      session_info := session_info^.previous_session_information;
    WHILEND;

{ Attempt to delete each member in the list.

    user_parameter_value := pvt [p$user].value;
    IF user_parameter_value^.kind = clc$keyword THEN
      avp$delete_account_member_rec (pvt [p$account].value^.name_value, user_parameter_value^.keyword_value,
            validation_file_information, status);
    ELSE
      REPEAT
        avp$delete_account_member_rec (pvt [p$account].value^.name_value,
              user_parameter_value^.element_value^.name_value, validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        user_parameter_value := user_parameter_value^.link;
      UNTIL user_parameter_value = NIL;
    IFEND;

  PROCEND delete_account_members;
?? OLDTITLE ??
?? NEWTITLE := 'delete_projects', EJECT ??

{ PURPOSE:
{   This is the command processor for the DELETE_PROJECTS subcommand.

  PROCEDURE delete_projects
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_delp) delete_project, delete_projects, delp (
{   project, projects, p: (CHECK) any of
{       key
{         all
{       keyend
{       list of name
{     anyend = $required
{   account, a: name = default__31__character__account
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 6] of clt$pdt_parameter_name,
        parameters: array [1 .. 3] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type3: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 10, 13, 29, 24, 572], clc$command, 6, 3, 1, 0, 0, 0, 3, 'OSM$ADMV_DELP'],
            [['A                              ', clc$abbreviation_entry, 2],
            ['ACCOUNT                        ', clc$nominal_entry, 2],
            ['P                              ', clc$abbreviation_entry, 1],
            ['PROJECT                        ', clc$nominal_entry, 1],
            ['PROJECTS                       ', clc$alias_entry, 1],
            ['STATUS                         ', clc$nominal_entry, 3]], [

{ PARAMETER 1

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 85, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 3

      [6, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 2

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default__31__character__account'],

{ PARAMETER 3

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$project = 1,
      p$account = 2,
      p$status = 3;

    VAR
      pvt: array [1 .. 3] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      pdt_changes: ^clt$pdt_changes,
      project_parameter_value: ^clt$data_value,
      session_info: ^avt$subutility_session_info;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$project) THEN
        verify_list_of_names_value ('PROJECT', parameter_value_table^ [p$project].value, status);
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the ACCOUNT parameter.

    PUSH pdt_changes: [1 .. 1];
    pdt_changes^ [1].number := p$account;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_account;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

{ Make sure no subutility is currently active referencing any of the specified projects.

    session_info := current_subutility_session_info;
    WHILE session_info <> NIL DO
      IF ((session_info^.validation_record_name = avc$project_record_name) OR
            (session_info^.validation_record_name = avc$project_member_record_name)) AND
            (session_info^.key.account_name = pvt [p$account].value^.name_value) THEN
        IF pvt [p$project].value^.kind = clc$list THEN
          project_parameter_value := pvt [p$project].value;
          WHILE project_parameter_value <> NIL DO
            IF session_info^.key.project_name = project_parameter_value^.element_value^.name_value THEN
              osp$set_status_abnormal ('AV', ave$conflicting_operation, session_info^.subutility_name,
                    status);
              RETURN;
            IFEND;
            project_parameter_value := project_parameter_value^.link;
          WHILEND;
        ELSE { keyword ALL was specified}
          osp$set_status_abnormal ('AV', ave$conflicting_operation, session_info^.subutility_name, status);
          RETURN;
        IFEND;
      IFEND;
      session_info := session_info^.previous_session_information;
    WHILEND;

{ Attempt to delete each project in the list.

    project_parameter_value := pvt [p$project].value;
    IF project_parameter_value^.kind = clc$keyword THEN
      avp$delete_project_record (pvt [p$account].value^.name_value, project_parameter_value^.keyword_value,
            validation_file_information, status);
    ELSE
      REPEAT
        avp$delete_project_record (pvt [p$account].value^.name_value,
              project_parameter_value^.element_value^.name_value, validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        project_parameter_value := project_parameter_value^.link;
      UNTIL project_parameter_value = NIL;
    IFEND;

  PROCEND delete_projects;
?? OLDTITLE ??
?? NEWTITLE := 'delete_project_members', EJECT ??

{ PURPOSE:
{   This is the command processor for the DELETE_PROJECT_MEMBERS subcommand.

  PROCEDURE delete_project_members
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_delpm) delete_project_member, delete_project_members, delpm (
{   user, users, u: (CHECK) any of
{       key
{         all
{       keyend
{       list of name
{     anyend = $required
{   account, a: name = default__31__character__account
{   project, p: name = default__31__character__project
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 8] of clt$pdt_parameter_name,
        parameters: array [1 .. 4] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type4: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 10, 13, 30, 38, 469], clc$command, 8, 4, 1, 0, 0, 0, 4, 'OSM$ADMV_DELPM'],
            [['A                              ', clc$abbreviation_entry, 2],
            ['ACCOUNT                        ', clc$nominal_entry, 2],
            ['P                              ', clc$abbreviation_entry, 3],
            ['PROJECT                        ', clc$nominal_entry, 3],
            ['STATUS                         ', clc$nominal_entry, 4],
            ['U                              ', clc$abbreviation_entry, 1],
            ['USER                           ', clc$nominal_entry, 1],
            ['USERS                          ', clc$alias_entry, 1]], [

{ PARAMETER 1

      [7, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 85, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 3

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 4

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 2

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default__31__character__account'],

{ PARAMETER 3

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default__31__character__project'],

{ PARAMETER 4

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$user = 1,
      p$account = 2,
      p$project = 3,
      p$status = 4;

    VAR
      pvt: array [1 .. 4] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      pdt_changes: ^clt$pdt_changes,
      session_info: ^avt$subutility_session_info,
      user_parameter_value: ^clt$data_value;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$user) THEN
        verify_list_of_names_value ('USER', parameter_value_table^ [p$user].value, status);
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the ACCOUNT and PROJECT parameters.

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$account;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_account;
    pdt_changes^ [2].number := p$project;
    pdt_changes^ [2].kind := clc$pdtc_default_value;
    pdt_changes^ [2].default_value := ^default_project;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

{ Make sure no subutility is currently active referencing any of the specified project members.

    session_info := current_subutility_session_info;
    WHILE session_info <> NIL DO
      IF (session_info^.validation_record_name = avc$project_member_record_name) AND
            (session_info^.key.account_name = pvt [p$account].value^.name_value) AND
            (session_info^.key.project_name = pvt [p$project].value^.name_value) THEN
        IF pvt [p$user].value^.kind = clc$list THEN
          user_parameter_value := pvt [p$user].value;
          WHILE user_parameter_value <> NIL DO
            IF session_info^.key.user_name = user_parameter_value^.element_value^.name_value THEN
              osp$set_status_abnormal ('AV', ave$conflicting_operation, session_info^.subutility_name,
                    status);
              RETURN;
            IFEND;
            user_parameter_value := user_parameter_value^.link;
          WHILEND;
        ELSE { keyword ALL was specified}
          osp$set_status_abnormal ('AV', ave$conflicting_operation, session_info^.subutility_name, status);
          RETURN;
        IFEND;
      IFEND;
      session_info := session_info^.previous_session_information;
    WHILEND;

{ Attempt to delete each member in the list.

    user_parameter_value := pvt [p$user].value;
    IF user_parameter_value^.kind = clc$keyword THEN
      avp$delete_project_member_rec (pvt [p$account].value^.name_value, pvt [p$project].value^.name_value,
            user_parameter_value^.keyword_value, validation_file_information, status);
    ELSE
      REPEAT
        avp$delete_project_member_rec (pvt [p$account].value^.name_value, pvt [p$project].value^.name_value,
              user_parameter_value^.element_value^.name_value, validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        user_parameter_value := user_parameter_value^.link;
      UNTIL user_parameter_value = NIL;
    IFEND;

  PROCEND delete_project_members;
?? OLDTITLE ??
?? NEWTITLE := 'delete_users', EJECT ??

{ PURPOSE:
{   This is the command processor for the DELETE_USER subcommand.

  PROCEDURE delete_users
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_delu) delete_user, delete_users, delu (
{   user, users, u: (CHECK) list of name = $required
{   delete_files, df: boolean = $required
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC] record
        header: clt$pdt_header,
        names: array [1 .. 6] of clt$pdt_parameter_name,
        parameters: array [1 .. 3] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$list_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        type2: record
          header: clt$type_specification_header,
        recend,
        type3: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 4, 21, 14, 21, 32, 596], clc$command, 6, 3, 2, 0, 0, 0, 3, 'OSM$ADMV_DELU'],
            [['DELETE_FILES                   ', clc$nominal_entry, 2],
            ['DF                             ', clc$abbreviation_entry, 2],
            ['STATUS                         ', clc$nominal_entry, 3],
            ['U                              ', clc$abbreviation_entry, 1],
            ['USER                           ', clc$nominal_entry, 1],
            ['USERS                          ', clc$alias_entry, 1]], [

{ PARAMETER 1

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 21, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$required_parameter, 0, 0],

{ PARAMETER 3

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$list_type], [5, 1, clc$max_list_size, FALSE],
            [[1, 0, clc$name_type], [1, osc$max_name_size]]],

{ PARAMETER 2

      [[1, 0, clc$boolean_type]],

{ PARAMETER 3

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$user = 1,
      p$delete_files = 2,
      p$status = 3;

    VAR
      pvt: array [1 .. 3] of clt$parameter_value;

    VAR
      session_info: ^avt$subutility_session_info,
      user_parameter_value: ^clt$data_value;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      VAR
        user_parameter_value: ^clt$data_value;

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$user) THEN

{ Make sure the user has not specified ALL.

        user_parameter_value := parameter_value_table^ [p$user].value;
        REPEAT
          IF user_parameter_value^.element_value^.name_value = 'ALL' THEN
            osp$set_status_abnormal ('AV', ave$cannot_delete_all, 'users', status);
            RETURN;
          IFEND;
          user_parameter_value := user_parameter_value^.link;
        UNTIL user_parameter_value = NIL;
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

{ Make sure no subutility is currently active referencing any of the specified users.

    session_info := current_subutility_session_info;
    WHILE session_info <> NIL DO
      IF session_info^.validation_record_name = avc$user_record_name THEN
        user_parameter_value := pvt [p$user].value;
        WHILE user_parameter_value <> NIL DO
          IF session_info^.key.user_name = user_parameter_value^.element_value^.name_value THEN
            osp$set_status_abnormal ('AV', ave$conflicting_operation, session_info^.subutility_name, status);
            RETURN;
          IFEND;
          user_parameter_value := user_parameter_value^.link;
        WHILEND;
      IFEND;
      session_info := session_info^.previous_session_information;
    WHILEND;

{ Attempt to delete each user in the list.

    user_parameter_value := pvt [p$user].value;
    REPEAT
      avp$delete_user_record (user_parameter_value^.element_value^.name_value,
            pvt [p$delete_files].value^.boolean_value.value, validation_file_information, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
      user_parameter_value := user_parameter_value^.link;
    UNTIL user_parameter_value = NIL;

  PROCEND delete_users;
?? OLDTITLE ??
?? NEWTITLE := 'avp$display_account_command', EJECT ??

{ PURPOSE:
{   This is the command processor for the DISPLAY_ACCOUNT subcommand.

  PROCEDURE [XDCL] avp$display_account_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_disa) display_account, display_accounts, disa (
{   account, accounts, a: (CHECK) any of
{       key
{         all
{       keyend
{       list of name
{     anyend = default__31__character__account
{   output, o: file = $output
{   display_option, display_options, do: (BY_NAME, CHECK) any of
{       key
{         all, none
{       keyend
{       list of name
{     anyend = all
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 9] of clt$pdt_parameter_name,
        parameters: array [1 .. 4] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (31),
        recend,
        type2: record
          header: clt$type_specification_header,
          default_value: string (7),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (3),
        recend,
        type4: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 12, 15, 6, 37, 271], clc$command, 9, 4, 0, 0, 0, 0, 4, 'OSM$ADMV_DISA'],
            [['A                              ', clc$abbreviation_entry, 1],
            ['ACCOUNT                        ', clc$nominal_entry, 1],
            ['ACCOUNTS                       ', clc$alias_entry, 1],
            ['DISPLAY_OPTION                 ', clc$nominal_entry, 3],
            ['DISPLAY_OPTIONS                ', clc$alias_entry, 3],
            ['DO                             ', clc$abbreviation_entry, 3],
            ['O                              ', clc$abbreviation_entry, 2],
            ['OUTPUT                         ', clc$nominal_entry, 2],
            ['STATUS                         ', clc$nominal_entry, 4]], [

{ PARAMETER 1

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 85, clc$optional_default_parameter, 0, 31],

{ PARAMETER 2

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_default_parameter, 0, 7],

{ PARAMETER 3

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 122,
            clc$optional_default_parameter, 0, 3],

{ PARAMETER 4

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]],
            'default__31__character__account'],

{ PARAMETER 2

      [[1, 0, clc$file_type], '$output'],

{ PARAMETER 3

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'all'],

{ PARAMETER 4

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$account = 1,
      p$output = 2,
      p$display_option = 3,
      p$status = 4;

    VAR
      pvt: array [1 .. 4] of clt$parameter_value;

?? POP ??

    VAR
      account_parameter_value: ^clt$data_value,
      altered_pdt: ^clt$parameter_description_table,
      assigned_record_id: ost$name,
      display_control: clt$display_control,
      display_option_list: ^avt$name_list,
      display_option_work_area: ^SEQ ( * ),
      file_contents: amt$file_contents,
      ignore_status: ost$status,
      local_account_name: avt$account_name,
      output: clt$value,
      pdt_changes: ^clt$pdt_changes,
      ring_attributes: amt$ring_attributes;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF which_parameter.specific THEN
        IF which_parameter.number = p$account THEN
          verify_list_of_names_value ('ACCOUNT', parameter_value_table^ [p$account].value, status);
        ELSEIF which_parameter.number = p$display_option THEN
          verify_list_of_names_value ('DISPLAY_OPTION', parameter_value_table^ [p$display_option].value,
                status);
        ELSE

{ Ignore the parameter.

        IFEND;
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
?? NEWTITLE := 'condition_handler', EJECT ??

{ PURPOSE:
{   This is a block exit condition handler that is used to insure that the output
{   file is closed in case of an abnormal exit.

    PROCEDURE condition_handler
      (    condition: pmt$condition;
           condition_information: ^pmt$condition_information;
           save_area: ^ost$stack_frame_save_area;
       VAR handler_status: ost$status);

      VAR
        ignore_status: ost$status;

      clp$close_display (display_control, ignore_status);

    PROCEND condition_handler;
?? OLDTITLE ??
?? NEWTITLE := 'currently_changing', EJECT ??

{ PURPOSE:
{   This function is used to determine if the account to be displayed is the
{   object of the currently active ADMINISTER_VALIDATIONS subutility.

    FUNCTION currently_changing
      (    account_name: avt$account_name): boolean;

      currently_changing := (current_subutility_session_info <> NIL) AND
            (current_subutility_session_info^.validation_record_name = avc$account_record_name) AND
            (current_subutility_session_info^.key.account_name = account_name);

    FUNCEND currently_changing;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the ACCOUNT parameter.

    PUSH pdt_changes: [1 .. 1];
    pdt_changes^ [1].number := p$account;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_account;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

{ Get the list of display options and verify that they are valid field names.

    PUSH display_option_work_area: [[REP avc$maximum_field_count OF ost$name]];
    RESET display_option_work_area;
    get_data_record_display_options (avc$account_record_name, pvt [p$display_option].value,
          display_option_work_area, display_option_list, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Open the output file.

    clv$titles_built := FALSE;
    clv$command_name := 'display_accounts';
    ring_attributes.r1 := #RING (^ring_attributes);
    ring_attributes.r2 := #RING (^ring_attributes);
    ring_attributes.r3 := #RING (^ring_attributes);
    file_contents := amc$list;

    clp$open_display_reference (pvt [p$output].value^.file_value^, ^clp$new_page_procedure, file_contents,
          ring_attributes, display_control, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    osp$establish_block_exit_hndlr (^condition_handler);

  /display/
    BEGIN

{ Display the specified accounts.

      IF pvt [p$account].value^.kind = clc$keyword THEN

{ Set up the validation file information so that the next record to be read
{ sequentially from the file will be the first account record.

        validation_file_information.last_key_accessed (1, 31) := osc$null_name {account_name} ;
        validation_file_information.last_key_accessed (32, 31) := osc$null_name {project_name} ;
        validation_file_information.last_key_accessed (63, 31) := osc$null_name {user_name} ;

{ Read the first account record.

        local_account_name := osc$null_name;
        avp$read_account_record (local_account_name, assigned_record_id, validation_file_information, status);
        IF (NOT status.normal) AND (status.condition = ave$end_of_template_file) THEN
          osp$set_status_abnormal ('AV', ave$no_accounts, '', status);
          RETURN;
        IFEND;

{ As long as there are account records, keep displaying them.

        WHILE status.normal DO
          IF currently_changing (local_account_name) THEN

{ Display the record as it appears with the changes so far.

            display_selected_fields (local_account_name, display_option_list, avc$account_record_name,
                  current_subutility_session_info^.id, display_control, status);
          ELSE

{ Display the record as it appears in the validation file.

            display_selected_fields (local_account_name, display_option_list, avc$account_record_name,
                  assigned_record_id, display_control, status);
          IFEND;
          IF NOT status.normal THEN
            EXIT /display/;
          IFEND;

{ Release the space used to hold the account record.

          avp$release_record_id (assigned_record_id, status);
          IF status.normal THEN
            assigned_record_id := osc$null_name;
          ELSE
            EXIT /display/;
          IFEND;

{ Read the next account record.

          local_account_name := osc$null_name;
          avp$read_account_record (local_account_name, assigned_record_id, validation_file_information,
                status);
        WHILEND;
        IF status.condition = ave$end_of_template_file THEN
          status.normal := TRUE;
        IFEND;
      ELSE
        account_parameter_value := pvt [p$account].value;
        REPEAT
          IF currently_changing (account_parameter_value^.element_value^.name_value) THEN

{ Display the record as it appears with the changes so far.

            display_selected_fields (account_parameter_value^.element_value^.name_value, display_option_list,
                  avc$account_record_name, current_subutility_session_info^.id, display_control, status);
          ELSE

{ Read the record from the validation file and display it as it appears on the
{ file.

            local_account_name := account_parameter_value^.element_value^.name_value;
            avp$read_account_record (local_account_name, assigned_record_id, validation_file_information,
                  status);
            IF NOT status.normal THEN
              EXIT /display/;
            IFEND;

            display_selected_fields (local_account_name, display_option_list, avc$account_record_name,
                  assigned_record_id, display_control, status);
            IF NOT status.normal THEN
              EXIT /display/;
            IFEND;

{ Release the space used to hold the account record.

            avp$release_record_id (assigned_record_id, status);
            IF status.normal THEN
              assigned_record_id := osc$null_name;
            ELSE
              EXIT /display/;
            IFEND;
          IFEND;
          account_parameter_value := account_parameter_value^.link;
        UNTIL account_parameter_value = NIL;
      IFEND;
    END /display/;

    IF NOT status.normal THEN
      IF assigned_record_id <> osc$null_name THEN
        avp$release_record_id (assigned_record_id, ignore_status);
      IFEND;
      clp$close_display (display_control, ignore_status);
    ELSE
      clp$close_display (display_control, status);
    IFEND;

    osp$disestablish_cond_handler;

  PROCEND avp$display_account_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$display_acct_member_command', EJECT ??

{ PURPOSE:
{   This is the command processor for the DISPLAY_ACCOUNT_MEMBER subcommand.

  PROCEDURE [XDCL] avp$display_acct_member_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_disam) display_account_member, display_account_members, disam (
{   user, users, u: (CHECK) any of
{       key
{         all
{       keyend
{       list of name
{     anyend = default___31___character___user
{   account, a: name = default__31__character__account
{   output, o: file = $output
{   display_option, display_options, do: (BY_NAME, CHECK) any of
{       key
{         all, none
{       keyend
{       list of name
{     anyend = all
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 11] of clt$pdt_parameter_name,
        parameters: array [1 .. 5] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (31),
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type3: record
          header: clt$type_specification_header,
          default_value: string (7),
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (3),
        recend,
        type5: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 12, 15, 7, 15, 97], clc$command, 11, 5, 0, 0, 0, 0, 5, 'OSM$ADMV_DISAM'],
            [['A                              ', clc$abbreviation_entry, 2],
            ['ACCOUNT                        ', clc$nominal_entry, 2],
            ['DISPLAY_OPTION                 ', clc$nominal_entry, 4],
            ['DISPLAY_OPTIONS                ', clc$alias_entry, 4],
            ['DO                             ', clc$abbreviation_entry, 4],
            ['O                              ', clc$abbreviation_entry, 3],
            ['OUTPUT                         ', clc$nominal_entry, 3],
            ['STATUS                         ', clc$nominal_entry, 5],
            ['U                              ', clc$abbreviation_entry, 1],
            ['USER                           ', clc$nominal_entry, 1],
            ['USERS                          ', clc$alias_entry, 1]], [

{ PARAMETER 1

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 85, clc$optional_default_parameter, 0, 31],

{ PARAMETER 2

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 3

      [7, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_default_parameter, 0, 7],

{ PARAMETER 4

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 122,
            clc$optional_default_parameter, 0, 3],

{ PARAMETER 5

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]],
            'default___31___character___user'],

{ PARAMETER 2

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default__31__character__account'],

{ PARAMETER 3

      [[1, 0, clc$file_type], '$output'],

{ PARAMETER 4

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'all'],

{ PARAMETER 5

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$user = 1,
      p$account = 2,
      p$output = 3,
      p$display_option = 4,
      p$status = 5;

    VAR
      pvt: array [1 .. 5] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      assigned_record_id: ost$name,
      display_control: clt$display_control,
      display_option_list: ^avt$name_list,
      display_option_work_area: ^SEQ ( * ),
      file_contents: amt$file_contents,
      ignore_status: ost$status,
      local_account_name: avt$account_name,
      local_member_name: ost$user_name,
      pdt_changes: ^clt$pdt_changes,
      ring_attributes: amt$ring_attributes,
      user_parameter_value: ^clt$data_value;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF which_parameter.specific THEN
        IF which_parameter.number = p$user THEN
          verify_list_of_names_value ('USER', parameter_value_table^ [p$user].value, status);
        ELSEIF which_parameter.number = p$display_option THEN
          verify_list_of_names_value ('DISPLAY_OPTION', parameter_value_table^ [p$display_option].value,
                status);
        ELSE

{ Ignore the parameter.

        IFEND;
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
?? NEWTITLE := 'condition_handler', EJECT ??

{ PURPOSE:
{   This is a block exit condition handler that is used to insure that the output
{   file is closed in case of an abnormal exit.

    PROCEDURE condition_handler
      (    condition: pmt$condition;
           condition_information: ^pmt$condition_information;
           save_area: ^ost$stack_frame_save_area;
       VAR handler_status: ost$status);

      VAR
        ignore_status: ost$status;

      clp$close_display (display_control, ignore_status);

    PROCEND condition_handler;
?? OLDTITLE ??
?? NEWTITLE := 'currently_changing', EJECT ??

{ PURPOSE:
{   This function is used to determine if the account member to be displayed is
{   the object of the currently active ADMINISTER_VALIDATIONS subutility.

    FUNCTION currently_changing
      (    account_name: avt$account_name;
           user_name: ost$user_name): boolean;

      currently_changing := (current_subutility_session_info <> NIL) AND
            (current_subutility_session_info^.validation_record_name = avc$account_member_record_name) AND
            (current_subutility_session_info^.key.account_name = account_name) AND
            (current_subutility_session_info^.key.user_name = user_name);

    FUNCEND currently_changing;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the USER and ACCOUNT parameters.

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$user;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_user;
    pdt_changes^ [2].number := p$account;
    pdt_changes^ [2].kind := clc$pdtc_default_value;
    pdt_changes^ [2].default_value := ^default_account;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

{ Get the list of display options and verify that they are valid field names.

    PUSH display_option_work_area: [[REP avc$maximum_field_count OF ost$name]];
    RESET display_option_work_area;
    get_data_record_display_options (avc$account_member_record_name, pvt [p$display_option].value,
          display_option_work_area, display_option_list, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Open the output file.

    clv$titles_built := FALSE;
    clv$command_name := 'display_account_members';
    ring_attributes.r1 := #RING (^ring_attributes);
    ring_attributes.r2 := #RING (^ring_attributes);
    ring_attributes.r3 := #RING (^ring_attributes);
    file_contents := amc$list;

    clp$open_display_reference (pvt [p$output].value^.file_value^, ^clp$new_page_procedure, file_contents,
          ring_attributes, display_control, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    osp$establish_block_exit_hndlr (^condition_handler);

  /display/
    BEGIN

{ Display the specified account members.

      IF pvt [p$user].value^.kind = clc$keyword THEN

{ Set up the validation file information so that the next record to be read
{ sequentially from the file will be the first account member record for the
{ specified account.

        validation_file_information.last_key_accessed (1, 31) := pvt [p$account].value^.name_value;
        validation_file_information.last_key_accessed (32, 31) := osc$null_name {project_name} ;
        validation_file_information.last_key_accessed (63, 31) := osc$null_name {user_name} ;

{ Read the first account member record.

        local_account_name := pvt [p$account].value^.name_value;
        local_member_name := osc$null_name;
        avp$read_account_member_record (local_account_name, local_member_name, assigned_record_id,
              validation_file_information, status);
        IF ((NOT status.normal) AND (status.condition = ave$end_of_template_file)) OR
              (local_account_name <> pvt [p$account].value^.name_value) THEN
          osp$set_status_abnormal ('AV', ave$no_account_members, pvt [p$account].value^.name_value, status);
          RETURN;
        IFEND;

{ As long as there are account member records, keep displaying them.

        WHILE (status.normal) AND (local_account_name = pvt [p$account].value^.name_value) DO
          IF currently_changing (local_account_name, local_member_name) THEN

{ Display the record as it appears with the changes so far.

            display_selected_fields (local_member_name, display_option_list, avc$account_member_record_name,
                  current_subutility_session_info^.id, display_control, status);
          ELSE

{ Display the record as it appears in the validation file.

            display_selected_fields (local_member_name, display_option_list, avc$account_member_record_name,
                  assigned_record_id, display_control, status);
          IFEND;
          IF NOT status.normal THEN
            EXIT /display/;
          IFEND;

{ Release the space used to hold the account member record.

          avp$release_record_id (assigned_record_id, status);
          IF status.normal THEN
            assigned_record_id := osc$null_name;
          ELSE
            EXIT /display/;
          IFEND;

{ Read the next account member record.

          local_account_name := pvt [p$account].value^.name_value;
          local_member_name := osc$null_name;
          avp$read_account_member_record (local_account_name, local_member_name, assigned_record_id,
                validation_file_information, status);
        WHILEND;
        IF status.condition = ave$end_of_template_file THEN
          status.normal := TRUE;
        IFEND;
      ELSE
        local_account_name := pvt [p$account].value^.name_value;
        user_parameter_value := pvt [p$user].value;
        REPEAT
          local_member_name := user_parameter_value^.element_value^.name_value;
          IF currently_changing (local_account_name, local_member_name) THEN

{ Display the record as it appears with the changes so far.

            display_selected_fields (local_member_name, display_option_list, avc$account_member_record_name,
                  current_subutility_session_info^.id, display_control, status);
          ELSE

{ Read the record from the validation file and display it as it appears on the
{ file.

            avp$read_account_member_record (local_account_name, local_member_name, assigned_record_id,
                  validation_file_information, status);
            IF NOT status.normal THEN
              EXIT /display/;
            IFEND;

            display_selected_fields (local_member_name, display_option_list, avc$account_member_record_name,
                  assigned_record_id, display_control, status);
            IF NOT status.normal THEN
              EXIT /display/;
            IFEND;

{ Release the space used to hold the account member record.

            avp$release_record_id (assigned_record_id, status);
            IF status.normal THEN
              assigned_record_id := osc$null_name;
            ELSE
              EXIT /display/;
            IFEND;
          IFEND;
          user_parameter_value := user_parameter_value^.link;
        UNTIL user_parameter_value = NIL;
      IFEND;
    END /display/;

    IF NOT status.normal THEN
      IF assigned_record_id <> osc$null_name THEN
        avp$release_record_id (assigned_record_id, ignore_status);
      IFEND;
      clp$close_display (display_control, ignore_status);
    ELSE
      clp$close_display (display_control, status);
    IFEND;

    osp$disestablish_cond_handler;

  PROCEND avp$display_acct_member_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$display_project_command', EJECT ??

{ PURPOSE:
{   This is the command processor for the DISPLAY_PROJECT subcommand.

  PROCEDURE [XDCL] avp$display_project_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_disp) display_project, display_projects, disp (
{   project, projects, p: (CHECK) any of
{       key
{         all
{       keyend
{       list of name
{     anyend = default__31__character__project
{   account, a: name = default__31__character__account
{   output, o: file = $output
{   display_option, display_options, do: (BY_NAME, CHECK) any of
{       key
{         all, none
{       keyend
{       list of name
{     anyend = all
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 11] of clt$pdt_parameter_name,
        parameters: array [1 .. 5] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (31),
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type3: record
          header: clt$type_specification_header,
          default_value: string (7),
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (3),
        recend,
        type5: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 12, 15, 8, 17, 561], clc$command, 11, 5, 0, 0, 0, 0, 5, 'OSM$ADMV_DISP'],
            [['A                              ', clc$abbreviation_entry, 2],
            ['ACCOUNT                        ', clc$nominal_entry, 2],
            ['DISPLAY_OPTION                 ', clc$nominal_entry, 4],
            ['DISPLAY_OPTIONS                ', clc$alias_entry, 4],
            ['DO                             ', clc$abbreviation_entry, 4],
            ['O                              ', clc$abbreviation_entry, 3],
            ['OUTPUT                         ', clc$nominal_entry, 3],
            ['P                              ', clc$abbreviation_entry, 1],
            ['PROJECT                        ', clc$nominal_entry, 1],
            ['PROJECTS                       ', clc$alias_entry, 1],
            ['STATUS                         ', clc$nominal_entry, 5]], [

{ PARAMETER 1

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 85, clc$optional_default_parameter, 0, 31],

{ PARAMETER 2

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 3

      [7, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_default_parameter, 0, 7],

{ PARAMETER 4

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 122,
            clc$optional_default_parameter, 0, 3],

{ PARAMETER 5

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]],
            'default__31__character__project'],

{ PARAMETER 2

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default__31__character__account'],

{ PARAMETER 3

      [[1, 0, clc$file_type], '$output'],

{ PARAMETER 4

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'all'],

{ PARAMETER 5

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$project = 1,
      p$account = 2,
      p$output = 3,
      p$display_option = 4,
      p$status = 5;

    VAR
      pvt: array [1 .. 5] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      assigned_record_id: ost$name,
      display_control: clt$display_control,
      display_option_list: ^avt$name_list,
      display_option_work_area: ^SEQ ( * ),
      file_contents: amt$file_contents,
      ignore_status: ost$status,
      local_account_name: avt$account_name,
      local_project_name: avt$project_name,
      pdt_changes: ^clt$pdt_changes,
      project_parameter_value: ^clt$data_value,
      ring_attributes: amt$ring_attributes;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF which_parameter.specific THEN
        IF which_parameter.number = p$project THEN
          verify_list_of_names_value ('PROJECT', parameter_value_table^ [p$project].value, status);
        ELSEIF which_parameter.number = p$display_option THEN
          verify_list_of_names_value ('DISPLAY_OPTION', parameter_value_table^ [p$display_option].value,
                status);
        ELSE

{ Ignore the parameter.

        IFEND;
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
?? NEWTITLE := 'condition_handler', EJECT ??

{ PURPOSE:
{   This is a block exit condition handler that is used to insure that the output
{   file is closed in case of an abnormal exit.

    PROCEDURE condition_handler
      (    condition: pmt$condition;
           condition_information: ^pmt$condition_information;
           save_area: ^ost$stack_frame_save_area;
       VAR handler_status: ost$status);

      VAR
        ignore_status: ost$status;

      clp$close_display (display_control, ignore_status);

    PROCEND condition_handler;
?? OLDTITLE ??
?? NEWTITLE := 'currently_changing', EJECT ??

{ PURPOSE:
{   This function is used to determine if the project to be displayed is
{   the object of the currently active ADMINISTER_VALIDATIONS subutility.

    FUNCTION currently_changing
      (    account_name: avt$account_name;
           project_name: avt$project_name): boolean;

      currently_changing := (current_subutility_session_info <> NIL) AND
            (current_subutility_session_info^.validation_record_name = avc$project_record_name) AND
            (current_subutility_session_info^.key.account_name = account_name) AND
            (current_subutility_session_info^.key.project_name = project_name);

    FUNCEND currently_changing;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the PROJECT and ACCOUNT parameters.

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$project;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_project;
    pdt_changes^ [2].number := p$account;
    pdt_changes^ [2].kind := clc$pdtc_default_value;
    pdt_changes^ [2].default_value := ^default_account;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

{ Get the list of display options and verify that they are valid field names.

    PUSH display_option_work_area: [[REP avc$maximum_field_count OF ost$name]];
    RESET display_option_work_area;
    get_data_record_display_options (avc$project_record_name, pvt [p$display_option].value,
          display_option_work_area, display_option_list, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Open the output file.

    clv$titles_built := FALSE;
    clv$command_name := 'display_projects';
    ring_attributes.r1 := #RING (^ring_attributes);
    ring_attributes.r2 := #RING (^ring_attributes);
    ring_attributes.r3 := #RING (^ring_attributes);
    file_contents := amc$list;

    clp$open_display_reference (pvt [p$output].value^.file_value^, ^clp$new_page_procedure, file_contents,
          ring_attributes, display_control, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    osp$establish_block_exit_hndlr (^condition_handler);

  /display/
    BEGIN

{ Display the specified projects.

      IF pvt [p$project].value^.kind = clc$keyword THEN

{ Set up the validation file information so that the next record to be read
{ sequentially from the file will be the first project record for the
{ specified account.

        validation_file_information.last_key_accessed (1, 31) := pvt [p$account].value^.name_value;
        validation_file_information.last_key_accessed (32, 31) := osc$null_name {project_name} ;
        validation_file_information.last_key_accessed (63, 31) := osc$null_name {user_name} ;

{ Read the first project record.

        local_account_name := pvt [p$account].value^.name_value;
        local_project_name := osc$null_name;
        avp$read_project_record (local_account_name, local_project_name, assigned_record_id,
              validation_file_information, status);
        IF ((NOT status.normal) AND (status.condition = ave$end_of_template_file)) OR
              (local_account_name <> pvt [p$account].value^.name_value) THEN
          osp$set_status_abnormal ('AV', ave$no_projects, pvt [p$account].value^.name_value, status);
          RETURN;
        IFEND;

{ As long as there are project records, keep displaying them.

        WHILE (status.normal) AND (local_account_name = pvt [p$account].value^.name_value) DO
          IF currently_changing (local_account_name, local_project_name) THEN

{ Display the record as it appears with the changes so far.

            display_selected_fields (local_project_name, display_option_list, avc$project_record_name,
                  current_subutility_session_info^.id, display_control, status);
          ELSE

{ Display the record as it appears in the validation file.

            display_selected_fields (local_project_name, display_option_list, avc$project_record_name,
                  assigned_record_id, display_control, status);
          IFEND;
          IF NOT status.normal THEN
            EXIT /display/;
          IFEND;

{ Release the space used to hold the project record.

          avp$release_record_id (assigned_record_id, status);
          IF status.normal THEN
            assigned_record_id := osc$null_name;
          ELSE
            EXIT /display/;
          IFEND;

{ Read the next project record.

          local_account_name := pvt [p$account].value^.name_value;
          local_project_name := osc$null_name;
          avp$read_project_record (local_account_name, local_project_name, assigned_record_id,
                validation_file_information, status);
        WHILEND;
        IF status.condition = ave$end_of_template_file THEN
          status.normal := TRUE;
        IFEND;
      ELSE
        local_account_name := pvt [p$account].value^.name_value;
        project_parameter_value := pvt [p$project].value;
        REPEAT
          local_project_name := project_parameter_value^.element_value^.name_value;
          IF currently_changing (local_account_name, local_project_name) THEN

{ Display the record as it appears with the changes so far.

            display_selected_fields (local_project_name, display_option_list, avc$project_record_name,
                  current_subutility_session_info^.id, display_control, status);
          ELSE

{ Read the record from the validation file and display it as it appears on the
{ file.

            avp$read_project_record (local_account_name, local_project_name, assigned_record_id,
                  validation_file_information, status);
            IF NOT status.normal THEN
              EXIT /display/;
            IFEND;

            display_selected_fields (local_project_name, display_option_list, avc$project_record_name,
                  assigned_record_id, display_control, status);
            IF NOT status.normal THEN
              EXIT /display/;
            IFEND;

{ Release the space used to hold the project record.

            avp$release_record_id (assigned_record_id, status);
            IF status.normal THEN
              assigned_record_id := osc$null_name;
            ELSE
              EXIT /display/;
            IFEND;
          IFEND;
          project_parameter_value := project_parameter_value^.link;
        UNTIL project_parameter_value = NIL;
      IFEND;
    END /display/;

    IF NOT status.normal THEN
      IF assigned_record_id <> osc$null_name THEN
        avp$release_record_id (assigned_record_id, ignore_status);
      IFEND;
      clp$close_display (display_control, ignore_status);
    ELSE
      clp$close_display (display_control, status);
    IFEND;

    osp$disestablish_cond_handler;

  PROCEND avp$display_project_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$display_proj_member_command', EJECT ??

{ PURPOSE:
{   This is the command processor for the DISPLAY_PROJECT_MEMBER subcommand.

  PROCEDURE [XDCL] avp$display_proj_member_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_dispm) display_project_member, display_project_members, dispm (
{   user, users, u: (CHECK) any of
{       key
{         all
{       keyend
{       list of name
{     anyend = default___31___character___user
{   account, a: name = default__31__character__account
{   project, p: name = default__31__character__project
{   output, o: file = $output
{   display_option, display_options, do: (BY_NAME, CHECK) any of
{       key
{         all, none
{       keyend
{       list of name
{     anyend = all
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 13] of clt$pdt_parameter_name,
        parameters: array [1 .. 6] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (31),
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
          default_value: string (31),
        recend,
        type4: record
          header: clt$type_specification_header,
          default_value: string (7),
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (3),
        recend,
        type6: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 12, 15, 8, 51, 634], clc$command, 13, 6, 0, 0, 0, 0, 6, 'OSM$ADMV_DISPM'],
            [['A                              ', clc$abbreviation_entry, 2],
            ['ACCOUNT                        ', clc$nominal_entry, 2],
            ['DISPLAY_OPTION                 ', clc$nominal_entry, 5],
            ['DISPLAY_OPTIONS                ', clc$alias_entry, 5],
            ['DO                             ', clc$abbreviation_entry, 5],
            ['O                              ', clc$abbreviation_entry, 4],
            ['OUTPUT                         ', clc$nominal_entry, 4],
            ['P                              ', clc$abbreviation_entry, 3],
            ['PROJECT                        ', clc$nominal_entry, 3],
            ['STATUS                         ', clc$nominal_entry, 6],
            ['U                              ', clc$abbreviation_entry, 1],
            ['USER                           ', clc$nominal_entry, 1],
            ['USERS                          ', clc$alias_entry, 1]], [

{ PARAMETER 1

      [12, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 85, clc$optional_default_parameter, 0, 31],

{ PARAMETER 2

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 3

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_default_parameter, 0, 31],

{ PARAMETER 4

      [7, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_default_parameter, 0, 7],

{ PARAMETER 5

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 122,
            clc$optional_default_parameter, 0, 3],

{ PARAMETER 6

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]],
            'default___31___character___user'],

{ PARAMETER 2

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default__31__character__account'],

{ PARAMETER 3

      [[1, 0, clc$name_type], [1, osc$max_name_size], 'default__31__character__project'],

{ PARAMETER 4

      [[1, 0, clc$file_type], '$output'],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'all'],

{ PARAMETER 6

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$user = 1,
      p$account = 2,
      p$project = 3,
      p$output = 4,
      p$display_option = 5,
      p$status = 6;

    VAR
      pvt: array [1 .. 6] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      assigned_record_id: ost$name,
      display_control: clt$display_control,
      display_option_list: ^avt$name_list,
      display_option_work_area: ^SEQ ( * ),
      file_contents: amt$file_contents,
      ignore_status: ost$status,
      local_account_name: avt$account_name,
      local_member_name: ost$user_name,
      local_project_name: avt$project_name,
      members_to_display: ^avt$name_list,
      pdt_changes: ^clt$pdt_changes,
      ring_attributes: amt$ring_attributes,
      user_parameter_value: ^clt$data_value;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF which_parameter.specific THEN
        IF which_parameter.number = p$user THEN
          verify_list_of_names_value ('USER', parameter_value_table^ [p$user].value, status);
        ELSEIF which_parameter.number = p$display_option THEN
          verify_list_of_names_value ('DISPLAY_OPTION', parameter_value_table^ [p$display_option].value,
                status);
        ELSE

{ Ignore the parameter.

        IFEND;
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
?? NEWTITLE := 'condition_handler', EJECT ??

{ PURPOSE:
{   This is a block exit condition handler that is used to insure that the output
{   file is closed in case of an abnormal exit.

    PROCEDURE condition_handler
      (    condition: pmt$condition;
           condition_information: ^pmt$condition_information;
           save_area: ^ost$stack_frame_save_area;
       VAR handler_status: ost$status);

      VAR
        ignore_status: ost$status;

      clp$close_display (display_control, ignore_status);

    PROCEND condition_handler;
?? OLDTITLE ??
?? NEWTITLE := 'currently_changing', EJECT ??

{ PURPOSE:
{   This function is used to determine if the project member to be displayed is
{   the object of the currently active ADMINISTER_VALIDATIONS subutility.

    FUNCTION currently_changing
      (    account_name: avt$account_name;
           project_name: avt$project_name;
           user_name: ost$user_name): boolean;

      currently_changing := (current_subutility_session_info <> NIL) AND
            (current_subutility_session_info^.validation_record_name = avc$project_member_record_name) AND
            (current_subutility_session_info^.key.account_name = account_name) AND
            (current_subutility_session_info^.key.project_name = project_name) AND
            (current_subutility_session_info^.key.user_name = user_name);

    FUNCEND currently_changing;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the USER, ACCOUNT and PROJECT parameters.

    PUSH pdt_changes: [1 .. 3];
    pdt_changes^ [1].number := p$user;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_user;
    pdt_changes^ [2].number := p$account;
    pdt_changes^ [2].kind := clc$pdtc_default_value;
    pdt_changes^ [2].default_value := ^default_account;
    pdt_changes^ [3].number := p$project;
    pdt_changes^ [3].kind := clc$pdtc_default_value;
    pdt_changes^ [3].default_value := ^default_project;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

{ Get the list of display options and verify that they are valid field names.

    PUSH display_option_work_area: [[REP avc$maximum_field_count OF ost$name]];
    RESET display_option_work_area;
    get_data_record_display_options (avc$project_member_record_name, pvt [p$display_option].value,
          display_option_work_area, display_option_list, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Open the output file.

    clv$titles_built := FALSE;
    clv$command_name := 'display_project_members';
    ring_attributes.r1 := #RING (^ring_attributes);
    ring_attributes.r2 := #RING (^ring_attributes);
    ring_attributes.r3 := #RING (^ring_attributes);
    file_contents := amc$list;

    clp$open_display_reference (pvt [p$output].value^.file_value^, ^clp$new_page_procedure, file_contents,
          ring_attributes, display_control, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    osp$establish_block_exit_hndlr (^condition_handler);

  /display/
    BEGIN

{ Display the specified project members.

      IF pvt [p$user].value^.kind = clc$keyword THEN

{ Set up the validation file information so that the next record to be read
{ sequentially from the file will be the first project member record for the
{ specified account and project.

        validation_file_information.last_key_accessed (1, 31) := pvt [p$account].value^.name_value;
        validation_file_information.last_key_accessed (32, 31) := pvt [p$project].value^.name_value;
        validation_file_information.last_key_accessed (63, 31) := osc$null_name {user_name} ;

{ Read the first project member record.

        local_account_name := pvt [p$account].value^.name_value;
        local_project_name := pvt [p$project].value^.name_value;
        local_member_name := osc$null_name;
        avp$read_project_member_record (local_account_name, local_project_name, local_member_name,
              assigned_record_id, validation_file_information, status);
        IF ((NOT status.normal) AND (status.condition = ave$end_of_template_file)) OR
              (local_account_name <> pvt [p$account].value^.name_value) OR
              (local_project_name <> pvt [p$project].value^.name_value) THEN
          osp$set_status_abnormal ('AV', ave$no_project_members, pvt [p$project].value^.name_value, status);
          osp$append_status_parameter (osc$status_parameter_delimiter, pvt [p$account].value^.name_value,
                status);
          RETURN;
        IFEND;

{ As long as there are project member records, keep displaying them.

        WHILE (status.normal) AND (local_account_name = pvt [p$account].value^.name_value) AND
              (local_project_name = pvt [p$project].value^.name_value) DO
          IF currently_changing (local_account_name, local_project_name, local_member_name) THEN

{ Display the record as it appears with the changes so far.

            display_selected_fields (local_member_name, display_option_list, avc$project_member_record_name,
                  current_subutility_session_info^.id, display_control, status);
          ELSE

{ Display the record as it appears in the validation file.

            display_selected_fields (local_member_name, display_option_list, avc$project_member_record_name,
                  assigned_record_id, display_control, status);
          IFEND;
          IF NOT status.normal THEN
            EXIT /display/;
          IFEND;

{ Release the space used to hold the project member record.

          avp$release_record_id (assigned_record_id, status);
          IF status.normal THEN
            assigned_record_id := osc$null_name;
          ELSE
            EXIT /display/;
          IFEND;

{ Read the next project member record.

          local_account_name := pvt [p$account].value^.name_value;
          local_project_name := pvt [p$project].value^.name_value;
          local_member_name := osc$null_name;
          avp$read_project_member_record (local_account_name, local_project_name, local_member_name,
                assigned_record_id, validation_file_information, status);
        WHILEND;
        IF status.condition = ave$end_of_template_file THEN
          status.normal := TRUE;
        IFEND;
      ELSE
        local_account_name := pvt [p$account].value^.name_value;
        local_project_name := pvt [p$project].value^.name_value;
        user_parameter_value := pvt [p$user].value;
        REPEAT
          local_member_name := user_parameter_value^.element_value^.name_value;
          IF currently_changing (local_account_name, local_project_name, local_member_name) THEN

{ Display the record as it appears with the changes so far.

            display_selected_fields (local_member_name, display_option_list, avc$project_member_record_name,
                  current_subutility_session_info^.id, display_control, status);
          ELSE

{ Read the record from the validation file and display it as it appears on the
{ file.

            avp$read_project_member_record (local_account_name, local_project_name, local_member_name,
                  assigned_record_id, validation_file_information, status);
            IF NOT status.normal THEN
              EXIT /display/;
            IFEND;

            display_selected_fields (local_member_name, display_option_list, avc$project_member_record_name,
                  assigned_record_id, display_control, status);
            IF NOT status.normal THEN
              EXIT /display/;
            IFEND;

{ Release the space used to hold the project member record.

            avp$release_record_id (assigned_record_id, status);
            IF status.normal THEN
              assigned_record_id := osc$null_name;
            ELSE
              EXIT /display/;
            IFEND;
          IFEND;
          user_parameter_value := user_parameter_value^.link;
        UNTIL user_parameter_value = NIL;
      IFEND;
    END /display/;

    osp$disestablish_cond_handler;

    IF NOT status.normal THEN
      IF assigned_record_id <> osc$null_name THEN
        avp$release_record_id (assigned_record_id, ignore_status);
      IFEND;
      clp$close_display (display_control, ignore_status);
    ELSE
      clp$close_display (display_control, status);
    IFEND;

    osp$disestablish_cond_handler;

  PROCEND avp$display_proj_member_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$display_user_command', EJECT ??

{ PURPOSE:
{   This is the command processor for the DISPLAY_USER subcommand.

  PROCEDURE [XDCL] avp$display_user_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_disu) display_user, display_users, disu (
{   user, users, u: (CHECK) any of
{       key
{         all
{       keyend
{       list of name
{     anyend = default___31___character___user
{   output, o: file = $output
{   display_option, display_options, do: (BY_NAME, CHECK) any of
{       key
{         all, none
{       keyend
{       list of name
{     anyend = all
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 9] of clt$pdt_parameter_name,
        parameters: array [1 .. 4] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (31),
        recend,
        type2: record
          header: clt$type_specification_header,
          default_value: string (7),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (3),
        recend,
        type4: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 12, 15, 9, 26, 652], clc$command, 9, 4, 0, 0, 0, 0, 4, 'OSM$ADMV_DISU'],
            [['DISPLAY_OPTION                 ', clc$nominal_entry, 3],
            ['DISPLAY_OPTIONS                ', clc$alias_entry, 3],
            ['DO                             ', clc$abbreviation_entry, 3],
            ['O                              ', clc$abbreviation_entry, 2],
            ['OUTPUT                         ', clc$nominal_entry, 2],
            ['STATUS                         ', clc$nominal_entry, 4],
            ['U                              ', clc$abbreviation_entry, 1],
            ['USER                           ', clc$nominal_entry, 1],
            ['USERS                          ', clc$alias_entry, 1]], [

{ PARAMETER 1

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 85, clc$optional_default_parameter, 0, 31],

{ PARAMETER 2

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_default_parameter, 0, 7],

{ PARAMETER 3

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 122,
            clc$optional_default_parameter, 0, 3],

{ PARAMETER 4

      [6, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]],
            'default___31___character___user'],

{ PARAMETER 2

      [[1, 0, clc$file_type], '$output'],

{ PARAMETER 3

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'all'],

{ PARAMETER 4

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$user = 1,
      p$output = 2,
      p$display_option = 3,
      p$status = 4;

    VAR
      pvt: array [1 .. 4] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      assigned_record_id: ost$name,
      display_control: clt$display_control,
      display_option_list: ^avt$name_list,
      display_option_work_area: ^SEQ ( * ),
      file_contents: amt$file_contents,
      ignore_status: ost$status,
      local_user_name: ost$user_name,
      pdt_changes: ^clt$pdt_changes,
      ring_attributes: amt$ring_attributes,
      user_parameter_value: ^clt$data_value;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$user) THEN
        verify_list_of_names_value ('USER', parameter_value_table^ [p$user].value, status);
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
?? NEWTITLE := 'condition_handler', EJECT ??

{ PURPOSE:
{   This is a block exit condition handler that is used to insure that the output
{   file is closed in case of an abnormal exit.

    PROCEDURE condition_handler
      (    condition: pmt$condition;
           condition_information: ^pmt$condition_information;
           save_area: ^ost$stack_frame_save_area;
       VAR handler_status: ost$status);

      VAR
        ignore_status: ost$status;

      clp$close_display (display_control, ignore_status);

    PROCEND condition_handler;
?? OLDTITLE ??
?? NEWTITLE := 'currently_changing', EJECT ??

{ PURPOSE:
{   This function is used to determine if the user to be displayed is the
{   object of the currently active ADMINISTER_VALIDATIONS subutility.

    FUNCTION currently_changing
      (    user_name: ost$user_name): boolean;

      currently_changing := (current_subutility_session_info <> NIL) AND
            (current_subutility_session_info^.validation_record_name = avc$user_record_name) AND
            (current_subutility_session_info^.key.user_name = user_name);

    FUNCEND currently_changing;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the USER parameter.

    PUSH pdt_changes: [1 .. 1];
    pdt_changes^ [1].number := p$user;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_user;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

{ Get the list of display options and verify that they are valid field names.

    PUSH display_option_work_area: [[REP avc$maximum_field_count OF ost$name]];
    RESET display_option_work_area;
    get_data_record_display_options (avc$user_record_name, pvt [p$display_option].value,
          display_option_work_area, display_option_list, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Open the output file.

    clv$titles_built := FALSE;
    clv$command_name := 'display_users';
    ring_attributes.r1 := #RING (^ring_attributes);
    ring_attributes.r2 := #RING (^ring_attributes);
    ring_attributes.r3 := #RING (^ring_attributes);
    file_contents := amc$list;

    clp$open_display_reference (pvt [p$output].value^.file_value^, ^clp$new_page_procedure, file_contents,
          ring_attributes, display_control, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    osp$establish_block_exit_hndlr (^condition_handler);

  /display/
    BEGIN

{ Display the specified users.

      IF pvt [p$user].value^.kind = clc$keyword THEN

{ Set up the validation file information so that the next record to be read
{ sequentially from the file will be the first user record.

        validation_file_information.last_key_accessed (1, 31) := avc$high_value_name {account_name} ;
        validation_file_information.last_key_accessed (32, 31) := avc$high_value_name {project_name} ;
        validation_file_information.last_key_accessed (63, 31) := osc$null_name {user_name} ;

{ Read user records starting with the first one until a user record that can be displayed is found.

        REPEAT
          local_user_name := osc$null_name;
          avp$read_user_record (local_user_name, assigned_record_id, validation_file_information, status);
        UNTIL (status.normal) OR (status.condition <> ave$insufficient_authority);

{ As long as there are user records, keep displaying them.

        WHILE status.normal DO
          IF currently_changing (local_user_name) THEN

{ Display the record as it appears with the changes so far.

            display_selected_fields (local_user_name, display_option_list, avc$user_record_name,
                  current_subutility_session_info^.id, display_control, status);
          ELSE

{ Display the record as it appears in the validation file.

            display_selected_fields (local_user_name, display_option_list, avc$user_record_name,
                  assigned_record_id, display_control, status);
          IFEND;
          IF NOT status.normal THEN
            EXIT /display/;
          IFEND;

{ Release the space used to hold the user record.

          avp$release_record_id (assigned_record_id, status);
          IF status.normal THEN
            assigned_record_id := osc$null_name;
          ELSE
            EXIT /display/;
          IFEND;

{ Read user records until the next one that can be displayed is found.

          REPEAT
            local_user_name := osc$null_name;
            avp$read_user_record (local_user_name, assigned_record_id, validation_file_information, status);
          UNTIL (status.normal) OR (status.condition <> ave$insufficient_authority);
        WHILEND;
        IF status.condition = ave$end_of_template_file THEN
          status.normal := TRUE;
        IFEND;
      ELSE
        user_parameter_value := pvt [p$user].value;
        REPEAT
          local_user_name := user_parameter_value^.element_value^.name_value;
          IF currently_changing (local_user_name) THEN

{ Display the record as it appears with the changes so far.

            display_selected_fields (local_user_name, display_option_list, avc$user_record_name,
                  current_subutility_session_info^.id, display_control, status);
          ELSE

{ Read the record from the validation file and display it as it appears on the
{ file.

            avp$read_user_record (local_user_name, assigned_record_id, validation_file_information, status);
            IF NOT status.normal THEN
              EXIT /display/;
            IFEND;

            display_selected_fields (local_user_name, display_option_list, avc$user_record_name,
                  assigned_record_id, display_control, status);
            IF NOT status.normal THEN
              EXIT /display/;
            IFEND;

{ Release the space used to hold the user record.

            avp$release_record_id (assigned_record_id, status);
            IF status.normal THEN
              assigned_record_id := osc$null_name;
            ELSE
              EXIT /display/;
            IFEND;
          IFEND;
          user_parameter_value := user_parameter_value^.link;
        UNTIL user_parameter_value = NIL;
      IFEND;
    END /display/;

    osp$disestablish_cond_handler;

    IF NOT status.normal THEN
      IF assigned_record_id <> osc$null_name THEN
        avp$release_record_id (assigned_record_id, ignore_status);
      IFEND;
      clp$close_display (display_control, ignore_status);
    ELSE
      clp$close_display (display_control, status);
    IFEND;

    osp$disestablish_cond_handler;

  PROCEND avp$display_user_command;
?? OLDTITLE ??
?? NEWTITLE := 'end_administer_validations', EJECT ??

{ PURPOSE:
{   This is the command processor for the END_ADMINISTER_VALIDATIONS subcommand.

  PROCEDURE end_administer_validations
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_endav) end_administer_validations, quit, qui, endav

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
      recend := [[1, [88, 5, 13, 21, 49, 44, 706], clc$command, 0, 0, 0, 0, 0, 0, 0, 'OSM$ADMV_ENDAV']];

?? POP ??

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, NIL, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$end_include (avc$admv_utility_name, status);

  PROCEND end_administer_validations;
?? OLDTITLE ??
?? NEWTITLE := 'manage_account_fields', EJECT ??

{ PURPOSE:
{   This procedure initiates the MANAGE_ACCOUNT_FIELDS subutility.

  PROCEDURE manage_account_fields
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_manaf) manage_account_fields, manaf (
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 1] of clt$pdt_parameter_name,
        parameters: array [1 .. 1] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 4, 21, 14, 23, 17, 644], clc$command, 1, 1, 0, 0, 0, 0, 1, 'OSM$ADMV_MANAF'],
            [['STATUS                         ', clc$nominal_entry, 1]], [

{ PARAMETER 1

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$status = 1;

    VAR
      pvt: array [1 .. 1] of clt$parameter_value;

{ table manaf_command_table type=command
{ command (change_accumulating_limit_field, chaalf)                      p=change_accumulating_limit_field
{ command (change_capability_field, chacf)                               p=change_capability_field
{ command (change_date_time_field, chadtf)                               p=change_date_time_field
{ command (change_field_name, chafn)                                     p=change_field_name
{ command (change_file_field, chaff)                                     p=change_file_field
{ command (change_integer_field, chaif)                                  p=change_integer_field
{ command (change_limit_field, chalf)                                    p=change_limit_field
{ command (change_name_field, chanf)                                     p=change_name_field
{ command (change_real_field, charf)                                     p=change_real_field
{ command (change_string_field, chasf)                                   p=change_string_field
{ command (create_accumulating_limit_field, crealf)                      p=create_accumulating_limit_field
{ command (create_capability_field, crecf)                               p=create_capability_field
{ command (create_date_time_field, credtf)                               p=create_date_time_field
{ command (create_file_field, creff)                                     p=create_file_field
{ command (create_integer_field, creif)                                  p=create_integer_field
{ command (create_limit_field, crelf)                                    p=create_limit_field
{ command (create_name_field, crenf)                                     p=create_name_field
{ command (create_real_field, crerf)                                     p=create_real_field
{ command (create_string_field, cresf)                                   p=create_string_field
{ command (delete_field, delf)                                           p=delete_field
{ command (display_field_description, display_field_descriptions, disfd) p=avp$display_field_description
{ command (display_field_names, disfn)                                   p=avp$display_field_names
{ command (end_manage_account_fields, quit, qui, endmaf)                 p=end_manage_subutility
{ command (restore_field, resf)                                          p=restore_field
{ tablend

?? PUSH (LISTEXT := ON) ??

    VAR
      manaf_command_table: [STATIC, READ] ^clt$command_table := ^manaf_command_table_entries,

      manaf_command_table_entries: [STATIC, READ] array [1 .. 51] of clt$command_table_entry := [
            {} ['CHAALF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 1,
            clc$automatically_log, clc$linked_call, ^change_accumulating_limit_field],
            {} ['CHACF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 2,
            clc$automatically_log, clc$linked_call, ^change_capability_field],
            {} ['CHADTF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 3,
            clc$automatically_log, clc$linked_call, ^change_date_time_field],
            {} ['CHAFF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 5,
            clc$automatically_log, clc$linked_call, ^change_file_field],
            {} ['CHAFN                          ', clc$abbreviation_entry, clc$normal_usage_entry, 4,
            clc$automatically_log, clc$linked_call, ^change_field_name],
            {} ['CHAIF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 6,
            clc$automatically_log, clc$linked_call, ^change_integer_field],
            {} ['CHALF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 7,
            clc$automatically_log, clc$linked_call, ^change_limit_field],
            {} ['CHANF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 8,
            clc$automatically_log, clc$linked_call, ^change_name_field],
            {} ['CHANGE_ACCUMULATING_LIMIT_FIELD', clc$nominal_entry, clc$normal_usage_entry, 1,
            clc$automatically_log, clc$linked_call, ^change_accumulating_limit_field],
            {} ['CHANGE_CAPABILITY_FIELD        ', clc$nominal_entry, clc$normal_usage_entry, 2,
            clc$automatically_log, clc$linked_call, ^change_capability_field],
            {} ['CHANGE_DATE_TIME_FIELD         ', clc$nominal_entry, clc$normal_usage_entry, 3,
            clc$automatically_log, clc$linked_call, ^change_date_time_field],
            {} ['CHANGE_FIELD_NAME              ', clc$nominal_entry, clc$normal_usage_entry, 4,
            clc$automatically_log, clc$linked_call, ^change_field_name],
            {} ['CHANGE_FILE_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 5,
            clc$automatically_log, clc$linked_call, ^change_file_field],
            {} ['CHANGE_INTEGER_FIELD           ', clc$nominal_entry, clc$normal_usage_entry, 6,
            clc$automatically_log, clc$linked_call, ^change_integer_field],
            {} ['CHANGE_LIMIT_FIELD             ', clc$nominal_entry, clc$normal_usage_entry, 7,
            clc$automatically_log, clc$linked_call, ^change_limit_field],
            {} ['CHANGE_NAME_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 8,
            clc$automatically_log, clc$linked_call, ^change_name_field],
            {} ['CHANGE_REAL_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 9,
            clc$automatically_log, clc$linked_call, ^change_real_field],
            {} ['CHANGE_STRING_FIELD            ', clc$nominal_entry, clc$normal_usage_entry, 10,
            clc$automatically_log, clc$linked_call, ^change_string_field],
            {} ['CHARF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 9,
            clc$automatically_log, clc$linked_call, ^change_real_field],
            {} ['CHASF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 10,
            clc$automatically_log, clc$linked_call, ^change_string_field],
            {} ['CREALF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 11,
            clc$automatically_log, clc$linked_call, ^create_accumulating_limit_field],
            {} ['CREATE_ACCUMULATING_LIMIT_FIELD', clc$nominal_entry, clc$normal_usage_entry, 11,
            clc$automatically_log, clc$linked_call, ^create_accumulating_limit_field],
            {} ['CREATE_CAPABILITY_FIELD        ', clc$nominal_entry, clc$normal_usage_entry, 12,
            clc$automatically_log, clc$linked_call, ^create_capability_field],
            {} ['CREATE_DATE_TIME_FIELD         ', clc$nominal_entry, clc$normal_usage_entry, 13,
            clc$automatically_log, clc$linked_call, ^create_date_time_field],
            {} ['CREATE_FILE_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 14,
            clc$automatically_log, clc$linked_call, ^create_file_field],
            {} ['CREATE_INTEGER_FIELD           ', clc$nominal_entry, clc$normal_usage_entry, 15,
            clc$automatically_log, clc$linked_call, ^create_integer_field],
            {} ['CREATE_LIMIT_FIELD             ', clc$nominal_entry, clc$normal_usage_entry, 16,
            clc$automatically_log, clc$linked_call, ^create_limit_field],
            {} ['CREATE_NAME_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 17,
            clc$automatically_log, clc$linked_call, ^create_name_field],
            {} ['CREATE_REAL_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 18,
            clc$automatically_log, clc$linked_call, ^create_real_field],
            {} ['CREATE_STRING_FIELD            ', clc$nominal_entry, clc$normal_usage_entry, 19,
            clc$automatically_log, clc$linked_call, ^create_string_field],
            {} ['CRECF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 12,
            clc$automatically_log, clc$linked_call, ^create_capability_field],
            {} ['CREDTF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 13,
            clc$automatically_log, clc$linked_call, ^create_date_time_field],
            {} ['CREFF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 14,
            clc$automatically_log, clc$linked_call, ^create_file_field],
            {} ['CREIF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 15,
            clc$automatically_log, clc$linked_call, ^create_integer_field],
            {} ['CRELF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 16,
            clc$automatically_log, clc$linked_call, ^create_limit_field],
            {} ['CRENF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 17,
            clc$automatically_log, clc$linked_call, ^create_name_field],
            {} ['CRERF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 18,
            clc$automatically_log, clc$linked_call, ^create_real_field],
            {} ['CRESF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 19,
            clc$automatically_log, clc$linked_call, ^create_string_field],
            {} ['DELETE_FIELD                   ', clc$nominal_entry, clc$normal_usage_entry, 20,
            clc$automatically_log, clc$linked_call, ^delete_field],
            {} ['DELF                           ', clc$abbreviation_entry, clc$normal_usage_entry, 20,
            clc$automatically_log, clc$linked_call, ^delete_field],
            {} ['DISFD                          ', clc$abbreviation_entry, clc$normal_usage_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_field_description],
            {} ['DISFN                          ', clc$abbreviation_entry, clc$normal_usage_entry, 22,
            clc$automatically_log, clc$linked_call, ^avp$display_field_names],
            {} ['DISPLAY_FIELD_DESCRIPTION      ', clc$nominal_entry, clc$normal_usage_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_field_description],
            {} ['DISPLAY_FIELD_DESCRIPTIONS     ', clc$alias_entry, clc$normal_usage_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_field_description],
            {} ['DISPLAY_FIELD_NAMES            ', clc$nominal_entry, clc$normal_usage_entry, 22,
            clc$automatically_log, clc$linked_call, ^avp$display_field_names],
            {} ['ENDMAF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['END_MANAGE_ACCOUNT_FIELDS      ', clc$nominal_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['QUI                            ', clc$alias_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['QUIT                           ', clc$alias_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['RESF                           ', clc$abbreviation_entry, clc$normal_usage_entry, 24,
            clc$automatically_log, clc$linked_call, ^restore_field],
            {} ['RESTORE_FIELD                  ', clc$nominal_entry, clc$normal_usage_entry, 24,
            clc$automatically_log, clc$linked_call, ^restore_field]];

?? POP ??

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    manage_fields_subutility (avc$manaf_utility_name, avc$manaf_utility_prompt, avc$account_record_name,
          manaf_command_table, status);

  PROCEND manage_account_fields;
?? OLDTITLE ??
?? NEWTITLE := 'manage_account_member_fields', EJECT ??

{ PURPOSE:
{   This procedure initiates the MANAGE_ACCOUNT_MEMBER_FIELDS subutility.

  PROCEDURE manage_account_member_fields
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_manamf) manage_account_member_fields, manamf (
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 1] of clt$pdt_parameter_name,
        parameters: array [1 .. 1] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 4, 21, 14, 24, 4, 144], clc$command, 1, 1, 0, 0, 0, 0, 1, 'OSM$ADMV_MANAMF'],
            [['STATUS                         ', clc$nominal_entry, 1]], [

{ PARAMETER 1

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$status = 1;

    VAR
      pvt: array [1 .. 1] of clt$parameter_value;

{ table manamf_command_table type=command
{ command (change_accumulating_limit_field, chaalf)                      p=change_accumulating_limit_field
{ command (change_capability_field, chacf)                               p=change_capability_field
{ command (change_date_time_field, chadtf)                               p=change_date_time_field
{ command (change_field_name, chafn)                                     p=change_field_name
{ command (change_file_field, chaff)                                     p=change_file_field
{ command (change_integer_field, chaif)                                  p=change_integer_field
{ command (change_limit_field, chalf)                                    p=change_limit_field
{ command (change_name_field, chanf)                                     p=change_name_field
{ command (change_real_field, charf)                                     p=change_real_field
{ command (change_string_field, chasf)                                   p=change_string_field
{ command (create_accumulating_limit_field, crealf)                      p=create_accumulating_limit_field
{ command (create_capability_field, crecf)                               p=create_capability_field
{ command (create_date_time_field, credtf)                               p=create_date_time_field
{ command (create_file_field, creff)                                     p=create_file_field
{ command (create_integer_field, creif)                                  p=create_integer_field
{ command (create_limit_field, crelf)                                    p=create_limit_field
{ command (create_name_field, crenf)                                     p=create_name_field
{ command (create_real_field, crerf)                                     p=create_real_field
{ command (create_string_field, cresf)                                   p=create_string_field
{ command (delete_field, delf)                                           p=delete_field
{ command (display_field_description, display_field_descriptions, disfd) p=avp$display_field_description
{ command (display_field_names, disfn)                                   p=avp$display_field_names
{ command (end_manage_acct_member_fields, quit, qui, endmamf)            p=end_manage_subutility
{ command (restore_field, resf)                                          p=restore_field
{ tablend

?? PUSH (LISTEXT := ON) ??

    VAR
      manamf_command_table: [STATIC, READ] ^clt$command_table := ^manamf_command_table_entries,

      manamf_command_table_entries: [STATIC, READ] array [1 .. 51] of clt$command_table_entry := [
            {} ['CHAALF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 1,
            clc$automatically_log, clc$linked_call, ^change_accumulating_limit_field],
            {} ['CHACF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 2,
            clc$automatically_log, clc$linked_call, ^change_capability_field],
            {} ['CHADTF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 3,
            clc$automatically_log, clc$linked_call, ^change_date_time_field],
            {} ['CHAFF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 5,
            clc$automatically_log, clc$linked_call, ^change_file_field],
            {} ['CHAFN                          ', clc$abbreviation_entry, clc$normal_usage_entry, 4,
            clc$automatically_log, clc$linked_call, ^change_field_name],
            {} ['CHAIF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 6,
            clc$automatically_log, clc$linked_call, ^change_integer_field],
            {} ['CHALF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 7,
            clc$automatically_log, clc$linked_call, ^change_limit_field],
            {} ['CHANF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 8,
            clc$automatically_log, clc$linked_call, ^change_name_field],
            {} ['CHANGE_ACCUMULATING_LIMIT_FIELD', clc$nominal_entry, clc$normal_usage_entry, 1,
            clc$automatically_log, clc$linked_call, ^change_accumulating_limit_field],
            {} ['CHANGE_CAPABILITY_FIELD        ', clc$nominal_entry, clc$normal_usage_entry, 2,
            clc$automatically_log, clc$linked_call, ^change_capability_field],
            {} ['CHANGE_DATE_TIME_FIELD         ', clc$nominal_entry, clc$normal_usage_entry, 3,
            clc$automatically_log, clc$linked_call, ^change_date_time_field],
            {} ['CHANGE_FIELD_NAME              ', clc$nominal_entry, clc$normal_usage_entry, 4,
            clc$automatically_log, clc$linked_call, ^change_field_name],
            {} ['CHANGE_FILE_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 5,
            clc$automatically_log, clc$linked_call, ^change_file_field],
            {} ['CHANGE_INTEGER_FIELD           ', clc$nominal_entry, clc$normal_usage_entry, 6,
            clc$automatically_log, clc$linked_call, ^change_integer_field],
            {} ['CHANGE_LIMIT_FIELD             ', clc$nominal_entry, clc$normal_usage_entry, 7,
            clc$automatically_log, clc$linked_call, ^change_limit_field],
            {} ['CHANGE_NAME_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 8,
            clc$automatically_log, clc$linked_call, ^change_name_field],
            {} ['CHANGE_REAL_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 9,
            clc$automatically_log, clc$linked_call, ^change_real_field],
            {} ['CHANGE_STRING_FIELD            ', clc$nominal_entry, clc$normal_usage_entry, 10,
            clc$automatically_log, clc$linked_call, ^change_string_field],
            {} ['CHARF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 9,
            clc$automatically_log, clc$linked_call, ^change_real_field],
            {} ['CHASF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 10,
            clc$automatically_log, clc$linked_call, ^change_string_field],
            {} ['CREALF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 11,
            clc$automatically_log, clc$linked_call, ^create_accumulating_limit_field],
            {} ['CREATE_ACCUMULATING_LIMIT_FIELD', clc$nominal_entry, clc$normal_usage_entry, 11,
            clc$automatically_log, clc$linked_call, ^create_accumulating_limit_field],
            {} ['CREATE_CAPABILITY_FIELD        ', clc$nominal_entry, clc$normal_usage_entry, 12,
            clc$automatically_log, clc$linked_call, ^create_capability_field],
            {} ['CREATE_DATE_TIME_FIELD         ', clc$nominal_entry, clc$normal_usage_entry, 13,
            clc$automatically_log, clc$linked_call, ^create_date_time_field],
            {} ['CREATE_FILE_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 14,
            clc$automatically_log, clc$linked_call, ^create_file_field],
            {} ['CREATE_INTEGER_FIELD           ', clc$nominal_entry, clc$normal_usage_entry, 15,
            clc$automatically_log, clc$linked_call, ^create_integer_field],
            {} ['CREATE_LIMIT_FIELD             ', clc$nominal_entry, clc$normal_usage_entry, 16,
            clc$automatically_log, clc$linked_call, ^create_limit_field],
            {} ['CREATE_NAME_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 17,
            clc$automatically_log, clc$linked_call, ^create_name_field],
            {} ['CREATE_REAL_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 18,
            clc$automatically_log, clc$linked_call, ^create_real_field],
            {} ['CREATE_STRING_FIELD            ', clc$nominal_entry, clc$normal_usage_entry, 19,
            clc$automatically_log, clc$linked_call, ^create_string_field],
            {} ['CRECF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 12,
            clc$automatically_log, clc$linked_call, ^create_capability_field],
            {} ['CREDTF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 13,
            clc$automatically_log, clc$linked_call, ^create_date_time_field],
            {} ['CREFF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 14,
            clc$automatically_log, clc$linked_call, ^create_file_field],
            {} ['CREIF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 15,
            clc$automatically_log, clc$linked_call, ^create_integer_field],
            {} ['CRELF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 16,
            clc$automatically_log, clc$linked_call, ^create_limit_field],
            {} ['CRENF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 17,
            clc$automatically_log, clc$linked_call, ^create_name_field],
            {} ['CRERF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 18,
            clc$automatically_log, clc$linked_call, ^create_real_field],
            {} ['CRESF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 19,
            clc$automatically_log, clc$linked_call, ^create_string_field],
            {} ['DELETE_FIELD                   ', clc$nominal_entry, clc$normal_usage_entry, 20,
            clc$automatically_log, clc$linked_call, ^delete_field],
            {} ['DELF                           ', clc$abbreviation_entry, clc$normal_usage_entry, 20,
            clc$automatically_log, clc$linked_call, ^delete_field],
            {} ['DISFD                          ', clc$abbreviation_entry, clc$normal_usage_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_field_description],
            {} ['DISFN                          ', clc$abbreviation_entry, clc$normal_usage_entry, 22,
            clc$automatically_log, clc$linked_call, ^avp$display_field_names],
            {} ['DISPLAY_FIELD_DESCRIPTION      ', clc$nominal_entry, clc$normal_usage_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_field_description],
            {} ['DISPLAY_FIELD_DESCRIPTIONS     ', clc$alias_entry, clc$normal_usage_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_field_description],
            {} ['DISPLAY_FIELD_NAMES            ', clc$nominal_entry, clc$normal_usage_entry, 22,
            clc$automatically_log, clc$linked_call, ^avp$display_field_names],
            {} ['ENDMAMF                        ', clc$abbreviation_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['END_MANAGE_ACCT_MEMBER_FIELDS  ', clc$nominal_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['QUI                            ', clc$alias_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['QUIT                           ', clc$alias_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['RESF                           ', clc$abbreviation_entry, clc$normal_usage_entry, 24,
            clc$automatically_log, clc$linked_call, ^restore_field],
            {} ['RESTORE_FIELD                  ', clc$nominal_entry, clc$normal_usage_entry, 24,
            clc$automatically_log, clc$linked_call, ^restore_field]];

?? POP ??

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    manage_fields_subutility (avc$manamf_utility_name, avc$manamf_utility_prompt,
          avc$account_member_record_name, manamf_command_table, status);

  PROCEND manage_account_member_fields;
?? OLDTITLE ??
?? NEWTITLE := 'manage_project_fields', EJECT ??

{ PURPOSE:
{   This procedure initiates the MANAGE_PROJECT_FIELDS subutility.

  PROCEDURE manage_project_fields
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_manpf) manage_project_fields, manpf (
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 1] of clt$pdt_parameter_name,
        parameters: array [1 .. 1] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 4, 21, 14, 24, 55, 155], clc$command, 1, 1, 0, 0, 0, 0, 1, 'OSM$ADMV_MANPF'],
            [['STATUS                         ', clc$nominal_entry, 1]], [

{ PARAMETER 1

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$status = 1;

    VAR
      pvt: array [1 .. 1] of clt$parameter_value;

{ table manpf_command_table type=command
{ command (change_accumulating_limit_field, chaalf)                      p=change_accumulating_limit_field
{ command (change_capability_field, chacf)                               p=change_capability_field
{ command (change_date_time_field, chadtf)                               p=change_date_time_field
{ command (change_field_name, chafn)                                     p=change_field_name
{ command (change_file_field, chaff)                                     p=change_file_field
{ command (change_integer_field, chaif)                                  p=change_integer_field
{ command (change_limit_field, chalf)                                    p=change_limit_field
{ command (change_name_field, chanf)                                     p=change_name_field
{ command (change_real_field, charf)                                     p=change_real_field
{ command (change_string_field, chasf)                                   p=change_string_field
{ command (create_accumulating_limit_field, crealf)                      p=create_accumulating_limit_field
{ command (create_capability_field, crecf)                               p=create_capability_field
{ command (create_date_time_field, credtf)                               p=create_date_time_field
{ command (create_file_field, creff)                                     p=create_file_field
{ command (create_integer_field, creif)                                  p=create_integer_field
{ command (create_limit_field, crelf)                                    p=create_limit_field
{ command (create_name_field, crenf)                                     p=create_name_field
{ command (create_real_field, crerf)                                     p=create_real_field
{ command (create_string_field, cresf)                                   p=create_string_field
{ command (delete_field, delf)                                           p=delete_field
{ command (display_field_description, display_field_descriptions, disfd) p=avp$display_field_description
{ command (display_field_names, disfn)                                   p=avp$display_field_names
{ command (end_manage_project_fields, quit, qui, endmpf)                 p=end_manage_subutility
{ command (restore_field, resf)                                          p=restore_field
{ tablend

?? PUSH (LISTEXT := ON) ??

    VAR
      manpf_command_table: [STATIC, READ] ^clt$command_table := ^manpf_command_table_entries,

      manpf_command_table_entries: [STATIC, READ] array [1 .. 51] of clt$command_table_entry := [
            {} ['CHAALF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 1,
            clc$automatically_log, clc$linked_call, ^change_accumulating_limit_field],
            {} ['CHACF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 2,
            clc$automatically_log, clc$linked_call, ^change_capability_field],
            {} ['CHADTF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 3,
            clc$automatically_log, clc$linked_call, ^change_date_time_field],
            {} ['CHAFF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 5,
            clc$automatically_log, clc$linked_call, ^change_file_field],
            {} ['CHAFN                          ', clc$abbreviation_entry, clc$normal_usage_entry, 4,
            clc$automatically_log, clc$linked_call, ^change_field_name],
            {} ['CHAIF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 6,
            clc$automatically_log, clc$linked_call, ^change_integer_field],
            {} ['CHALF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 7,
            clc$automatically_log, clc$linked_call, ^change_limit_field],
            {} ['CHANF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 8,
            clc$automatically_log, clc$linked_call, ^change_name_field],
            {} ['CHANGE_ACCUMULATING_LIMIT_FIELD', clc$nominal_entry, clc$normal_usage_entry, 1,
            clc$automatically_log, clc$linked_call, ^change_accumulating_limit_field],
            {} ['CHANGE_CAPABILITY_FIELD        ', clc$nominal_entry, clc$normal_usage_entry, 2,
            clc$automatically_log, clc$linked_call, ^change_capability_field],
            {} ['CHANGE_DATE_TIME_FIELD         ', clc$nominal_entry, clc$normal_usage_entry, 3,
            clc$automatically_log, clc$linked_call, ^change_date_time_field],
            {} ['CHANGE_FIELD_NAME              ', clc$nominal_entry, clc$normal_usage_entry, 4,
            clc$automatically_log, clc$linked_call, ^change_field_name],
            {} ['CHANGE_FILE_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 5,
            clc$automatically_log, clc$linked_call, ^change_file_field],
            {} ['CHANGE_INTEGER_FIELD           ', clc$nominal_entry, clc$normal_usage_entry, 6,
            clc$automatically_log, clc$linked_call, ^change_integer_field],
            {} ['CHANGE_LIMIT_FIELD             ', clc$nominal_entry, clc$normal_usage_entry, 7,
            clc$automatically_log, clc$linked_call, ^change_limit_field],
            {} ['CHANGE_NAME_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 8,
            clc$automatically_log, clc$linked_call, ^change_name_field],
            {} ['CHANGE_REAL_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 9,
            clc$automatically_log, clc$linked_call, ^change_real_field],
            {} ['CHANGE_STRING_FIELD            ', clc$nominal_entry, clc$normal_usage_entry, 10,
            clc$automatically_log, clc$linked_call, ^change_string_field],
            {} ['CHARF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 9,
            clc$automatically_log, clc$linked_call, ^change_real_field],
            {} ['CHASF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 10,
            clc$automatically_log, clc$linked_call, ^change_string_field],
            {} ['CREALF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 11,
            clc$automatically_log, clc$linked_call, ^create_accumulating_limit_field],
            {} ['CREATE_ACCUMULATING_LIMIT_FIELD', clc$nominal_entry, clc$normal_usage_entry, 11,
            clc$automatically_log, clc$linked_call, ^create_accumulating_limit_field],
            {} ['CREATE_CAPABILITY_FIELD        ', clc$nominal_entry, clc$normal_usage_entry, 12,
            clc$automatically_log, clc$linked_call, ^create_capability_field],
            {} ['CREATE_DATE_TIME_FIELD         ', clc$nominal_entry, clc$normal_usage_entry, 13,
            clc$automatically_log, clc$linked_call, ^create_date_time_field],
            {} ['CREATE_FILE_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 14,
            clc$automatically_log, clc$linked_call, ^create_file_field],
            {} ['CREATE_INTEGER_FIELD           ', clc$nominal_entry, clc$normal_usage_entry, 15,
            clc$automatically_log, clc$linked_call, ^create_integer_field],
            {} ['CREATE_LIMIT_FIELD             ', clc$nominal_entry, clc$normal_usage_entry, 16,
            clc$automatically_log, clc$linked_call, ^create_limit_field],
            {} ['CREATE_NAME_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 17,
            clc$automatically_log, clc$linked_call, ^create_name_field],
            {} ['CREATE_REAL_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 18,
            clc$automatically_log, clc$linked_call, ^create_real_field],
            {} ['CREATE_STRING_FIELD            ', clc$nominal_entry, clc$normal_usage_entry, 19,
            clc$automatically_log, clc$linked_call, ^create_string_field],
            {} ['CRECF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 12,
            clc$automatically_log, clc$linked_call, ^create_capability_field],
            {} ['CREDTF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 13,
            clc$automatically_log, clc$linked_call, ^create_date_time_field],
            {} ['CREFF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 14,
            clc$automatically_log, clc$linked_call, ^create_file_field],
            {} ['CREIF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 15,
            clc$automatically_log, clc$linked_call, ^create_integer_field],
            {} ['CRELF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 16,
            clc$automatically_log, clc$linked_call, ^create_limit_field],
            {} ['CRENF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 17,
            clc$automatically_log, clc$linked_call, ^create_name_field],
            {} ['CRERF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 18,
            clc$automatically_log, clc$linked_call, ^create_real_field],
            {} ['CRESF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 19,
            clc$automatically_log, clc$linked_call, ^create_string_field],
            {} ['DELETE_FIELD                   ', clc$nominal_entry, clc$normal_usage_entry, 20,
            clc$automatically_log, clc$linked_call, ^delete_field],
            {} ['DELF                           ', clc$abbreviation_entry, clc$normal_usage_entry, 20,
            clc$automatically_log, clc$linked_call, ^delete_field],
            {} ['DISFD                          ', clc$abbreviation_entry, clc$normal_usage_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_field_description],
            {} ['DISFN                          ', clc$abbreviation_entry, clc$normal_usage_entry, 22,
            clc$automatically_log, clc$linked_call, ^avp$display_field_names],
            {} ['DISPLAY_FIELD_DESCRIPTION      ', clc$nominal_entry, clc$normal_usage_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_field_description],
            {} ['DISPLAY_FIELD_DESCRIPTIONS     ', clc$alias_entry, clc$normal_usage_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_field_description],
            {} ['DISPLAY_FIELD_NAMES            ', clc$nominal_entry, clc$normal_usage_entry, 22,
            clc$automatically_log, clc$linked_call, ^avp$display_field_names],
            {} ['ENDMPF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['END_MANAGE_PROJECT_FIELDS      ', clc$nominal_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['QUI                            ', clc$alias_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['QUIT                           ', clc$alias_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['RESF                           ', clc$abbreviation_entry, clc$normal_usage_entry, 24,
            clc$automatically_log, clc$linked_call, ^restore_field],
            {} ['RESTORE_FIELD                  ', clc$nominal_entry, clc$normal_usage_entry, 24,
            clc$automatically_log, clc$linked_call, ^restore_field]];

?? POP ??

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    manage_fields_subutility (avc$manpf_utility_name, avc$manpf_utility_prompt, avc$project_record_name,
          manpf_command_table, status);

  PROCEND manage_project_fields;
?? OLDTITLE ??
?? NEWTITLE := 'manage_project_member_fields', EJECT ??

{ PURPOSE:
{   This procedure initiates the MANAGE_PROJECT_MEMBER_FIELDS subutility.

  PROCEDURE manage_project_member_fields
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_manpmf) manage_project_member_fields, manpmf (
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 1] of clt$pdt_parameter_name,
        parameters: array [1 .. 1] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 4, 21, 14, 25, 24, 480], clc$command, 1, 1, 0, 0, 0, 0, 1, 'OSM$ADMV_MANPMF'],
            [['STATUS                         ', clc$nominal_entry, 1]], [

{ PARAMETER 1

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$status = 1;

    VAR
      pvt: array [1 .. 1] of clt$parameter_value;

{ table manpmf_command_table type=command
{ command (change_accumulating_limit_field, chaalf)                      p=change_accumulating_limit_field
{ command (change_capability_field, chacf)                               p=change_capability_field
{ command (change_date_time_field, chadtf)                               p=change_date_time_field
{ command (change_field_name, chafn)                                     p=change_field_name
{ command (change_file_field, chaff)                                     p=change_file_field
{ command (change_integer_field, chaif)                                  p=change_integer_field
{ command (change_limit_field, chalf)                                    p=change_limit_field
{ command (change_name_field, chanf)                                     p=change_name_field
{ command (change_real_field, charf)                                     p=change_real_field
{ command (change_string_field, chasf)                                   p=change_string_field
{ command (create_accumulating_limit_field, crealf)                      p=create_accumulating_limit_field
{ command (create_capability_field, crecf)                               p=create_capability_field
{ command (create_date_time_field, credtf)                               p=create_date_time_field
{ command (create_file_field, creff)                                     p=create_file_field
{ command (create_integer_field, creif)                                  p=create_integer_field
{ command (create_limit_field, crelf)                                    p=create_limit_field
{ command (create_name_field, crenf)                                     p=create_name_field
{ command (create_real_field, crerf)                                     p=create_real_field
{ command (create_string_field, cresf)                                   p=create_string_field
{ command (delete_field, delf)                                           p=delete_field
{ command (display_field_description, display_field_descriptions, disfd) p=avp$display_field_description
{ command (display_field_names, disfn)                                   p=avp$display_field_names
{ command (end_manage_proj_member_fields, quit, qui, endmpmf)            p=end_manage_subutility
{ command (restore_field, resf)                                          p=restore_field
{ tablend

?? PUSH (LISTEXT := ON) ??

    VAR
      manpmf_command_table: [STATIC, READ] ^clt$command_table := ^manpmf_command_table_entries,

      manpmf_command_table_entries: [STATIC, READ] array [1 .. 51] of clt$command_table_entry := [
            {} ['CHAALF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 1,
            clc$automatically_log, clc$linked_call, ^change_accumulating_limit_field],
            {} ['CHACF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 2,
            clc$automatically_log, clc$linked_call, ^change_capability_field],
            {} ['CHADTF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 3,
            clc$automatically_log, clc$linked_call, ^change_date_time_field],
            {} ['CHAFF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 5,
            clc$automatically_log, clc$linked_call, ^change_file_field],
            {} ['CHAFN                          ', clc$abbreviation_entry, clc$normal_usage_entry, 4,
            clc$automatically_log, clc$linked_call, ^change_field_name],
            {} ['CHAIF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 6,
            clc$automatically_log, clc$linked_call, ^change_integer_field],
            {} ['CHALF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 7,
            clc$automatically_log, clc$linked_call, ^change_limit_field],
            {} ['CHANF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 8,
            clc$automatically_log, clc$linked_call, ^change_name_field],
            {} ['CHANGE_ACCUMULATING_LIMIT_FIELD', clc$nominal_entry, clc$normal_usage_entry, 1,
            clc$automatically_log, clc$linked_call, ^change_accumulating_limit_field],
            {} ['CHANGE_CAPABILITY_FIELD        ', clc$nominal_entry, clc$normal_usage_entry, 2,
            clc$automatically_log, clc$linked_call, ^change_capability_field],
            {} ['CHANGE_DATE_TIME_FIELD         ', clc$nominal_entry, clc$normal_usage_entry, 3,
            clc$automatically_log, clc$linked_call, ^change_date_time_field],
            {} ['CHANGE_FIELD_NAME              ', clc$nominal_entry, clc$normal_usage_entry, 4,
            clc$automatically_log, clc$linked_call, ^change_field_name],
            {} ['CHANGE_FILE_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 5,
            clc$automatically_log, clc$linked_call, ^change_file_field],
            {} ['CHANGE_INTEGER_FIELD           ', clc$nominal_entry, clc$normal_usage_entry, 6,
            clc$automatically_log, clc$linked_call, ^change_integer_field],
            {} ['CHANGE_LIMIT_FIELD             ', clc$nominal_entry, clc$normal_usage_entry, 7,
            clc$automatically_log, clc$linked_call, ^change_limit_field],
            {} ['CHANGE_NAME_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 8,
            clc$automatically_log, clc$linked_call, ^change_name_field],
            {} ['CHANGE_REAL_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 9,
            clc$automatically_log, clc$linked_call, ^change_real_field],
            {} ['CHANGE_STRING_FIELD            ', clc$nominal_entry, clc$normal_usage_entry, 10,
            clc$automatically_log, clc$linked_call, ^change_string_field],
            {} ['CHARF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 9,
            clc$automatically_log, clc$linked_call, ^change_real_field],
            {} ['CHASF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 10,
            clc$automatically_log, clc$linked_call, ^change_string_field],
            {} ['CREALF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 11,
            clc$automatically_log, clc$linked_call, ^create_accumulating_limit_field],
            {} ['CREATE_ACCUMULATING_LIMIT_FIELD', clc$nominal_entry, clc$normal_usage_entry, 11,
            clc$automatically_log, clc$linked_call, ^create_accumulating_limit_field],
            {} ['CREATE_CAPABILITY_FIELD        ', clc$nominal_entry, clc$normal_usage_entry, 12,
            clc$automatically_log, clc$linked_call, ^create_capability_field],
            {} ['CREATE_DATE_TIME_FIELD         ', clc$nominal_entry, clc$normal_usage_entry, 13,
            clc$automatically_log, clc$linked_call, ^create_date_time_field],
            {} ['CREATE_FILE_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 14,
            clc$automatically_log, clc$linked_call, ^create_file_field],
            {} ['CREATE_INTEGER_FIELD           ', clc$nominal_entry, clc$normal_usage_entry, 15,
            clc$automatically_log, clc$linked_call, ^create_integer_field],
            {} ['CREATE_LIMIT_FIELD             ', clc$nominal_entry, clc$normal_usage_entry, 16,
            clc$automatically_log, clc$linked_call, ^create_limit_field],
            {} ['CREATE_NAME_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 17,
            clc$automatically_log, clc$linked_call, ^create_name_field],
            {} ['CREATE_REAL_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 18,
            clc$automatically_log, clc$linked_call, ^create_real_field],
            {} ['CREATE_STRING_FIELD            ', clc$nominal_entry, clc$normal_usage_entry, 19,
            clc$automatically_log, clc$linked_call, ^create_string_field],
            {} ['CRECF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 12,
            clc$automatically_log, clc$linked_call, ^create_capability_field],
            {} ['CREDTF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 13,
            clc$automatically_log, clc$linked_call, ^create_date_time_field],
            {} ['CREFF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 14,
            clc$automatically_log, clc$linked_call, ^create_file_field],
            {} ['CREIF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 15,
            clc$automatically_log, clc$linked_call, ^create_integer_field],
            {} ['CRELF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 16,
            clc$automatically_log, clc$linked_call, ^create_limit_field],
            {} ['CRENF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 17,
            clc$automatically_log, clc$linked_call, ^create_name_field],
            {} ['CRERF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 18,
            clc$automatically_log, clc$linked_call, ^create_real_field],
            {} ['CRESF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 19,
            clc$automatically_log, clc$linked_call, ^create_string_field],
            {} ['DELETE_FIELD                   ', clc$nominal_entry, clc$normal_usage_entry, 20,
            clc$automatically_log, clc$linked_call, ^delete_field],
            {} ['DELF                           ', clc$abbreviation_entry, clc$normal_usage_entry, 20,
            clc$automatically_log, clc$linked_call, ^delete_field],
            {} ['DISFD                          ', clc$abbreviation_entry, clc$normal_usage_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_field_description],
            {} ['DISFN                          ', clc$abbreviation_entry, clc$normal_usage_entry, 22,
            clc$automatically_log, clc$linked_call, ^avp$display_field_names],
            {} ['DISPLAY_FIELD_DESCRIPTION      ', clc$nominal_entry, clc$normal_usage_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_field_description],
            {} ['DISPLAY_FIELD_DESCRIPTIONS     ', clc$alias_entry, clc$normal_usage_entry, 21,
            clc$automatically_log, clc$linked_call, ^avp$display_field_description],
            {} ['DISPLAY_FIELD_NAMES            ', clc$nominal_entry, clc$normal_usage_entry, 22,
            clc$automatically_log, clc$linked_call, ^avp$display_field_names],
            {} ['ENDMPMF                        ', clc$abbreviation_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['END_MANAGE_PROJ_MEMBER_FIELDS  ', clc$nominal_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['QUI                            ', clc$alias_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['QUIT                           ', clc$alias_entry, clc$normal_usage_entry, 23,
            clc$automatically_log, clc$linked_call, ^end_manage_subutility],
            {} ['RESF                           ', clc$abbreviation_entry, clc$normal_usage_entry, 24,
            clc$automatically_log, clc$linked_call, ^restore_field],
            {} ['RESTORE_FIELD                  ', clc$nominal_entry, clc$normal_usage_entry, 24,
            clc$automatically_log, clc$linked_call, ^restore_field]];

?? POP ??

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    manage_fields_subutility (avc$manpmf_utility_name, avc$manpmf_utility_prompt,
          avc$project_member_record_name, manpmf_command_table, status);

  PROCEND manage_project_member_fields;
?? OLDTITLE ??
?? NEWTITLE := 'manage_user_fields', EJECT ??

{ PURPOSE:
{   This procedure initiates the MANAGE_USER_FIELDS subutility.

  PROCEDURE manage_user_fields
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_manuf) manage_user_fields, manuf (
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 1] of clt$pdt_parameter_name,
        parameters: array [1 .. 1] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 4, 21, 14, 25, 59, 119], clc$command, 1, 1, 0, 0, 0, 0, 1, 'OSM$ADMV_MANUF'],
            [['STATUS                         ', clc$nominal_entry, 1]], [

{ PARAMETER 1

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$status = 1;

    VAR
      pvt: array [1 .. 1] of clt$parameter_value;

{ table manuf_command_table type=command
{ command (change_account_project_field, chaapf)                         p=change_account_project_field
{ command (change_accumulating_limit_field, chaalf)                      p=change_accumulating_limit_field
{ command (change_capability_field, chacf)                               p=change_capability_field
{ command (change_date_time_field, chadtf)                               p=change_date_time_field
{ command (change_field_name, chafn)                                     p=change_field_name
{ command (change_file_field, chaff)                                     p=change_file_field
{ command (change_integer_field, chaif)                                  p=change_integer_field
{ command (change_job_class_field, chajcf)                               p=change_job_class_field
{ command (change_labeled_names_field, chalnf)                           p=change_labeled_names_field
{ command (change_limit_field, chalf)                                    p=change_limit_field
{ command (change_login_password_field, chalpwf)                         p=change_login_password_field
{ command (change_name_field, chanf)                                     p=change_name_field
{ command (change_real_field, charf)                                     p=change_real_field
{ command (change_ring_privilege_field, charpf)                          p=change_ring_privilege_field
{ command (change_string_field, chasf)                                   p=change_string_field
{ command (create_accumulating_limit_field, crealf)                      p=create_accumulating_limit_field
{ command (create_capability_field, crecf)                               p=create_capability_field
{ command (create_date_time_field, credtf)                               p=create_date_time_field
{ command (create_file_field, creff)                                     p=create_file_field
{ command (create_integer_field, creif)                                  p=create_integer_field
{ command (create_limit_field, crelf)                                    p=create_limit_field
{ command (create_name_field, crenf)                                     p=create_name_field
{ command (create_real_field, crerf)                                     p=create_real_field
{ command (create_string_field, cresf)                                   p=create_string_field
{ command (delete_field, delf)                                           p=delete_field
{ command (display_field_description, display_field_descriptions, disfd) p=avp$display_field_description
{ command (display_field_names, disfn)                                   p=avp$display_field_names
{ command (end_manage_user_fields, quit, qui, endmuf)                    p=end_manage_subutility
{ command (restore_field, resf)                                          p=restore_field
{ tablend

?? PUSH (LISTEXT := ON) ??

VAR
  manuf_command_table: [STATIC, READ] ^clt$command_table := ^manuf_command_table_entries,

  manuf_command_table_entries: [STATIC, READ] array [1 .. 61] of clt$command_table_entry := [
  {} ['CHAALF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 2,
        clc$automatically_log, clc$linked_call, ^change_accumulating_limit_field],
  {} ['CHAAPF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 1,
        clc$automatically_log, clc$linked_call, ^change_account_project_field],
  {} ['CHACF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 3,
        clc$automatically_log, clc$linked_call, ^change_capability_field],
  {} ['CHADTF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 4,
        clc$automatically_log, clc$linked_call, ^change_date_time_field],
  {} ['CHAFF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 6,
        clc$automatically_log, clc$linked_call, ^change_file_field],
  {} ['CHAFN                          ', clc$abbreviation_entry, clc$normal_usage_entry, 5,
        clc$automatically_log, clc$linked_call, ^change_field_name],
  {} ['CHAIF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 7,
        clc$automatically_log, clc$linked_call, ^change_integer_field],
  {} ['CHAJCF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 8,
        clc$automatically_log, clc$linked_call, ^change_job_class_field],
  {} ['CHALF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 10,
        clc$automatically_log, clc$linked_call, ^change_limit_field],
  {} ['CHALNF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 9,
        clc$automatically_log, clc$linked_call, ^change_labeled_names_field],
  {} ['CHALPWF                        ', clc$abbreviation_entry, clc$normal_usage_entry, 11,
        clc$automatically_log, clc$linked_call, ^change_login_password_field],
  {} ['CHANF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 12,
        clc$automatically_log, clc$linked_call, ^change_name_field],
  {} ['CHANGE_ACCOUNT_PROJECT_FIELD   ', clc$nominal_entry, clc$normal_usage_entry, 1,
        clc$automatically_log, clc$linked_call, ^change_account_project_field],
  {} ['CHANGE_ACCUMULATING_LIMIT_FIELD', clc$nominal_entry, clc$normal_usage_entry, 2,
        clc$automatically_log, clc$linked_call, ^change_accumulating_limit_field],
  {} ['CHANGE_CAPABILITY_FIELD        ', clc$nominal_entry, clc$normal_usage_entry, 3,
        clc$automatically_log, clc$linked_call, ^change_capability_field],
  {} ['CHANGE_DATE_TIME_FIELD         ', clc$nominal_entry, clc$normal_usage_entry, 4,
        clc$automatically_log, clc$linked_call, ^change_date_time_field],
  {} ['CHANGE_FIELD_NAME              ', clc$nominal_entry, clc$normal_usage_entry, 5,
        clc$automatically_log, clc$linked_call, ^change_field_name],
  {} ['CHANGE_FILE_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 6,
        clc$automatically_log, clc$linked_call, ^change_file_field],
  {} ['CHANGE_INTEGER_FIELD           ', clc$nominal_entry, clc$normal_usage_entry, 7,
        clc$automatically_log, clc$linked_call, ^change_integer_field],
  {} ['CHANGE_JOB_CLASS_FIELD         ', clc$nominal_entry, clc$normal_usage_entry, 8,
        clc$automatically_log, clc$linked_call, ^change_job_class_field],
  {} ['CHANGE_LABELED_NAMES_FIELD     ', clc$nominal_entry, clc$normal_usage_entry, 9,
        clc$automatically_log, clc$linked_call, ^change_labeled_names_field],
  {} ['CHANGE_LIMIT_FIELD             ', clc$nominal_entry, clc$normal_usage_entry, 10,
        clc$automatically_log, clc$linked_call, ^change_limit_field],
  {} ['CHANGE_LOGIN_PASSWORD_FIELD    ', clc$nominal_entry, clc$normal_usage_entry, 11,
        clc$automatically_log, clc$linked_call, ^change_login_password_field],
  {} ['CHANGE_NAME_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 12,
        clc$automatically_log, clc$linked_call, ^change_name_field],
  {} ['CHANGE_REAL_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 13,
        clc$automatically_log, clc$linked_call, ^change_real_field],
  {} ['CHANGE_RING_PRIVILEGE_FIELD    ', clc$nominal_entry, clc$normal_usage_entry, 14,
        clc$automatically_log, clc$linked_call, ^change_ring_privilege_field],
  {} ['CHANGE_STRING_FIELD            ', clc$nominal_entry, clc$normal_usage_entry, 15,
        clc$automatically_log, clc$linked_call, ^change_string_field],
  {} ['CHARF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 13,
        clc$automatically_log, clc$linked_call, ^change_real_field],
  {} ['CHARPF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 14,
        clc$automatically_log, clc$linked_call, ^change_ring_privilege_field],
  {} ['CHASF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 15,
        clc$automatically_log, clc$linked_call, ^change_string_field],
  {} ['CREALF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 16,
        clc$automatically_log, clc$linked_call, ^create_accumulating_limit_field],
  {} ['CREATE_ACCUMULATING_LIMIT_FIELD', clc$nominal_entry, clc$normal_usage_entry, 16,
        clc$automatically_log, clc$linked_call, ^create_accumulating_limit_field],
  {} ['CREATE_CAPABILITY_FIELD        ', clc$nominal_entry, clc$normal_usage_entry, 17,
        clc$automatically_log, clc$linked_call, ^create_capability_field],
  {} ['CREATE_DATE_TIME_FIELD         ', clc$nominal_entry, clc$normal_usage_entry, 18,
        clc$automatically_log, clc$linked_call, ^create_date_time_field],
  {} ['CREATE_FILE_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 19,
        clc$automatically_log, clc$linked_call, ^create_file_field],
  {} ['CREATE_INTEGER_FIELD           ', clc$nominal_entry, clc$normal_usage_entry, 20,
        clc$automatically_log, clc$linked_call, ^create_integer_field],
  {} ['CREATE_LIMIT_FIELD             ', clc$nominal_entry, clc$normal_usage_entry, 21,
        clc$automatically_log, clc$linked_call, ^create_limit_field],
  {} ['CREATE_NAME_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 22,
        clc$automatically_log, clc$linked_call, ^create_name_field],
  {} ['CREATE_REAL_FIELD              ', clc$nominal_entry, clc$normal_usage_entry, 23,
        clc$automatically_log, clc$linked_call, ^create_real_field],
  {} ['CREATE_STRING_FIELD            ', clc$nominal_entry, clc$normal_usage_entry, 24,
        clc$automatically_log, clc$linked_call, ^create_string_field],
  {} ['CRECF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 17,
        clc$automatically_log, clc$linked_call, ^create_capability_field],
  {} ['CREDTF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 18,
        clc$automatically_log, clc$linked_call, ^create_date_time_field],
  {} ['CREFF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 19,
        clc$automatically_log, clc$linked_call, ^create_file_field],
  {} ['CREIF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 20,
        clc$automatically_log, clc$linked_call, ^create_integer_field],
  {} ['CRELF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 21,
        clc$automatically_log, clc$linked_call, ^create_limit_field],
  {} ['CRENF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 22,
        clc$automatically_log, clc$linked_call, ^create_name_field],
  {} ['CRERF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 23,
        clc$automatically_log, clc$linked_call, ^create_real_field],
  {} ['CRESF                          ', clc$abbreviation_entry, clc$normal_usage_entry, 24,
        clc$automatically_log, clc$linked_call, ^create_string_field],
  {} ['DELETE_FIELD                   ', clc$nominal_entry, clc$normal_usage_entry, 25,
        clc$automatically_log, clc$linked_call, ^delete_field],
  {} ['DELF                           ', clc$abbreviation_entry, clc$normal_usage_entry, 25,
        clc$automatically_log, clc$linked_call, ^delete_field],
  {} ['DISFD                          ', clc$abbreviation_entry, clc$normal_usage_entry, 26,
        clc$automatically_log, clc$linked_call, ^avp$display_field_description],
  {} ['DISFN                          ', clc$abbreviation_entry, clc$normal_usage_entry, 27,
        clc$automatically_log, clc$linked_call, ^avp$display_field_names],
  {} ['DISPLAY_FIELD_DESCRIPTION      ', clc$nominal_entry, clc$normal_usage_entry, 26,
        clc$automatically_log, clc$linked_call, ^avp$display_field_description],
  {} ['DISPLAY_FIELD_DESCRIPTIONS     ', clc$alias_entry, clc$normal_usage_entry, 26,
        clc$automatically_log, clc$linked_call, ^avp$display_field_description],
  {} ['DISPLAY_FIELD_NAMES            ', clc$nominal_entry, clc$normal_usage_entry, 27,
        clc$automatically_log, clc$linked_call, ^avp$display_field_names],
  {} ['ENDMUF                         ', clc$abbreviation_entry, clc$normal_usage_entry, 28,
        clc$automatically_log, clc$linked_call, ^end_manage_subutility],
  {} ['END_MANAGE_USER_FIELDS         ', clc$nominal_entry, clc$normal_usage_entry, 28,
        clc$automatically_log, clc$linked_call, ^end_manage_subutility],
  {} ['QUI                            ', clc$alias_entry, clc$normal_usage_entry, 28,
        clc$automatically_log, clc$linked_call, ^end_manage_subutility],
  {} ['QUIT                           ', clc$alias_entry, clc$normal_usage_entry, 28,
        clc$automatically_log, clc$linked_call, ^end_manage_subutility],
  {} ['RESF                           ', clc$abbreviation_entry, clc$normal_usage_entry, 29,
        clc$automatically_log, clc$linked_call, ^restore_field],
  {} ['RESTORE_FIELD                  ', clc$nominal_entry, clc$normal_usage_entry, 29,
        clc$automatically_log, clc$linked_call, ^restore_field]];

?? POP ??

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    manage_fields_subutility (avc$manuf_utility_name, avc$manuf_utility_prompt, avc$user_record_name,
          manuf_command_table, status);

  PROCEND manage_user_fields;
?? OLDTITLE ??
?? NEWTITLE := 'use_validation_file', EJECT ??

{ PURPOSE:
{   This is the command processor for the USE_VALIDATION_FILE subcommand.

  PROCEDURE use_validation_file
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_usevf) use_validation_field, usevf (
{   validation_file, vf: file = $family.$system.$validations
{   password, pw: (SECURE) any of
{       key
{         none
{       keyend
{       name
{     anyend = none
{   new_password, npw: (BY_NAME, SECURE) any of
{       key
{         none
{       keyend
{       name
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 7] of clt$pdt_parameter_name,
        parameters: array [1 .. 4] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          default_value: string (28),
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
          default_value: string (4),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        type4: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 12, 15, 10, 39, 372], clc$command, 7, 4, 0, 0, 0, 0, 4, 'OSM$ADMV_USEVF'],
            [['NEW_PASSWORD                   ', clc$nominal_entry, 3],
            ['NPW                            ', clc$abbreviation_entry, 3],
            ['PASSWORD                       ', clc$nominal_entry, 2],
            ['PW                             ', clc$abbreviation_entry, 2],
            ['STATUS                         ', clc$nominal_entry, 4],
            ['VALIDATION_FILE                ', clc$nominal_entry, 1],
            ['VF                             ', clc$abbreviation_entry, 1]], [

{ PARAMETER 1

      [6, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_default_parameter, 0, 28],

{ PARAMETER 2

      [3, clc$normal_usage_entry, clc$secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 69, clc$optional_default_parameter, 0, 4],

{ PARAMETER 3

      [1, clc$normal_usage_entry, clc$secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 69,
            clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$file_type], '$family.$system.$validations'],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 5, [[1, 0, clc$name_type], [1, osc$max_name_size]], 'none'],

{ PARAMETER 3

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 5, [[1, 0, clc$name_type], [1, osc$max_name_size]]],

{ PARAMETER 4

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$validation_file = 1,
      p$password = 2,
      p$new_password = 3,
      p$status = 4;

    VAR
      pvt: array [1 .. 4] of clt$parameter_value;

    VAR
      evaluated_file_reference: fst$evaluated_file_reference,
      new_password: ^ost$name,
      password: ^ost$name,
      served_family: boolean;

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF pvt [p$password].value^.kind = clc$keyword THEN
      password := NIL;
    ELSE
      PUSH password;
      password^ := pvt [p$password].value^.name_value;
    IFEND;

    IF pvt [p$new_password].specified THEN
      PUSH new_password;
      IF pvt [p$new_password].value^.kind = clc$keyword THEN
        new_password^ := osc$null_name;
      ELSE
        new_password^ := pvt [p$new_password].value^.name_value;
      IFEND;
    ELSE
      new_password := NIL;
    IFEND;

{ Determine the family name from the specified path.

    clp$evaluate_file_reference (pvt [p$validation_file].value^.file_value^,
          $clt$file_ref_parsing_options[], TRUE, evaluated_file_reference, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Don't allow ADMINISTER_VALIDATIONS on the client.

    avp$check_for_served_family (fsp$path_element (^evaluated_file_reference, 1)^, served_family);
    IF served_family THEN
      osp$set_status_abnormal ('AV', ave$not_allowed_on_client, 'ADMINISTER_VALIDATIONS', status);
      RETURN;
    IFEND;

    IF validation_file_open THEN
      validation_file_open := FALSE;
      #SPOIL (validation_file_open);
      avp$close_validation_file (validation_file_information, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
    IFEND;

    avp$open_validation_file (pvt [p$validation_file].value^.file_value^, password, new_password, TRUE,
          validation_file_information, status);
    IF status.normal THEN
      validation_file_open := TRUE;
      #SPOIL (validation_file_open);
    IFEND;

  PROCEND use_validation_file;
?? OLDTITLE ??
?? OLDTITLE ??
?? NEWTITLE := 'ADMINISTER_VALIDATIONS Function Processors', EJECT ??
?? NEWTITLE := 'avp$$account_list', EJECT ??

{ PURPOSE:
{   Return a list containing the names of the accounts that the executing user has control of.

  PROCEDURE avp$$account_list
    (    parameter_list: clt$parameter_list;
     VAR work_area: ^clt$work_area;
     VAR result: ^clt$data_value;
     VAR status: ost$status);

{ FUNCTION (osm$$admv_al) $account_list

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
    recend := [
    [1,
    [88, 12, 15, 12, 7, 42, 319],
    clc$function, 0, 0, 0, 0, 0, 0, 0, 'OSM$$ADMV_AL']];

?? FMT (FORMAT := ON) ??
?? POP ??

    VAR
      account_name: avt$account_name,
      assigned_record_id: ost$name,
      list_element: ^clt$data_value,
      previous_list_element: ^clt$data_value,
      read_status: ost$status;

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, NIL, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file has been opened.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    result := NIL;

    IF avp$system_administrator () OR avp$family_administrator () THEN

{ Return a list of all accounts in the family.  Set up the validation file information so that the next record
{ to be read sequentially from the file will be the first account record.

      validation_file_information.last_key_accessed (1, 31) := osc$null_name {account_name} ;
      validation_file_information.last_key_accessed (32, 31) := osc$null_name {project_name} ;
      validation_file_information.last_key_accessed (63, 31) := osc$null_name {user_name} ;

{ Read through the account records making a list of all accounts.

      REPEAT
        account_name := osc$null_name;
        avp$read_account_record (account_name, assigned_record_id, validation_file_information, read_status);
        IF read_status.normal THEN
          make_scl_name_list_element (account_name, work_area, list_element, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          IF result = NIL THEN
            result := list_element;
          ELSE
            previous_list_element^.link := list_element;
          IFEND;
          previous_list_element := list_element;
        IFEND;
      UNTIL (NOT read_status.normal) AND (read_status.condition <> ave$insufficient_authority);
      IF (NOT read_status.normal) AND (read_status.condition <> ave$end_of_template_file) THEN
        status := read_status;
      IFEND;
    ELSEIF account_administrator THEN

{ Return the executing account name if the user is the account administrator.

      make_scl_name_list_element (executing_account, work_area, result, status);
    ELSE

{ Return an error if any other user attempts to use the function.

      osp$set_status_abnormal ('AV', ave$insufficient_authority, '', status);
    IFEND;

{ If the list has not been created, make an empty list.

    IF result = NIL THEN
      clp$make_list_value (work_area, result);
      IF result = NIL THEN
        osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
        RETURN;
      IFEND;
    IFEND;

  PROCEND avp$$account_list;
?? OLDTITLE ??
?? NEWTITLE := 'avp$$account_member_list', EJECT ??

{ PURPOSE:
{   Return a list containing the names of the account members for the specified account.

  PROCEDURE avp$$account_member_list
    (    parameter_list: clt$parameter_list;
     VAR work_area: ^clt$work_area;
     VAR result: ^clt$data_value;
     VAR status: ost$status);

{ FUNCTION (osm$$admv_aml) $account_member_list (
{   account: name = default__31__character__account
{   )

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 1] of clt$pdt_parameter_name,
      parameters: array [1 .. 1] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (31),
      recend,
    recend := [
    [1,
    [88, 12, 15, 12, 6, 58, 879],
    clc$function, 1, 1, 0, 0, 0, 0, 0, 'OSM$$ADMV_AML'], [
    ['ACCOUNT                        ',clc$nominal_entry, 1]],
    [
{ PARAMETER 1
    [1, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 5,
  clc$optional_default_parameter, 0, 31]],
{ PARAMETER 1
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    'default__31__character__account']];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$account = 1;

    VAR
      pvt: array [1 .. 1] of clt$parameter_value;

    VAR
      account_name: avt$account_name,
      altered_pdt: ^clt$parameter_description_table,
      assigned_record_id: ost$name,
      list_element: ^clt$data_value,
      member_name: ost$user_name,
      pdt_changes: ^clt$pdt_changes,
      previous_list_element: ^clt$data_value,
      read_status: ost$status;

    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the ACCOUNT parameter.

    PUSH pdt_changes: [1 .. 1];
    pdt_changes^ [1].number := p$account;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_account;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file has been opened.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    result := NIL;

    IF NOT (avp$system_administrator () OR avp$family_administrator ()) THEN
      IF (NOT account_administrator) OR (executing_account <> pvt [p$account].value^.name_value) THEN
        osp$set_status_abnormal ('AV', ave$insufficient_authority, '', status);
        RETURN;
      IFEND;
    IFEND;

{ Return a list of all account members in the account.  Set up the validation file information so that the
{ next record to be read sequentially from the file will be the first account member record.

    validation_file_information.last_key_accessed (1, 31) := pvt [p$account].value^.name_value;
    validation_file_information.last_key_accessed (32, 31) := osc$null_name {project_name} ;
    validation_file_information.last_key_accessed (63, 31) := osc$null_name {user_name} ;

{ Read through the account member records making a list of all account member names.

    REPEAT
      account_name := pvt [p$account].value^.name_value;
      member_name := osc$null_name;
      avp$read_account_member_record (account_name, member_name, assigned_record_id,
            validation_file_information, read_status);
      IF (read_status.normal) AND (account_name = pvt [p$account].value^.name_value) THEN
        make_scl_name_list_element (member_name, work_area, list_element, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        IF result = NIL THEN
          result := list_element;
        ELSE
          previous_list_element^.link := list_element;
        IFEND;
        previous_list_element := list_element;
      IFEND;
    UNTIL ((NOT read_status.normal) AND (read_status.condition <> ave$insufficient_authority)) OR
          (account_name <> pvt [p$account].value^.name_value);

    IF (NOT read_status.normal) AND (read_status.condition <> ave$end_of_template_file) THEN
      status := read_status;
    IFEND;

{ If the list has not been created, make an empty list.

    IF result = NIL THEN
      clp$make_list_value (work_area, result);
      IF result = NIL THEN
        osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
        RETURN;
      IFEND;
    IFEND;

  PROCEND avp$$account_member_list;
?? OLDTITLE ??
?? NEWTITLE := 'avp$$current_default', EJECT ??

{ PURPOSE:
{   Return the current ADMV devault value for the ACCOUNT, PROJECT or USER parameter.

  PROCEDURE avp$$current_default
    (    parameter_list: clt$parameter_list;
     VAR work_area: ^clt$work_area;
     VAR result: ^clt$data_value;
     VAR status: ost$status);

{ FUNCTION (osm$$admv_cd) $current_default (
{   option: key
{       account, project, user
{     keyend = $required
{   )

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 1] of clt$pdt_parameter_name,
      parameters: array [1 .. 1] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 3] of clt$keyword_specification,
      recend,
    recend := [
    [1,
    [89, 1, 5, 15, 59, 2, 60],
    clc$function, 1, 1, 1, 0, 0, 0, 0, 'OSM$$ADMV_CD'], [
    ['OPTION                         ',clc$nominal_entry, 1]],
    [
{ PARAMETER 1
    [1, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 118,
  clc$required_parameter, 0, 0]],
{ PARAMETER 1
    [[1, 0, clc$keyword_type], [3], [
    ['ACCOUNT                        ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['PROJECT                        ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['USER                           ', clc$nominal_entry, clc$normal_usage_entry, 3]]
    ]];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$option = 1;

    VAR
      pvt: array [1 .. 1] of clt$parameter_value;

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF pvt [p$option].value^.keyword_value = 'ACCOUNT' THEN
      clp$make_name_value (default_account, work_area, result);
    ELSEIF pvt [p$option].value^.keyword_value = 'PROJECT' THEN
      clp$make_name_value (default_project, work_area, result);
    ELSE { USER }
      clp$make_name_value (default_user, work_area, result);
    IFEND;
    IF result = NIL THEN
      osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
      RETURN;
    IFEND;

  PROCEND avp$$current_default;
?? OLDTITLE ??
?? NEWTITLE := 'avp$$family_list', EJECT ??

{ PURPOSE:
{   Return a list containing the names of the families on this system.

  PROCEDURE avp$$family_list
    (    parameter_list: clt$parameter_list;
     VAR work_area: ^clt$work_area;
     VAR result: ^clt$data_value;
     VAR status: ost$status);

{ FUNCTION (osm$$admv_fl) $family_list

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
    recend := [
    [1,
    [88, 12, 15, 12, 9, 16, 686],
    clc$function, 0, 0, 0, 0, 0, 0, 0, 'OSM$$ADMV_FL']];

?? FMT (FORMAT := ON) ??
?? POP ??

    VAR
      active_family_list: ^array [1 .. * ] of ost$name,
      index: pmt$family_name_count,
      list_element: ^clt$data_value,
      previous_list_element: ^clt$data_value,
      number_of_families: pmt$family_name_count;

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, NIL, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    number_of_families := 100;
    REPEAT
      PUSH active_family_list: [1 .. number_of_families];
      pmp$get_family_names (active_family_list^, number_of_families, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
    UNTIL number_of_families <= UPPERBOUND (active_family_list^);

    result := NIL;

    FOR index := 1 TO number_of_families DO
      make_scl_name_list_element (active_family_list^ [index], work_area, list_element, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      IF result = NIL THEN
        result := list_element;
      ELSE
        previous_list_element^.link := list_element;
      IFEND;
      previous_list_element := list_element;
    FOREND;

  PROCEND avp$$family_list;
?? OLDTITLE ??
?? NEWTITLE := 'avp$$project_list', EJECT ??

{ PURPOSE:
{   Return a list containing the names of the projects for the specified account.

  PROCEDURE avp$$project_list
    (    parameter_list: clt$parameter_list;
     VAR work_area: ^clt$work_area;
     VAR result: ^clt$data_value;
     VAR status: ost$status);

{ FUNCTION (osm$$admv_pl) $project_list (
{   account: name = default__31__character__account
{   )

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 1] of clt$pdt_parameter_name,
      parameters: array [1 .. 1] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (31),
      recend,
    recend := [
    [1,
    [88, 12, 15, 12, 9, 45, 193],
    clc$function, 1, 1, 0, 0, 0, 0, 0, 'OSM$$ADMV_PL'], [
    ['ACCOUNT                        ',clc$nominal_entry, 1]],
    [
{ PARAMETER 1
    [1, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 5,
  clc$optional_default_parameter, 0, 31]],
{ PARAMETER 1
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    'default__31__character__account']];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$account = 1;

    VAR
      pvt: array [1 .. 1] of clt$parameter_value;

    VAR
      account_name: avt$account_name,
      altered_pdt: ^clt$parameter_description_table,
      assigned_record_id: ost$name,
      list_element: ^clt$data_value,
      pdt_changes: ^clt$pdt_changes,
      previous_list_element: ^clt$data_value,
      project_name: avt$project_name,
      read_status: ost$status;

    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the ACCOUNT parameter.

    PUSH pdt_changes: [1 .. 1];
    pdt_changes^ [1].number := p$account;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_account;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file has been opened.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    result := NIL;

    IF NOT (avp$system_administrator () OR avp$family_administrator ()) THEN
      IF (NOT account_administrator) OR (executing_account <> pvt [p$account].value^.name_value) THEN
        osp$set_status_abnormal ('AV', ave$insufficient_authority, '', status);
        RETURN;
      IFEND;
    IFEND;

{ Return a list of all projects in the account.  Set up the validation file information so that the next
{ record to be read sequentially from the file will be the first project record for the specified account.

    validation_file_information.last_key_accessed (1, 31) := pvt [p$account].value^.name_value;
    validation_file_information.last_key_accessed (32, 31) := osc$null_name {project_name} ;
    validation_file_information.last_key_accessed (63, 31) := osc$null_name {user_name} ;

{ Read through the project records making a list of all project names.

    REPEAT
      account_name := pvt [p$account].value^.name_value;
      project_name := osc$null_name;
      avp$read_project_record (account_name, project_name, assigned_record_id, validation_file_information,
            read_status);
      IF (read_status.normal) AND (account_name = pvt [p$account].value^.name_value) THEN
        make_scl_name_list_element (project_name, work_area, list_element, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        IF result = NIL THEN
          result := list_element;
        ELSE
          previous_list_element^.link := list_element;
        IFEND;
        previous_list_element := list_element;
      IFEND;
    UNTIL ((NOT read_status.normal) AND (read_status.condition <> ave$insufficient_authority)) OR
          (account_name <> pvt [p$account].value^.name_value);

    IF (NOT read_status.normal) AND (read_status.condition <> ave$end_of_template_file) THEN
      status := read_status;
    IFEND;

{ If the list has not been created, make an empty list.

    IF result = NIL THEN
      clp$make_list_value (work_area, result);
      IF result = NIL THEN
        osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
        RETURN;
      IFEND;
    IFEND;

  PROCEND avp$$project_list;
?? OLDTITLE ??
?? NEWTITLE := 'avp$$project_member_list', EJECT ??

{ PURPOSE:
{   Return a list containing the names of the project members for the specified account and project.

  PROCEDURE avp$$project_member_list
    (    parameter_list: clt$parameter_list;
     VAR work_area: ^clt$work_area;
     VAR result: ^clt$data_value;
     VAR status: ost$status);

{ FUNCTION (osm$$admv_pml) $project_member_list (
{   account: name = default__31__character__account
{   project: name = default__31__character__project
{   )

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 2] of clt$pdt_parameter_name,
      parameters: array [1 .. 2] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (31),
      recend,
      type2: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (31),
      recend,
    recend := [
    [1,
    [88, 12, 15, 12, 10, 13, 126],
    clc$function, 2, 2, 0, 0, 0, 0, 0, 'OSM$$ADMV_PML'], [
    ['ACCOUNT                        ',clc$nominal_entry, 1],
    ['PROJECT                        ',clc$nominal_entry, 2]],
    [
{ PARAMETER 1
    [1, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 5,
  clc$optional_default_parameter, 0, 31],
{ PARAMETER 2
    [2, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 5,
  clc$optional_default_parameter, 0, 31]],
{ PARAMETER 1
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    'default__31__character__account'],
{ PARAMETER 2
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    'default__31__character__project']];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$account = 1,
      p$project = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    VAR
      account_name: avt$account_name,
      altered_pdt: ^clt$parameter_description_table,
      assigned_record_id: ost$name,
      list_element: ^clt$data_value,
      member_name: ost$user_name,
      pdt_changes: ^clt$pdt_changes,
      previous_list_element: ^clt$data_value,
      project_name: avt$project_name,
      read_status: ost$status;

    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the default value for the ACCOUNT parameter.

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$account;
    pdt_changes^ [1].kind := clc$pdtc_default_value;
    pdt_changes^ [1].default_value := ^default_account;
    pdt_changes^ [2].number := p$project;
    pdt_changes^ [2].kind := clc$pdtc_default_value;
    pdt_changes^ [2].default_value := ^default_project;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file has been opened.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    result := NIL;

    IF NOT (avp$system_administrator () OR avp$family_administrator ()) THEN
      IF (NOT (account_administrator OR project_administrator)) OR
            (executing_account <> pvt [p$account].value^.name_value) OR
            (executing_project <> pvt [p$project].value^.name_value) THEN
        osp$set_status_abnormal ('AV', ave$insufficient_authority, '', status);
        RETURN;
      IFEND;
    IFEND;

{ Return a list of all project members in the project.  Set up the validation file information so that the
{ next record to be read sequentially from the file will be the first project member record.

    validation_file_information.last_key_accessed (1, 31) := pvt [p$account].value^.name_value;
    validation_file_information.last_key_accessed (32, 31) := pvt [p$project].value^.name_value;
    validation_file_information.last_key_accessed (63, 31) := osc$null_name {user_name} ;

{ Read through the project member records making a list of all project member names.

    REPEAT
      account_name := pvt [p$account].value^.name_value;
      project_name := pvt [p$project].value^.name_value;
      member_name := osc$null_name;
      avp$read_project_member_record (account_name, project_name, member_name, assigned_record_id,
            validation_file_information, read_status);
      IF (read_status.normal) AND (account_name = pvt [p$account].value^.name_value) AND
            (project_name = pvt [p$project].value^.name_value) THEN
        make_scl_name_list_element (member_name, work_area, list_element, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        IF result = NIL THEN
          result := list_element;
        ELSE
          previous_list_element^.link := list_element;
        IFEND;
        previous_list_element := list_element;
      IFEND;
    UNTIL ((NOT read_status.normal) AND (read_status.condition <> ave$insufficient_authority)) OR
          ((account_name <> pvt [p$account].value^.name_value) OR
          (project_name <> pvt [p$project].value^.name_value));

    IF (NOT read_status.normal) AND (read_status.condition <> ave$end_of_template_file) THEN
      status := read_status;
    IFEND;

{ If the list has not been created, make an empty list.

    IF result = NIL THEN
      clp$make_list_value (work_area, result);
      IF result = NIL THEN
        osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
        RETURN;
      IFEND;
    IFEND;

  PROCEND avp$$project_member_list;
?? OLDTITLE ??
?? NEWTITLE := 'avp$$user_list', EJECT ??

{ PURPOSE:
{   Return a list containing the names of the users that the executing user has control of.

  PROCEDURE avp$$user_list
    (    parameter_list: clt$parameter_list;
     VAR work_area: ^clt$work_area;
     VAR result: ^clt$data_value;
     VAR status: ost$status);

{ FUNCTION (osm$$admv_user_list) $user_list

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
    recend := [
    [1,
    [88, 11, 29, 12, 25, 22, 338],
    clc$function, 0, 0, 0, 0, 0, 0, 0, 'OSM$$ADMV_USER_LIST']];

?? FMT (FORMAT := ON) ??
?? POP ??

    VAR
      assigned_record_id: ost$name,
      list_element: ^clt$data_value,
      previous_list_element: ^clt$data_value,
      read_user_status: ost$status,
      user_name: ost$user_name;

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, NIL, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file has been opened.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    result := NIL;

{ Set up the validation file information so that the next record to be read sequentially from the file will be
{ the first user record.

    validation_file_information.last_key_accessed (1, 31) := avc$high_value_name {account_name} ;
    validation_file_information.last_key_accessed (32, 31) := avc$high_value_name {project_name} ;
    validation_file_information.last_key_accessed (63, 31) := osc$null_name {user_name} ;

{ Read through the user records making a list of the user names the executing user has control of.

    REPEAT
      user_name := osc$null_name;
      avp$read_user_record (user_name, assigned_record_id, validation_file_information, read_user_status);
      IF read_user_status.normal THEN

{ Release the space used by the avp$read_user_record call.

        avp$release_record_id (assigned_record_id, status);
        make_scl_name_list_element (user_name, work_area, list_element, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        IF result = NIL THEN
          result := list_element;
        ELSE
          previous_list_element^.link := list_element;
        IFEND;
        previous_list_element := list_element;
      IFEND;
    UNTIL (NOT read_user_status.normal) AND (read_user_status.condition <> ave$insufficient_authority);
    IF (NOT read_user_status.normal) AND (read_user_status.condition <> ave$end_of_template_file) THEN
      status := read_user_status;
    IFEND;

{ If the list has not been created, make an empty list.

    IF result = NIL THEN
      clp$make_list_value (work_area, result);
      IF result = NIL THEN
        osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
        RETURN;
      IFEND;
    IFEND;

  PROCEND avp$$user_list;
?? OLDTITLE ??
?? OLDTITLE ??
?? NEWTITLE := 'ADMINISTER_VALIDATIONS Subutility Function Processors', EJECT ??
?? NEWTITLE := 'avp$$current_object', EJECT ??

{ PURPOSE:
{   Return a record identifying the current object of an ADMV subutility session.

  PROCEDURE avp$$current_object
    (    parameter_list: clt$parameter_list;
     VAR work_area: ^clt$work_area;
     VAR result: ^clt$data_value;
     VAR status: ost$status);

{ FUNCTION (osm$$admv_co) $current_object

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
    recend := [
    [1,
    [89, 1, 5, 15, 59, 39, 912],
    clc$function, 0, 0, 0, 0, 0, 0, 0, 'OSM$$ADMV_CO']];

?? FMT (FORMAT := ON) ??
?? POP ??

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, NIL, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$make_record_value (4, work_area, result);
    IF result = NIL THEN
      osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
    IFEND;

    result^.field_values^ [1].name := 'TYPE';
    result^.field_values^ [2].name := 'USER';
    result^.field_values^ [3].name := 'ACCOUNT';
    result^.field_values^ [4].name := 'PROJECT';

    clp$make_name_value (current_subutility_session_info^.validation_record_name, work_area,
            result^.field_values^ [1].value);
    IF result^.field_values^ [1].value = NIL THEN
      osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
    IFEND;

{ Fill in the user name for user, account member and project member records.

    IF (current_subutility_session_info^.validation_record_name = avc$user_record_name) OR
          (current_subutility_session_info^.validation_record_name = avc$account_member_record_name) OR
          (current_subutility_session_info^.validation_record_name = avc$project_member_record_name) THEN
      clp$make_name_value (current_subutility_session_info^.key.user_name, work_area,
            result^.field_values^ [2].value);
      IF result^.field_values^ [2].value = NIL THEN
        osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
      IFEND;
    ELSE
      clp$make_unspecified_value (work_area, result^.field_values^ [2].value);
      IF result^.field_values^ [2].value = NIL THEN
        osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
      IFEND;
    IFEND;

{ Fill in the account name for account, account member, project and project member records.

    IF (current_subutility_session_info^.validation_record_name = avc$account_record_name) OR
          (current_subutility_session_info^.validation_record_name = avc$account_member_record_name) OR
          (current_subutility_session_info^.validation_record_name = avc$project_record_name) OR
          (current_subutility_session_info^.validation_record_name = avc$project_member_record_name) THEN
      clp$make_name_value (current_subutility_session_info^.key.account_name, work_area,
            result^.field_values^ [3].value);
      IF result^.field_values^ [3].value = NIL THEN
        osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
      IFEND;
    ELSE
      clp$make_unspecified_value (work_area, result^.field_values^ [3].value);
      IF result^.field_values^ [3].value = NIL THEN
        osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
      IFEND;
    IFEND;

{ Fill in the project name for project and project member records.

    IF (current_subutility_session_info^.validation_record_name = avc$project_record_name) OR
          (current_subutility_session_info^.validation_record_name = avc$project_member_record_name) THEN
      clp$make_name_value (current_subutility_session_info^.key.project_name, work_area,
            result^.field_values^ [4].value);
      IF result^.field_values^ [4].value = NIL THEN
        osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
      IFEND;
    ELSE
      clp$make_unspecified_value (work_area, result^.field_values^ [4].value);
      IF result^.field_values^ [4].value = NIL THEN
        osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
      IFEND;
    IFEND;

  PROCEND avp$$current_object;
?? OLDTITLE ??
?? NEWTITLE := 'avp$$validation', EJECT ??

{ PURPOSE:
{   Return information about a specified validation field.

  PROCEDURE avp$$validation
    (    parameter_list: clt$parameter_list;
     VAR work_area: ^clt$work_area;
     VAR result: ^clt$data_value;
     VAR status: ost$status);

{ FUNCTION (osm$$admv_validation) $validation (
{   field_name: name = $required
{   option: key
{       (declared, d)
{       (type, t)
{       (value, v)
{     keyend = value
{   )

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 2] of clt$pdt_parameter_name,
      parameters: array [1 .. 2] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type2: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 6] of clt$keyword_specification,
        default_value: string (5),
      recend,
    recend := [
    [1,
    [88, 12, 14, 13, 47, 53, 379],
    clc$function, 2, 2, 1, 0, 0, 0, 0, 'OSM$$ADMV_VALIDATION'], [
    ['FIELD_NAME                     ',clc$nominal_entry, 1],
    ['OPTION                         ',clc$nominal_entry, 2]],
    [
{ PARAMETER 1
    [1, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 5, clc$required_parameter, 0
  , 0],
{ PARAMETER 2
    [2, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 229,
  clc$optional_default_parameter, 0, 5]],
{ PARAMETER 1
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 2
    [[1, 0, clc$keyword_type], [6], [
    ['D                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['DECLARED                       ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['T                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['TYPE                           ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['V                              ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['VALUE                          ', clc$nominal_entry, clc$normal_usage_entry, 3]]
    ,
    'value']];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$field_name = 1,
      p$option = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    VAR
      account: avt$account_name,
      altered_pdt: ^clt$parameter_description_table,
      batch_default: ost$name,
      capability: boolean,
      change_date: ost$date_time,
      date_display_format: string(clc$max_date_time_form_string),
      date_time: avt$date_time,
      declared: ost$name,
      expiration_date: ost$date_time,
      expiration_interval: pmt$time_increment,
      expiration_warning_interval: pmt$time_increment,
      expired_password_chg_interval: pmt$time_increment,
      field_kind: avt$field_kind,
      field_work_area: ^seq (*),
      file_reference: fst$path,
      integer_value: integer,
      interactive_default: ost$name,
      job_limit_information: avt$job_limit_information,
      labeled_names: ^avt$labeled_names_list,
      keyword_type_changes: ^clt$type_changes,
      limit_value: avt$limit_value,
      local_status: ost$status,
      maximum_expiration_interval: pmt$time_increment,
      minimum_ring: ost$ring,
      name_list: ^avt$name_list,
      name_list_size: avt$name_list_size,
      nominal_ring: ost$ring,
      numeric_display_format: avt$numeric_display_format,
      pdt_changes: ^clt$pdt_changes,
      project: avt$project_name,
      real_value: real,
      string_value: ost$string,
      time_display_format: string(clc$max_date_time_form_string),
      total_limit_information: avt$total_limit_information;

    status.normal := TRUE;

{ Hide the VALUE keyword option if this is a field management subutility.

    IF current_subutility_session_info^.id = osc$null_name THEN

{ Make a copy of the PDT so it can be altered.

      PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
      RESET altered_pdt;
      altered_pdt^ := #SEQ(pdt)^;

      PUSH keyword_type_changes: [1 .. 1];
      keyword_type_changes^ [1].kind := clc$tc_keyword_availability;
      keyword_type_changes^ [1].keyword := 'VALUE                          ';
      keyword_type_changes^ [1].availability := clc$hidden_entry;

      PUSH pdt_changes: [1 .. 1];
      pdt_changes^ [1].number := p$option;
      pdt_changes^ [1].kind := clc$pdtc_type;
      pdt_changes^ [1].type_changes := keyword_type_changes;

      clp$change_pdt (altered_pdt, pdt_changes^, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    ELSE
      clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IFEND;
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    avp$get_validation_field_kind (pvt [p$field_name].value^.name_value,
          current_subutility_session_info^.validation_record_name, field_kind, validation_file_information,
          local_status);
    IF (NOT local_status.normal) AND (pvt [p$option].value^.keyword_value <> 'DECLARED') THEN
      status := local_status;
      RETURN;
    IFEND;

    IF (pvt [p$option].value^.keyword_value = 'DECLARED') THEN
      IF local_status.normal THEN
        declared := 'ACTIVE';
      ELSEIF local_status.condition = ave$field_was_deleted THEN
        declared := 'DELETED';
      ELSE
        declared := 'UNKNOWN';
      IFEND;
      clp$make_name_value (declared, work_area, result);
    ELSEIF pvt [p$option].value^.keyword_value = 'TYPE' THEN
      clp$make_name_value (avv$field_kind_names [field_kind], work_area, result);
    ELSE { VALUE }
      CASE field_kind OF
      = avc$account_project_kind =
        avp$get_acct_proj_display_value (pvt [p$field_name].value^.name_value,
              current_subutility_session_info^.id, account, project, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        avp$make_acct_proj_scl_value (account, project, work_area, result, status);
      = avc$accumulating_limit_kind =
        avp$get_accum_limit_display_val (pvt [p$field_name].value^.name_value,
              current_subutility_session_info^.id, job_limit_information, total_limit_information,
              numeric_display_format, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        avp$make_accum_limit_scl_value (job_limit_information, total_limit_information,
              numeric_display_format, work_area, result, status);
      = avc$capability_kind =
        avp$get_capabil_display_value (pvt [p$field_name].value^.name_value,
              current_subutility_session_info^.id, capability, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        avp$make_capability_scl_value (capability, work_area, result, status);
      = avc$date_time_kind =
        avp$get_date_time_display_value (pvt [p$field_name].value^.name_value,
              current_subutility_session_info^.id, date_time, date_display_format, time_display_format,
              status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        avp$make_date_time_scl_value (date_time, work_area, result, status);
      = avc$file_kind =
        avp$get_file_display_value (pvt [p$field_name].value^.name_value,
              current_subutility_session_info^.id, file_reference, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

{ A file type validation field is returned as a string to avoid evaluation of the file reference.

        string_value.value := file_reference;
        string_value.size := clp$trimmed_string_size(file_reference);
        avp$make_string_scl_value (string_value, work_area, result, status);
      = avc$integer_kind =
        avp$get_integer_display_value (pvt [p$field_name].value^.name_value,
              current_subutility_session_info^.id, integer_value, numeric_display_format, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        avp$make_integer_scl_value (integer_value, numeric_display_format, work_area, result, status);
      = avc$job_class_kind =
        PUSH name_list: [1 .. avc$maximum_name_list_size];
        avp$get_job_class_display_value (pvt [p$field_name].value^.name_value,
              current_subutility_session_info^.id, name_list^, name_list_size, batch_default,
              interactive_default, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        avp$make_job_class_scl_value (batch_default, interactive_default, name_list^, name_list_size,
              work_area, result, status);
      = avc$keyword_kind =

{ Keywords are not implemented yet.

      = avc$labeled_names_kind =
        PUSH field_work_area: [[REP avc$max_template_record_size OF cell]];
        RESET field_work_area;
        avp$get_labeled_names_dis_value (pvt [p$field_name].value^.name_value,
              current_subutility_session_info^.id, field_work_area, labeled_names, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        avp$make_labeled_names_scl_valu (labeled_names, work_area, result, status);
      = avc$limit_kind =
        avp$get_limit_display_value (pvt [p$field_name].value^.name_value,
              current_subutility_session_info^.id, limit_value, numeric_display_format, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        avp$make_limit_scl_value (limit_value, numeric_display_format, work_area, result, status);
      = avc$login_password_kind =
        PUSH name_list: [1 .. avc$maximum_name_list_size];
        avp$get_login_pw_display_value (pvt [p$field_name].value^.name_value,
              current_subutility_session_info^.id, expiration_date, expiration_interval,
              maximum_expiration_interval, expiration_warning_interval, expired_password_chg_interval,
              change_date, name_list^, name_list_size, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        avp$make_login_pw_scl_value (expiration_date, expiration_interval, maximum_expiration_interval,
              expiration_warning_interval, expired_password_chg_interval, change_date, name_list^,
              name_list_size, work_area, result, status);
      = avc$name_kind =
        PUSH name_list: [1 .. avc$maximum_name_list_size];
        avp$get_name_display_value (pvt [p$field_name].value^.name_value,
              current_subutility_session_info^.id, name_list^, name_list_size, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        avp$make_name_scl_value (name_list^, name_list_size, work_area, result, status);
      = avc$real_kind =
        avp$get_real_display_value (pvt [p$field_name].value^.name_value,
              current_subutility_session_info^.id, real_value, numeric_display_format, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        avp$make_real_scl_value (real_value, work_area, result, status);
      = avc$ring_privilege_kind =
        avp$get_ring_priv_display_value (pvt [p$field_name].value^.name_value,
              current_subutility_session_info^.id, minimum_ring, nominal_ring, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        avp$make_ring_priv_scl_value (minimum_ring, nominal_ring, work_area, result, status);
      = avc$string_kind =
        avp$get_string_display_value (pvt [p$field_name].value^.name_value,
              current_subutility_session_info^.id, string_value, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        avp$make_string_scl_value (string_value, work_area, result, status);
      CASEND;
    IFEND;

  PROCEND avp$$validation;
?? OLDTITLE ??
?? NEWTITLE := 'avp$$validation_field_names', EJECT ??

{ PURPOSE:
{   Return a list containing the names of the families on this system.

  PROCEDURE avp$$validation_field_names
    (    parameter_list: clt$parameter_list;
     VAR work_area: ^clt$work_area;
     VAR result: ^clt$data_value;
     VAR status: ost$status);

{ FUNCTION (osm$$admv_vfn) $field_names, $fn (
{   option: key
{       (active, a)
{       (deleted, d)
{     keyend = active
{   type: key
{       (account_project, ap)
{       (accumulating_limit, al)
{       (capability, capabilities, c)
{       (date_time, dt)
{       (file, f)
{       (integer, i)
{       (job_class, jc)
{       (labeled_names, ln)
{       (limit, l)
{       (login_password, lpw)
{       (name, n)
{       (real, r)
{       (ring_privilege, rp)
{       (string, s)
{       all
{     keyend = all
{   )

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 2] of clt$pdt_parameter_name,
      parameters: array [1 .. 2] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 4] of clt$keyword_specification,
        default_value: string (6),
      recend,
      type2: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 30] of clt$keyword_specification,
        default_value: string (3),
      recend,
    recend := [
    [1,
    [89, 5, 11, 14, 31, 7, 544],
    clc$function, 2, 2, 0, 0, 0, 0, 0, 'OSM$$ADMV_VFN'], [
    ['OPTION                         ',clc$nominal_entry, 1],
    ['TYPE                           ',clc$nominal_entry, 2]],
    [
{ PARAMETER 1
    [1, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 155,
  clc$optional_default_parameter, 0, 6],
{ PARAMETER 2
    [2, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 1117,
  clc$optional_default_parameter, 0, 3]],
{ PARAMETER 1
    [[1, 0, clc$keyword_type], [4], [
    ['A                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['ACTIVE                         ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['D                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['DELETED                        ', clc$nominal_entry, clc$normal_usage_entry, 2]]
    ,
    'active'],
{ PARAMETER 2
    [[1, 0, clc$keyword_type], [30], [
    ['ACCOUNT_PROJECT                ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['ACCUMULATING_LIMIT             ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['AL                             ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 15],
    ['AP                             ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['C                              ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['CAPABILITIES                   ', clc$alias_entry, clc$normal_usage_entry, 3],
    ['CAPABILITY                     ', clc$nominal_entry, clc$normal_usage_entry, 3],
    ['DATE_TIME                      ', clc$nominal_entry, clc$normal_usage_entry, 4],
    ['DT                             ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
    ['F                              ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
    ['FILE                           ', clc$nominal_entry, clc$normal_usage_entry, 5],
    ['I                              ', clc$abbreviation_entry, clc$normal_usage_entry, 6],
    ['INTEGER                        ', clc$nominal_entry, clc$normal_usage_entry, 6],
    ['JC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 7],
    ['JOB_CLASS                      ', clc$nominal_entry, clc$normal_usage_entry, 7],
    ['L                              ', clc$abbreviation_entry, clc$normal_usage_entry, 9],
    ['LABELED_NAMES                  ', clc$nominal_entry, clc$normal_usage_entry, 8],
    ['LIMIT                          ', clc$nominal_entry, clc$normal_usage_entry, 9],
    ['LN                             ', clc$abbreviation_entry, clc$normal_usage_entry, 8],
    ['LOGIN_PASSWORD                 ', clc$nominal_entry, clc$normal_usage_entry, 10],
    ['LPW                            ', clc$abbreviation_entry, clc$normal_usage_entry, 10],
    ['N                              ', clc$abbreviation_entry, clc$normal_usage_entry, 11],
    ['NAME                           ', clc$nominal_entry, clc$normal_usage_entry, 11],
    ['R                              ', clc$abbreviation_entry, clc$normal_usage_entry, 12],
    ['REAL                           ', clc$nominal_entry, clc$normal_usage_entry, 12],
    ['RING_PRIVILEGE                 ', clc$nominal_entry, clc$normal_usage_entry, 13],
    ['RP                             ', clc$abbreviation_entry, clc$normal_usage_entry, 13],
    ['S                              ', clc$abbreviation_entry, clc$normal_usage_entry, 14],
    ['STRING                         ', clc$nominal_entry, clc$normal_usage_entry, 14]]
    ,
    'all']];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$option = 1,
      p$type = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    VAR
      field_names: ^array [1 .. * ] of ost$name,
      field_kind: avt$field_kind,
      field_kind_set: avt$field_kind_set,
      index: avt$field_count,
      list_element: ^clt$data_value,
      number_of_fields: avt$field_count,
      previous_list_element: ^clt$data_value,
      return_deleted_fields: boolean;

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    return_deleted_fields :=  pvt [p$option].value^.keyword_value = 'DELETED';

{ Select specified type.

    IF pvt [p$type].value^.keyword_value = 'ALL' THEN
      field_kind_set := -$avt$field_kind_set [];
    ELSE
      field_kind_set := $avt$field_kind_set [];
    /get_field_kind/
      FOR field_kind := LOWERVALUE(field_kind) TO UPPERVALUE(field_kind) DO
        IF pvt [p$type].value^.keyword_value = avv$field_kind_names [field_kind] THEN
          field_kind_set := $avt$field_kind_set [field_kind];
          EXIT /get_field_kind/;
        IFEND;
      FOREND /get_field_kind/;
    IFEND;

    number_of_fields := 50;
    REPEAT
      PUSH field_names: [1 .. number_of_fields];
        avp$get_validation_field_names (current_subutility_session_info^.validation_record_name,
              field_kind_set, return_deleted_fields, field_names^, number_of_fields,
              validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
    UNTIL number_of_fields <= UPPERBOUND (field_names^);

    result := NIL;

    FOR index := 1 TO number_of_fields DO
      make_scl_name_list_element (field_names^ [index], work_area, list_element, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      IF result = NIL THEN
        result := list_element;
      ELSE
        previous_list_element^.link := list_element;
      IFEND;
      previous_list_element := list_element;
    FOREND;

{ If the list has not been created, make an empty list.

    IF result = NIL THEN
      clp$make_list_value (work_area, result);
      IF result = NIL THEN
        osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
        RETURN;
      IFEND;
    IFEND;

  PROCEND avp$$validation_field_names;
?? OLDTITLE ??
?? OLDTITLE ??
?? NEWTITLE := 'Create/Change Subutility Commands', EJECT ??
?? NEWTITLE := 'avp$change_acct_proj_command', EJECT ??

{ PURPOSE:
{   This is the command processor used to change the value of any
{   ACCOUNT_PROJECT fields.

  PROCEDURE [XDCL] avp$change_acct_proj_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chaapc) change_account_project_command, chaapc (
{   account, a: any of
{       key
{         current, default, none
{       keyend
{       name
{     anyend = $optional
{   project, p: any of
{       key
{         current, default, none
{       keyend
{       name
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 5] of clt$pdt_parameter_name,
        parameters: array [1 .. 3] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 3] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 3] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        type3: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 4, 21, 14, 30, 1, 235], clc$command, 5, 3, 0, 0, 0, 0, 3, 'OSM$ADMV_CHAAPC'],
            [['A                              ', clc$abbreviation_entry, 1],
            ['ACCOUNT                        ', clc$nominal_entry, 1],
            ['P                              ', clc$abbreviation_entry, 2],
            ['PROJECT                        ', clc$nominal_entry, 2],
            ['STATUS                         ', clc$nominal_entry, 3]], [

{ PARAMETER 1

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 143, clc$optional_parameter, 0, 0],

{ PARAMETER 2

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 143, clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type], FALSE, 2], 118,
            [[1, 0, clc$keyword_type], [3], [['CURRENT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 3]]], 5, [[1, 0, clc$name_type], [1, osc$max_name_size]]],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type], FALSE, 2], 118,
            [[1, 0, clc$keyword_type], [3], [['CURRENT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 3]]], 5, [[1, 0, clc$name_type], [1, osc$max_name_size]]],

{ PARAMETER 3

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$account = 1,
      p$project = 2,
      p$status = 3;

    VAR
      pvt: array [1 .. 3] of clt$parameter_value;

    VAR
      account: ^avt$account_name,
      altered_pdt: ^clt$parameter_description_table,
      change_authority: avt$validation_authority,
      command_name: ost$name,
      default_account: avt$account_name,
      default_project: avt$project_name,
      delete_authority: avt$validation_authority,
      description: ost$string,
      display_authority: avt$validation_authority,
      field_name: ost$name,
      manage_authority: avt$validation_authority,
      pdt_changes: ^clt$pdt_changes,
      project: ^avt$project_name;

    status.normal := TRUE;

{ Determine what field to change and get its field description.

    avp$get_field_name (current_subutility_session_info^.id, field_name, command_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    avp$get_acct_proj_field_desc (field_name, current_subutility_session_info^.validation_record_name,
          current_subutility_session_info^.id, default_account, default_project, description,
          change_authority, delete_authority, display_authority, manage_authority,
          validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Set the SECURE attribute if necessary.

    IF display_authority = avc$system_authority THEN

{ Make a copy of the PDT so it can be altered.

      PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
      RESET altered_pdt;
      altered_pdt^ := #SEQ (pdt) ^;

      PUSH pdt_changes: [1 .. 2];
      pdt_changes^ [1].number := p$account;
      pdt_changes^ [1].kind := clc$pdtc_security;
      pdt_changes^ [1].security := clc$secure_parameter;
      pdt_changes^ [2].number := p$project;
      pdt_changes^ [2].kind := clc$pdtc_security;
      pdt_changes^ [2].security := clc$secure_parameter;

      clp$change_pdt (altered_pdt, pdt_changes^, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    ELSE
      clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IFEND;
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF pvt [p$account].specified THEN
      IF pvt [p$account].value^.kind = clc$keyword THEN
        IF pvt [p$account].value^.keyword_value = 'CURRENT' THEN
          account := ^executing_account;
        ELSEIF pvt [p$account].value^.keyword_value = 'DEFAULT' THEN
          account := ^default_account;
        ELSE
          account := ^pvt [p$account].value^.keyword_value;
        IFEND;
      ELSE
        account := ^pvt [p$account].value^.name_value;
      IFEND;
    ELSE
      account := NIL;
    IFEND;

    IF pvt [p$project].specified THEN
      IF pvt [p$project].value^.kind = clc$keyword THEN
        IF pvt [p$project].value^.keyword_value = 'CURRENT' THEN
          project := ^executing_project;
        ELSEIF pvt [p$project].value^.keyword_value = 'DEFAULT' THEN
          project := ^default_project;
        ELSE
          project := ^pvt [p$project].value^.keyword_value;
        IFEND;
      ELSE
        project := ^pvt [p$project].value^.name_value;
      IFEND;
    ELSE
      project := NIL;
    IFEND;

    avp$change_acct_proj_value (field_name, account, project, current_subutility_session_info^.id,
          validation_file_information, status);

  PROCEND avp$change_acct_proj_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$change_accum_limit_command', EJECT ??

{ PURPOSE:
{   This is the command processor used to change the value of any
{   ACCUMULATING_LIMIT fields.

  PROCEDURE [XDCL] avp$change_accum_limit_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chaalc) change_accum_limit_command, chaalc (
{   job_warning_limit, jwl: (BY_NAME) any of
{       key
{         default, unlimited
{       keyend
{       integer 0..osc$max_integer
{     anyend = $optional
{   job_maximum_limit, jmaxl: (BY_NAME) any of
{       key
{         default, unlimited
{       keyend
{       integer 0..osc$max_integer
{     anyend = $optional
{   total_limit, tl: (BY_NAME) any of
{       key
{         default, unlimited
{       keyend
{       integer 0..osc$max_integer
{     anyend = $optional
{   total_accumulation, ta: (BY_NAME) integer 0..osc$max_integer = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 9] of clt$pdt_parameter_name,
        parameters: array [1 .. 5] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$integer_type_qualifier,
        recend,
        type5: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 12, 15, 11, 48, 946], clc$command, 9, 5, 0, 0, 0, 0, 5, 'OSM$ADMV_CHAALC'],
            [['JMAXL                          ', clc$abbreviation_entry, 2],
            ['JOB_MAXIMUM_LIMIT              ', clc$nominal_entry, 2],
            ['JOB_WARNING_LIMIT              ', clc$nominal_entry, 1],
            ['JWL                            ', clc$abbreviation_entry, 1],
            ['STATUS                         ', clc$nominal_entry, 5],
            ['TA                             ', clc$abbreviation_entry, 4],
            ['TL                             ', clc$abbreviation_entry, 3],
            ['TOTAL_ACCUMULATION             ', clc$nominal_entry, 4],
            ['TOTAL_LIMIT                    ', clc$nominal_entry, 3]], [

{ PARAMETER 1

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 121,
            clc$optional_parameter, 0, 0],

{ PARAMETER 2

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 121,
            clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 121,
            clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 20,
            clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 20, [[1, 0, clc$integer_type], [0, osc$max_integer, 10]]],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 20, [[1, 0, clc$integer_type], [0, osc$max_integer, 10]]],

{ PARAMETER 3

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 20, [[1, 0, clc$integer_type], [0, osc$max_integer, 10]]],

{ PARAMETER 4

      [[1, 0, clc$integer_type], [0, osc$max_integer, 10]],

{ PARAMETER 5

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$job_warning_limit = 1,
      p$job_maximum_limit = 2,
      p$total_limit = 3,
      p$total_accumulation = 4,
      p$status = 5;

    VAR
      pvt: array [1 .. 5] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: avt$validation_authority,
      command_name: ost$name,
      default_job_warning_limit: avt$limit_value,
      default_job_maximum_limit: avt$limit_value,
      default_total_limit: avt$limit_value,
      default_total_accumulation: avt$limit_value,
      delete_authority: avt$validation_authority,
      description: ost$string,
      display_authority: avt$validation_authority,
      field_name: ost$name,
      job_limit_type_changes: ^clt$type_changes,
      job_limits_apply: boolean,
      job_maximum_limit: ^avt$limit_value,
      job_warning_limit: ^avt$limit_value,
      limit_name: ost$name,
      limit_update_statistics: ^sft$limit_update_statistics,
      manage_authority: avt$validation_authority,
      maximum_job_limit_value: avt$limit_value,
      minimum_job_limit_value: avt$limit_value,
      number_of_limit_update_stats: avt$name_list_size,
      pdt_changes: ^clt$pdt_changes,
      total_accumulation: ^avt$limit_value,
      total_limit: ^avt$limit_value,
      total_limit_applies: boolean,
      total_limit_stops_login: boolean;


    status.normal := TRUE;

{ Determine what field to change and get its field description.

    avp$get_field_name (current_subutility_session_info^.id, field_name, command_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    PUSH limit_update_statistics: [1 .. avc$maximum_name_list_size];

    avp$get_accum_limit_field_desc (field_name, current_subutility_session_info^.validation_record_name,
          current_subutility_session_info^.id, default_job_warning_limit, default_job_maximum_limit,
          default_total_limit, default_total_accumulation, limit_name, job_limits_apply,
          minimum_job_limit_value, maximum_job_limit_value, number_of_limit_update_stats,
          limit_update_statistics, total_limit_applies, total_limit_stops_login, description,
          change_authority, delete_authority, display_authority, manage_authority,
          validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Change the PDT to hide parameters and keywords that should not be used.  Also set the minimum and maximum
{ values for the job warning and job maximum values.

    PUSH pdt_changes: [1 .. 8];
    IF job_limits_apply THEN
      PUSH job_limit_type_changes: [1 .. 2];
      job_limit_type_changes^ [1].kind := clc$tc_integer_subrange;
      job_limit_type_changes^ [1].min_integer_value := minimum_job_limit_value;
      job_limit_type_changes^ [1].max_integer_value := maximum_job_limit_value;
      job_limit_type_changes^ [2].kind := clc$tc_keyword_availability;
      job_limit_type_changes^ [2].keyword := 'UNLIMITED';
      IF maximum_job_limit_value = sfc$unlimited THEN
        job_limit_type_changes^ [2].availability := clc$normal_usage_entry;
      ELSE
        job_limit_type_changes^ [2].availability := clc$hidden_entry;
      IFEND;

      pdt_changes^ [1].number := p$job_warning_limit;
      pdt_changes^ [1].kind := clc$pdtc_type;
      pdt_changes^ [1].type_changes := job_limit_type_changes;
      pdt_changes^ [2].number := p$job_maximum_limit;
      pdt_changes^ [2].kind := clc$pdtc_type;
      pdt_changes^ [2].type_changes := job_limit_type_changes;
    ELSE
      pdt_changes^ [1].number := p$job_warning_limit;
      pdt_changes^ [1].kind := clc$pdtc_availability;
      pdt_changes^ [1].availability := clc$hidden_entry;
      pdt_changes^ [2].number := p$job_maximum_limit;
      pdt_changes^ [2].kind := clc$pdtc_availability;
      pdt_changes^ [2].availability := clc$hidden_entry;
    IFEND;
    IF total_limit_applies THEN
      pdt_changes^ [3].number := p$total_limit;
      pdt_changes^ [3].kind := clc$pdtc_null;
      pdt_changes^ [4].number := p$total_accumulation;
      pdt_changes^ [4].kind := clc$pdtc_null;
    ELSE
      pdt_changes^ [3].number := p$total_limit;
      pdt_changes^ [3].kind := clc$pdtc_availability;
      pdt_changes^ [3].availability := clc$hidden_entry;
      pdt_changes^ [4].number := p$total_accumulation;
      pdt_changes^ [4].kind := clc$pdtc_availability;
      pdt_changes^ [4].availability := clc$hidden_entry;
    IFEND;

{ Set the SECURE attribute if necessary.

    pdt_changes^ [5].number := p$job_warning_limit;
    pdt_changes^ [5].kind := clc$pdtc_security;
    pdt_changes^ [6].number := p$job_maximum_limit;
    pdt_changes^ [6].kind := clc$pdtc_security;
    pdt_changes^ [7].number := p$total_limit;
    pdt_changes^ [7].kind := clc$pdtc_security;
    pdt_changes^ [8].number := p$total_accumulation;
    pdt_changes^ [8].kind := clc$pdtc_security;
    IF display_authority = avc$system_authority THEN
      pdt_changes^ [5].security := clc$secure_parameter;
      pdt_changes^ [6].security := clc$secure_parameter;
      pdt_changes^ [7].security := clc$secure_parameter;
      pdt_changes^ [8].security := clc$secure_parameter;
    ELSE
      pdt_changes^ [5].security := clc$non_secure_parameter;
      pdt_changes^ [6].security := clc$non_secure_parameter;
      pdt_changes^ [7].security := clc$non_secure_parameter;
      pdt_changes^ [8].security := clc$non_secure_parameter;
    IFEND;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF job_limits_apply THEN
      process_limit_parameter (pvt [p$job_warning_limit].value, ^default_job_warning_limit,
            job_warning_limit);

      process_limit_parameter (pvt [p$job_maximum_limit].value, ^default_job_maximum_limit,
            job_maximum_limit);
    ELSE
      job_warning_limit := NIL;
      job_maximum_limit := NIL;
    IFEND;

    IF total_limit_applies THEN
      process_limit_parameter (pvt [p$total_limit].value, ^default_total_limit, total_limit);

      process_limit_parameter (pvt [p$total_accumulation].value, ^default_total_accumulation,
            total_accumulation);
    ELSE
      total_limit := NIL;
      total_accumulation := NIL;
    IFEND;

    avp$change_accum_limit_value (field_name, job_warning_limit, job_maximum_limit, total_limit,
          total_accumulation, current_subutility_session_info^.id, validation_file_information, status);

  PROCEND avp$change_accum_limit_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$change_capability_command', EJECT ??

{ PURPOSE:
{   This is the command processor used to change the value of any
{   CAPABILITY fields.
{
{ NOTES:
{   Each capability is stored in the validation file as a separate field.

  PROCEDURE [XDCL] avp$change_capability_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chacc) change_capability, change_capabilities, chac (
{   add, a: (BY_NAME, CHECK) any of
{       key
{         all, none
{       keyend
{       list of name
{     anyend = none
{   delete, d: (BY_NAME, CHECK) any of
{       key
{         all, none
{       keyend
{       list of name
{     anyend = none
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 5] of clt$pdt_parameter_name,
        parameters: array [1 .. 3] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (4),
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (4),
        recend,
        type3: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 12, 15, 14, 22, 297], clc$command, 5, 3, 0, 0, 0, 0, 3, 'OSM$ADMV_CHACC'],
            [['A                              ', clc$abbreviation_entry, 1],
            ['ADD                            ', clc$nominal_entry, 1],
            ['D                              ', clc$abbreviation_entry, 2],
            ['DELETE                         ', clc$nominal_entry, 2],
            ['STATUS                         ', clc$nominal_entry, 3]], [

{ PARAMETER 1

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 122,
            clc$optional_default_parameter, 0, 4],

{ PARAMETER 2

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 122,
            clc$optional_default_parameter, 0, 4],

{ PARAMETER 3

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'none'],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'none'],

{ PARAMETER 3

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$add = 1,
      p$delete = 2,
      p$status = 3;

    VAR
      pvt: array [1 .. 3] of clt$parameter_value;

    VAR
      capability_field_count: avt$field_count,
      capability_field_names: ^array [1 .. * ] of ost$name,
      capability_value: boolean,
      change_status: ost$status,
      current_parameter_value: ^clt$data_value,
      ignore_status: ost$status,
      index: avt$field_count;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF which_parameter.specific THEN
        IF which_parameter.number = p$add THEN
          verify_field_names_value ('ADD', parameter_value_table^ [p$add].value,
                current_subutility_session_info^.validation_record_name,
                $avt$field_kind_set [avc$capability_kind], status);
        ELSEIF which_parameter.number = p$delete THEN
          verify_field_names_value ('DELETE', parameter_value_table^ [p$delete].value,
                current_subutility_session_info^.validation_record_name,
                $avt$field_kind_set [avc$capability_kind], status);
        ELSE

{ Ignore the parameter.

        IFEND;
      IFEND;

      IF (NOT status.normal) AND (status.condition = ave$unknown_field) THEN
        status.condition := ave$unknown_capability;
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    change_status.normal := TRUE;
    capability_field_names := NIL;

{ Delete any specified capabilities.

    capability_value := FALSE;
    IF pvt [p$delete].value^.kind = clc$keyword THEN
      IF pvt [p$delete].value^.keyword_value = 'ALL' THEN
        PUSH capability_field_names: [1 .. avc$maximum_field_count];
        avp$get_validation_field_names (current_subutility_session_info^.validation_record_name,
              $avt$field_kind_set [avc$capability_kind], FALSE, capability_field_names^,
              capability_field_count, validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        FOR index := 1 TO capability_field_count DO
          avp$change_capability_value (capability_field_names^ [index], ^capability_value,
                current_subutility_session_info^.id, validation_file_information, ignore_status);
        FOREND;
      IFEND;
    ELSE { list of names}
      current_parameter_value := pvt [p$delete].value;
      REPEAT
        avp$change_capability_value (current_parameter_value^.element_value^.name_value, ^capability_value,
              current_subutility_session_info^.id, validation_file_information, status);
        IF NOT status.normal THEN
          IF (status.condition = ave$insufficient_authority) THEN
            status.normal := TRUE;
            IF change_status.normal THEN
              osp$set_status_abnormal ('AV', ave$cannot_change_capability,
                    current_parameter_value^.element_value^.name_value, change_status);
            ELSE
              osp$append_status_parameter (',', current_parameter_value^.element_value^.name_value,
                    change_status);
            IFEND;
          ELSE
            RETURN;
          IFEND;
        IFEND;
        current_parameter_value := current_parameter_value^.link;
      UNTIL current_parameter_value = NIL;
    IFEND;

{ Add any specified capabilities.

    capability_value := TRUE;
    IF pvt [p$add].value^.kind = clc$keyword THEN
      IF pvt [p$add].value^.keyword_value = 'ALL' THEN
        IF capability_field_names = NIL THEN
          PUSH capability_field_names: [1 .. avc$maximum_field_count];
          avp$get_validation_field_names (current_subutility_session_info^.validation_record_name,
                $avt$field_kind_set [avc$capability_kind], FALSE, capability_field_names^,
                capability_field_count, validation_file_information, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        FOR index := 1 TO capability_field_count DO
          avp$change_capability_value (capability_field_names^ [index], ^capability_value,
                current_subutility_session_info^.id, validation_file_information, ignore_status);
        FOREND;
      IFEND;
    ELSE { list of names}
      current_parameter_value := pvt [p$add].value;
      REPEAT
        avp$change_capability_value (current_parameter_value^.element_value^.name_value, ^capability_value,
              current_subutility_session_info^.id, validation_file_information, status);
        IF NOT status.normal THEN
          IF (status.condition = ave$insufficient_authority) THEN
            status.normal := TRUE;
            IF change_status.normal THEN
              osp$set_status_abnormal ('AV', ave$cannot_change_capability,
                    current_parameter_value^.element_value^.name_value, change_status);
            ELSE
              osp$append_status_parameter (',', current_parameter_value^.element_value^.name_value,
                    change_status);
            IFEND;
          ELSE
            RETURN;
          IFEND;
        IFEND;
        current_parameter_value := current_parameter_value^.link;
      UNTIL current_parameter_value = NIL;
    IFEND;

    status := change_status;

  PROCEND avp$change_capability_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$change_date_time_command', EJECT ??

{ PURPOSE:
{   This is the command processor used to change the value of any
{   DATE_TIME fields.

  PROCEDURE [XDCL] avp$change_date_time_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

    VAR
      change_authority: avt$validation_authority,
      command_name: ost$name,
      date_applies: boolean,
      date_display_format: string (clc$max_date_time_form_string),
      date_time_range: boolean,
      date_time_value: ^avt$date_time,
      default_value: avt$date_time,
      delete_authority: avt$validation_authority,
      description: ost$string,
      display_authority: avt$validation_authority,
      field_name: ost$name,
      manage_authority: avt$validation_authority,
      parameter_value: ^clt$data_value,
      time_applies: boolean,
      time_display_format: string (clc$max_date_time_form_string);

?? NEWTITLE := 'change_date_range_value', EJECT ??

{ PURPOSE:
{   This procedure contains the code used to define and parse the parameters
{   for the change_date_time command when a range is required and dates apply.

    PROCEDURE change_date_range_value
      (    parameter_list: clt$parameter_list;
       VAR parameter_value: ^clt$data_value;
       VAR status: ost$status);

{ PROCEDURE (osm$admv_chadrc) change_date_range_command, chadrc (
{   value, v: any of
{       key
{         default
{       keyend
{       range of date
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

      VAR
        pdt: [STATIC, READ, cls$declaration_section] record
          header: clt$pdt_header,
          names: array [1 .. 3] of clt$pdt_parameter_name,
          parameters: array [1 .. 2] of clt$pdt_parameter,
          type1: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 1] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$range_type_qualifier,
              element_type_spec: record
                header: clt$type_specification_header,
                qualifier: clt$date_time_type_qualifier,
              recend,
            recend,
          recend,
          type2: record
            header: clt$type_specification_header,
          recend,
        recend := [[1, [88, 5, 2, 10, 30, 45, 725], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CHADRC'],
              [['STATUS                         ', clc$nominal_entry, 2],
              ['V                              ', clc$abbreviation_entry, 1],
              ['VALUE                          ', clc$nominal_entry, 1]], [

{ PARAMETER 1

        [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
              clc$standard_parameter_checking, 76, clc$optional_parameter, 0, 0],

{ PARAMETER 2

        [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
              clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

        [[1, 0, clc$union_type], [[clc$keyword_type, clc$range_type], FALSE, 2], 44,
              [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
              clc$normal_usage_entry, 1]]], 12, [[1, 0, clc$range_type], [5], [[1, 0, clc$date_time_type],
              [$clt$date_and_or_time [clc$date], $clt$date_time_tenses
              [clc$past, clc$present, clc$future]]]]],

{ PARAMETER 2

        [[1, 0, clc$status_type]]];

?? POP ??

      CONST
        p$value = 1,
        p$status = 2;

      VAR
        pvt: array [1 .. 2] of clt$parameter_value;

      VAR
        altered_pdt: ^clt$parameter_description_table,
        pdt_changes: ^clt$pdt_changes;

      status.normal := TRUE;

{ Set the SECURE attribute if necessary.

      IF display_authority = avc$system_authority THEN

{ Make a copy of the PDT so it can be altered.

        PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
        RESET altered_pdt;
        altered_pdt^ := #SEQ (pdt) ^;

        PUSH pdt_changes: [1 .. 1];
        pdt_changes^ [1].number := p$value;
        pdt_changes^ [1].kind := clc$pdtc_security;
        pdt_changes^ [1].security := clc$secure_parameter;

        clp$change_pdt (altered_pdt, pdt_changes^, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
      ELSE
        clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
      IFEND;
      IF NOT status.normal THEN
        RETURN;
      IFEND;

{ Get the new value if one was specified.

      parameter_value := pvt [p$value].value;

    PROCEND change_date_range_value;
?? OLDTITLE ??
?? NEWTITLE := 'change_date_value', EJECT ??

{ PURPOSE:
{   This procedure contains the code used to define and parse the parameters
{   for the change_date_time command when a range is not allowed and dates apply.

    PROCEDURE change_date_value
      (    parameter_list: clt$parameter_list;
       VAR parameter_value: ^clt$data_value;
       VAR status: ost$status);

{ PROCEDURE (osm$admv_chadc) change_date_command, chadc (
{   value, v: any of
{       key
{         default
{       keyend
{       date
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

      VAR
        pdt: [STATIC, READ, cls$declaration_section] record
          header: clt$pdt_header,
          names: array [1 .. 3] of clt$pdt_parameter_name,
          parameters: array [1 .. 2] of clt$pdt_parameter,
          type1: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 1] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$date_time_type_qualifier,
            recend,
          recend,
          type2: record
            header: clt$type_specification_header,
          recend,
        recend := [[1, [88, 5, 2, 10, 38, 38, 978], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CHADC'],
              [['STATUS                         ', clc$nominal_entry, 2],
              ['V                              ', clc$abbreviation_entry, 1],
              ['VALUE                          ', clc$nominal_entry, 1]], [

{ PARAMETER 1

        [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
              clc$standard_parameter_checking, 69, clc$optional_parameter, 0, 0],

{ PARAMETER 2

        [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
              clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

        [[1, 0, clc$union_type], [[clc$date_time_type, clc$keyword_type], FALSE, 2], 44,
              [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
              clc$normal_usage_entry, 1]]], 5, [[1, 0, clc$date_time_type],
              [$clt$date_and_or_time [clc$date], $clt$date_time_tenses [clc$past, clc$present, clc$future]]]],

{ PARAMETER 2

        [[1, 0, clc$status_type]]];

?? POP ??

      CONST
        p$value = 1,
        p$status = 2;

      VAR
        pvt: array [1 .. 2] of clt$parameter_value;

      VAR
        altered_pdt: ^clt$parameter_description_table,
        pdt_changes: ^clt$pdt_changes;

      status.normal := TRUE;

{ Set the SECURE attribute if necessary.

      IF display_authority = avc$system_authority THEN

{ Make a copy of the PDT so it can be altered.

        PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
        RESET altered_pdt;
        altered_pdt^ := #SEQ (pdt) ^;

        PUSH pdt_changes: [1 .. 1];
        pdt_changes^ [1].number := p$value;
        pdt_changes^ [1].kind := clc$pdtc_security;
        pdt_changes^ [1].security := clc$secure_parameter;

        clp$change_pdt (altered_pdt, pdt_changes^, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
      ELSE
        clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
      IFEND;
      IF NOT status.normal THEN
        RETURN;
      IFEND;

{ Get the new value if one was specified.

      parameter_value := pvt [p$value].value;

    PROCEND change_date_value;
?? OLDTITLE ??
?? NEWTITLE := 'change_date_time_range_value', EJECT ??

{ PURPOSE:
{   This procedure contains the code used to define and parse the parameters
{   for the change_date_time command when a range is required and dates and
{   times apply.

    PROCEDURE change_date_time_range_value
      (    parameter_list: clt$parameter_list;
       VAR parameter_value: ^clt$data_value;
       VAR status: ost$status);

{ PROCEDURE (osm$admv_chadtrc) change_date_time_range_command, chadtrc (
{   value, v: any of
{       key
{         default
{       keyend
{       range of date_time
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

      VAR
        pdt: [STATIC, READ, cls$declaration_section] record
          header: clt$pdt_header,
          names: array [1 .. 3] of clt$pdt_parameter_name,
          parameters: array [1 .. 2] of clt$pdt_parameter,
          type1: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 1] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$range_type_qualifier,
              element_type_spec: record
                header: clt$type_specification_header,
                qualifier: clt$date_time_type_qualifier,
              recend,
            recend,
          recend,
          type2: record
            header: clt$type_specification_header,
          recend,
        recend := [[1, [88, 5, 2, 10, 20, 16, 471], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CHADTRC'],
              [['STATUS                         ', clc$nominal_entry, 2],
              ['V                              ', clc$abbreviation_entry, 1],
              ['VALUE                          ', clc$nominal_entry, 1]], [

{ PARAMETER 1

        [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
              clc$standard_parameter_checking, 76, clc$optional_parameter, 0, 0],

{ PARAMETER 2

        [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
              clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

        [[1, 0, clc$union_type], [[clc$keyword_type, clc$range_type], FALSE, 2], 44,
              [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
              clc$normal_usage_entry, 1]]], 12, [[1, 0, clc$range_type], [5], [[1, 0, clc$date_time_type],
              [$clt$date_and_or_time [clc$date, clc$time], $clt$date_time_tenses
              [clc$past, clc$present, clc$future]]]]],

{ PARAMETER 2

        [[1, 0, clc$status_type]]];

?? POP ??

      CONST
        p$value = 1,
        p$status = 2;

      VAR
        pvt: array [1 .. 2] of clt$parameter_value;

      VAR
        altered_pdt: ^clt$parameter_description_table,
        pdt_changes: ^clt$pdt_changes;

      status.normal := TRUE;

{ Set the SECURE attribute if necessary.

      IF display_authority = avc$system_authority THEN

{ Make a copy of the PDT so it can be altered.

        PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
        RESET altered_pdt;
        altered_pdt^ := #SEQ (pdt) ^;

        PUSH pdt_changes: [1 .. 1];
        pdt_changes^ [1].number := p$value;
        pdt_changes^ [1].kind := clc$pdtc_security;
        pdt_changes^ [1].security := clc$secure_parameter;

        clp$change_pdt (altered_pdt, pdt_changes^, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
      ELSE
        clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
      IFEND;
      IF NOT status.normal THEN
        RETURN;
      IFEND;

{ Get the new value if one was specified.

      parameter_value := pvt [p$value].value;

    PROCEND change_date_time_range_value;
?? OLDTITLE ??
?? NEWTITLE := 'change_date_time_value', EJECT ??

{ PURPOSE:
{   This procedure contains the code used to define and parse the parameters
{   for the change_date_time command when a range is not allowed and dates and
{   times apply.

    PROCEDURE change_date_time_value
      (    parameter_list: clt$parameter_list;
       VAR parameter_value: ^clt$data_value;
       VAR status: ost$status);

{ PROCEDURE (osm$admv_chadtc) change_date_time_command, chadtc (
{   value, v: any of
{       key
{         default
{       keyend
{       date_time
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

      VAR
        pdt: [STATIC, READ, cls$declaration_section] record
          header: clt$pdt_header,
          names: array [1 .. 3] of clt$pdt_parameter_name,
          parameters: array [1 .. 2] of clt$pdt_parameter,
          type1: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 1] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$date_time_type_qualifier,
            recend,
          recend,
          type2: record
            header: clt$type_specification_header,
          recend,
        recend := [[1, [88, 5, 2, 10, 28, 22, 191], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CHADTC'],
              [['STATUS                         ', clc$nominal_entry, 2],
              ['V                              ', clc$abbreviation_entry, 1],
              ['VALUE                          ', clc$nominal_entry, 1]], [

{ PARAMETER 1

        [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
              clc$standard_parameter_checking, 69, clc$optional_parameter, 0, 0],

{ PARAMETER 2

        [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
              clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

        [[1, 0, clc$union_type], [[clc$date_time_type, clc$keyword_type], FALSE, 2], 44,
              [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
              clc$normal_usage_entry, 1]]], 5, [[1, 0, clc$date_time_type],
              [$clt$date_and_or_time [clc$date, clc$time], $clt$date_time_tenses
              [clc$past, clc$present, clc$future]]]],

{ PARAMETER 2

        [[1, 0, clc$status_type]]];

?? POP ??

      CONST
        p$value = 1,
        p$status = 2;

      VAR
        pvt: array [1 .. 2] of clt$parameter_value;

      VAR
        altered_pdt: ^clt$parameter_description_table,
        pdt_changes: ^clt$pdt_changes;

      status.normal := TRUE;

{ Set the SECURE attribute if necessary.

      IF display_authority = avc$system_authority THEN

{ Make a copy of the PDT so it can be altered.

        PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
        RESET altered_pdt;
        altered_pdt^ := #SEQ (pdt) ^;

        PUSH pdt_changes: [1 .. 1];
        pdt_changes^ [1].number := p$value;
        pdt_changes^ [1].kind := clc$pdtc_security;
        pdt_changes^ [1].security := clc$secure_parameter;

        clp$change_pdt (altered_pdt, pdt_changes^, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
      ELSE
        clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
      IFEND;
      IF NOT status.normal THEN
        RETURN;
      IFEND;

{ Get the new value if one was specified.

      parameter_value := pvt [p$value].value;

    PROCEND change_date_time_value;
?? OLDTITLE ??
?? NEWTITLE := 'change_time_range_value', EJECT ??

{ PURPOSE:
{   This procedure contains the code used to define and parse the parameters
{   for the change_date_time command when a range is required and times apply.

    PROCEDURE change_time_range_value
      (    parameter_list: clt$parameter_list;
       VAR parameter_value: ^clt$data_value;
       VAR status: ost$status);

{ PROCEDURE (osm$admv_chatrc) change_time_range_command, chatrc (
{   value, v: any of
{       key
{         default
{       keyend
{       range of time
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

      VAR
        pdt: [STATIC, READ, cls$declaration_section] record
          header: clt$pdt_header,
          names: array [1 .. 3] of clt$pdt_parameter_name,
          parameters: array [1 .. 2] of clt$pdt_parameter,
          type1: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 1] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$range_type_qualifier,
              element_type_spec: record
                header: clt$type_specification_header,
                qualifier: clt$date_time_type_qualifier,
              recend,
            recend,
          recend,
          type2: record
            header: clt$type_specification_header,
          recend,
        recend := [[1, [88, 5, 2, 10, 34, 4, 242], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CHATRC'],
              [['STATUS                         ', clc$nominal_entry, 2],
              ['V                              ', clc$abbreviation_entry, 1],
              ['VALUE                          ', clc$nominal_entry, 1]], [

{ PARAMETER 1

        [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
              clc$standard_parameter_checking, 76, clc$optional_parameter, 0, 0],

{ PARAMETER 2

        [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
              clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

        [[1, 0, clc$union_type], [[clc$keyword_type, clc$range_type], FALSE, 2], 44,
              [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
              clc$normal_usage_entry, 1]]], 12, [[1, 0, clc$range_type], [5], [[1, 0, clc$date_time_type],
              [$clt$date_and_or_time [clc$time], $clt$date_time_tenses
              [clc$past, clc$present, clc$future]]]]],

{ PARAMETER 2

        [[1, 0, clc$status_type]]];

?? POP ??

      CONST
        p$value = 1,
        p$status = 2;

      VAR
        pvt: array [1 .. 2] of clt$parameter_value;

      VAR
        altered_pdt: ^clt$parameter_description_table,
        pdt_changes: ^clt$pdt_changes;

      status.normal := TRUE;

{ Set the SECURE attribute if necessary.

      IF display_authority = avc$system_authority THEN

{ Make a copy of the PDT so it can be altered.

        PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
        RESET altered_pdt;
        altered_pdt^ := #SEQ (pdt) ^;

        PUSH pdt_changes: [1 .. 1];
        pdt_changes^ [1].number := p$value;
        pdt_changes^ [1].kind := clc$pdtc_security;
        pdt_changes^ [1].security := clc$secure_parameter;

        clp$change_pdt (altered_pdt, pdt_changes^, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
      ELSE
        clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
      IFEND;
      IF NOT status.normal THEN
        RETURN;
      IFEND;

{ Get the new value if one was specified.

      parameter_value := pvt [p$value].value;

    PROCEND change_time_range_value;
?? OLDTITLE ??
?? NEWTITLE := 'change_time_value', EJECT ??

{ PURPOSE:
{   This procedure contains the code used to define and parse the parameters
{   for the change_date_time command when a range is not allowed and times apply.

    PROCEDURE change_time_value
      (    parameter_list: clt$parameter_list;
       VAR parameter_value: ^clt$data_value;
       VAR status: ost$status);

{ PROCEDURE (osm$admv_chatc) change_time_command, chatc (
{   value, v: any of
{       key
{         default
{       keyend
{       time
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

      VAR
        pdt: [STATIC, READ, cls$declaration_section] record
          header: clt$pdt_header,
          names: array [1 .. 3] of clt$pdt_parameter_name,
          parameters: array [1 .. 2] of clt$pdt_parameter,
          type1: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 1] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$date_time_type_qualifier,
            recend,
          recend,
          type2: record
            header: clt$type_specification_header,
          recend,
        recend := [[1, [88, 5, 2, 10, 35, 9, 954], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CHATC'],
              [['STATUS                         ', clc$nominal_entry, 2],
              ['V                              ', clc$abbreviation_entry, 1],
              ['VALUE                          ', clc$nominal_entry, 1]], [

{ PARAMETER 1

        [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
              clc$standard_parameter_checking, 69, clc$optional_parameter, 0, 0],

{ PARAMETER 2

        [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
              clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

        [[1, 0, clc$union_type], [[clc$date_time_type, clc$keyword_type], FALSE, 2], 44,
              [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
              clc$normal_usage_entry, 1]]], 5, [[1, 0, clc$date_time_type],
              [$clt$date_and_or_time [clc$time], $clt$date_time_tenses [clc$past, clc$present, clc$future]]]],

{ PARAMETER 2

        [[1, 0, clc$status_type]]];

?? POP ??

      CONST
        p$value = 1,
        p$status = 2;

      VAR
        pvt: array [1 .. 2] of clt$parameter_value;

      VAR
        altered_pdt: ^clt$parameter_description_table,
        pdt_changes: ^clt$pdt_changes;

      status.normal := TRUE;

{ Set the SECURE attribute if necessary.

      IF display_authority = avc$system_authority THEN

{ Make a copy of the PDT so it can be altered.

        PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
        RESET altered_pdt;
        altered_pdt^ := #SEQ (pdt) ^;

        PUSH pdt_changes: [1 .. 1];
        pdt_changes^ [1].number := p$value;
        pdt_changes^ [1].kind := clc$pdtc_security;
        pdt_changes^ [1].security := clc$secure_parameter;

        clp$change_pdt (altered_pdt, pdt_changes^, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
      ELSE
        clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
      IFEND;
      IF NOT status.normal THEN
        RETURN;
      IFEND;

{ Get the new value if one was specified.

      parameter_value := pvt [p$value].value;

    PROCEND change_time_value;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Determine what field to change and get its field description.

    avp$get_field_name (current_subutility_session_info^.id, field_name, command_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    avp$get_date_time_field_desc (field_name, current_subutility_session_info^.validation_record_name,
          current_subutility_session_info^.id, default_value, date_time_range, date_applies, time_applies,
          date_display_format, time_display_format, description, change_authority, delete_authority,
          display_authority, manage_authority, validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Use the appropriate PDT based on whether the field is a range and whether dates
{ apply, times apply or both dates and times apply.

    IF date_time_range THEN
      IF date_applies AND time_applies THEN
        change_date_time_range_value (parameter_list, parameter_value, status);
      ELSEIF date_applies THEN
        change_date_range_value (parameter_list, parameter_value, status);
      ELSE {time_applies}
        change_time_range_value (parameter_list, parameter_value, status);
      IFEND;
    ELSE
      IF date_applies AND time_applies THEN
        change_date_time_value (parameter_list, parameter_value, status);
      ELSEIF date_applies THEN
        change_date_value (parameter_list, parameter_value, status);
      ELSE {time_applies}
        change_time_value (parameter_list, parameter_value, status);
      IFEND;
    IFEND;
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF parameter_value <> NIL THEN
      PUSH date_time_value;
      IF parameter_value^.kind = clc$keyword THEN
        date_time_value^ := default_value;
      ELSEIF parameter_value^.kind = clc$range THEN
        date_time_value^.range := TRUE;
        date_time_value^.date_specified := parameter_value^.low_value^.date_time_value.date_specified;
        date_time_value^.time_specified := parameter_value^.low_value^.date_time_value.time_specified;
        date_time_value^.starting_value := parameter_value^.low_value^.date_time_value.value;
        date_time_value^.ending_value := parameter_value^.high_value^.date_time_value.value;
      ELSE
        date_time_value^.range := FALSE;
        date_time_value^.date_specified := parameter_value^.date_time_value.date_specified;
        date_time_value^.time_specified := parameter_value^.date_time_value.time_specified;
        date_time_value^.value := parameter_value^.date_time_value.value;
      IFEND;

      avp$change_date_time_value (field_name, date_time_value, current_subutility_session_info^.id,
            validation_file_information, status);
    IFEND;

  PROCEND avp$change_date_time_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$change_file_command', EJECT ??

{ PURPOSE:
{   This is the command processor used to change the value of any FILE fields.

  PROCEDURE [XDCL] avp$change_file_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chafc) change_file_command, chafc (
{   value, v: (CHECK) any of
{       key
{         default, none
{       keyend
{       file
{       string
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 3] of clt$pdt_parameter_name,
        parameters: array [1 .. 2] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
          recend,
          type_size_3: clt$type_specification_size,
          element_type_spec_3: record
            header: clt$type_specification_header,
            qualifier: clt$string_type_qualifier,
          recend,
        recend,
        type2: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 2, 12, 17, 49, 861], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CHAFC'],
            [['STATUS                         ', clc$nominal_entry, 2],
            ['V                              ', clc$abbreviation_entry, 1],
            ['VALUE                          ', clc$nominal_entry, 1]], [

{ PARAMETER 1

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 116, clc$optional_parameter, 0, 0],

{ PARAMETER 2

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$file_type, clc$keyword_type, clc$string_type], FALSE, 3], 81,
            [[1, 0, clc$keyword_type], [2], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 3, [[1, 0, clc$file_type]], 8,
            [[1, 0, clc$string_type], [0, clc$max_string_size, FALSE]]],

{ PARAMETER 2

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$value = 1,
      p$status = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: avt$validation_authority,
      command_name: ost$name,
      default_value: string (fsc$max_path_size),
      delete_authority: avt$validation_authority,
      description: ost$string,
      display_authority: avt$validation_authority,
      field_name: ost$name,
      file_reference: ^fst$file_reference,
      manage_authority: avt$validation_authority,
      pdt_changes: ^clt$pdt_changes;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      VAR
        evaluated_file_reference: fst$evaluated_file_reference;

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$value) THEN

{ If a string value was specified, verify that it is a correctly formed file reference.

        IF parameter_value_table^ [p$value].value^.kind = clc$string THEN
          clp$evaluate_file_reference (parameter_value_table^ [p$value].value^.file_value^,
                $clt$file_ref_parsing_options[], TRUE, evaluated_file_reference, status);
        IFEND;
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Determine what field to change and get its field description.

    avp$get_field_name (current_subutility_session_info^.id, field_name, command_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    avp$get_file_field_desc (field_name, current_subutility_session_info^.validation_record_name,
          current_subutility_session_info^.id, default_value, description, change_authority, delete_authority,
          display_authority, manage_authority, validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Set the SECURE attribute if necessary.

    IF display_authority = avc$system_authority THEN

{ Make a copy of the PDT so it can be altered.

      PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
      RESET altered_pdt;
      altered_pdt^ := #SEQ (pdt) ^;

      PUSH pdt_changes: [1 .. 1];
      pdt_changes^ [1].number := p$value;
      pdt_changes^ [1].kind := clc$pdtc_security;
      pdt_changes^ [1].security := clc$secure_parameter;

      clp$change_pdt (altered_pdt, pdt_changes^, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    ELSE
      clp$evaluate_parameters (parameter_list, #SEQ (pdt), ^check_parameters, ^pvt, status);
    IFEND;
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    process_file_parameter (pvt [p$value].value, ^default_value, file_reference);

    avp$change_file_value (field_name, file_reference, current_subutility_session_info^.id,
          validation_file_information, status);

  PROCEND avp$change_file_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$change_integer_command', EJECT ??

{ PURPOSE:
{   This is the command processor used to change the value of any INTEGER fields.

  PROCEDURE [XDCL] avp$change_integer_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chaic) change_integer_command, chaic (
{   value, v: any of
{       key
{         default
{       keyend
{       integer
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 3] of clt$pdt_parameter_name,
        parameters: array [1 .. 2] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type2: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 10, 15, 6, 43, 610], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CHAIC'],
            [['STATUS                         ', clc$nominal_entry, 2],
            ['V                              ', clc$abbreviation_entry, 1],
            ['VALUE                          ', clc$nominal_entry, 1]], [

{ PARAMETER 1

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 84, clc$optional_parameter, 0, 0],

{ PARAMETER 2

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type],
            [clc$min_integer, clc$max_integer, 10]]],

{ PARAMETER 2

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$value = 1,
      p$status = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: avt$validation_authority,
      command_name: ost$name,
      default_value: integer,
      delete_authority: avt$validation_authority,
      description: ost$string,
      display_authority: avt$validation_authority,
      display_format: avt$numeric_display_format,
      field_name: ost$name,
      integer_type_changes: ^clt$type_changes,
      integer_value: ^integer,
      manage_authority: avt$validation_authority,
      maximum_value: integer,
      minimum_value: integer,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

{ Determine what field to change and get its field description.

    avp$get_field_name (current_subutility_session_info^.id, field_name, command_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    avp$get_integer_field_desc (field_name, current_subutility_session_info^.validation_record_name,
          current_subutility_session_info^.id, default_value, minimum_value, maximum_value, display_format,
          description, change_authority, delete_authority, display_authority, manage_authority,
          validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the minimum and maximum values.

    PUSH integer_type_changes: [1 .. 1];
    integer_type_changes^ [1].kind := clc$tc_integer_subrange;
    integer_type_changes^ [1].min_integer_value := minimum_value;
    integer_type_changes^ [1].max_integer_value := maximum_value;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$value;
    pdt_changes^ [1].kind := clc$pdtc_type;
    pdt_changes^ [1].type_changes := integer_type_changes;
    pdt_changes^ [2].number := p$value;
    pdt_changes^ [2].kind := clc$pdtc_security;
    IF display_authority = avc$system_authority THEN
      pdt_changes^ [2].security := clc$secure_parameter;
    ELSE
      pdt_changes^ [2].security := clc$non_secure_parameter;
    IFEND;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF pvt [p$value].specified THEN
      IF pvt [p$value].value^.kind = clc$keyword THEN
        integer_value := ^default_value;
      ELSE
        integer_value := ^pvt [p$value].value^.integer_value.value;
      IFEND;

      avp$change_integer_value (field_name, integer_value, current_subutility_session_info^.id,
            validation_file_information, status);
    IFEND;

  PROCEND avp$change_integer_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$change_job_class_command', EJECT ??

{ PURPOSE:
{   This is the command processor used to change the value of the JOB_CLASS
{   field.

  PROCEDURE [XDCL] avp$change_job_class_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chajcc) change_job_class_command, chajcc (
{   add, a: (BY_NAME, CHECK) any of
{       key
{         all, default, none
{       keyend
{       list 1..256 of name
{     anyend = none
{   delete, d: (BY_NAME, CHECK) any of
{       key
{         all, default, none
{       keyend
{       list 1..256 of name
{     anyend = none
{   interactive_default, id: (BY_NAME) any of
{       key
{         default, none
{       keyend
{       name
{     anyend = $optional
{   batch_default, bd: (BY_NAME) any of
{       key
{         default, none
{       keyend
{       name
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 9] of clt$pdt_parameter_name,
        parameters: array [1 .. 5] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 3] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (4),
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 3] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (4),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        type5: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 16, 11, 58, 38, 534], clc$command, 9, 5, 0, 0, 0, 0, 5, 'OSM$ADMV_CHAJCC'],
            [['A                              ', clc$abbreviation_entry, 1],
            ['ADD                            ', clc$nominal_entry, 1],
            ['BATCH_DEFAULT                  ', clc$nominal_entry, 4],
            ['BD                             ', clc$abbreviation_entry, 4],
            ['D                              ', clc$abbreviation_entry, 2],
            ['DELETE                         ', clc$nominal_entry, 2],
            ['ID                             ', clc$abbreviation_entry, 3],
            ['INTERACTIVE_DEFAULT            ', clc$nominal_entry, 3],
            ['STATUS                         ', clc$nominal_entry, 5]], [

{ PARAMETER 1

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 159,
            clc$optional_default_parameter, 0, 4],

{ PARAMETER 2

      [6, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 159,
            clc$optional_default_parameter, 0, 4],

{ PARAMETER 3

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 106,
            clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 106,
            clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 118,
            [[1, 0, clc$keyword_type], [3], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 3]]], 21, [[1, 0, clc$list_type],
            [5, 1, 256, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'none'],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 118,
            [[1, 0, clc$keyword_type], [3], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 3]]], 21, [[1, 0, clc$list_type],
            [5, 1, 256, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'none'],

{ PARAMETER 3

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 5, [[1, 0, clc$name_type], [1, osc$max_name_size]]],

{ PARAMETER 4

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 5, [[1, 0, clc$name_type], [1, osc$max_name_size]]],

{ PARAMETER 5

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$add = 1,
      p$delete = 2,
      p$interactive_default = 3,
      p$batch_default = 4,
      p$status = 5;

    VAR
      pvt: array [1 .. 5] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      batch_default: ^ost$name,
      batch_job_class_default: ost$name,
      change_authority: avt$validation_authority,
      command_name: ost$name,
      common_job_classes: ^avt$name_list,
      current_parameter_value: ^clt$data_value,
      default_job_classes: ^avt$name_list,
      delete_authority: avt$validation_authority,
      description: ost$string,
      display_authority: avt$validation_authority,
      field_name: ost$name,
      index: avt$name_list_size,
      interactive_default: ^ost$name,
      interactive_job_class_default: ost$name,
      job_classes_to_add: ^avt$name_list,
      job_classes_to_delete: ^avt$name_list,
      manage_authority: avt$validation_authority,
      name_list_size: avt$name_list_size,
      number_of_common_job_classes: avt$name_list_size,
      number_of_default_job_classes: avt$name_list_size,
      pdt_changes: ^clt$pdt_changes;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF which_parameter.specific THEN
        IF which_parameter.number = p$add THEN
          verify_list_of_names_value ('ADD', parameter_value_table^ [p$add].value, status);
        ELSEIF which_parameter.number = p$delete THEN
          verify_list_of_names_value ('DELETE', parameter_value_table^ [p$delete].value, status);
        ELSE

{ ignore the parameter.

        IFEND;
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Determine what field to change and get its field description.

    avp$get_field_name (current_subutility_session_info^.id, field_name, command_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    PUSH common_job_classes: [1 .. avc$maximum_name_list_size];
    PUSH default_job_classes: [1 .. avc$maximum_name_list_size];
    FOR index := 1 TO avc$maximum_name_list_size DO
      common_job_classes^ [index] := osc$null_name;
      default_job_classes^ [index] := osc$null_name;
    FOREND;

    avp$get_job_class_field_desc (field_name, current_subutility_session_info^.validation_record_name,
          current_subutility_session_info^.id, number_of_default_job_classes, default_job_classes,
          batch_job_class_default, interactive_job_class_default, number_of_common_job_classes,
          common_job_classes, description, change_authority, delete_authority, display_authority,
          manage_authority, validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Set the SECURE attribute if necessary.

    IF display_authority = avc$system_authority THEN

{ Make a copy of the PDT so it can be altered.

      PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
      RESET altered_pdt;
      altered_pdt^ := #SEQ (pdt) ^;

      PUSH pdt_changes: [1 .. 4];
      pdt_changes^ [1].number := p$add;
      pdt_changes^ [1].kind := clc$pdtc_security;
      pdt_changes^ [1].security := clc$secure_parameter;
      pdt_changes^ [2].number := p$delete;
      pdt_changes^ [2].kind := clc$pdtc_security;
      pdt_changes^ [2].security := clc$secure_parameter;
      pdt_changes^ [3].number := p$interactive_default;
      pdt_changes^ [3].kind := clc$pdtc_security;
      pdt_changes^ [3].security := clc$secure_parameter;
      pdt_changes^ [4].number := p$batch_default;
      pdt_changes^ [4].kind := clc$pdtc_security;
      pdt_changes^ [4].security := clc$secure_parameter;

      clp$change_pdt (altered_pdt, pdt_changes^, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    ELSE
      clp$evaluate_parameters (parameter_list, #SEQ (pdt), ^check_parameters, ^pvt, status);
    IFEND;
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    process_name_list_parameter (pvt [p$add].value, default_job_classes, job_classes_to_add);

    process_name_list_parameter (pvt [p$delete].value, default_job_classes, job_classes_to_delete);

    IF pvt [p$interactive_default].specified THEN
      IF pvt [p$interactive_default].value^.kind = clc$keyword THEN
        IF pvt [p$interactive_default].value^.keyword_value = 'DEFAULT' THEN
          interactive_default := ^interactive_job_class_default;
        ELSE
          interactive_default := ^pvt [p$interactive_default].value^.keyword_value;
        IFEND;
      ELSE
        interactive_default := ^pvt [p$interactive_default].value^.name_value;
      IFEND;
    ELSE
      interactive_default := NIL;
    IFEND;

    IF pvt [p$batch_default].specified THEN
      IF pvt [p$batch_default].value^.kind = clc$keyword THEN
        IF pvt [p$batch_default].value^.keyword_value = 'DEFAULT' THEN
          batch_default := ^batch_job_class_default;
        ELSE
          batch_default := ^pvt [p$batch_default].value^.keyword_value;
        IFEND;
      ELSE
        batch_default := ^pvt [p$batch_default].value^.name_value;
      IFEND;
    ELSE
      batch_default := NIL;
    IFEND;

    avp$change_job_class_value (field_name, job_classes_to_add, job_classes_to_delete, batch_default,
          interactive_default, current_subutility_session_info^.id, validation_file_information, status);

  PROCEND avp$change_job_class_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$change_labeled_names_cmd', EJECT ??

{ PURPOSE:
{   This is the command processor used to change the value of any LABELED_NAMES fields.

  PROCEDURE [XDCL] avp$change_labeled_names_cmd
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

    VAR
      add_parameter_value: ^clt$data_value,
      change_authority: avt$validation_authority,
      command_name: ost$name,
      current_parameter_value: ^clt$data_value,
      default_labeled_names: ^avt$labeled_names_list,
      delete_authority: avt$validation_authority,
      delete_parameter_value: ^clt$data_value,
      description: ost$string,
      display_authority: avt$validation_authority,
      field_name: ost$name,
      index: avt$name_list_size,
      labeled_names_to_add: ^avt$labeled_names_list,
      labeled_names_to_delete: ^avt$labeled_names_list,
      manage_authority: avt$validation_authority,
      number_of_valid_labels: avt$name_list_size,
      number_of_valid_names: avt$name_list_size,
      valid_labels: ^avt$name_list,
      valid_names: ^avt$name_list,
      work_area: ^seq (*);

?? NEWTITLE := 'change_labeled_names_value', EJECT ??

    PROCEDURE change_labeled_names_value
      (    parameter_list: clt$parameter_list;
       VAR add_parameter_value: ^clt$data_value;
       VAR delete_parameter_list: ^clt$data_value;
       VAR status: ost$status);

{ PROCEDURE (osm$admv_chalnc) change_labeled_names_command, chalnc (
{   add, a: (BY_NAME, CHECK) any of
{       key
{         default
{       keyend
{       list 1..256 of record
{         label: any of
{           key
{             all, none
{           keyend
{           name
{         anyend
{         names: any of
{           key
{             all, none
{           keyend
{           list of name
{         anyend = $optional
{       recend
{     anyend = ((none))
{   delete, d: (BY_NAME, CHECK) any of
{       key
{         default
{       keyend
{       list 1..256 of record
{         label: any of
{           key
{             all, none
{           keyend
{           name
{         anyend
{         names: any of
{           key
{             all, none
{           keyend
{           list of name
{         anyend = $optional
{       recend
{     anyend = ((none))
{   status)

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 5] of clt$pdt_parameter_name,
      parameters: array [1 .. 3] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 1] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$list_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$record_type_qualifier,
            field_spec_1: clt$field_specification,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$union_type_qualifier,
              type_size_1: clt$type_specification_size,
              element_type_spec_1: record
                header: clt$type_specification_header,
                qualifier: clt$keyword_type_qualifier,
                keyword_specs: array [1 .. 2] of clt$keyword_specification,
              recend,
              type_size_2: clt$type_specification_size,
              element_type_spec_2: record
                header: clt$type_specification_header,
                qualifier: clt$name_type_qualifier,
              recend,
            recend,
            field_spec_2: clt$field_specification,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$union_type_qualifier,
              type_size_1: clt$type_specification_size,
              element_type_spec_1: record
                header: clt$type_specification_header,
                qualifier: clt$keyword_type_qualifier,
                keyword_specs: array [1 .. 2] of clt$keyword_specification,
              recend,
              type_size_2: clt$type_specification_size,
              element_type_spec_2: record
                header: clt$type_specification_header,
                qualifier: clt$list_type_qualifier,
                element_type_spec: record
                  header: clt$type_specification_header,
                  qualifier: clt$name_type_qualifier,
                recend,
              recend,
            recend,
          recend,
        recend,
        default_value: string (8),
      recend,
      type2: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 1] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$list_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$record_type_qualifier,
            field_spec_1: clt$field_specification,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$union_type_qualifier,
              type_size_1: clt$type_specification_size,
              element_type_spec_1: record
                header: clt$type_specification_header,
                qualifier: clt$keyword_type_qualifier,
                keyword_specs: array [1 .. 2] of clt$keyword_specification,
              recend,
              type_size_2: clt$type_specification_size,
              element_type_spec_2: record
                header: clt$type_specification_header,
                qualifier: clt$name_type_qualifier,
              recend,
            recend,
            field_spec_2: clt$field_specification,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$union_type_qualifier,
              type_size_1: clt$type_specification_size,
              element_type_spec_1: record
                header: clt$type_specification_header,
                qualifier: clt$keyword_type_qualifier,
                keyword_specs: array [1 .. 2] of clt$keyword_specification,
              recend,
              type_size_2: clt$type_specification_size,
              element_type_spec_2: record
                header: clt$type_specification_header,
                qualifier: clt$list_type_qualifier,
                element_type_spec: record
                  header: clt$type_specification_header,
                  qualifier: clt$name_type_qualifier,
                recend,
              recend,
            recend,
          recend,
        recend,
        default_value: string (8),
      recend,
      type3: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [89, 5, 30, 12, 6, 26, 618],
    clc$command, 5, 3, 0, 0, 0, 0, 3, 'OSM$ADMV_CHALNC'], [
    ['A                              ',clc$abbreviation_entry, 1],
    ['ADD                            ',clc$nominal_entry, 1],
    ['D                              ',clc$abbreviation_entry, 2],
    ['DELETE                         ',clc$nominal_entry, 2],
    ['STATUS                         ',clc$nominal_entry, 3]],
    [
{ PARAMETER 1
    [2, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 387,
  clc$optional_default_parameter, 0, 8],
{ PARAMETER 2
    [4, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 387,
  clc$optional_default_parameter, 0, 8],
{ PARAMETER 3
    [5, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_parameter, 0, 0]],
{ PARAMETER 1
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['DEFAULT                        ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    323, [[1, 0, clc$list_type], [307, 1, 256, FALSE],
        [[1, 0, clc$record_type], [2],
        ['LABEL                          ', clc$required_field, 106], [[1, 0, clc$union_type], [[
          clc$keyword_type, clc$name_type],
          FALSE, 2],
          81, [[1, 0, clc$keyword_type], [2], [
            ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 1],
            ['NONE                           ', clc$nominal_entry, clc$normal_usage_entry, 2]]
            ],
          5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
          ],
        ['NAMES                          ', clc$optional_field, 122], [[1, 0, clc$union_type], [[
          clc$keyword_type, clc$list_type],
          FALSE, 2],
          81, [[1, 0, clc$keyword_type], [2], [
            ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 1],
            ['NONE                           ', clc$nominal_entry, clc$normal_usage_entry, 2]]
            ],
          21, [[1, 0, clc$list_type], [5, 0, clc$max_list_size, FALSE],
              [[1, 0, clc$name_type], [1, osc$max_name_size]]
            ]
          ]
        ]
      ]
    ,
    '((none))'],
{ PARAMETER 2
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['DEFAULT                        ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    323, [[1, 0, clc$list_type], [307, 1, 256, FALSE],
        [[1, 0, clc$record_type], [2],
        ['LABEL                          ', clc$required_field, 106], [[1, 0, clc$union_type], [[
          clc$keyword_type, clc$name_type],
          FALSE, 2],
          81, [[1, 0, clc$keyword_type], [2], [
            ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 1],
            ['NONE                           ', clc$nominal_entry, clc$normal_usage_entry, 2]]
            ],
          5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
          ],
        ['NAMES                          ', clc$optional_field, 122], [[1, 0, clc$union_type], [[
          clc$keyword_type, clc$list_type],
          FALSE, 2],
          81, [[1, 0, clc$keyword_type], [2], [
            ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 1],
            ['NONE                           ', clc$nominal_entry, clc$normal_usage_entry, 2]]
            ],
          21, [[1, 0, clc$list_type], [5, 0, clc$max_list_size, FALSE],
              [[1, 0, clc$name_type], [1, osc$max_name_size]]
            ]
          ]
        ]
      ]
    ,
    '((none))'],
{ PARAMETER 3
    [[1, 0, clc$status_type]]];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$add = 1,
      p$delete = 2,
      p$status = 3;

    VAR
      pvt: array [1 .. 3] of clt$parameter_value;

?? NEWTITLE := 'check_parameters', EJECT ??

      PROCEDURE check_parameters
        (    parameter_value_table: ^clt$parameter_value_table;
             which_parameter: clt$which_parameter;
         VAR status: ost$status);

        status.normal := TRUE;

        IF which_parameter.specific THEN
          IF which_parameter.number = p$add THEN
            verify_labeled_names_value ('ADD', parameter_value_table^ [p$add].value, status);
          ELSEIF which_parameter.number = p$delete THEN
            verify_labeled_names_value ('DELETE', parameter_value_table^ [p$delete].value, status);
          ELSE

{ ignore the parameter.

          IFEND;
        IFEND;

      PROCEND check_parameters;
?? OLDTITLE, EJECT ??
      status.normal := TRUE;

      clp$evaluate_parameters (parameter_list, #SEQ (pdt), ^check_parameters, ^pvt, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      add_parameter_value := pvt [p$add].value;
      delete_parameter_value := pvt [p$delete].value;

    PROCEND change_labeled_names_value;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Determine what field to change and get its field description.

    avp$get_field_name (current_subutility_session_info^.id, field_name, command_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    PUSH valid_labels: [1 .. avc$maximum_name_list_size];
    PUSH valid_names: [1 .. avc$maximum_name_list_size];
    PUSH work_area: [[REP avc$max_template_record_size OF cell]];
    RESET work_area;
    FOR index := 1 TO avc$maximum_name_list_size DO
      valid_labels^ [index] := osc$null_name;
      valid_names^ [index] := osc$null_name;
    FOREND;

    avp$get_labeled_names_field_des (field_name, current_subutility_session_info^.validation_record_name,
          current_subutility_session_info^.id, work_area,
          default_labeled_names, number_of_valid_labels, valid_labels, number_of_valid_names, valid_names,
          description, change_authority, delete_authority, display_authority, manage_authority,
          validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    change_labeled_names_value (parameter_list, add_parameter_value, delete_parameter_value, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    process_labeled_names_parameter (add_parameter_value, default_labeled_names, labeled_names_to_add);

    process_labeled_names_parameter (delete_parameter_value, default_labeled_names, labeled_names_to_delete);

    avp$change_labeled_names_value (field_name, labeled_names_to_add, labeled_names_to_delete,
          current_subutility_session_info^.id, validation_file_information, status);

  PROCEND avp$change_labeled_names_cmd;
?? OLDTITLE ??
?? NEWTITLE := 'avp$change_limit_command', EJECT ??

{ PURPOSE:
{   This is the command processor used to change the value of any LIMIT fields.

  PROCEDURE [XDCL] avp$change_limit_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chalc) change_limit_command, chalc (
{   value, v: any of
{       key
{         default, unlimited
{       keyend
{       integer 0..osc$max_integer
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 3] of clt$pdt_parameter_name,
        parameters: array [1 .. 2] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type2: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 10, 15, 10, 21, 764], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CHALC'],
            [['STATUS                         ', clc$nominal_entry, 2],
            ['V                              ', clc$abbreviation_entry, 1],
            ['VALUE                          ', clc$nominal_entry, 1]], [

{ PARAMETER 1

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 121, clc$optional_parameter, 0, 0],

{ PARAMETER 2

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 20, [[1, 0, clc$integer_type], [0, osc$max_integer, 10]]],

{ PARAMETER 2

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$value = 1,
      p$status = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: avt$validation_authority,
      command_name: ost$name,
      default_value: avt$limit_value,
      delete_authority: avt$validation_authority,
      description: ost$string,
      display_authority: avt$validation_authority,
      field_name: ost$name,
      limit_name: ost$name,
      limit_value: ^avt$limit_value,
      limit_type_changes: ^clt$type_changes,
      manage_authority: avt$validation_authority,
      maximum_limit_value: avt$limit_value,
      minimum_limit_value: avt$limit_value,
      parameter: clt$value,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

{ Determine what field to change and get its field description.

    avp$get_field_name (current_subutility_session_info^.id, field_name, command_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    avp$get_limit_field_desc (field_name, current_subutility_session_info^.validation_record_name,
          current_subutility_session_info^.id, default_value, minimum_limit_value, maximum_limit_value,
          description, change_authority, delete_authority, display_authority, manage_authority,
          validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the minimum and maximum values.  Also hide the keyword unlimited if necessary.

    PUSH limit_type_changes: [1 .. 2];
    limit_type_changes^ [1].kind := clc$tc_integer_subrange;
    limit_type_changes^ [1].min_integer_value := minimum_limit_value;
    limit_type_changes^ [1].max_integer_value := maximum_limit_value;
    limit_type_changes^ [2].kind := clc$tc_keyword_availability;
    limit_type_changes^ [2].keyword := 'UNLIMITED';
    IF maximum_limit_value = sfc$unlimited THEN
      limit_type_changes^ [2].availability := clc$normal_usage_entry;
    ELSE
      limit_type_changes^ [2].availability := clc$hidden_entry;
    IFEND;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$value;
    pdt_changes^ [1].kind := clc$pdtc_type;
    pdt_changes^ [1].type_changes := limit_type_changes;
    pdt_changes^ [2].number := p$value;
    pdt_changes^ [2].kind := clc$pdtc_security;
    IF display_authority = avc$system_authority THEN
      pdt_changes^ [2].security := clc$secure_parameter;
    ELSE
      pdt_changes^ [2].security := clc$non_secure_parameter;
    IFEND;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    process_limit_parameter (pvt [p$value].value, ^default_value, limit_value);

    avp$change_limit_value (field_name, limit_value, current_subutility_session_info^.id,
          validation_file_information, status);

  PROCEND avp$change_limit_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$change_login_password_cmd', EJECT ??

{ PURPOSE:
{   This is the command processor used to change the value of the
{   LOGIN_PASSWORD field.

  PROCEDURE [XDCL] avp$change_login_password_cmd
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chalpw) change_login_password, chalpw (
{   old_password, opw: (SECURE) name = $optional
{   new_password, npw: (SECURE) name = $optional
{   expiration_date, ed: (BY_NAME) any of
{       key
{         default, none
{       keyend
{       date_time
{     anyend = $optional
{   expiration_interval, ei: (BY_NAME) any of
{       key
{         default, unlimited
{       keyend
{       integer 1..365
{     anyend = $optional
{   expiration_warning_interval, ewi: (BY_NAME) any of
{       key
{         default, unlimited
{       keyend
{       integer 0..365
{     anyend = $optional
{   maximum_expiration_interval, maxei: (BY_NAME) any of
{       key
{         default, unlimited
{       keyend
{       integer 1..365
{     anyend = $optional
{   add_attributes, aa: (BY_NAME, CHECK) any of
{       key
{         all, default, none
{       keyend
{       list 1..256 of name
{     anyend = none
{   delete_attributes, da: (BY_NAME, CHECK) any of
{       key
{         all, default, none
{       keyend
{       list 1..256 of name
{     anyend = none
{   update_batch_job_passwords, ubjpw: (BY_NAME) boolean = osd$admv_chalpw_ubjpw,..
{      TRUE
{   encrypted_password, epw: (BY_NAME, HIDDEN, SECURE) string 31 = $optional
{   status)

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 21] of clt$pdt_parameter_name,
      parameters: array [1 .. 11] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type2: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type3: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 2] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$date_time_type_qualifier,
        recend,
      recend,
      type4: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 2] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$integer_type_qualifier,
        recend,
      recend,
      type5: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 2] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$integer_type_qualifier,
        recend,
      recend,
      type6: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 2] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$integer_type_qualifier,
        recend,
      recend,
      type7: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 3] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$list_type_qualifier_v2,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        default_value: string (4),
      recend,
      type8: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 3] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$list_type_qualifier_v2,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        default_value: string (4),
      recend,
      type9: record
        header: clt$type_specification_header,
        default_name: string (21),
        default_value: string (4),
      recend,
      type10: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type11: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [92, 6, 1, 17, 9, 52, 398],
    clc$command, 21, 11, 0, 0, 1, 0, 11, 'OSM$ADMV_CHALPW'], [
    ['AA                             ',clc$abbreviation_entry, 7],
    ['ADD_ATTRIBUTES                 ',clc$nominal_entry, 7],
    ['DA                             ',clc$abbreviation_entry, 8],
    ['DELETE_ATTRIBUTES              ',clc$nominal_entry, 8],
    ['ED                             ',clc$abbreviation_entry, 3],
    ['EI                             ',clc$abbreviation_entry, 4],
    ['ENCRYPTED_PASSWORD             ',clc$nominal_entry, 10],
    ['EPW                            ',clc$abbreviation_entry, 10],
    ['EWI                            ',clc$abbreviation_entry, 5],
    ['EXPIRATION_DATE                ',clc$nominal_entry, 3],
    ['EXPIRATION_INTERVAL            ',clc$nominal_entry, 4],
    ['EXPIRATION_WARNING_INTERVAL    ',clc$nominal_entry, 5],
    ['MAXEI                          ',clc$abbreviation_entry, 6],
    ['MAXIMUM_EXPIRATION_INTERVAL    ',clc$nominal_entry, 6],
    ['NEW_PASSWORD                   ',clc$nominal_entry, 2],
    ['NPW                            ',clc$abbreviation_entry, 2],
    ['OLD_PASSWORD                   ',clc$nominal_entry, 1],
    ['OPW                            ',clc$abbreviation_entry, 1],
    ['STATUS                         ',clc$nominal_entry, 11],
    ['UBJPW                          ',clc$abbreviation_entry, 9],
    ['UPDATE_BATCH_JOB_PASSWORDS     ',clc$nominal_entry, 9]],
    [
{ PARAMETER 1
    [17, clc$normal_usage_entry, clc$secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 5, clc$optional_parameter, 0, 0],
{ PARAMETER 2
    [15, clc$normal_usage_entry, clc$secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 5, clc$optional_parameter, 0, 0],
{ PARAMETER 3
    [10, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 106, clc$optional_parameter, 0, 0],
{ PARAMETER 4
    [11, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 121, clc$optional_parameter, 0, 0],
{ PARAMETER 5
    [12, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 121, clc$optional_parameter, 0, 0],
{ PARAMETER 6
    [14, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 121, clc$optional_parameter, 0, 0],
{ PARAMETER 7
    [2, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$extended_parameter_checking, 159, clc$optional_default_parameter, 0, 4],
{ PARAMETER 8
    [4, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$extended_parameter_checking, 159, clc$optional_default_parameter, 0, 4],
{ PARAMETER 9
    [21, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 3, clc$optional_default_parameter, 21, 4],
{ PARAMETER 10
    [7, clc$hidden_entry, clc$secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 8, clc$optional_parameter, 0, 0],
{ PARAMETER 11
    [19, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_reference, clc$immediate_evaluation,
  clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],
{ PARAMETER 1
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 2
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 3
    [[1, 0, clc$union_type], [[clc$date_time_type,
    clc$keyword_type],
    FALSE, 2],
    81, [[1, 0, clc$keyword_type], [2], [
      ['DEFAULT                        ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['NONE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 2]]
      ],
    5, [[1, 0, clc$date_time_type], [$clt$date_and_or_time [clc$date, clc$time
  ], $clt$date_time_tenses [clc$past, clc$present, clc$future]]]
    ],
{ PARAMETER 4
    [[1, 0, clc$union_type], [[clc$integer_type,
    clc$keyword_type],
    FALSE, 2],
    81, [[1, 0, clc$keyword_type], [2], [
      ['DEFAULT                        ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry,
  clc$normal_usage_entry, 2]]
      ],
    20, [[1, 0, clc$integer_type], [1, 365, 10]]
    ],
{ PARAMETER 5
    [[1, 0, clc$union_type], [[clc$integer_type,
    clc$keyword_type],
    FALSE, 2],
    81, [[1, 0, clc$keyword_type], [2], [
      ['DEFAULT                        ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry,
  clc$normal_usage_entry, 2]]
      ],
    20, [[1, 0, clc$integer_type], [0, 365, 10]]
    ],
{ PARAMETER 6
    [[1, 0, clc$union_type], [[clc$integer_type,
    clc$keyword_type],
    FALSE, 2],
    81, [[1, 0, clc$keyword_type], [2], [
      ['DEFAULT                        ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry,
  clc$normal_usage_entry, 2]]
      ],
    20, [[1, 0, clc$integer_type], [1, 365, 10]]
    ],
{ PARAMETER 7
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$list_type],
    FALSE, 2],
    118, [[1, 0, clc$keyword_type], [3], [
      ['ALL                            ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['DEFAULT                        ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
      ['NONE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 3]]
      ],
    21, [[1, 0, clc$list_type], [5, 1, 256, 0, FALSE, FALSE],
        [[1, 0, clc$name_type], [1, osc$max_name_size]]
      ]
    ,
    'none'],
{ PARAMETER 8
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$list_type],
    FALSE, 2],
    118, [[1, 0, clc$keyword_type], [3], [
      ['ALL                            ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['DEFAULT                        ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
      ['NONE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 3]]
      ],
    21, [[1, 0, clc$list_type], [5, 1, 256, 0, FALSE, FALSE],
        [[1, 0, clc$name_type], [1, osc$max_name_size]]
      ]
    ,
    'none'],
{ PARAMETER 9
    [[1, 0, clc$boolean_type],
    'OSD$ADMV_CHALPW_UBJPW',
    'TRUE'],
{ PARAMETER 10
    [[1, 0, clc$string_type], [31, 31, FALSE]],
{ PARAMETER 11
    [[1, 0, clc$status_type]]];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$old_password = 1,
      p$new_password = 2,
      p$expiration_date = 3,
      p$expiration_interval = 4,
      p$expiration_warning_interval = 5,
      p$maximum_expiration_interval = 6,
      p$add_attributes = 7,
      p$delete_attributes = 8,
      p$update_batch_job_passwords = 9,
      p$encrypted_password = 10,
      p$status = 11;

    VAR
      pvt: array [1 .. 11] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      attributes_to_add: ^avt$name_list,
      attributes_to_delete: ^avt$name_list,
      change_authority: avt$validation_authority,
      command_name: ost$name,
      current_parameter_value: ^clt$data_value,
      default_attributes: ^avt$name_list,
      default_expiration_date: ost$date_time,
      default_expiration_interval: pmt$time_increment,
      default_exp_pw_chg_interval: pmt$time_increment,
      default_exp_warning_interval: pmt$time_increment,
      default_max_expiration_interval: pmt$time_increment,
      default_password: avt$login_password,
      delete_authority: avt$validation_authority,
      description: ost$string,
      display_authority: avt$validation_authority,
      expiration_date: ^ost$date_time,
      expiration_interval: ^pmt$time_increment,
      expiration_warning_interval: ^pmt$time_increment,
      index: avt$name_list_size,
      manage_authority: avt$validation_authority,
      maximum_expiration_interval: ^pmt$time_increment,
      new_password: ^avt$login_password,
      number_of_default_attributes: avt$name_list_size,
      old_password: ^ost$name,
      pdt_changes: ^clt$pdt_changes;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF which_parameter.specific THEN
        IF which_parameter.number = p$add_attributes THEN
          verify_list_of_names_value ('ADD_ATTRIBUTES', parameter_value_table^ [p$add_attributes].value,
                status);
        ELSEIF which_parameter.number = p$delete_attributes THEN
          verify_list_of_names_value ('DELETE_ATTRIBUTES', parameter_value_table^ [p$delete_attributes].value,
                status);
        ELSE

{ ignore the parameter.

        IFEND;
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Hide the  MAXIMUM_EXPIRATION_INTERVAL, ADD_ATTRIBUTES and DELETE_ATTRIBUTES
{ parameters if the user is not able to use them.

    PUSH pdt_changes: [1 .. 9];
    pdt_changes^ [1].number := p$maximum_expiration_interval;
    pdt_changes^ [1].kind := clc$pdtc_availability;
    pdt_changes^ [2].number := p$add_attributes;
    pdt_changes^ [2].kind := clc$pdtc_availability;
    pdt_changes^ [3].number := p$delete_attributes;
    pdt_changes^ [3].kind := clc$pdtc_availability;
    IF NOT (avp$system_administrator () OR avp$family_administrator () OR user_administrator) THEN
      pdt_changes^ [1].availability := clc$advanced_usage_entry;
      pdt_changes^ [2].availability := clc$advanced_usage_entry;
      pdt_changes^ [3].availability := clc$advanced_usage_entry;
    ELSE
      pdt_changes^ [1].availability := clc$normal_usage_entry;
      pdt_changes^ [2].availability := clc$normal_usage_entry;
      pdt_changes^ [3].availability := clc$normal_usage_entry;
    IFEND;
    pdt_changes^ [4].number := p$expiration_date;
    pdt_changes^ [4].kind := clc$pdtc_security;
    pdt_changes^ [5].number := p$expiration_interval;
    pdt_changes^ [5].kind := clc$pdtc_security;
    pdt_changes^ [6].number := p$expiration_warning_interval;
    pdt_changes^ [6].kind := clc$pdtc_security;
    pdt_changes^ [7].number := p$maximum_expiration_interval;
    pdt_changes^ [7].kind := clc$pdtc_security;
    pdt_changes^ [8].number := p$add_attributes;
    pdt_changes^ [8].kind := clc$pdtc_security;
    pdt_changes^ [9].number := p$delete_attributes;
    pdt_changes^ [9].kind := clc$pdtc_security;
    IF display_authority = avc$system_authority THEN
      pdt_changes^ [4].security := clc$secure_parameter;
      pdt_changes^ [5].security := clc$secure_parameter;
      pdt_changes^ [6].security := clc$secure_parameter;
      pdt_changes^ [7].security := clc$secure_parameter;
      pdt_changes^ [8].security := clc$secure_parameter;
      pdt_changes^ [9].security := clc$secure_parameter;
    ELSE
      pdt_changes^ [4].security := clc$non_secure_parameter;
      pdt_changes^ [5].security := clc$non_secure_parameter;
      pdt_changes^ [6].security := clc$non_secure_parameter;
      pdt_changes^ [7].security := clc$non_secure_parameter;
      pdt_changes^ [8].security := clc$non_secure_parameter;
      pdt_changes^ [9].security := clc$non_secure_parameter;
    IFEND;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Get the field description for the login password validation field.

    PUSH default_attributes: [1 .. avc$maximum_name_list_size];
    FOR index := 1 TO avc$maximum_name_list_size DO
      default_attributes^ [index] := osc$null_name;
    FOREND;

    avp$get_login_pw_field_desc (avc$login_password, current_subutility_session_info^.validation_record_name,
          current_subutility_session_info^.id, default_password, default_expiration_date,
          default_expiration_interval, default_max_expiration_interval, default_exp_warning_interval,
          default_exp_pw_chg_interval, number_of_default_attributes, default_attributes, description,
          change_authority, delete_authority, display_authority, manage_authority,
          validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    old_password := NIL;
    new_password := NIL;

{ Get the value(s) for the appropriate password parameters.

    IF pvt [p$encrypted_password].specified THEN
      IF pvt [p$old_password].specified OR pvt [p$new_password].specified THEN
        osp$set_status_abnormal ('AV', ave$cannot_supply_old_or_new_pw, '', status);
        RETURN;
      ELSE
        PUSH new_password;
        new_password^.encrypted := TRUE;
        new_password^.value := pvt [p$encrypted_password].value^.string_value^;
      IFEND;
    ELSE
      IF pvt [p$old_password].specified THEN
        old_password := ^pvt [p$old_password].value^.name_value;
      IFEND;

      IF pvt [p$new_password].specified THEN
        PUSH new_password;
        new_password^.encrypted := FALSE;
        new_password^.value := pvt [p$new_password].value^.name_value
      IFEND;

      IF pvt [p$old_password].specified AND (NOT pvt [p$new_password].specified) THEN
        osp$set_status_abnormal ('AV', ave$must_specify_new_password, '', status);
        RETURN;
      IFEND;
    IFEND;

{ Get the new value for the expiration interval if one was specified.

    IF pvt [p$expiration_interval].specified THEN
      IF pvt [p$expiration_interval].value^.kind = clc$keyword THEN
        IF pvt [p$expiration_interval].value^.keyword_value = 'DEFAULT' THEN
          expiration_interval := ^default_expiration_interval;
        ELSE {UNLIMITED}
          PUSH expiration_interval;
          expiration_interval^ := avv$unlimited_time_increment;
        IFEND;
      ELSE { clc$integer}
        PUSH expiration_interval;
        expiration_interval^ := avv$zero_time_increment;
        expiration_interval^.day := pvt [p$expiration_interval].value^.integer_value.value;
      IFEND;
    ELSE
      expiration_interval := NIL;
    IFEND;

{ Get the new value for the expiration date if one was specified.

    IF pvt [p$expiration_date].specified THEN
      IF pvt [p$expiration_date].value^.kind = clc$keyword THEN
        IF pvt [p$expiration_date].value^.keyword_value = 'NONE' THEN
          PUSH expiration_date;
          expiration_date^ := avv$unlimited_date_time;
        ELSE
          expiration_date := ^default_expiration_date;
        IFEND;
      ELSE {clc$date_time}
        expiration_date := ^pvt [p$expiration_date].value^.date_time_value.value;
      IFEND;
    ELSE
      expiration_date := NIL;
    IFEND;

{ Get the new value for the expiration warning interval if one was specified.

    IF pvt [p$expiration_warning_interval].specified THEN
      IF pvt [p$expiration_warning_interval].value^.kind = clc$keyword THEN
        IF pvt [p$expiration_warning_interval].value^.keyword_value = 'DEFAULT' THEN
          expiration_warning_interval := ^default_exp_warning_interval;
        ELSE {UNLIMITED}
          PUSH expiration_warning_interval;
          expiration_warning_interval^ := avv$unlimited_time_increment;
        IFEND;
      ELSE { clc$integer}
        PUSH expiration_warning_interval;
        expiration_warning_interval^ := avv$zero_time_increment;
        expiration_warning_interval^.day := -pvt [p$expiration_warning_interval].value^.integer_value.value;
      IFEND;
    ELSE
      expiration_warning_interval := NIL;
    IFEND;

{ The MAXIMUM_EXPIRATION_INTERVAL, ADD_ATTRIBUTES and DELETE_ATTRIBUTES parameters are only processed if the
{ user has the ability to set them.

    IF avp$system_administrator () OR avp$family_administrator () OR user_administrator THEN

{ Get the new value for the maximum expiration interval if one was specified.

      IF pvt [p$maximum_expiration_interval].specified THEN
        IF pvt [p$maximum_expiration_interval].value^.kind = clc$keyword THEN
          IF pvt [p$maximum_expiration_interval].value^.keyword_value = 'DEFAULT' THEN
            maximum_expiration_interval := ^default_max_expiration_interval;
          ELSE {UNLIMITED}
            PUSH maximum_expiration_interval;
            maximum_expiration_interval^ := avv$unlimited_time_increment;
          IFEND;
        ELSE { clc$integer}
          PUSH maximum_expiration_interval;
          maximum_expiration_interval^ := avv$zero_time_increment;
          maximum_expiration_interval^.day := pvt [p$maximum_expiration_interval].value^.integer_value.value;
        IFEND;
      ELSE
        maximum_expiration_interval := NIL;
      IFEND;

      process_name_list_parameter (pvt [p$add_attributes].value, default_attributes, attributes_to_add);

      process_name_list_parameter (pvt [p$delete_attributes].value, default_attributes, attributes_to_delete);
    ELSE
      maximum_expiration_interval := NIL;
      attributes_to_add := NIL;
      attributes_to_delete := NIL;
    IFEND;

    avp$change_login_password_value (avc$login_password, old_password, new_password, expiration_date,
          expiration_interval, maximum_expiration_interval, expiration_warning_interval, NIL,
          attributes_to_add, attributes_to_delete, current_subutility_session_info^.id,
          pvt [p$update_batch_job_passwords].value^.boolean_value.value, validation_file_information, status);

  PROCEND avp$change_login_password_cmd;
?? OLDTITLE ??
?? NEWTITLE := 'avp$change_name_command', EJECT ??

{ PURPOSE:
{   This is the command processor used to change the value of any NAME fields.

  PROCEDURE [XDCL] avp$change_name_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

    VAR
      add_parameter_value: ^clt$data_value,
      change_authority: avt$validation_authority,
      command_name: ost$name,
      common_names: ^avt$name_list,
      current_parameter_value: ^clt$data_value,
      default_names: ^avt$name_list,
      delete_authority: avt$validation_authority,
      delete_parameter_value: ^clt$data_value,
      description: ost$string,
      display_authority: avt$validation_authority,
      field_name: ost$name,
      index: avt$name_list_size,
      manage_authority: avt$validation_authority,
      maximum_number_of_names: avt$name_list_size,
      minimum_number_of_names: avt$name_list_size,
      names_to_add: ^avt$name_list,
      names_to_delete: ^avt$name_list,
      number_of_common_names: avt$name_list_size,
      number_of_default_names: avt$name_list_size;

?? NEWTITLE := 'change_name_list_value', EJECT ??

    PROCEDURE change_name_list_value
      (    parameter_list: clt$parameter_list;
           minimum_number_of_names: avt$name_list_size;
           maximum_number_of_names: avt$name_list_size;
       VAR add_parameter_value: ^clt$data_value;
       VAR delete_parameter_list: ^clt$data_value;
       VAR status: ost$status);

{ PROCEDURE (osm$admv_chanlc) change_name_list_command, chanlc (
{   add, a: (BY_NAME, CHECK) any of
{       key
{         all, default, none
{       keyend
{       list 1..256 of name
{     anyend = none
{   delete, d: (BY_NAME, CHECK) any of
{       key
{         all, default, none
{       keyend
{       list 1..256 of name
{     anyend = none
{   status)

?? PUSH (LISTEXT := ON) ??

      VAR
        pdt: [STATIC, READ, cls$declaration_section] record
          header: clt$pdt_header,
          names: array [1 .. 5] of clt$pdt_parameter_name,
          parameters: array [1 .. 3] of clt$pdt_parameter,
          type1: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 3] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$list_type_qualifier,
              element_type_spec: record
                header: clt$type_specification_header,
                qualifier: clt$name_type_qualifier,
              recend,
            recend,
            default_value: string (4),
          recend,
          type2: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 3] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$list_type_qualifier,
              element_type_spec: record
                header: clt$type_specification_header,
                qualifier: clt$name_type_qualifier,
              recend,
            recend,
            default_value: string (4),
          recend,
          type3: record
            header: clt$type_specification_header,
          recend,
        recend := [[1, [88, 5, 12, 15, 22, 24, 533], clc$command, 5, 3, 0, 0, 0, 0, 3, 'OSM$ADMV_CHANLC'],
              [['A                              ', clc$abbreviation_entry, 1],
              ['ADD                            ', clc$nominal_entry, 1],
              ['D                              ', clc$abbreviation_entry, 2],
              ['DELETE                         ', clc$nominal_entry, 2],
              ['STATUS                         ', clc$nominal_entry, 3]], [

{ PARAMETER 1

        [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
              clc$extended_parameter_checking, 159, clc$optional_default_parameter, 0, 4],

{ PARAMETER 2

        [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
              clc$extended_parameter_checking, 159, clc$optional_default_parameter, 0, 4],

{ PARAMETER 3

        [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
              clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

        [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 118,
              [[1, 0, clc$keyword_type], [3], [['ALL                            ', clc$nominal_entry,
              clc$normal_usage_entry, 1], ['DEFAULT                        ', clc$nominal_entry,
              clc$normal_usage_entry, 2], ['NONE                           ', clc$nominal_entry,
              clc$normal_usage_entry, 3]]], 21, [[1, 0, clc$list_type],
              [5, 1, 256, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'none'],

{ PARAMETER 2

        [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 118,
              [[1, 0, clc$keyword_type], [3], [['ALL                            ', clc$nominal_entry,
              clc$normal_usage_entry, 1], ['DEFAULT                        ', clc$nominal_entry,
              clc$normal_usage_entry, 2], ['NONE                           ', clc$nominal_entry,
              clc$normal_usage_entry, 3]]], 21, [[1, 0, clc$list_type],
              [5, 1, 256, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'none'],

{ PARAMETER 3

        [[1, 0, clc$status_type]]];

?? POP ??

      CONST
        p$add = 1,
        p$delete = 2,
        p$status = 3;

      VAR
        pvt: array [1 .. 3] of clt$parameter_value;

      VAR
        altered_pdt: ^clt$parameter_description_table,
        name_list_type_changes: ^clt$type_changes,
        pdt_changes: ^clt$pdt_changes;

?? NEWTITLE := 'check_parameters', EJECT ??

      PROCEDURE check_parameters
        (    parameter_value_table: ^clt$parameter_value_table;
             which_parameter: clt$which_parameter;
         VAR status: ost$status);

        status.normal := TRUE;

        IF which_parameter.specific THEN
          IF which_parameter.number = p$add THEN
            verify_list_of_names_value ('ADD', parameter_value_table^ [p$add].value, status);
          ELSEIF which_parameter.number = p$delete THEN
            verify_list_of_names_value ('DELETE', parameter_value_table^ [p$delete].value, status);
          ELSE

{ ignore the parameter.

          IFEND;
        IFEND;

      PROCEND check_parameters;
?? OLDTITLE, EJECT ??
      status.normal := TRUE;

{ Make a copy of the PDT so it can be altered.

      PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
      RESET altered_pdt;
      altered_pdt^ := #SEQ (pdt) ^;

{ Set the minimum and maximum number of list elements.

      PUSH name_list_type_changes: [1 .. 1];
      name_list_type_changes^ [1].kind := clc$tc_list_size;
      name_list_type_changes^ [1].min_list_size := minimum_number_of_names;
      name_list_type_changes^ [1].max_list_size := maximum_number_of_names;

      PUSH pdt_changes: [1 .. 4];
      pdt_changes^ [1].number := p$add;
      pdt_changes^ [1].kind := clc$pdtc_type;
      pdt_changes^ [1].type_changes := name_list_type_changes;
      pdt_changes^ [2].number := p$delete;
      pdt_changes^ [2].kind := clc$pdtc_type;
      pdt_changes^ [2].type_changes := name_list_type_changes;
      pdt_changes^ [3].number := p$add;
      pdt_changes^ [3].kind := clc$pdtc_security;
      pdt_changes^ [4].number := p$delete;
      pdt_changes^ [4].kind := clc$pdtc_security;
      IF display_authority = avc$system_authority THEN
        pdt_changes^ [3].security := clc$secure_parameter;
        pdt_changes^ [4].security := clc$secure_parameter;
      ELSE
        pdt_changes^ [3].security := clc$non_secure_parameter;
        pdt_changes^ [4].security := clc$non_secure_parameter;
      IFEND;

      clp$change_pdt (altered_pdt, pdt_changes^, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      add_parameter_value := pvt [p$add].value;
      delete_parameter_value := pvt [p$delete].value;

    PROCEND change_name_list_value;
?? OLDTITLE ??
?? NEWTITLE := 'change_name_value', EJECT ??

    PROCEDURE change_name_value
      (    parameter_list: clt$parameter_list;
       VAR add_parameter_value: ^clt$data_value;
       VAR status: ost$status);

{ PROCEDURE (osm$admv_chanc) change_name_command, chanc (
{   value, v: any of
{       key
{         default, none
{       keyend
{       name
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

      VAR
        pdt: [STATIC, READ, cls$declaration_section] record
          header: clt$pdt_header,
          names: array [1 .. 3] of clt$pdt_parameter_name,
          parameters: array [1 .. 2] of clt$pdt_parameter,
          type1: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 2] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          type2: record
            header: clt$type_specification_header,
          recend,
        recend := [[1, [88, 5, 3, 13, 13, 5, 264], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CHANC'],
              [['STATUS                         ', clc$nominal_entry, 2],
              ['V                              ', clc$abbreviation_entry, 1],
              ['VALUE                          ', clc$nominal_entry, 1]], [

{ PARAMETER 1

        [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
              clc$standard_parameter_checking, 106, clc$optional_parameter, 0, 0],

{ PARAMETER 2

        [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
              [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
              clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

        [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type], FALSE, 2], 81,
              [[1, 0, clc$keyword_type], [2], [['DEFAULT                        ', clc$nominal_entry,
              clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
              clc$normal_usage_entry, 2]]], 5, [[1, 0, clc$name_type], [1, osc$max_name_size]]],

{ PARAMETER 2

        [[1, 0, clc$status_type]]];

?? POP ??

      CONST
        p$value = 1,
        p$status = 2;

      VAR
        pvt: array [1 .. 2] of clt$parameter_value;

      VAR
        altered_pdt: ^clt$parameter_description_table,
        pdt_changes: ^clt$pdt_changes;

      status.normal := TRUE;

{ Set the SECURE attribute if necessary.

      IF display_authority = avc$system_authority THEN

{ Make a copy of the PDT so it can be altered.

        PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
        RESET altered_pdt;
        altered_pdt^ := #SEQ (pdt) ^;

        PUSH pdt_changes: [1 .. 1];
        pdt_changes^ [1].number := p$value;
        pdt_changes^ [1].kind := clc$pdtc_security;
        pdt_changes^ [1].security := clc$secure_parameter;

        clp$change_pdt (altered_pdt, pdt_changes^, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
      ELSE
        clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
      IFEND;
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      IF pvt [p$value].specified THEN
        add_parameter_value := pvt [p$value].value;
      ELSE
        add_parameter_value := NIL;
      IFEND;

    PROCEND change_name_value;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

{ Determine what field to change and get its field description.

    avp$get_field_name (current_subutility_session_info^.id, field_name, command_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    PUSH common_names: [1 .. avc$maximum_name_list_size];
    PUSH default_names: [1 .. avc$maximum_name_list_size];
    FOR index := 1 TO avc$maximum_name_list_size DO
      common_names^ [index] := osc$null_name;
      default_names^ [index] := osc$null_name;
    FOREND;

    avp$get_name_field_desc (field_name, current_subutility_session_info^.validation_record_name,
          current_subutility_session_info^.id, number_of_default_names, default_names,
          minimum_number_of_names, maximum_number_of_names, number_of_common_names, common_names, description,
          change_authority, delete_authority, display_authority, manage_authority,
          validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Use the appropriate PDT and process the parameters

    IF maximum_number_of_names = 1 THEN
      PUSH delete_parameter_value;
      delete_parameter_value^.kind := clc$keyword;
      delete_parameter_value^.keyword_value := 'ALL';
      change_name_value (parameter_list, add_parameter_value, status);
      IF (NOT status.normal) OR (add_parameter_value = NIL) THEN
        RETURN;
      IFEND;
    ELSE
      change_name_list_value (parameter_list, minimum_number_of_names, maximum_number_of_names,
            add_parameter_value, delete_parameter_value, status);
    IFEND;
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    process_name_list_parameter (add_parameter_value, default_names, names_to_add);

    process_name_list_parameter (delete_parameter_value, default_names, names_to_delete);

    avp$change_name_value (field_name, names_to_add, names_to_delete, current_subutility_session_info^.id,
          validation_file_information, status);

  PROCEND avp$change_name_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$change_real_command', EJECT ??

{ PURPOSE:
{   This is the command processor used to change the value of any REAL fields.

  PROCEDURE [XDCL] avp$change_real_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_charc) change_real_command, charc (
{   value, v: any of
{       key
{         default
{       keyend
{       real
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 3] of clt$pdt_parameter_name,
        parameters: array [1 .. 2] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$real_type_qualifier,
          recend,
        recend,
        type2: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 4, 9, 16, 3, 649], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CHARC'],
            [['STATUS                         ', clc$nominal_entry, 2],
            ['V                              ', clc$abbreviation_entry, 1],
            ['VALUE                          ', clc$nominal_entry, 1]], [

{ PARAMETER 1

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 99, clc$optional_parameter, 0, 0],

{ PARAMETER 2

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$real_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 35, [[1, 0, clc$real_type],
            [[{-$INFINITY} 3, [[0D000(16), 0(16)], [0D000(16), 0(16)]]],
            [{$INFINITY} 3, [[5000(16), 0(16)], [5000(16), 0(16)]]]]]],

{ PARAMETER 2

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$value = 1,
      p$status = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    TYPE
      long_real_type = record
        first: real,
        second: real,
      recend;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: avt$validation_authority,
      command_name: ost$name,
      default_value: real,
      delete_authority: avt$validation_authority,
      description: ost$string,
      display_authority: avt$validation_authority,
      display_format: avt$numeric_display_format,
      field_name: ost$name,
      long_real_value: long_real_type,
      manage_authority: avt$validation_authority,
      maximum_value: real,
      minimum_value: real,
      parameter: clt$value,
      real_type_changes: ^clt$type_changes,
      real_value: ^real,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

{ Determine what field to change and get its field description.

    avp$get_field_name (current_subutility_session_info^.id, field_name, command_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    avp$get_real_field_desc (field_name, current_subutility_session_info^.validation_record_name,
          current_subutility_session_info^.id, default_value, minimum_value, maximum_value, display_format,
          description, change_authority, delete_authority, display_authority, manage_authority,
          validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the minimum and maximum values.

    PUSH real_type_changes: [1 .. 1];
    real_type_changes^ [1].kind := clc$tc_integer_subrange;
    long_real_value.first := minimum_value;
    long_real_value.second := 0.0;
    #UNCHECKED_CONVERSION (long_real_value, real_type_changes^ [1].min_real_value);
    long_real_value.first := maximum_value;
    long_real_value.second := 0.0;
    #UNCHECKED_CONVERSION (long_real_value, real_type_changes^ [1].max_real_value);

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$value;
    pdt_changes^ [1].kind := clc$pdtc_type;
    pdt_changes^ [1].type_changes := real_type_changes;
    pdt_changes^ [2].number := p$value;
    pdt_changes^ [2].kind := clc$pdtc_security;
    IF display_authority = avc$system_authority THEN
      pdt_changes^ [2].security := clc$secure_parameter;
    ELSE
      pdt_changes^ [2].security := clc$non_secure_parameter;
    IFEND;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF pvt [p$value].specified THEN
      IF pvt [p$value].value^.kind = clc$keyword THEN
        real_value := ^default_value;
      ELSE
        #UNCHECKED_CONVERSION (pvt [p$value].value^.real_value.value, long_real_value);
        PUSH real_value;
        real_value^ := long_real_value.first;
      IFEND;

      avp$change_real_value (field_name, real_value, current_subutility_session_info^.id,
            validation_file_information, status);
    IFEND;

  PROCEND avp$change_real_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$change_ring_privilege_cmd', EJECT ??

{ PURPOSE:
{   This is the command processor used to change the value of the
{   RING_PRIVILEGE field.

  PROCEDURE [XDCL] avp$change_ring_privilege_cmd
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_charp) change_ring_privilege, change_ring_privileges, charp (
{   minimum_ring, minr: (BY_NAME) any of
{       key
{         default
{       keyend
{       integer 4..13
{     anyend = $optional
{   nominal_ring, nr: (BY_NAME) any of
{       key
{         default
{       keyend
{       integer 4..13
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 5] of clt$pdt_parameter_name,
        parameters: array [1 .. 3] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type3: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 31, 14, 43, 49, 275], clc$command, 5, 3, 0, 0, 0, 0, 3, 'OSM$ADMV_CHARP'],
            [['MINIMUM_RING                   ', clc$nominal_entry, 1],
            ['MINR                           ', clc$abbreviation_entry, 1],
            ['NOMINAL_RING                   ', clc$nominal_entry, 2],
            ['NR                             ', clc$abbreviation_entry, 2],
            ['STATUS                         ', clc$nominal_entry, 3]], [

{ PARAMETER 1

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 84,
            clc$optional_parameter, 0, 0],

{ PARAMETER 2

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 84,
            clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [4, 13, 10]]],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [4, 13, 10]]],

{ PARAMETER 3

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$minimum_ring = 1,
      p$nominal_ring = 2,
      p$status = 3;

    VAR
      pvt: array [1 .. 3] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: avt$validation_authority,
      command_name: ost$name,
      default_minimum_ring: ost$ring,
      default_nominal_ring: ost$ring,
      delete_authority: avt$validation_authority,
      description: ost$string,
      display_authority: avt$validation_authority,
      manage_authority: avt$validation_authority,
      minimum_ring: ^ost$ring,
      minimum_ring_parameter: clt$value,
      nominal_ring: ^ost$ring,
      nominal_ring_parameter: clt$value,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

{ Set the SECURE attribute if necessary.

    IF display_authority = avc$system_authority THEN

{ Make a copy of the PDT so it can be altered.

      PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
      RESET altered_pdt;
      altered_pdt^ := #SEQ (pdt) ^;

      PUSH pdt_changes: [1 .. 1];
      pdt_changes^ [1].number := p$minimum_ring;
      pdt_changes^ [1].kind := clc$pdtc_security;
      pdt_changes^ [1].security := clc$secure_parameter;
      pdt_changes^ [2].number := p$nominal_ring;
      pdt_changes^ [2].kind := clc$pdtc_security;
      pdt_changes^ [2].security := clc$secure_parameter;

      clp$change_pdt (altered_pdt, pdt_changes^, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    ELSE
      clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IFEND;
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    avp$get_ring_priv_field_desc (avc$ring_privileges, current_subutility_session_info^.
          validation_record_name, current_subutility_session_info^.id, default_minimum_ring,
          default_nominal_ring, description, change_authority, delete_authority, display_authority,
          manage_authority, validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF pvt [p$minimum_ring].specified THEN
      IF pvt [p$minimum_ring].value^.kind = clc$keyword THEN
        minimum_ring := ^default_minimum_ring;
      ELSE
        PUSH minimum_ring;
        minimum_ring^ := pvt [p$minimum_ring].value^.integer_value.value;
      IFEND;
    ELSE
      minimum_ring := NIL;
    IFEND;

    IF pvt [p$nominal_ring].specified THEN
      IF pvt [p$nominal_ring].value^.kind = clc$keyword THEN
        nominal_ring := ^default_nominal_ring;
      ELSE
        PUSH nominal_ring;
        nominal_ring^ := pvt [p$nominal_ring].value^.integer_value.value;
      IFEND;
    ELSE
      nominal_ring := NIL;
    IFEND;

    avp$change_ring_privilege_value (avc$ring_privileges, minimum_ring, nominal_ring,
          current_subutility_session_info^.id, validation_file_information, status);

  PROCEND avp$change_ring_privilege_cmd;
?? OLDTITLE ??
?? NEWTITLE := 'avp$change_string_command', EJECT ??

{ PURPOSE:
{   This is the command processor used to change the value of any STRING fields.

  PROCEDURE [XDCL] avp$change_string_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chasc) change_string_command, chasc (
{   value, v: any of
{       key
{         default
{       keyend
{       string
{     anyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 3] of clt$pdt_parameter_name,
        parameters: array [1 .. 2] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$string_type_qualifier,
          recend,
        recend,
        type2: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 15, 14, 38, 40, 432], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_CHASC'],
            [['STATUS                         ', clc$nominal_entry, 2],
            ['V                              ', clc$abbreviation_entry, 1],
            ['VALUE                          ', clc$nominal_entry, 1]], [

{ PARAMETER 1

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 72, clc$optional_parameter, 0, 0],

{ PARAMETER 2

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$string_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 8, [[1, 0, clc$string_type], [0, clc$max_string_size, FALSE]]],

{ PARAMETER 2

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$value = 1,
      p$status = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: avt$validation_authority,
      command_name: ost$name,
      default_value: ost$string,
      delete_authority: avt$validation_authority,
      description: ost$string,
      display_authority: avt$validation_authority,
      field_name: ost$name,
      manage_authority: avt$validation_authority,
      maximum_string_size: ost$string_size,
      minimum_string_size: ost$string_size,
      pdt_changes: ^clt$pdt_changes,
      string_type_changes: ^clt$type_changes,
      string_value: ^ost$string;

    status.normal := TRUE;

{ Determine what field to change and get its field description.

    avp$get_field_name (current_subutility_session_info^.id, field_name, command_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    avp$get_string_field_desc (field_name, current_subutility_session_info^.validation_record_name,
          current_subutility_session_info^.id, default_value, minimum_string_size, maximum_string_size,
          description, change_authority, delete_authority, display_authority, manage_authority,
          validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := #SEQ (pdt) ^;

{ Set the minimum and maximum number of list elements.

    PUSH string_type_changes: [1 .. 1];
    string_type_changes^ [1].kind := clc$tc_string_size;
    string_type_changes^ [1].min_string_size := minimum_string_size;
    string_type_changes^ [1].max_string_size := maximum_string_size;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$value;
    pdt_changes^ [1].kind := clc$pdtc_type;
    pdt_changes^ [1].type_changes := string_type_changes;
    pdt_changes^ [2].number := p$value;
    pdt_changes^ [2].kind := clc$pdtc_security;
    IF display_authority = avc$system_authority THEN
      pdt_changes^ [2].security := clc$secure_parameter;
    ELSE
      pdt_changes^ [2].security := clc$non_secure_parameter;
    IFEND;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF pvt [p$value].specified THEN
      IF pvt [p$value].value^.kind = clc$keyword THEN
        string_value := ^default_value;
      ELSE
        PUSH string_value;
        string_value^.value := pvt [p$value].value^.string_value^;
        string_value^.size := #SIZE (pvt [p$value].value^.string_value^);
      IFEND;

      avp$change_string_value (field_name, string_value, current_subutility_session_info^.id,
            validation_file_information, status);
    IFEND;

  PROCEND avp$change_string_command;
?? OLDTITLE ??
?? NEWTITLE := 'avp$display_field_value', EJECT ??

{ PURPOSE:
{   This is the command processor used to display the value of any field.

  PROCEDURE [XDCL] avp$display_field_value
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_disfv) display_field_value, disfv (
{   output, o: file = $output
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 3] of clt$pdt_parameter_name,
        parameters: array [1 .. 2] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          default_value: string (7),
        recend,
        type2: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 4, 10, 3, 28, 369], clc$command, 3, 2, 0, 0, 0, 0, 2, 'OSM$ADMV_DISFV'],
            [['O                              ', clc$abbreviation_entry, 1],
            ['OUTPUT                         ', clc$nominal_entry, 1],
            ['STATUS                         ', clc$nominal_entry, 2]], [

{ PARAMETER 1

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_default_parameter, 0, 7],

{ PARAMETER 2

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$file_type], '$output'],

{ PARAMETER 2

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$output = 1,
      p$status = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    VAR
      display_control: clt$display_control,
      field_name: ^array [1 .. * ] of ost$name,
      file_contents: amt$file_contents,
      ignore_status: ost$status,
      ring_attributes: amt$ring_attributes,
      title: ost$name;

?? NEWTITLE := 'condition_handler', EJECT ??

{ PURPOSE:
{   This is a block exit condition handler that is used to insure that the output
{   file is closed in case of an abnormal exit.

    PROCEDURE condition_handler
      (    condition: pmt$condition;
           condition_information: ^pmt$condition_information;
           save_area: ^ost$stack_frame_save_area;
       VAR handler_status: ost$status);

      VAR
        ignore_status: ost$status;

      clp$close_display (display_control, ignore_status);

    PROCEND condition_handler;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Determine what field to display.

    PUSH field_name: [1 .. 1];
    avp$get_field_name (current_subutility_session_info^.id, field_name^ [1], clv$command_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clv$titles_built := FALSE;

    IF current_subutility_session_info^.validation_record_name = avc$user_record_name THEN
      title := current_subutility_session_info^.key.user_name;
    ELSEIF current_subutility_session_info^.validation_record_name = avc$account_record_name THEN
      title := current_subutility_session_info^.key.account_name;
    ELSEIF current_subutility_session_info^.validation_record_name = avc$account_member_record_name THEN
      title := current_subutility_session_info^.key.user_name;
    ELSEIF current_subutility_session_info^.validation_record_name = avc$project_record_name THEN
      title := current_subutility_session_info^.key.project_name;
    ELSEIF current_subutility_session_info^.validation_record_name = avc$project_member_record_name THEN
      title := current_subutility_session_info^.key.user_name;
    IFEND;

    ring_attributes.r1 := #RING (^ring_attributes);
    ring_attributes.r2 := #RING (^ring_attributes);
    ring_attributes.r3 := #RING (^ring_attributes);
    file_contents := amc$list;

    clp$open_display_reference (pvt [p$output].value^.file_value^, ^clp$new_page_procedure, file_contents,
          ring_attributes, display_control, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    osp$establish_block_exit_hndlr (^condition_handler);

    display_selected_fields (title, field_name, current_subutility_session_info^.validation_record_name,
          current_subutility_session_info^.id, display_control, status);

    osp$disestablish_cond_handler;

    IF status.normal THEN
      clp$close_display (display_control, status);
    ELSE
      clp$close_display (display_control, ignore_status);
    IFEND;

  PROCEND avp$display_field_value;
?? OLDTITLE ??
?? NEWTITLE := 'avp$end_subutility_command', EJECT ??

{ PURPOSE:
{   This is the command processor used to end any of the create or change
{   subutilities.

  PROCEDURE [XDCL] avp$end_subutility_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_endccs) end_create_change_subutility, endccs (
{   write_changes, wc: boolean = true
{   )

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 2] of clt$pdt_parameter_name,
        parameters: array [1 .. 1] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          default_value: string (4),
        recend,
      recend := [[1, [88, 5, 16, 12, 19, 50, 687], clc$command, 2, 1, 0, 0, 0, 0, 0, 'OSM$ADMV_ENDCCS'],
            [['WC                             ', clc$abbreviation_entry, 1],
            ['WRITE_CHANGES                  ', clc$nominal_entry, 1]], [

{ PARAMETER 1

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_default_parameter, 0, 4]],

{ PARAMETER 1

      [[1, 0, clc$boolean_type], 'true']];

?? POP ??

    CONST
      p$write_changes = 1;

    VAR
      pvt: array [1 .. 1] of clt$parameter_value;

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Set the rewrite flag for the record.

    current_subutility_session_info^.rewrite_record := pvt [p$write_changes].value^.boolean_value.value;

    clp$end_include (current_subutility_session_info^.subutility_name, status);

  PROCEND avp$end_subutility_command;
?? OLDTITLE ??
?? OLDTITLE ??
?? NEWTITLE := 'Manage Fields Subcommands', EJECT ??
?? NEWTITLE := 'change_account_project_field', EJECT ??

{ PURPOSE:
{   This is the command processor used to alter the definition of an
{   ACCOUNT_PROJECT field.

  PROCEDURE change_account_project_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chaapf) change_account_project_field, chaapf (
{   field_name, fn: name = $required
{   default_account, defa: (BY_NAME) any of
{       key
{         current, none
{       keyend
{       name
{     anyend = $optional
{   default_project, defp: (BY_NAME) any of
{       key
{         current, none
{       keyend
{       name
{     anyend = $optional
{   description, d: (BY_NAME) string 0..256 = $optional
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 19] of clt$pdt_parameter_name,
        parameters: array [1 .. 10] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type9: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type10: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 23, 35, 646], clc$command, 19, 10, 1, 0, 0, 0, 10, 'OSM$ADMV_CHAAPF'],
            [['CA                             ', clc$abbreviation_entry, 7],
            ['CCN                            ', clc$abbreviation_entry, 5],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 7],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 5],
            ['D                              ', clc$abbreviation_entry, 4],
            ['DA                             ', clc$abbreviation_entry, 8],
            ['DCN                            ', clc$abbreviation_entry, 6],
            ['DEFA                           ', clc$abbreviation_entry, 2],
            ['DEFAULT_ACCOUNT                ', clc$nominal_entry, 2],
            ['DEFAULT_PROJECT                ', clc$nominal_entry, 3],
            ['DEFP                           ', clc$abbreviation_entry, 3],
            ['DESCRIPTION                    ', clc$nominal_entry, 4],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 8],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 6],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 9],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 9],
            ['STATUS                         ', clc$nominal_entry, 10]], [

{ PARAMETER 1

      [15, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 106,
            clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 106, clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [12, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 8, clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_parameter, 0, 0],

{ PARAMETER 6

      [14, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_parameter, 0, 0],

{ PARAMETER 7

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [18, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 10

      [19, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['CURRENT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 5, [[1, 0, clc$name_type], [1, osc$max_name_size]]],

{ PARAMETER 3

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['CURRENT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 5, [[1, 0, clc$name_type], [1, osc$max_name_size]]],

{ PARAMETER 4

      [[1, 0, clc$string_type], [0, 256, FALSE]],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 6

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 7

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 8

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 9

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 10

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_account = 2,
      p$default_project = 3,
      p$description = 4,
      p$change_command_names = 5,
      p$display_command_names = 6,
      p$change_authority = 7,
      p$display_authority = 8,
      p$manage_authority = 9,
      p$status = 10;

    VAR
      pvt: array [1 .. 10] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      current_parameter_value: ^clt$data_value,
      default_account: ^avt$account_name,
      default_project: ^avt$project_name,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    IF pvt [p$default_account].specified THEN
      PUSH default_account;
      IF pvt [p$default_account].value^.kind = clc$keyword THEN
        IF pvt [p$default_account].value^.keyword_value = 'CURRENT' THEN
          default_account^ := executing_account;
        ELSE
          default_account^ := pvt [p$default_account].value^.keyword_value;
        IFEND;
      ELSE { clc$name }
        default_account^ := pvt [p$default_account].value^.name_value;
      IFEND;
    ELSE
      default_account := NIL;
    IFEND;

    IF pvt [p$default_project].specified THEN
      PUSH default_project;
      IF pvt [p$default_project].value^.kind = clc$keyword THEN
        IF pvt [p$default_project].value^.keyword_value = 'CURRENT' THEN
          default_project^ := executing_project;
        ELSE
          default_project^ := pvt [p$default_project].value^.keyword_value;
        IFEND;
      ELSE { clc$name }
        default_project^ := pvt [p$default_project].value^.name_value;
      IFEND;
    ELSE
      default_project := NIL;
    IFEND;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);

    avp$change_acct_proj_field (pvt [p$field_name].value^.name_value,
          current_subutility_session_info^.validation_record_name, default_account, default_project,
          change_command_names, display_command_names, description, display_authority, change_authority,
          manage_authority, NIL, validation_file_information, status);

  PROCEND change_account_project_field;
?? OLDTITLE ??
?? NEWTITLE := 'change_accumulating_limit_field', EJECT ??

{ PURPOSE:
{   This is the command processor used to alter the definition of an
{   ACCUMULATING_LIMIT field.

  PROCEDURE change_accumulating_limit_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chaalf) change_accumulating_limit_field, chaalf (
{   field_name, fn: name = $required
{   limit_name, ln: (BY_NAME) name = $optional
{   default_job_maximum_limit, djmaxl: (BY_NAME) any of
{       key
{         unlimited
{       keyend
{       integer 0..osc$max_integer
{     anyend = $optional
{   default_job_warning_limit, djwl: (BY_NAME) any of
{       key
{         unlimited
{       keyend
{       integer 0..osc$max_integer
{     anyend = $optional
{   default_total_limit, dtl: (BY_NAME) any of
{       key
{         unlimited
{       keyend
{       integer 0..osc$max_integer
{     anyend = $optional
{   limit_application, la: (BY_NAME) key
{       (job_limits_apply, jla)
{       (total_limit_applies, tla)
{       (job_and_total_limits_apply, jatla)
{     keyend = $optional
{   update_statistic, update_statistics, us: (BY_NAME, CHECK) any of
{       key
{         none
{       keyend
{       list of statistic_code
{     anyend = $optional
{   total_limit_prevents_login, tlpl: (BY_NAME) boolean = $optional
{   description, d: (BY_NAME) string 0..256 = $optional
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 30] of clt$pdt_parameter_name,
        parameters: array [1 .. 15] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 6] of clt$keyword_specification,
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
            recend,
          recend,
        recend,
        type8: record
          header: clt$type_specification_header,
        recend,
        type9: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
        recend,
        type10: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type11: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type12: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type13: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type14: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type15: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 18, 15, 55, 42, 166], clc$command, 30, 15, 1, 0, 0, 0, 15, 'OSM$ADMV_CHAALF'],
            [['CA                             ', clc$abbreviation_entry, 12],
            ['CCN                            ', clc$abbreviation_entry, 10],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 12],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 10],
            ['D                              ', clc$abbreviation_entry, 9],
            ['DA                             ', clc$abbreviation_entry, 13],
            ['DCN                            ', clc$abbreviation_entry, 11],
            ['DEFAULT_JOB_MAXIMUM_LIMIT      ', clc$nominal_entry, 3],
            ['DEFAULT_JOB_WARNING_LIMIT      ', clc$nominal_entry, 4],
            ['DEFAULT_TOTAL_LIMIT            ', clc$nominal_entry, 5],
            ['DESCRIPTION                    ', clc$nominal_entry, 9],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 13],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 11],
            ['DJMAXL                         ', clc$abbreviation_entry, 3],
            ['DJWL                           ', clc$abbreviation_entry, 4],
            ['DTL                            ', clc$abbreviation_entry, 5],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['LA                             ', clc$abbreviation_entry, 6],
            ['LIMIT_APPLICATION              ', clc$nominal_entry, 6],
            ['LIMIT_NAME                     ', clc$nominal_entry, 2],
            ['LN                             ', clc$abbreviation_entry, 2],
            ['MA                             ', clc$abbreviation_entry, 14],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 14],
            ['STATUS                         ', clc$nominal_entry, 15],
            ['TLPL                           ', clc$abbreviation_entry, 8],
            ['TOTAL_LIMIT_PREVENTS_LOGIN     ', clc$nominal_entry, 8],
            ['UPDATE_STATISTIC               ', clc$nominal_entry, 7],
            ['UPDATE_STATISTICS              ', clc$alias_entry, 7],
            ['US                             ', clc$abbreviation_entry, 7]], [

{ PARAMETER 1

      [17, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [21, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 84,
            clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 84,
            clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 84, clc$optional_parameter, 0, 0],

{ PARAMETER 6

      [20, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 229, clc$optional_parameter, 0, 0],

{ PARAMETER 7

      [28, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 83, clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [27, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 8, clc$optional_parameter, 0, 0],

{ PARAMETER 10

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_parameter, 0, 0],

{ PARAMETER 11

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_parameter, 0, 0],

{ PARAMETER 12

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 13

      [12, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 14

      [24, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 15

      [25, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 3

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [0, osc$max_integer, 10]]],

{ PARAMETER 4

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [0, osc$max_integer, 10]]],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [0, osc$max_integer, 10]]],

{ PARAMETER 6

      [[1, 0, clc$keyword_type], [6], [['JATLA                          ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['JLA                            ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['JOB_AND_TOTAL_LIMITS_APPLY     ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['JOB_LIMITS_APPLY               ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['TLA                            ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['TOTAL_LIMIT_APPLIES            ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]],

{ PARAMETER 7

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 19, [[1, 0, clc$list_type],
            [3, 1, clc$max_list_size, FALSE], [[1, 0, clc$statistic_code_type]]]],

{ PARAMETER 8

      [[1, 0, clc$boolean_type]],

{ PARAMETER 9

      [[1, 0, clc$string_type], [0, 256, FALSE]],

{ PARAMETER 10

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 11

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 12

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 13

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 14

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 15

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$limit_name = 2,
      p$default_job_maximum_limit = 3,
      p$default_job_warning_limit = 4,
      p$default_total_limit = 5,
      p$limit_application = 6,
      p$update_statistic = 7,
      p$total_limit_prevents_login = 8,
      p$description = 9,
      p$change_command_names = 10,
      p$display_command_names = 11,
      p$change_authority = 12,
      p$display_authority = 13,
      p$manage_authority = 14,
      p$status = 15;

    VAR
      pvt: array [1 .. 15] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      common_job_classes: ^avt$name_list,
      current_parameter_value: ^clt$data_value,
      default_job_warning_limit: ^avt$limit_value,
      default_job_maximum_limit: ^avt$limit_value,
      default_total_limit: ^avt$limit_value,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      field_name: ost$name,
      index: integer,
      job_limits_apply: ^boolean,
      limit_name: ^ost$name,
      limit_update_statistics: ^sft$limit_update_statistics,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes,
      total_limit_applies: ^boolean,
      total_limit_stops_login: ^boolean;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$update_statistic) THEN
        verify_statistic_code_value ('UPDATE_STATISTIC', parameter_value_table^ [p$update_statistic].value,
              status);
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF current_subutility_session_info^.validation_record_name <> avc$user_record_name THEN

{ Hide parameters dealing with job limits.

      PUSH pdt_changes: [1 .. 5];
      pdt_changes^ [1].number := p$default_job_maximum_limit;
      pdt_changes^ [1].kind := clc$pdtc_availability;
      pdt_changes^ [1].availability := clc$hidden_entry;
      pdt_changes^ [2].number := p$default_job_warning_limit;
      pdt_changes^ [2].kind := clc$pdtc_availability;
      pdt_changes^ [2].availability := clc$hidden_entry;
      pdt_changes^ [3].number := p$limit_name;
      pdt_changes^ [3].kind := clc$pdtc_availability;
      pdt_changes^ [3].availability := clc$hidden_entry;
      pdt_changes^ [4].number := p$limit_application;
      pdt_changes^ [4].kind := clc$pdtc_availability;
      pdt_changes^ [4].availability := clc$hidden_entry;
      pdt_changes^ [5].number := p$update_statistic;
      pdt_changes^ [5].kind := clc$pdtc_availability;
      pdt_changes^ [5].availability := clc$hidden_entry;

      clp$change_pdt (altered_pdt, pdt_changes^, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    IF (current_subutility_session_info^.validation_record_name = avc$user_record_name) AND
          (pvt [p$limit_name].value <> NIL) THEN
      limit_name := ^pvt [p$limit_name].value^.name_value;
    ELSE
      limit_name := NIL;
    IFEND;

    IF (current_subutility_session_info^.validation_record_name = avc$user_record_name) THEN
      process_limit_appl_parameter (pvt [p$limit_application].value, job_limits_apply, total_limit_applies);
    ELSE
      job_limits_apply := NIL;
      total_limit_applies := NIL;
    IFEND;

    IF (current_subutility_session_info^.validation_record_name = avc$user_record_name) THEN
      process_limit_parameter (pvt [p$default_job_maximum_limit].value, NIL, default_job_maximum_limit);
      process_limit_parameter (pvt [p$default_job_warning_limit].value, NIL, default_job_warning_limit);
    ELSE
      default_job_maximum_limit := NIL;
      default_job_warning_limit := NIL;
    IFEND;

    process_limit_parameter (pvt [p$default_total_limit].value, NIL, default_total_limit);

    IF pvt [p$total_limit_prevents_login].value <> NIL THEN
      total_limit_stops_login := ^pvt [p$total_limit_prevents_login].value^.boolean_value.value;
    ELSE
      total_limit_stops_login := NIL;
    IFEND;

    IF (current_subutility_session_info^.validation_record_name = avc$user_record_name) AND
          (pvt [p$update_statistic].value <> NIL) THEN
      IF pvt [p$update_statistic].value^.kind = clc$keyword THEN

{ If the keyword value NONE was specified, pass a zero statistic code to cause the current list of
{ statistics to be removed.

        PUSH limit_update_statistics: [1 .. 1];
        limit_update_statistics^ [1].statistic_code := 0;
      ELSE { list of statistic_code }
        PUSH limit_update_statistics: [1 .. clp$count_list_elements (pvt [p$update_statistic].value)];
        current_parameter_value := pvt [p$update_statistic].value;
        index := 0;
        REPEAT
          index := index + 1;
          limit_update_statistics^ [index].statistic_code :=
                current_parameter_value^.element_value^.statistic_code_value;
          limit_update_statistics^ [index].update_kind := sfc$update_based_on_counter;
          limit_update_statistics^ [index].counter := 1;
          current_parameter_value := current_parameter_value^.link;
        UNTIL current_parameter_value = NIL;
      IFEND;
    ELSE
      limit_update_statistics := NIL;
    IFEND;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);

    avp$change_accum_limit_field (field_name, current_subutility_session_info^.validation_record_name,
          default_job_warning_limit, default_job_maximum_limit, default_total_limit, limit_name,
          job_limits_apply, limit_update_statistics, NIL, NIL, total_limit_applies, total_limit_stops_login,
          change_command_names, display_command_names, description, display_authority, change_authority,
          manage_authority, NIL, validation_file_information, status);

  PROCEND change_accumulating_limit_field;
?? OLDTITLE ??
?? NEWTITLE := 'change_capability_field', EJECT ??

{ PURPOSE:
{   This is the command processor used to alter the definition of a CAPABILITY field.

  PROCEDURE change_capability_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chacf) change_capability_field, chacf (
{   field_name, fn: name = $required
{   default_value, dv: (BY_NAME) key
{       (exclude, e)
{       (include, i)
{     keyend = $optional
{   description, d: (BY_NAME) string 0..256 = $optional
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 11] of clt$pdt_parameter_name,
        parameters: array [1 .. 6] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type6: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 27, 11, 927], clc$command, 11, 6, 1, 0, 0, 0, 6, 'OSM$ADMV_CHACF'],
            [['CA                             ', clc$abbreviation_entry, 4],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 4],
            ['D                              ', clc$abbreviation_entry, 3],
            ['DEFAULT_VALUE                  ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 3],
            ['DV                             ', clc$abbreviation_entry, 2],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 5],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 5],
            ['STATUS                         ', clc$nominal_entry, 6]], [

{ PARAMETER 1

      [7, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 155,
            clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 6

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$keyword_type], [4], [['E                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['EXCLUDE                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['I                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['INCLUDE                        ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]],

{ PARAMETER 3

      [[1, 0, clc$string_type], [0, 256, FALSE]],

{ PARAMETER 4

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 5

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 6

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_value = 2,
      p$description = 3,
      p$change_authority = 4,
      p$manage_authority = 5,
      p$status = 6;

    VAR
      pvt: array [1 .. 6] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      default_value: ^boolean,
      description: ^ost$string,
      field_name: clt$value,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 1];
    pdt_changes^ [1].number := p$change_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF pvt [p$default_value].specified THEN
      PUSH default_value;
      IF pvt [p$default_value].value^.keyword_value = 'INCLUDE' THEN
        default_value^ := TRUE;
      ELSE
        default_value^ := FALSE;
      IFEND;
    ELSE
      default_value := NIL;
    IFEND;

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);

    avp$change_capability_field (pvt [p$field_name].value^.name_value,
          current_subutility_session_info^.validation_record_name, default_value, description, NIL,
          change_authority, manage_authority, NIL, validation_file_information, status);

  PROCEND change_capability_field;
?? OLDTITLE ??
?? NEWTITLE := 'change_date_time_field', EJECT ??

{ PURPOSE:
{   This is the command processor used to alter the definition of a DATE_TIME field.

  PROCEDURE change_date_time_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chadtf) change_date_time_field, chadtf (
{   field_name, fn: name = $required
{   default_value, dv: (BY_NAME) range of date_time = $optional
{   date_display_format, ddf: (BY_NAME) key
{       (day_month_year, dmy)
{       (iso_date, iso, isod, id)
{       (month, m)
{       (month_day_year, mdy)
{       (ordinal, o), default
{     keyend = $optional
{   time_display_format, tdf: (BY_NAME) key
{       (ampm, a)
{       (hour_minute_second, hms)
{       (iso_time, iso, isot, it)
{       (millisecond, ms), default
{     keyend = $optional
{   description, d: (BY_NAME) string 0..256 = $optional
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 21] of clt$pdt_parameter_name,
        parameters: array [1 .. 11] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$range_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$date_time_type_qualifier,
          recend,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 13] of clt$keyword_specification,
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 11] of clt$keyword_specification,
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type9: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type10: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type11: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 31, 15, 23, 24, 735], clc$command, 21, 11, 1, 0, 0, 0, 11, 'OSM$ADMV_CHADTF'],
            [['CA                             ', clc$abbreviation_entry, 8],
            ['CCN                            ', clc$abbreviation_entry, 6],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 8],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 6],
            ['D                              ', clc$abbreviation_entry, 5],
            ['DA                             ', clc$abbreviation_entry, 9],
            ['DATE_DISPLAY_FORMAT            ', clc$nominal_entry, 3],
            ['DCN                            ', clc$abbreviation_entry, 7],
            ['DDF                            ', clc$abbreviation_entry, 3],
            ['DEFAULT_VALUE                  ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 5],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 9],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 7],
            ['DV                             ', clc$abbreviation_entry, 2],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 10],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 10],
            ['STATUS                         ', clc$nominal_entry, 11],
            ['TDF                            ', clc$abbreviation_entry, 4],
            ['TIME_DISPLAY_FORMAT            ', clc$nominal_entry, 4]], [

{ PARAMETER 1

      [15, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 12, clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [7, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 488,
            clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [21, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 414, clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 8, clc$optional_parameter, 0, 0],

{ PARAMETER 6

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_parameter, 0, 0],

{ PARAMETER 7

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [12, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 10

      [18, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 11

      [19, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$range_type], [5], [[1, 0, clc$date_time_type],
            [$clt$date_and_or_time [clc$date, clc$time], $clt$date_time_tenses
            [clc$past, clc$present, clc$future]]]],

{ PARAMETER 3

      [[1, 0, clc$keyword_type], [13], [['DAY_MONTH_YEAR                 ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['DMY                            ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['ID                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['ISO                            ', clc$alias_entry,
            clc$normal_usage_entry, 2], ['ISOD                           ', clc$alias_entry,
            clc$normal_usage_entry, 2], ['ISO_DATE                       ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['M                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['MDY                            ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['MONTH                          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['MONTH_DAY_YEAR                 ', clc$nominal_entry,
            clc$normal_usage_entry, 4], ['O                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ORDINAL                        ', clc$nominal_entry,
            clc$normal_usage_entry, 5]]],

{ PARAMETER 4

      [[1, 0, clc$keyword_type], [11], [['A                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['AMPM                           ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['HMS                            ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['HOUR_MINUTE_SECOND             ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['ISO                            ', clc$alias_entry,
            clc$normal_usage_entry, 3], ['ISOT                           ', clc$alias_entry,
            clc$normal_usage_entry, 3], ['ISO_TIME                       ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['IT                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['MILLISECOND                    ', clc$nominal_entry,
            clc$normal_usage_entry, 4], ['MS                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 5

      [[1, 0, clc$string_type], [0, 256, FALSE]],

{ PARAMETER 6

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 7

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 8

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 9

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 10

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 11

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_value = 2,
      p$date_display_format = 3,
      p$time_display_format = 4,
      p$description = 5,
      p$change_command_names = 6,
      p$display_command_names = 7,
      p$change_authority = 8,
      p$display_authority = 9,
      p$manage_authority = 10,
      p$status = 11;

    VAR
      pvt: array [1 .. 11] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      current_parameter_value: ^clt$data_value,
      date_applies: boolean,
      date_display_format: ^clt$date_time_form_string,
      date_time_range: boolean,
      default_value: ^avt$date_time,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      display_format: ost$string,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      old_change_authority: avt$validation_authority,
      old_date_display_format: string (clc$max_date_time_form_string),
      old_default_value: avt$date_time,
      old_delete_authority: avt$validation_authority,
      old_description: ost$string,
      old_display_authority: avt$validation_authority,
      old_manage_authority: avt$validation_authority,
      old_time_display_format: string (clc$max_date_time_form_string),
      pdt_changes: ^clt$pdt_changes,
      time_applies: boolean,
      time_display_format: ^clt$date_time_form_string;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    IF pvt [p$default_value].specified THEN
      avp$get_date_time_field_desc (field_name, current_subutility_session_info^.validation_record_name,
            osc$null_name, old_default_value, date_time_range, date_applies, time_applies,
            old_date_display_format, old_time_display_format, old_description, old_change_authority,
            old_delete_authority, old_display_authority, old_manage_authority, validation_file_information,
            status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      PUSH default_value;
      default_value^.range := date_time_range;
      default_value^.date_specified := date_applies;
      default_value^.time_specified := time_applies;
      IF date_time_range THEN
        default_value^.starting_value := pvt [p$default_value].value^.low_value^.date_time_value.value;
        default_value^.ending_value := pvt [p$default_value].value^.high_value^.date_time_value.value;
      ELSE
        default_value^.value := pvt [p$default_value].value^.low_value^.date_time_value.value;
      IFEND;
    ELSE
      default_value := NIL;
    IFEND;

    IF pvt [p$date_display_format].specified THEN
      translate_date_display_format (pvt [p$date_display_format].value^.keyword_value, display_format);
      PUSH date_display_format: [display_format.size];
      date_display_format^ := display_format.value;
    ELSE
      date_display_format := NIL;
    IFEND;

    IF pvt [p$time_display_format].specified THEN
      translate_time_display_format (pvt [p$time_display_format].value^.keyword_value, display_format);
      PUSH time_display_format: [display_format.size];
      time_display_format^ := display_format.value;
    ELSE
      time_display_format := NIL;
    IFEND;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);

    avp$change_date_time_field (field_name, current_subutility_session_info^.validation_record_name,
          default_value, NIL, NIL, date_display_format, time_display_format, change_command_names,
          display_command_names, description, display_authority, change_authority, manage_authority, NIL,
          validation_file_information, status);

  PROCEND change_date_time_field;
?? OLDTITLE ??
?? NEWTITLE := 'change_file_field', EJECT ??

{ PURPOSE:
{   This is the command processor used to alter the definition of a FILE field.

  PROCEDURE change_file_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chaff) change_file_field, chaff (
{   field_name, fn: name = $required
{   default_value, dv: (BY_NAME) any of
{       key
{         none
{       keyend
{       file
{       string
{     anyend = $optional
{   description, d: (BY_NAME) string 0..256 = $optional
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 17] of clt$pdt_parameter_name,
        parameters: array [1 .. 9] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
          recend,
          type_size_3: clt$type_specification_size,
          element_type_spec_3: record
            header: clt$type_specification_header,
            qualifier: clt$string_type_qualifier,
          recend,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type9: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 33, 30, 319], clc$command, 17, 9, 1, 0, 0, 0, 9, 'OSM$ADMV_CHAFF'],
            [['CA                             ', clc$abbreviation_entry, 6],
            ['CCN                            ', clc$abbreviation_entry, 4],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 6],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 4],
            ['D                              ', clc$abbreviation_entry, 3],
            ['DA                             ', clc$abbreviation_entry, 7],
            ['DCN                            ', clc$abbreviation_entry, 5],
            ['DEFAULT_VALUE                  ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 3],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 7],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 5],
            ['DV                             ', clc$abbreviation_entry, 2],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 8],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 8],
            ['STATUS                         ', clc$nominal_entry, 9]], [

{ PARAMETER 1

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 79,
            clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_parameter, 0, 0],

{ PARAMETER 6

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 7

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [16, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [17, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$file_type, clc$keyword_type, clc$string_type], FALSE, 3], 44,
            [[1, 0, clc$keyword_type], [1], [['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 3, [[1, 0, clc$file_type]], 8,
            [[1, 0, clc$string_type], [0, clc$max_string_size, FALSE]]],

{ PARAMETER 3

      [[1, 0, clc$string_type], [0, 256, FALSE]],

{ PARAMETER 4

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 6

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 7

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 8

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 9

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_value = 2,
      p$description = 3,
      p$change_command_names = 4,
      p$display_command_names = 5,
      p$change_authority = 6,
      p$display_authority = 7,
      p$manage_authority = 8,
      p$status = 9;

    VAR
      pvt: array [1 .. 9] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      current_parameter_value: ^clt$data_value,
      default_value: ^fst$file_reference,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    process_file_parameter (pvt [p$default_value].value, NIL, default_value);

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);

    avp$change_file_field (pvt [p$field_name].value^.name_value,
          current_subutility_session_info^.validation_record_name, default_value, change_command_names,
          display_command_names, description, display_authority, change_authority, manage_authority, NIL,
          validation_file_information, status);

  PROCEND change_file_field;
?? OLDTITLE ??
?? NEWTITLE := 'change_integer_field', EJECT ??

{ PURPOSE:
{   This is the command processor used to alter the definition of an INTEGER field.

  PROCEDURE change_integer_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chaif) change_integer_field, chaif (
{   field_name, fn: name = $required
{   default_value, dv: (BY_NAME) integer = $optional
{   display_field_width, dfw: (BY_NAME) integer 1..25 = $optional
{   radix, r: (BY_NAME) integer 2..16 = $optional
{   display_radix, dr: (BY_NAME) boolean = $optional
{   description, d: (BY_NAME) string 0..256 = $optional
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 23] of clt$pdt_parameter_name,
        parameters: array [1 .. 12] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$integer_type_qualifier,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$integer_type_qualifier,
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$integer_type_qualifier,
        recend,
        type5: record
          header: clt$type_specification_header,
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type9: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type10: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type11: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type12: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 34, 2, 980], clc$command, 23, 12, 1, 0, 0, 0, 12, 'OSM$ADMV_CHAIF'],
            [['CA                             ', clc$abbreviation_entry, 9],
            ['CCN                            ', clc$abbreviation_entry, 7],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 9],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 7],
            ['D                              ', clc$abbreviation_entry, 6],
            ['DA                             ', clc$abbreviation_entry, 10],
            ['DCN                            ', clc$abbreviation_entry, 8],
            ['DEFAULT_VALUE                  ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 6],
            ['DFW                            ', clc$abbreviation_entry, 3],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 10],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 8],
            ['DISPLAY_FIELD_WIDTH            ', clc$nominal_entry, 3],
            ['DISPLAY_RADIX                  ', clc$nominal_entry, 5],
            ['DR                             ', clc$abbreviation_entry, 5],
            ['DV                             ', clc$abbreviation_entry, 2],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 11],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 11],
            ['R                              ', clc$abbreviation_entry, 4],
            ['RADIX                          ', clc$nominal_entry, 4],
            ['STATUS                         ', clc$nominal_entry, 12]], [

{ PARAMETER 1

      [17, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 20,
            clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 20, clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [22, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 20, clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [14, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0],

{ PARAMETER 6

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_parameter, 0, 0],

{ PARAMETER 7

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [12, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 10

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 11

      [20, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 12

      [23, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$integer_type], [clc$min_integer, clc$max_integer, 10]],

{ PARAMETER 3

      [[1, 0, clc$integer_type], [1, 25, 10]],

{ PARAMETER 4

      [[1, 0, clc$integer_type], [2, 16, 10]],

{ PARAMETER 5

      [[1, 0, clc$boolean_type]],

{ PARAMETER 6

      [[1, 0, clc$string_type], [0, 256, FALSE]],

{ PARAMETER 7

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 8

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 9

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 10

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 11

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 12

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_value = 2,
      p$display_field_width = 3,
      p$radix = 4,
      p$display_radix = 5,
      p$description = 6,
      p$change_command_names = 7,
      p$display_command_names = 8,
      p$change_authority = 9,
      p$display_authority = 10,
      p$manage_authority = 11,
      p$status = 12;

    VAR
      pvt: array [1 .. 12] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      current_parameter_value: ^clt$data_value,
      default_value: ^integer,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      display_format: ^avt$numeric_display_format,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      old_change_authority: avt$validation_authority,
      old_default_value: integer,
      old_description: ost$string,
      old_delete_authority: avt$validation_authority,
      old_display_authority: avt$validation_authority,
      old_display_format: avt$numeric_display_format,
      old_manage_authority: avt$validation_authority,
      old_maximum_value: integer,
      old_minimum_value: integer,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    avp$get_integer_field_desc (pvt [p$field_name].value^.name_value,
          current_subutility_session_info^.validation_record_name, current_subutility_session_info^.id,
          old_default_value, old_minimum_value, old_maximum_value, old_display_format, old_description,
          old_change_authority, old_delete_authority, old_display_authority, old_manage_authority,
          validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    IF pvt [p$default_value].specified THEN
      default_value := ^pvt [p$default_value].value^.integer_value.value;
    ELSE
      default_value := NIL;
    IFEND;

    PUSH display_format;
    display_format^ := old_display_format;

    IF pvt [p$display_field_width].specified THEN
      display_format^.field_size := pvt [p$display_field_width].value^.integer_value.value;
    IFEND;

    IF pvt [p$radix].specified THEN
      display_format^.radix := pvt [p$radix].value^.integer_value.value;
    IFEND;

    IF pvt [p$display_radix].specified THEN
      display_format^.display_radix := pvt [p$display_radix].value^.boolean_value.value;
    IFEND;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);

    avp$change_integer_field (pvt [p$field_name].value^.name_value,
          current_subutility_session_info^.validation_record_name, default_value, NIL, NIL, display_format,
          change_command_names, display_command_names, description, display_authority, change_authority,
          manage_authority, NIL, validation_file_information, status);

  PROCEND change_integer_field;
?? OLDTITLE ??
?? NEWTITLE := 'change_job_class_field', EJECT ??

{ PURPOSE:
{   This is the command processor used to alter the definition of the JOB_CLASS
{   field.

  PROCEDURE change_job_class_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chajcf) change_job_class_field, chajcf (
{   add_default, ad: (BY_NAME, CHECK) any of
{       key
{         all, none
{       keyend
{       list 1..256 of name
{     anyend = none
{   delete_default, dd: (BY_NAME, CHECK) any of
{       key
{         all, none
{       keyend
{       list 1..256 of name
{     anyend = none
{   interactive_default, id: (BY_NAME) any of
{       key
{         none
{       keyend
{       name
{     anyend = $optional
{   batch_default, bd: (BY_NAME) any of
{       key
{         none
{       keyend
{       name
{     anyend = $optional
{   description, d: (BY_NAME) string 0..256 = $optional
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 21] of clt$pdt_parameter_name,
        parameters: array [1 .. 11] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (4),
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (4),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type9: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type10: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type11: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 34, 31, 604], clc$command, 21, 11, 0, 0, 0, 0, 11, 'OSM$ADMV_CHAJCF'],
            [['AD                             ', clc$abbreviation_entry, 1],
            ['ADD_DEFAULT                    ', clc$nominal_entry, 1],
            ['BATCH_DEFAULT                  ', clc$nominal_entry, 4],
            ['BD                             ', clc$abbreviation_entry, 4],
            ['CA                             ', clc$abbreviation_entry, 8],
            ['CCN                            ', clc$abbreviation_entry, 6],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 8],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 6],
            ['D                              ', clc$abbreviation_entry, 5],
            ['DA                             ', clc$abbreviation_entry, 9],
            ['DCN                            ', clc$abbreviation_entry, 7],
            ['DD                             ', clc$abbreviation_entry, 2],
            ['DELETE_DEFAULT                 ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 5],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 9],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 7],
            ['ID                             ', clc$abbreviation_entry, 3],
            ['INTERACTIVE_DEFAULT            ', clc$nominal_entry, 3],
            ['MA                             ', clc$abbreviation_entry, 10],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 10],
            ['STATUS                         ', clc$nominal_entry, 11]], [

{ PARAMETER 1

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 122,
            clc$optional_default_parameter, 0, 4],

{ PARAMETER 2

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 122, clc$optional_default_parameter, 0, 4],

{ PARAMETER 3

      [18, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 69, clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 69,
            clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [14, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 8, clc$optional_parameter, 0, 0],

{ PARAMETER 6

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_parameter, 0, 0],

{ PARAMETER 7

      [16, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [7, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [15, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 10

      [20, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 11

      [21, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 21, [[1, 0, clc$list_type],
            [5, 1, 256, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'none'],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 21, [[1, 0, clc$list_type],
            [5, 1, 256, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'none'],

{ PARAMETER 3

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 5, [[1, 0, clc$name_type], [1, osc$max_name_size]]],

{ PARAMETER 4

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 5, [[1, 0, clc$name_type], [1, osc$max_name_size]]],

{ PARAMETER 5

      [[1, 0, clc$string_type], [0, 256, FALSE]],

{ PARAMETER 6

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 7

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 8

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 9

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 10

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 11

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$add_default = 1,
      p$delete_default = 2,
      p$interactive_default = 3,
      p$batch_default = 4,
      p$description = 5,
      p$change_command_names = 6,
      p$display_command_names = 7,
      p$change_authority = 8,
      p$display_authority = 9,
      p$manage_authority = 10,
      p$status = 11;

    VAR
      pvt: array [1 .. 11] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      current_parameter_value: ^clt$data_value,
      default_batch_job_class: ^ost$name,
      default_interactive_job_class: ^ost$name,
      default_job_classes_to_add: ^avt$name_list,
      default_job_classes_to_delete: ^avt$name_list,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF which_parameter.specific THEN
        IF which_parameter.number = p$add_default THEN
          verify_list_of_names_value ('ADD_DEFAULT', parameter_value_table^ [p$add_default].value, status);
        ELSEIF which_parameter.number = p$delete_default THEN
          verify_list_of_names_value ('DELETE_DEFAULT', parameter_value_table^ [p$delete_default].value,
                status);
        ELSE

{ ignore the parameter.

        IFEND;
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := avc$job_class;

    process_name_list_parameter (pvt [p$add_default].value, NIL, default_job_classes_to_add);

    process_name_list_parameter (pvt [p$delete_default].value, NIL, default_job_classes_to_delete);

    IF pvt [p$batch_default].specified THEN
      IF pvt [p$batch_default].value^.kind = clc$keyword THEN
        default_batch_job_class := ^pvt [p$batch_default].value^.keyword_value;
      ELSE
        default_batch_job_class := ^pvt [p$batch_default].value^.name_value;
      IFEND;
    ELSE
      default_batch_job_class := NIL;
    IFEND;

    IF pvt [p$interactive_default].specified THEN
      IF pvt [p$interactive_default].value^.kind = clc$keyword THEN
        default_interactive_job_class := ^pvt [p$interactive_default].value^.keyword_value;
      ELSE
        default_interactive_job_class := ^pvt [p$interactive_default].value^.name_value;
      IFEND;
    ELSE
      default_interactive_job_class := NIL;
    IFEND;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);

    avp$change_job_class_field (field_name, current_subutility_session_info^.validation_record_name,
          default_job_classes_to_add, default_job_classes_to_delete, default_batch_job_class,
          default_interactive_job_class, NIL, NIL, change_command_names, display_command_names, description,
          display_authority, change_authority, manage_authority, NIL, validation_file_information, status);

  PROCEND change_job_class_field;
?? OLDTITLE ??
?? NEWTITLE := 'change_labeled_names_field', EJECT ??

{ PURPOSE:
{   This is the command processor used to alter the definition of a LABELED_NAMES field.

  PROCEDURE change_labeled_names_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chalnf) change_labeled_names_field, chalnf (
{   field_name, fn: name = $required
{   add_defaults, ad: (BY_NAME, CHECK) list 1..256 of record
{       label: any of
{         key
{           all, none
{         keyend
{         name
{       anyend
{       names: any of
{         key
{           all, none
{         keyend
{         list of name
{       anyend = $optional
{     recend = ((none))
{   delete_defaults, dd: (BY_NAME, CHECK) list 1..256 of record
{       label: any of
{         key
{           all, none
{         keyend
{         name
{       anyend
{       names: any of
{         key
{           all, none
{         keyend
{         list of name
{       anyend = $optional
{     recend = ((none))
{   description, d: (BY_NAME) string 0..256 = $optional
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 19] of clt$pdt_parameter_name,
      parameters: array [1 .. 10] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type2: record
        header: clt$type_specification_header,
        qualifier: clt$list_type_qualifier,
        element_type_spec: record
          header: clt$type_specification_header,
          qualifier: clt$record_type_qualifier,
          field_spec_1: clt$field_specification,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 2] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          field_spec_2: clt$field_specification,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 2] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$list_type_qualifier,
              element_type_spec: record
                header: clt$type_specification_header,
                qualifier: clt$name_type_qualifier,
              recend,
            recend,
          recend,
        recend,
        default_value: string (8),
      recend,
      type3: record
        header: clt$type_specification_header,
        qualifier: clt$list_type_qualifier,
        element_type_spec: record
          header: clt$type_specification_header,
          qualifier: clt$record_type_qualifier,
          field_spec_1: clt$field_specification,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 2] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          field_spec_2: clt$field_specification,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 2] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$list_type_qualifier,
              element_type_spec: record
                header: clt$type_specification_header,
                qualifier: clt$name_type_qualifier,
              recend,
            recend,
          recend,
        recend,
        default_value: string (8),
      recend,
      type4: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type5: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 1] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$list_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
      recend,
      type6: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 1] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$list_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
      recend,
      type7: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 14] of clt$keyword_specification,
      recend,
      type8: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 14] of clt$keyword_specification,
      recend,
      type9: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 4] of clt$keyword_specification,
      recend,
      type10: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [89, 5, 22, 12, 59, 53, 861],
    clc$command, 19, 10, 1, 0, 0, 0, 10, 'OSM$ADMV_CHALNF'], [
    ['AD                             ',clc$abbreviation_entry, 2],
    ['ADD_DEFAULTS                   ',clc$nominal_entry, 2],
    ['CA                             ',clc$abbreviation_entry, 7],
    ['CCN                            ',clc$abbreviation_entry, 5],
    ['CHANGE_AUTHORITY               ',clc$nominal_entry, 7],
    ['CHANGE_COMMAND_NAMES           ',clc$nominal_entry, 5],
    ['D                              ',clc$abbreviation_entry, 4],
    ['DA                             ',clc$abbreviation_entry, 8],
    ['DCN                            ',clc$abbreviation_entry, 6],
    ['DD                             ',clc$abbreviation_entry, 3],
    ['DELETE_DEFAULTS                ',clc$nominal_entry, 3],
    ['DESCRIPTION                    ',clc$nominal_entry, 4],
    ['DISPLAY_AUTHORITY              ',clc$nominal_entry, 8],
    ['DISPLAY_COMMAND_NAMES          ',clc$nominal_entry, 6],
    ['FIELD_NAME                     ',clc$nominal_entry, 1],
    ['FN                             ',clc$abbreviation_entry, 1],
    ['MA                             ',clc$abbreviation_entry, 9],
    ['MANAGE_AUTHORITY               ',clc$nominal_entry, 9],
    ['STATUS                         ',clc$nominal_entry, 10]],
    [
{ PARAMETER 1
    [15, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 5, clc$required_parameter, 0
  , 0],
{ PARAMETER 2
    [2, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 323,
  clc$optional_default_parameter, 0, 8],
{ PARAMETER 3
    [11, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 323,
  clc$optional_default_parameter, 0, 8],
{ PARAMETER 4
    [12, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8, clc$optional_parameter, 0
  , 0],
{ PARAMETER 5
    [6, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85, clc$optional_parameter,
  0, 0],
{ PARAMETER 6
    [14, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85, clc$optional_parameter,
  0, 0],
{ PARAMETER 7
    [5, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
  clc$optional_parameter, 0, 0],
{ PARAMETER 8
    [13, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
  clc$optional_parameter, 0, 0],
{ PARAMETER 9
    [18, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 155,
  clc$optional_parameter, 0, 0],
{ PARAMETER 10
    [19, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_parameter, 0, 0]],
{ PARAMETER 1
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 2
    [[1, 0, clc$list_type], [307, 1, 256, FALSE],
      [[1, 0, clc$record_type], [2],
      ['LABEL                          ', clc$required_field, 106], [[1, 0, clc$union_type], [[
        clc$keyword_type, clc$name_type],
        FALSE, 2],
        81, [[1, 0, clc$keyword_type], [2], [
          ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 1],
          ['NONE                           ', clc$nominal_entry, clc$normal_usage_entry, 2]]
          ],
        5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
        ],
      ['NAMES                          ', clc$optional_field, 122], [[1, 0, clc$union_type], [[
        clc$keyword_type, clc$list_type],
        FALSE, 2],
        81, [[1, 0, clc$keyword_type], [2], [
          ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 1],
          ['NONE                           ', clc$nominal_entry, clc$normal_usage_entry, 2]]
          ],
        21, [[1, 0, clc$list_type], [5, 0, clc$max_list_size, FALSE],
            [[1, 0, clc$name_type], [1, osc$max_name_size]]
          ]
        ]
      ]
    ,
    '((none))'],
{ PARAMETER 3
    [[1, 0, clc$list_type], [307, 1, 256, FALSE],
      [[1, 0, clc$record_type], [2],
      ['LABEL                          ', clc$required_field, 106], [[1, 0, clc$union_type], [[
        clc$keyword_type, clc$name_type],
        FALSE, 2],
        81, [[1, 0, clc$keyword_type], [2], [
          ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 1],
          ['NONE                           ', clc$nominal_entry, clc$normal_usage_entry, 2]]
          ],
        5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
        ],
      ['NAMES                          ', clc$optional_field, 122], [[1, 0, clc$union_type], [[
        clc$keyword_type, clc$list_type],
        FALSE, 2],
        81, [[1, 0, clc$keyword_type], [2], [
          ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 1],
          ['NONE                           ', clc$nominal_entry, clc$normal_usage_entry, 2]]
          ],
        21, [[1, 0, clc$list_type], [5, 0, clc$max_list_size, FALSE],
            [[1, 0, clc$name_type], [1, osc$max_name_size]]
          ]
        ]
      ]
    ,
    '((none))'],
{ PARAMETER 4
    [[1, 0, clc$string_type], [0, 256, FALSE]],
{ PARAMETER 5
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['DEFAULT                        ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    21, [[1, 0, clc$list_type], [5, 1, clc$max_list_size, FALSE],
        [[1, 0, clc$name_type], [1, osc$max_name_size]]
      ]
    ],
{ PARAMETER 6
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['DEFAULT                        ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    21, [[1, 0, clc$list_type], [5, 1, clc$max_list_size, FALSE],
        [[1, 0, clc$name_type], [1, osc$max_name_size]]
      ]
    ],
{ PARAMETER 7
    [[1, 0, clc$keyword_type], [14], [
    ['AA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
    ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry, clc$normal_usage_entry, 5],
    ['FA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['FAMILY_ADMINISTRATION          ', clc$nominal_entry, clc$normal_usage_entry, 3],
    ['PA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 6],
    ['PROJECT_ADMINISTRATION         ', clc$nominal_entry, clc$normal_usage_entry, 6],
    ['S                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['SA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['SYSTEM                         ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['U                              ', clc$abbreviation_entry, clc$normal_usage_entry, 7],
    ['UA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
    ['USER                           ', clc$nominal_entry, clc$normal_usage_entry, 7],
    ['USER_ADMINISTRATION            ', clc$nominal_entry, clc$normal_usage_entry, 4]]
    ],
{ PARAMETER 8
    [[1, 0, clc$keyword_type], [14], [
    ['AA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
    ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry, clc$normal_usage_entry, 5],
    ['FA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['FAMILY_ADMINISTRATION          ', clc$nominal_entry, clc$normal_usage_entry, 3],
    ['PA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 6],
    ['PROJECT_ADMINISTRATION         ', clc$nominal_entry, clc$normal_usage_entry, 6],
    ['S                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['SA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['SYSTEM                         ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['U                              ', clc$abbreviation_entry, clc$normal_usage_entry, 7],
    ['UA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
    ['USER                           ', clc$nominal_entry, clc$normal_usage_entry, 7],
    ['USER_ADMINISTRATION            ', clc$nominal_entry, clc$normal_usage_entry, 4]]
    ],
{ PARAMETER 9
    [[1, 0, clc$keyword_type], [4], [
    ['FA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['FAMILY_ADMINISTRATION          ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['SA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry, clc$normal_usage_entry, 1]]
    ],
{ PARAMETER 10
    [[1, 0, clc$status_type]]];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$field_name = 1,
      p$add_defaults = 2,
      p$delete_defaults = 3,
      p$description = 4,
      p$change_command_names = 5,
      p$display_command_names = 6,
      p$change_authority = 7,
      p$display_authority = 8,
      p$manage_authority = 9,
      p$status = 10;

    VAR
      pvt: array [1 .. 10] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      defaults_to_add: ^avt$labeled_names_list,
      defaults_to_delete: ^avt$labeled_names_list,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF which_parameter.specific THEN
        IF which_parameter.number = p$add_defaults THEN
          verify_labeled_names_value ('ADD_DEFAULTS', parameter_value_table^ [p$add_defaults].value, status);
        ELSEIF which_parameter.number = p$delete_defaults THEN
          verify_labeled_names_value ('DELETE_DEFAULTS', parameter_value_table^ [p$delete_defaults].value,
                status);
        ELSE

{ ignore the parameter.

        IFEND;
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    process_labeled_names_parameter (pvt [p$add_defaults].value, NIL, defaults_to_add);

    process_labeled_names_parameter (pvt [p$delete_defaults].value, NIL, defaults_to_delete);

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);

    avp$change_labeled_names_field (field_name, current_subutility_session_info^.validation_record_name,
          defaults_to_add, defaults_to_delete, NIL, NIL, NIL, NIL, change_command_names,
          display_command_names, description, display_authority, change_authority, manage_authority, NIL,
          validation_file_information, status);

  PROCEND change_labeled_names_field;
?? OLDTITLE ??
?? NEWTITLE := 'change_limit_field', EJECT ??

{ PURPOSE:
{   This is the command processor used to alter the definition of a LIMIT field.

  PROCEDURE change_limit_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chalf) change_limit_field, chalf (
{   field_name, fn: name = $required
{   default_value, dv: (BY_NAME) any of
{       key
{         unlimited
{       keyend
{       integer 0..osc$max_integer
{     anyend = $optional
{   description, d: (BY_NAME) string 0..256 = $optional
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 17] of clt$pdt_parameter_name,
        parameters: array [1 .. 9] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type9: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 35, 18, 975], clc$command, 17, 9, 1, 0, 0, 0, 9, 'OSM$ADMV_CHALF'],
            [['CA                             ', clc$abbreviation_entry, 6],
            ['CCN                            ', clc$abbreviation_entry, 4],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 6],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 4],
            ['D                              ', clc$abbreviation_entry, 3],
            ['DA                             ', clc$abbreviation_entry, 7],
            ['DCN                            ', clc$abbreviation_entry, 5],
            ['DEFAULT_VALUE                  ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 3],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 7],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 5],
            ['DV                             ', clc$abbreviation_entry, 2],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 8],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 8],
            ['STATUS                         ', clc$nominal_entry, 9]], [

{ PARAMETER 1

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 84,
            clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_parameter, 0, 0],

{ PARAMETER 6

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 7

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [16, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [17, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [0, osc$max_integer, 10]]],

{ PARAMETER 3

      [[1, 0, clc$string_type], [0, 256, FALSE]],

{ PARAMETER 4

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 6

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 7

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 8

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 9

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_value = 2,
      p$description = 3,
      p$change_command_names = 4,
      p$display_command_names = 5,
      p$change_authority = 6,
      p$display_authority = 7,
      p$manage_authority = 8,
      p$status = 9;

    VAR
      pvt: array [1 .. 9] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      current_parameter_value: ^clt$data_value,
      default_value: ^avt$limit_value,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    IF pvt [p$default_value].specified THEN
      IF pvt [p$default_value].value^.kind = clc$keyword THEN
        PUSH default_value;
        default_value^ := sfc$unlimited;
      ELSE
        default_value := ^pvt [p$default_value].value^.integer_value.value;
      IFEND;
    IFEND;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);

    avp$change_limit_field (pvt [p$field_name].value^.name_value,
          current_subutility_session_info^.validation_record_name, default_value, NIL, NIL,
          change_command_names, display_command_names, description, display_authority, change_authority,
          manage_authority, NIL, validation_file_information, status);

  PROCEND change_limit_field;
?? OLDTITLE ??
?? NEWTITLE := 'change_login_password_field', EJECT ??

{ PURPOSE:
{   This is the command processor used to alter the definition of the LOGIN_PASSWORD
{   field.

  PROCEDURE change_login_password_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chalpwf) change_login_password_field, chalpwf (
{   default_password, dpw: (BY_NAME, SECURE) name = $optional
{   default_expiration_date, ded: (BY_NAME) any of
{       key
{         none
{       keyend
{       date_time
{     anyend = $optional
{   default_expiration_interval, dei: (BY_NAME) any of
{       key
{         unlimited
{       keyend
{       integer 1..365
{     anyend = $optional
{   default_max_expiration_interval, dmaxei: (BY_NAME) any of
{       key
{         unlimited
{       keyend
{       integer 1..365
{     anyend = $optional
{   default_exp_warning_interval, dewi: (BY_NAME) any of
{       key
{         unlimited
{       keyend
{       integer 0..365
{     anyend = $optional
{   add_default_attributes, ada: (BY_NAME) any of
{       key
{         all, none
{       keyend
{       list 1..256 of name
{     anyend = none
{   delete_default_attributes, dda: (BY_NAME) any of
{       key
{         all, none
{       keyend
{       list 1..256 of name
{     anyend = none
{   description, d: (BY_NAME) string 0..256 = $optional
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 27] of clt$pdt_parameter_name,
        parameters: array [1 .. 14] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$date_time_type_qualifier,
          recend,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (4),
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (4),
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
        recend,
        type9: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type10: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type11: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type12: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type13: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type14: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 35, 47, 692], clc$command, 27, 14, 0, 0, 0, 0, 14, 'OSM$ADMV_CHALPWF'],
            [['ADA                            ', clc$abbreviation_entry, 6],
            ['ADD_DEFAULT_ATTRIBUTES         ', clc$nominal_entry, 6],
            ['CA                             ', clc$abbreviation_entry, 11],
            ['CCN                            ', clc$abbreviation_entry, 9],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 11],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 9],
            ['D                              ', clc$abbreviation_entry, 8],
            ['DA                             ', clc$abbreviation_entry, 12],
            ['DCN                            ', clc$abbreviation_entry, 10],
            ['DDA                            ', clc$abbreviation_entry, 7],
            ['DED                            ', clc$abbreviation_entry, 2],
            ['DEFAULT_EXPIRATION_DATE        ', clc$nominal_entry, 2],
            ['DEFAULT_EXPIRATION_INTERVAL    ', clc$nominal_entry, 3],
            ['DEFAULT_EXP_WARNING_INTERVAL   ', clc$nominal_entry, 5],
            ['DEFAULT_MAX_EXPIRATION_INTERVAL', clc$nominal_entry, 4],
            ['DEFAULT_PASSWORD               ', clc$nominal_entry, 1],
            ['DEI                            ', clc$abbreviation_entry, 3],
            ['DELETE_DEFAULT_ATTRIBUTES      ', clc$nominal_entry, 7],
            ['DESCRIPTION                    ', clc$nominal_entry, 8],
            ['DEWI                           ', clc$abbreviation_entry, 5],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 12],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 10],
            ['DMAXEI                         ', clc$abbreviation_entry, 4],
            ['DPW                            ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 13],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 13],
            ['STATUS                         ', clc$nominal_entry, 14]], [

{ PARAMETER 1

      [16, clc$normal_usage_entry, clc$secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 5,
            clc$optional_parameter, 0, 0],

{ PARAMETER 2

      [12, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 69, clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 84, clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [15, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 84, clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [14, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 84, clc$optional_parameter, 0, 0],

{ PARAMETER 6

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 122,
            clc$optional_default_parameter, 0, 4],

{ PARAMETER 7

      [18, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 122, clc$optional_default_parameter, 0, 4],

{ PARAMETER 8

      [19, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 8, clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [6, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_parameter, 0, 0],

{ PARAMETER 10

      [22, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_parameter, 0, 0],

{ PARAMETER 11

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 12

      [21, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 13

      [26, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 14

      [27, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$date_time_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 5, [[1, 0, clc$date_time_type],
            [$clt$date_and_or_time [clc$date, clc$time], $clt$date_time_tenses
            [clc$past, clc$present, clc$future]]]],

{ PARAMETER 3

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [1, 365, 10]]],

{ PARAMETER 4

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [1, 365, 10]]],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [0, 365, 10]]],

{ PARAMETER 6

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 21, [[1, 0, clc$list_type],
            [5, 1, 256, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'none'],

{ PARAMETER 7

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 21, [[1, 0, clc$list_type],
            [5, 1, 256, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'none'],

{ PARAMETER 8

      [[1, 0, clc$string_type], [0, 256, FALSE]],

{ PARAMETER 9

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 10

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 11

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 12

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 13

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 14

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$default_password = 1,
      p$default_expiration_date = 2,
      p$default_expiration_interval = 3,
      p$default_max_expiration_interv = 4 {DEFAULT_MAX_EXPIRATION_INTERVAL} ,
      p$default_exp_warning_interval = 5,
      p$add_default_attributes = 6,
      p$delete_default_attributes = 7,
      p$description = 8,
      p$change_command_names = 9,
      p$display_command_names = 10,
      p$change_authority = 11,
      p$display_authority = 12,
      p$manage_authority = 13,
      p$status = 14;

    VAR
      pvt: array [1 .. 14] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      current_parameter_value: ^clt$data_value,
      default_attributes_to_add: ^avt$name_list,
      default_attributes_to_delete: ^avt$name_list,
      default_expiration_date: ^ost$date_time,
      default_expiration_interval: ^pmt$time_increment,
      default_exp_pw_chg_interval: ^pmt$time_increment,
      default_exp_warning_interval: ^pmt$time_increment,
      default_max_expiration_interval: ^pmt$time_increment,
      default_password: ^avt$login_password,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      expiration_date_param_value: ^avt$date_time,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF which_parameter.specific THEN
        IF which_parameter.number = p$add_default_attributes THEN
          verify_list_of_names_value ('ADD_DEFAULT_ATTRIBUTES',
                parameter_value_table^ [p$add_default_attributes].value, status);
        ELSEIF which_parameter.number = p$delete_default_attributes THEN
          verify_list_of_names_value ('DELETE_DEFAULT_ATTRIBUTES',
                parameter_value_table^ [p$delete_default_attributes].value, status);
        ELSE

{ ignore the parameter.

        IFEND;
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := avc$login_password;

    IF pvt [p$default_password].specified THEN
      PUSH default_password;
      default_password^.encrypted := FALSE;
      default_password^.value := pvt [p$default_password].value^.name_value;
    ELSE
      default_password := NIL;
    IFEND;

    IF pvt [p$default_expiration_date].specified THEN
      PUSH default_expiration_date;
      IF pvt [p$default_expiration_date].value^.kind = clc$keyword THEN
        default_expiration_date^ := avv$unlimited_date_time;
      ELSE { clc$date_time }
        default_expiration_date^ := pvt [p$default_expiration_date].value^.date_time_value.value;
      IFEND;
    ELSE
      default_expiration_date := NIL;
    IFEND;

    IF pvt [p$default_expiration_interval].specified THEN
      PUSH default_expiration_interval;
      IF pvt [p$default_expiration_interval].value^.kind = clc$keyword THEN
        default_expiration_interval^ := avv$unlimited_time_increment;
      ELSE { clc$integer}
        default_expiration_interval^ := avv$zero_time_increment;
        default_expiration_interval^.day := pvt [p$default_expiration_interval].value^.integer_value.value;
      IFEND;
    ELSE
      default_expiration_interval := NIL;
    IFEND;

    IF pvt [p$default_max_expiration_interv].specified THEN
      PUSH default_max_expiration_interval;
      IF pvt [p$default_max_expiration_interv].value^.kind = clc$keyword THEN
        default_max_expiration_interval^ := avv$unlimited_time_increment;
      ELSE { clc$integer}
        default_max_expiration_interval^ := avv$zero_time_increment;
        default_max_expiration_interval^.day := pvt [p$default_max_expiration_interv].value^.integer_value.
              value;
      IFEND;
    ELSE
      default_max_expiration_interval := NIL;
    IFEND;

    IF pvt [p$default_exp_warning_interval].specified THEN
      PUSH default_exp_warning_interval;
      IF pvt [p$default_exp_warning_interval].value^.kind = clc$keyword THEN
        default_exp_warning_interval^ := avv$unlimited_time_increment;
      ELSE { clc$integer}
        default_exp_warning_interval^ := avv$zero_time_increment;
        default_exp_warning_interval^.day := -pvt [p$default_exp_warning_interval].value^.integer_value.value;
      IFEND;
    ELSE
      default_exp_warning_interval := NIL;
    IFEND;

    process_name_list_parameter (pvt [p$add_default_attributes].value, NIL, default_attributes_to_add);

    process_name_list_parameter (pvt [p$delete_default_attributes].value, NIL, default_attributes_to_delete);

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);

    avp$change_login_password_field (field_name, current_subutility_session_info^.validation_record_name,
          default_password, default_expiration_date, default_expiration_interval,
          default_max_expiration_interval, default_exp_warning_interval, NIL, default_attributes_to_add,
          default_attributes_to_delete, change_command_names, display_command_names, description,
          display_authority, change_authority, manage_authority, NIL, validation_file_information, status);

  PROCEND change_login_password_field;
?? OLDTITLE ??
?? NEWTITLE := 'change_name_field', EJECT ??

{ PURPOSE:
{   This is the command processor used to alter the definition of a NAME field.

  PROCEDURE change_name_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chanf) change_name_field, chanf (
{   field_name, fn: name = $required
{   add_default_names, adn: (BY_NAME, CHECK) any of
{       key
{         all, none
{       keyend
{       list 1..256 of name
{     anyend = none
{   delete_default_names, ddn: (BY_NAME, CHECK) any of
{       key
{         all, none
{       keyend
{       list 1..256 of name
{     anyend = none
{   description, d: (BY_NAME) string 0..256 = $optional
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 19] of clt$pdt_parameter_name,
        parameters: array [1 .. 10] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (4),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (4),
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type9: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type10: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 36, 23, 169], clc$command, 19, 10, 1, 0, 0, 0, 10, 'OSM$ADMV_CHANF'],
            [['ADD_DEFAULT_NAMES              ', clc$nominal_entry, 2],
            ['ADN                            ', clc$abbreviation_entry, 2],
            ['CA                             ', clc$abbreviation_entry, 7],
            ['CCN                            ', clc$abbreviation_entry, 5],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 7],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 5],
            ['D                              ', clc$abbreviation_entry, 4],
            ['DA                             ', clc$abbreviation_entry, 8],
            ['DCN                            ', clc$abbreviation_entry, 6],
            ['DDN                            ', clc$abbreviation_entry, 3],
            ['DELETE_DEFAULT_NAMES           ', clc$nominal_entry, 3],
            ['DESCRIPTION                    ', clc$nominal_entry, 4],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 8],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 6],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 9],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 9],
            ['STATUS                         ', clc$nominal_entry, 10]], [

{ PARAMETER 1

      [15, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 122,
            clc$optional_default_parameter, 0, 4],

{ PARAMETER 3

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 122, clc$optional_default_parameter, 0, 4],

{ PARAMETER 4

      [12, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 8, clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [6, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_parameter, 0, 0],

{ PARAMETER 6

      [14, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_parameter, 0, 0],

{ PARAMETER 7

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [18, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 10

      [19, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 21, [[1, 0, clc$list_type],
            [5, 1, 256, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'none'],

{ PARAMETER 3

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 21, [[1, 0, clc$list_type],
            [5, 1, 256, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'none'],

{ PARAMETER 4

      [[1, 0, clc$string_type], [0, 256, FALSE]],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 6

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 7

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 8

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 9

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 10

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$add_default_names = 2,
      p$delete_default_names = 3,
      p$description = 4,
      p$change_command_names = 5,
      p$display_command_names = 6,
      p$change_authority = 7,
      p$display_authority = 8,
      p$manage_authority = 9,
      p$status = 10;

    VAR
      pvt: array [1 .. 10] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      default_names_to_add: ^avt$name_list,
      default_names_to_delete: ^avt$name_list,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF which_parameter.specific THEN
        IF which_parameter.number = p$add_default_names THEN
          verify_list_of_names_value ('ADD_DEFAULT_NAMES', parameter_value_table^ [p$add_default_names].value,
                status);
        ELSEIF which_parameter.number = p$delete_default_names THEN
          verify_list_of_names_value ('DELETE_DEFAULT_NAMES',
                parameter_value_table^ [p$delete_default_names].value, status);
        ELSE

{ ignore the parameter.

        IFEND;
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    process_name_list_parameter (pvt [p$add_default_names].value, NIL, default_names_to_add);

    process_name_list_parameter (pvt [p$delete_default_names].value, NIL, default_names_to_delete);

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);

    avp$change_name_field (field_name, current_subutility_session_info^.validation_record_name,
          default_names_to_add, default_names_to_delete, NIL, NIL, NIL, NIL, change_command_names,
          display_command_names, description, display_authority, change_authority, manage_authority, NIL,
          validation_file_information, status);

  PROCEND change_name_field;
?? OLDTITLE ??
?? NEWTITLE := 'change_real_field', EJECT ??

{ PURPOSE:
{   This is the command processor used to alter the definition of a REAL field.

  PROCEDURE change_real_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_charf) change_real_field, charf (
{   field_name, fn: name = $required
{   default_value, dv: (BY_NAME) real = $optional
{   display_field_width, dfw: (BY_NAME) list 1..2 of integer 1..25 = $optional
{   description, d: (BY_NAME) string 0..256 = $optional
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 19] of clt$pdt_parameter_name,
        parameters: array [1 .. 10] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$real_type_qualifier,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$list_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type9: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type10: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 37, 3, 669], clc$command, 19, 10, 1, 0, 0, 0, 10, 'OSM$ADMV_CHARF'],
            [['CA                             ', clc$abbreviation_entry, 7],
            ['CCN                            ', clc$abbreviation_entry, 5],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 7],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 5],
            ['D                              ', clc$abbreviation_entry, 4],
            ['DA                             ', clc$abbreviation_entry, 8],
            ['DCN                            ', clc$abbreviation_entry, 6],
            ['DEFAULT_VALUE                  ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 4],
            ['DFW                            ', clc$abbreviation_entry, 3],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 8],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 6],
            ['DISPLAY_FIELD_WIDTH            ', clc$nominal_entry, 3],
            ['DV                             ', clc$abbreviation_entry, 2],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 9],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 9],
            ['STATUS                         ', clc$nominal_entry, 10]], [

{ PARAMETER 1

      [15, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 35,
            clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 36, clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_parameter, 0, 0],

{ PARAMETER 6

      [12, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_parameter, 0, 0],

{ PARAMETER 7

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [18, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 10

      [19, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$real_type], [[{-$INFINITY} 3, [[0D000(16), 0(16)], [0D000(16), 0(16)]]],
            [{$INFINITY} 3, [[5000(16), 0(16)], [5000(16), 0(16)]]]]],

{ PARAMETER 3

      [[1, 0, clc$list_type], [20, 1, 2, FALSE], [[1, 0, clc$integer_type], [1, 25, 10]]],

{ PARAMETER 4

      [[1, 0, clc$string_type], [0, 256, FALSE]],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 6

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 7

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 8

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 9

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 10

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_value = 2,
      p$display_field_width = 3,
      p$description = 4,
      p$change_command_names = 5,
      p$display_command_names = 6,
      p$change_authority = 7,
      p$display_authority = 8,
      p$manage_authority = 9,
      p$status = 10;

    VAR
      pvt: array [1 .. 10] of clt$parameter_value;

    TYPE
      long_real_type = record
        first: real,
        second: real,
      recend;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      default_long_real_value: long_real_type,
      default_value: ^real,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      display_format: ^avt$numeric_display_format,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    IF pvt [p$default_value].specified THEN
      #UNCHECKED_CONVERSION (pvt [p$default_value].value^.real_value.value, default_long_real_value);
      PUSH default_value;
      default_value^ := default_long_real_value.first;
    ELSE
      default_value := NIL;
    IFEND;

    IF pvt [p$display_field_width].specified THEN
      PUSH display_format;
      IF clp$count_list_elements (pvt [p$display_field_width].value) = 1 THEN
        display_format^.kind := avc$floating_point_format;
        display_format^.field_size := pvt [p$display_field_width].value^.element_value^.integer_value.value;
      ELSE
        display_format^.kind := avc$fixed_point_format;
        display_format^.field_size := pvt [p$display_field_width].value^.element_value^.integer_value.value;
        display_format^.fraction_size := pvt [p$display_field_width].value^.link^.element_value^.
              integer_value.value;
      IFEND;
    ELSE
      display_format := NIL;
    IFEND;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);

    avp$change_real_field (field_name, current_subutility_session_info^.validation_record_name, default_value,
          NIL, NIL, display_format, change_command_names, display_command_names, description,
          display_authority, change_authority, manage_authority, NIL, validation_file_information, status);

  PROCEND change_real_field;
?? OLDTITLE ??
?? NEWTITLE := 'change_ring_privilege_field', EJECT ??

{ PURPOSE:
{   This is the command processor used to alter the definition of the RING_PRIVILEGE
{   field.

  PROCEDURE change_ring_privilege_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_charpf) change_ring_privilege_field, charpf (
{   default_minimum_ring, dminr: (BY_NAME) integer 4..13 = $optional
{   default_nominal_ring, dnr: (BY_NAME) integer 4..13 = $optional
{   description, d: (BY_NAME) string 0..256 = $optional
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 17] of clt$pdt_parameter_name,
        parameters: array [1 .. 9] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$integer_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$integer_type_qualifier,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type9: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 37, 32, 505], clc$command, 17, 9, 0, 0, 0, 0, 9, 'OSM$ADMV_CHARPF'],
            [['CA                             ', clc$abbreviation_entry, 6],
            ['CCN                            ', clc$abbreviation_entry, 4],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 6],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 4],
            ['D                              ', clc$abbreviation_entry, 3],
            ['DA                             ', clc$abbreviation_entry, 7],
            ['DCN                            ', clc$abbreviation_entry, 5],
            ['DEFAULT_MINIMUM_RING           ', clc$nominal_entry, 1],
            ['DEFAULT_NOMINAL_RING           ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 3],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 7],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 5],
            ['DMINR                          ', clc$abbreviation_entry, 1],
            ['DNR                            ', clc$abbreviation_entry, 2],
            ['MA                             ', clc$abbreviation_entry, 8],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 8],
            ['STATUS                         ', clc$nominal_entry, 9]], [

{ PARAMETER 1

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 20,
            clc$optional_parameter, 0, 0],

{ PARAMETER 2

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 20,
            clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 8, clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [12, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_parameter, 0, 0],

{ PARAMETER 6

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 7

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [16, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [17, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$integer_type], [4, 13, 10]],

{ PARAMETER 2

      [[1, 0, clc$integer_type], [4, 13, 10]],

{ PARAMETER 3

      [[1, 0, clc$string_type], [0, 256, FALSE]],

{ PARAMETER 4

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 6

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 7

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 8

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 9

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$default_minimum_ring = 1,
      p$default_nominal_ring = 2,
      p$description = 3,
      p$change_command_names = 4,
      p$display_command_names = 5,
      p$change_authority = 6,
      p$display_authority = 7,
      p$manage_authority = 8,
      p$status = 9;

    VAR
      pvt: array [1 .. 9] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      default_minimum_ring: ^ost$ring,
      default_nominal_ring: ^ost$ring,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := avc$ring_privileges;

    IF pvt [p$default_minimum_ring].specified THEN
      PUSH default_minimum_ring;
      default_minimum_ring^ := pvt [p$default_minimum_ring].value^.integer_value.value;
    ELSE
      default_minimum_ring := NIL;
    IFEND;

    IF pvt [p$default_nominal_ring].specified THEN
      PUSH default_nominal_ring;
      default_nominal_ring^ := pvt [p$default_nominal_ring].value^.integer_value.value;
    ELSE
      default_nominal_ring := NIL;
    IFEND;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);

    avp$change_ring_privilege_field (field_name, current_subutility_session_info^.validation_record_name,
          default_minimum_ring, default_nominal_ring, change_command_names, display_command_names,
          description, display_authority, change_authority, manage_authority, NIL,
          validation_file_information, status);

  PROCEND change_ring_privilege_field;
?? OLDTITLE ??
?? NEWTITLE := 'change_string_field', EJECT ??

{ PURPOSE:
{   This is the command processor used to alter the definition of a STRING field.

  PROCEDURE change_string_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chasf) change_string_field, chasf (
{   field_name, fn: name = $required
{   default_value, dv: (BY_NAME) string 0..256 = $optional
{   description, d: (BY_NAME) string 0..256 = $optional
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = $optional
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 17] of clt$pdt_parameter_name,
        parameters: array [1 .. 9] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type9: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 37, 59, 313], clc$command, 17, 9, 1, 0, 0, 0, 9, 'OSM$ADMV_CHASF'],
            [['CA                             ', clc$abbreviation_entry, 6],
            ['CCN                            ', clc$abbreviation_entry, 4],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 6],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 4],
            ['D                              ', clc$abbreviation_entry, 3],
            ['DA                             ', clc$abbreviation_entry, 7],
            ['DCN                            ', clc$abbreviation_entry, 5],
            ['DEFAULT_VALUE                  ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 3],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 7],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 5],
            ['DV                             ', clc$abbreviation_entry, 2],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 8],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 8],
            ['STATUS                         ', clc$nominal_entry, 9]], [

{ PARAMETER 1

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_parameter, 0, 0],

{ PARAMETER 6

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 7

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [16, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [17, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$string_type], [0, 256, FALSE]],

{ PARAMETER 3

      [[1, 0, clc$string_type], [0, 256, FALSE]],

{ PARAMETER 4

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]]],

{ PARAMETER 6

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 7

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 8

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 9

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_value = 2,
      p$description = 3,
      p$change_command_names = 4,
      p$display_command_names = 5,
      p$change_authority = 6,
      p$display_authority = 7,
      p$manage_authority = 8,
      p$status = 9;

    VAR
      pvt: array [1 .. 9] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      default_value: ^ost$string,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    IF pvt [p$default_value].specified THEN
      PUSH default_value;
      default_value^.value := pvt [p$default_value].value^.string_value^;
      default_value^.size := #SIZE (pvt [p$default_value].value^.string_value^);
    ELSE
      default_value := NIL;
    IFEND;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);

    avp$change_string_field (field_name, current_subutility_session_info^.validation_record_name,
          default_value, NIL, NIL, change_command_names, display_command_names, description,
          display_authority, change_authority, manage_authority, NIL, validation_file_information, status);

  PROCEND change_string_field;
?? OLDTITLE ??
?? NEWTITLE := 'create_accumulating_limit_field', EJECT ??

{ PURPOSE:
{   This is the command processor used create an ACCUMULATING_LIMIT field.

  PROCEDURE create_accumulating_limit_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_crealf) create_accumulating_limit_field, crealf (
{   field_name, fn: name = $required
{   limit_name, ln: (BY_NAME) name = $optional
{   default_job_maximum_limit, djmaxl: (BY_NAME) any of
{       key
{         unlimited
{       keyend
{       integer 0..osc$max_integer
{     anyend = unlimited
{   default_job_warning_limit, djwl: (BY_NAME) any of
{       key
{         unlimited
{       keyend
{       integer 0..osc$max_integer
{     anyend = unlimited
{   default_total_limit, dtl: (BY_NAME) any of
{       key
{         unlimited
{       keyend
{       integer 0..osc$max_integer
{     anyend = unlimited
{   limit_application, la: (BY_NAME) key
{       (job_limits_apply, jla)
{       (total_limit_applies, tla)
{       (job_and_total_limits_apply, jatla)
{     keyend = job_and_total_limits_apply
{   job_limit_value_range, jlvr: (BY_NAME) range of any of
{       key
{         unlimited
{       keyend
{       integer 0..osc$max_integer
{     anyend = (0  .. unlimited)
{   update_statistic, update_statistics, us: (BY_NAME, CHECK) any of
{       key
{         none
{       keyend
{       list of statistic_code
{     anyend = none
{   total_limit_prevents_login, tlpl: (BY_NAME) boolean = true
{   description, d: (BY_NAME) string 0..256 = ''
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 32] of clt$pdt_parameter_name,
        parameters: array [1 .. 16] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
          default_value: string (9),
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
          default_value: string (9),
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
          default_value: string (9),
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 6] of clt$keyword_specification,
          default_value: string (26),
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$range_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 1] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$integer_type_qualifier,
            recend,
          recend,
          default_value: string (17),
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
            recend,
          recend,
          default_value: string (4),
        recend,
        type9: record
          header: clt$type_specification_header,
          default_value: string (4),
        recend,
        type10: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
          default_value: string (2),
        recend,
        type11: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type12: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type13: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type14: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type15: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type16: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 18, 15, 59, 37, 832], clc$command, 32, 16, 1, 0, 0, 0, 16, 'OSM$ADMV_CREALF'],
            [['CA                             ', clc$abbreviation_entry, 13],
            ['CCN                            ', clc$abbreviation_entry, 11],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 13],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 11],
            ['D                              ', clc$abbreviation_entry, 10],
            ['DA                             ', clc$abbreviation_entry, 14],
            ['DCN                            ', clc$abbreviation_entry, 12],
            ['DEFAULT_JOB_MAXIMUM_LIMIT      ', clc$nominal_entry, 3],
            ['DEFAULT_JOB_WARNING_LIMIT      ', clc$nominal_entry, 4],
            ['DEFAULT_TOTAL_LIMIT            ', clc$nominal_entry, 5],
            ['DESCRIPTION                    ', clc$nominal_entry, 10],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 14],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 12],
            ['DJMAXL                         ', clc$abbreviation_entry, 3],
            ['DJWL                           ', clc$abbreviation_entry, 4],
            ['DTL                            ', clc$abbreviation_entry, 5],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['JLVR                           ', clc$abbreviation_entry, 7],
            ['JOB_LIMIT_VALUE_RANGE          ', clc$nominal_entry, 7],
            ['LA                             ', clc$abbreviation_entry, 6],
            ['LIMIT_APPLICATION              ', clc$nominal_entry, 6],
            ['LIMIT_NAME                     ', clc$nominal_entry, 2],
            ['LN                             ', clc$abbreviation_entry, 2],
            ['MA                             ', clc$abbreviation_entry, 15],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 15],
            ['STATUS                         ', clc$nominal_entry, 16],
            ['TLPL                           ', clc$abbreviation_entry, 9],
            ['TOTAL_LIMIT_PREVENTS_LOGIN     ', clc$nominal_entry, 9],
            ['UPDATE_STATISTIC               ', clc$nominal_entry, 8],
            ['UPDATE_STATISTICS              ', clc$alias_entry, 8],
            ['US                             ', clc$abbreviation_entry, 8]], [

{ PARAMETER 1

      [17, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [23, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$optional_parameter, 0, 0],

{ PARAMETER 3

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 84,
            clc$optional_default_parameter, 0, 9],

{ PARAMETER 4

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 84,
            clc$optional_default_parameter, 0, 9],

{ PARAMETER 5

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 84, clc$optional_default_parameter, 0, 9],

{ PARAMETER 6

      [22, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 229, clc$optional_default_parameter, 0, 26],

{ PARAMETER 7

      [20, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 91, clc$optional_default_parameter, 0, 17],

{ PARAMETER 8

      [30, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$extended_parameter_checking, 83, clc$optional_default_parameter, 0, 4],

{ PARAMETER 9

      [29, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_default_parameter, 0, 4],

{ PARAMETER 10

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 8, clc$optional_default_parameter, 0, 2],

{ PARAMETER 11

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_default_parameter, 0, 7],

{ PARAMETER 12

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_default_parameter, 0, 7],

{ PARAMETER 13

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 14

      [12, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 15

      [26, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 16

      [27, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 3

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [0, osc$max_integer, 10]],
            'unlimited'],

{ PARAMETER 4

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [0, osc$max_integer, 10]],
            'unlimited'],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [0, osc$max_integer, 10]],
            'unlimited'],

{ PARAMETER 6

      [[1, 0, clc$keyword_type], [6], [['JATLA                          ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['JLA                            ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['JOB_AND_TOTAL_LIMITS_APPLY     ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['JOB_LIMITS_APPLY               ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['TLA                            ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['TOTAL_LIMIT_APPLIES            ', clc$nominal_entry,
            clc$normal_usage_entry, 2]], 'job_and_total_limits_apply'],

{ PARAMETER 7

      [[1, 0, clc$range_type], [84], [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE,
            2], 44, [[1, 0, clc$keyword_type], [1], [['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [0, osc$max_integer, 10]]],
            '(0  .. unlimited)'],

{ PARAMETER 8

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 19, [[1, 0, clc$list_type],
            [3, 1, clc$max_list_size, FALSE], [[1, 0, clc$statistic_code_type]]], 'none'],

{ PARAMETER 9

      [[1, 0, clc$boolean_type], 'true'],

{ PARAMETER 10

      [[1, 0, clc$string_type], [0, 256, FALSE], ''''''],

{ PARAMETER 11

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 12

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 13

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 14

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 15

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 16

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$limit_name = 2,
      p$default_job_maximum_limit = 3,
      p$default_job_warning_limit = 4,
      p$default_total_limit = 5,
      p$limit_application = 6,
      p$job_limit_value_range = 7,
      p$update_statistic = 8,
      p$total_limit_prevents_login = 9,
      p$description = 10,
      p$change_command_names = 11,
      p$display_command_names = 12,
      p$change_authority = 13,
      p$display_authority = 14,
      p$manage_authority = 15,
      p$status = 16;

    VAR
      pvt: array [1 .. 16] of clt$parameter_value;

    VAR
      total_limit_applies: ^boolean,
      total_limit_stops_login: ^boolean,
      change_command_names: ^avt$name_list,
      change_authority: ^avt$validation_authority,
      common_job_classes: ^avt$name_list,
      current_parameter_value: ^clt$data_value,
      altered_pdt: ^clt$parameter_description_table,
      pdt_changes: ^clt$pdt_changes,
      default_job_warning_limit: ^avt$limit_value,
      default_job_maximum_limit: ^avt$limit_value,
      default_total_limit: ^avt$limit_value,
      delete_authority: ^avt$validation_authority,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      field_name: ost$name,
      index: integer,
      job_limits_apply: ^boolean,
      limit_name: ^ost$name,
      limit_update_statistics: ^sft$limit_update_statistics,
      manage_authority: ^avt$validation_authority,
      maximum_job_limit_value: ^avt$limit_value,
      minimum_job_limit_value: ^avt$limit_value;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$update_statistic) THEN
        verify_statistic_code_value ('UPDATE_STATISTIC', parameter_value_table^ [p$update_statistic].value,
              status);
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF current_subutility_session_info^.validation_record_name <> avc$user_record_name THEN

{ Hide parameters dealing with job limits.

      PUSH pdt_changes: [1 .. 6];
      pdt_changes^ [1].number := p$default_job_maximum_limit;
      pdt_changes^ [1].kind := clc$pdtc_availability;
      pdt_changes^ [1].availability := clc$hidden_entry;
      pdt_changes^ [2].number := p$default_job_warning_limit;
      pdt_changes^ [2].kind := clc$pdtc_availability;
      pdt_changes^ [2].availability := clc$hidden_entry;
      pdt_changes^ [3].number := p$limit_name;
      pdt_changes^ [3].kind := clc$pdtc_availability;
      pdt_changes^ [3].availability := clc$hidden_entry;
      pdt_changes^ [4].number := p$limit_application;
      pdt_changes^ [4].kind := clc$pdtc_availability;
      pdt_changes^ [4].availability := clc$hidden_entry;
      pdt_changes^ [5].number := p$update_statistic;
      pdt_changes^ [5].kind := clc$pdtc_availability;
      pdt_changes^ [5].availability := clc$hidden_entry;
      pdt_changes^ [6].number := p$job_limit_value_range;
      pdt_changes^ [6].kind := clc$pdtc_availability;
      pdt_changes^ [6].availability := clc$hidden_entry;

      clp$change_pdt (altered_pdt, pdt_changes^, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    PUSH limit_name;
    IF current_subutility_session_info^.validation_record_name = avc$user_record_name THEN
      IF pvt [p$limit_name].specified THEN
        limit_name^ := pvt [p$limit_name].value^.name_value;
      ELSE
        limit_name^ := field_name;
      IFEND;
    ELSE
      limit_name^ := osc$null_name;
    IFEND;

{ Determine limit application.  If creating the limit in a user record, use the
{ values specified on the command, otherwise only allow total limits.

    IF current_subutility_session_info^.validation_record_name = avc$user_record_name THEN
      process_limit_appl_parameter (pvt [p$limit_application].value, job_limits_apply, total_limit_applies);
    ELSE
      PUSH job_limits_apply;
      job_limits_apply^ := FALSE;
      PUSH total_limit_applies;
      total_limit_applies^ := TRUE;
    IFEND;

    IF current_subutility_session_info^.validation_record_name = avc$user_record_name THEN
      process_limit_parameter (pvt [p$default_job_maximum_limit].value, NIL, default_job_maximum_limit);
      process_limit_parameter (pvt [p$default_job_warning_limit].value, NIL, default_job_warning_limit);
    ELSE
      PUSH default_job_warning_limit;
      default_job_warning_limit^ := sfc$unlimited;
      PUSH default_job_maximum_limit;
      default_job_maximum_limit^ := sfc$unlimited;
    IFEND;

    process_limit_parameter (pvt [p$default_total_limit].value, NIL, default_total_limit);

    total_limit_stops_login := ^pvt [p$total_limit_prevents_login].value^.boolean_value.value;

    IF current_subutility_session_info^.validation_record_name = avc$user_record_name THEN
      process_limit_range_parameter (pvt [p$job_limit_value_range].value, minimum_job_limit_value,
            maximum_job_limit_value);
    ELSE
      PUSH minimum_job_limit_value;
      PUSH maximum_job_limit_value;
      minimum_job_limit_value^ := 0;
      maximum_job_limit_value^ := sfc$unlimited;
    IFEND;

    IF current_subutility_session_info^.validation_record_name = avc$user_record_name THEN
      IF pvt [p$update_statistic].value^.kind = clc$keyword THEN
        limit_update_statistics := NIL;
      ELSE { list of statistic_code }
        PUSH limit_update_statistics: [1 .. clp$count_list_elements (pvt [p$update_statistic].value)];
        current_parameter_value := pvt [p$update_statistic].value;
        index := 0;
        REPEAT
          index := index + 1;
          limit_update_statistics^ [index].statistic_code :=
                current_parameter_value^.element_value^.statistic_code_value;
          limit_update_statistics^ [index].update_kind := sfc$update_based_on_counter;
          limit_update_statistics^ [index].counter := 1;
          current_parameter_value := current_parameter_value^.link;
        UNTIL current_parameter_value = NIL;
      IFEND;
    ELSE
      limit_update_statistics := NIL;
    IFEND;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);
    IF (display_authority = NIL) THEN
      PUSH display_authority;
      IF current_subutility_session_info^.validation_record_name = avc$user_record_name THEN
        display_authority^ := avc$user_authority;
      ELSEIF (current_subutility_session_info^.validation_record_name = avc$account_record_name) OR
            (current_subutility_session_info^.validation_record_name = avc$account_member_record_name) THEN
        display_authority^ := avc$account_admin_authority;
      ELSE
        display_authority^ := avc$project_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$change_authority].value, change_authority);
    IF change_authority = NIL THEN
      PUSH change_authority;
      IF avp$system_administrator () THEN
        change_authority^ := avc$system_admin_authority;
      ELSE
        change_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);
    IF manage_authority = NIL THEN
      PUSH manage_authority;
      IF avp$system_administrator () THEN
        manage_authority^ := avc$system_admin_authority;
      ELSE
        manage_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    PUSH delete_authority;
    IF avp$system_administrator () THEN
      delete_authority^ := avc$system_admin_authority;
    ELSE
      delete_authority^ := avc$family_admin_authority;
    IFEND;

    avp$create_accum_limit_field (field_name, current_subutility_session_info^.validation_record_name,
          default_job_warning_limit^, default_job_maximum_limit^, default_total_limit^, limit_name^,
          job_limits_apply^, limit_update_statistics, minimum_job_limit_value^, maximum_job_limit_value^,
          total_limit_applies^, total_limit_stops_login^, change_command_names^, display_command_names^,
          description^, display_authority^, change_authority^, manage_authority^, delete_authority^,
          validation_file_information, status);

  PROCEND create_accumulating_limit_field;
?? OLDTITLE ??
?? NEWTITLE := 'create_capability_field', EJECT ??

{ PURPOSE:
{   This is the command processor used create a CAPABILITY field.

  PROCEDURE create_capability_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_crecf) create_capability_field, crecf (
{   field_name, fn: name = $required
{   default_value, dv: (BY_NAME) key
{       (exclude, e)
{       (include, i)
{     keyend = exclude
{   description, d: (BY_NAME) string 0..256 = ''
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 11] of clt$pdt_parameter_name,
        parameters: array [1 .. 6] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
          default_value: string (7),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
          default_value: string (2),
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type6: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 39, 35, 797], clc$command, 11, 6, 1, 0, 0, 0, 6, 'OSM$ADMV_CRECF'],
            [['CA                             ', clc$abbreviation_entry, 4],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 4],
            ['D                              ', clc$abbreviation_entry, 3],
            ['DEFAULT_VALUE                  ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 3],
            ['DV                             ', clc$abbreviation_entry, 2],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 5],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 5],
            ['STATUS                         ', clc$nominal_entry, 6]], [

{ PARAMETER 1

      [7, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 155,
            clc$optional_default_parameter, 0, 7],

{ PARAMETER 3

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_default_parameter, 0, 2],

{ PARAMETER 4

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 5

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 6

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$keyword_type], [4], [['E                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['EXCLUDE                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['I                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['INCLUDE                        ', clc$nominal_entry,
            clc$normal_usage_entry, 2]], 'exclude'],

{ PARAMETER 3

      [[1, 0, clc$string_type], [0, 256, FALSE], ''''''],

{ PARAMETER 4

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 5

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 6

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_value = 2,
      p$description = 3,
      p$change_authority = 4,
      p$manage_authority = 5,
      p$status = 6;

    VAR
      pvt: array [1 .. 6] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      default_value: ^boolean,
      delete_authority: ^avt$validation_authority,
      description: ^ost$string,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 1];
    pdt_changes^ [1].number := p$change_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    PUSH default_value;
    IF pvt [p$default_value].value^.keyword_value = 'INCLUDE' THEN
      default_value^ := TRUE;
    ELSE
      default_value^ := FALSE;
    IFEND;

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$change_authority].value, change_authority);
    IF change_authority = NIL THEN
      PUSH change_authority;
      IF avp$system_administrator () THEN
        change_authority^ := avc$system_admin_authority;
      ELSE
        change_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);
    IF manage_authority = NIL THEN
      PUSH manage_authority;
      IF avp$system_administrator () THEN
        manage_authority^ := avc$system_admin_authority;
      ELSE
        manage_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    PUSH delete_authority;
    IF avp$system_administrator () THEN
      delete_authority^ := avc$system_admin_authority;
    ELSE
      delete_authority^ := avc$family_admin_authority;
    IFEND;

    avp$create_capability_field (field_name, current_subutility_session_info^.validation_record_name,
          default_value^, description^, avc$user_authority, change_authority^, manage_authority^,
          delete_authority^, validation_file_information, status);

  PROCEND create_capability_field;
?? OLDTITLE ??
?? NEWTITLE := 'create_date_time_field', EJECT ??

{ PURPOSE:
{   This is the command processor used create a DATE_TIME field.

  PROCEDURE create_date_time_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_credtf) create_date_time_field, credtf (
{   field_name, fn: name = $required
{   default_value, dv: range of date_time = $required
{   range, r: (BY_NAME) boolean = false
{   date_time_application, dta: (BY_NAME) key
{       (date_and_time_apply, data)
{       (date_applies, da)
{       (time_applies, ta)
{     keyend = date_and_time_apply
{   date_display_format, ddf: (BY_NAME) key
{       (day_month_year, dmy)
{       (iso_date, iso, isod, id)
{       (month, m)
{       (month_day_year, mdy)
{       (ordinal, o), default
{     keyend = default
{   time_display_format, tdf: (BY_NAME) key
{       (ampm, a)
{       (hour_minute_second, hms)
{       (iso_time, iso, isot, it)
{       (millisecond, ms), default
{     keyend = default
{   description, d: (BY_NAME) string 0..256 = ''
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 25] of clt$pdt_parameter_name,
      parameters: array [1 .. 13] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type2: record
        header: clt$type_specification_header,
        qualifier: clt$range_type_qualifier,
        element_type_spec: record
          header: clt$type_specification_header,
          qualifier: clt$date_time_type_qualifier,
        recend,
      recend,
      type3: record
        header: clt$type_specification_header,
        default_value: string (5),
      recend,
      type4: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 6] of clt$keyword_specification,
        default_value: string (19),
      recend,
      type5: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 13] of clt$keyword_specification,
        default_value: string (7),
      recend,
      type6: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 11] of clt$keyword_specification,
        default_value: string (7),
      recend,
      type7: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
        default_value: string (2),
      recend,
      type8: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 1] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$list_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        default_value: string (7),
      recend,
      type9: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 1] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$list_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        default_value: string (7),
      recend,
      type10: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 14] of clt$keyword_specification,
      recend,
      type11: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 14] of clt$keyword_specification,
      recend,
      type12: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 4] of clt$keyword_specification,
      recend,
      type13: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [88, 6, 3, 12, 33, 31, 390],
    clc$command, 25, 13, 2, 0, 0, 0, 13, 'OSM$ADMV_CREDTF'], [
    ['CA                             ',clc$abbreviation_entry, 10],
    ['CCN                            ',clc$abbreviation_entry, 8],
    ['CHANGE_AUTHORITY               ',clc$nominal_entry, 10],
    ['CHANGE_COMMAND_NAMES           ',clc$nominal_entry, 8],
    ['D                              ',clc$abbreviation_entry, 7],
    ['DA                             ',clc$abbreviation_entry, 11],
    ['DATE_DISPLAY_FORMAT            ',clc$nominal_entry, 5],
    ['DATE_TIME_APPLICATION          ',clc$nominal_entry, 4],
    ['DCN                            ',clc$abbreviation_entry, 9],
    ['DDF                            ',clc$abbreviation_entry, 5],
    ['DEFAULT_VALUE                  ',clc$nominal_entry, 2],
    ['DESCRIPTION                    ',clc$nominal_entry, 7],
    ['DISPLAY_AUTHORITY              ',clc$nominal_entry, 11],
    ['DISPLAY_COMMAND_NAMES          ',clc$nominal_entry, 9],
    ['DTA                            ',clc$abbreviation_entry, 4],
    ['DV                             ',clc$abbreviation_entry, 2],
    ['FIELD_NAME                     ',clc$nominal_entry, 1],
    ['FN                             ',clc$abbreviation_entry, 1],
    ['MA                             ',clc$abbreviation_entry, 12],
    ['MANAGE_AUTHORITY               ',clc$nominal_entry, 12],
    ['R                              ',clc$abbreviation_entry, 3],
    ['RANGE                          ',clc$nominal_entry, 3],
    ['STATUS                         ',clc$nominal_entry, 13],
    ['TDF                            ',clc$abbreviation_entry, 6],
    ['TIME_DISPLAY_FORMAT            ',clc$nominal_entry, 6]],
    [
{ PARAMETER 1
    [17, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 5, clc$required_parameter, 0
  , 0],
{ PARAMETER 2
    [11, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 12, clc$required_parameter,
  0, 0],
{ PARAMETER 3
    [22, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_default_parameter, 0, 5],
{ PARAMETER 4
    [8, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 229,
  clc$optional_default_parameter, 0, 19],
{ PARAMETER 5
    [7, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 488,
  clc$optional_default_parameter, 0, 7],
{ PARAMETER 6
    [25, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 414,
  clc$optional_default_parameter, 0, 7],
{ PARAMETER 7
    [12, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
  clc$optional_default_parameter, 0, 2],
{ PARAMETER 8
    [4, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
  clc$optional_default_parameter, 0, 7],
{ PARAMETER 9
    [14, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
  clc$optional_default_parameter, 0, 7],
{ PARAMETER 10
    [3, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
  clc$optional_parameter, 0, 0],
{ PARAMETER 11
    [13, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
  clc$optional_parameter, 0, 0],
{ PARAMETER 12
    [20, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 155,
  clc$optional_parameter, 0, 0],
{ PARAMETER 13
    [23, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_parameter, 0, 0]],
{ PARAMETER 1
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 2
    [[1, 0, clc$range_type], [5],
      [[1, 0, clc$date_time_type], [$clt$date_and_or_time [clc$date, clc$time], $clt$date_time_tenses [
  clc$past, clc$present, clc$future]]]
    ],
{ PARAMETER 3
    [[1, 0, clc$boolean_type],
    'false'],
{ PARAMETER 4
    [[1, 0, clc$keyword_type], [6], [
    ['DA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['DATA                           ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['DATE_AND_TIME_APPLY            ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['DATE_APPLIES                   ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['TA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['TIME_APPLIES                   ', clc$nominal_entry, clc$normal_usage_entry, 3]]
    ,
    'date_and_time_apply'],
{ PARAMETER 5
    [[1, 0, clc$keyword_type], [13], [
    ['DAY_MONTH_YEAR                 ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['DEFAULT                        ', clc$nominal_entry, clc$normal_usage_entry, 6],
    ['DMY                            ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['ID                             ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['ISO                            ', clc$alias_entry, clc$normal_usage_entry, 2],
    ['ISOD                           ', clc$alias_entry, clc$normal_usage_entry, 2],
    ['ISO_DATE                       ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['M                              ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['MDY                            ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
    ['MONTH                          ', clc$nominal_entry, clc$normal_usage_entry, 3],
    ['MONTH_DAY_YEAR                 ', clc$nominal_entry, clc$normal_usage_entry, 4],
    ['O                              ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
    ['ORDINAL                        ', clc$nominal_entry, clc$normal_usage_entry, 5]]
    ,
    'default'],
{ PARAMETER 6
    [[1, 0, clc$keyword_type], [11], [
    ['A                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['AMPM                           ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['DEFAULT                        ', clc$nominal_entry, clc$normal_usage_entry, 5],
    ['HMS                            ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['HOUR_MINUTE_SECOND             ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['ISO                            ', clc$alias_entry, clc$normal_usage_entry, 3],
    ['ISOT                           ', clc$alias_entry, clc$normal_usage_entry, 3],
    ['ISO_TIME                       ', clc$nominal_entry, clc$normal_usage_entry, 3],
    ['IT                             ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['MILLISECOND                    ', clc$nominal_entry, clc$normal_usage_entry, 4],
    ['MS                             ', clc$abbreviation_entry, clc$normal_usage_entry, 4]]
    ,
    'default'],
{ PARAMETER 7
    [[1, 0, clc$string_type], [0, 256, FALSE],
    ''''''],
{ PARAMETER 8
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['DEFAULT                        ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    21, [[1, 0, clc$list_type], [5, 1, clc$max_list_size, FALSE],
        [[1, 0, clc$name_type], [1, osc$max_name_size]]
      ]
    ,
    'default'],
{ PARAMETER 9
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['DEFAULT                        ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    21, [[1, 0, clc$list_type], [5, 1, clc$max_list_size, FALSE],
        [[1, 0, clc$name_type], [1, osc$max_name_size]]
      ]
    ,
    'default'],
{ PARAMETER 10
    [[1, 0, clc$keyword_type], [14], [
    ['AA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
    ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry, clc$normal_usage_entry, 5],
    ['FA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['FAMILY_ADMINISTRATION          ', clc$nominal_entry, clc$normal_usage_entry, 3],
    ['PA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 6],
    ['PROJECT_ADMINISTRATION         ', clc$nominal_entry, clc$normal_usage_entry, 6],
    ['S                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['SA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['SYSTEM                         ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['U                              ', clc$abbreviation_entry, clc$normal_usage_entry, 7],
    ['UA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
    ['USER                           ', clc$nominal_entry, clc$normal_usage_entry, 7],
    ['USER_ADMINISTRATION            ', clc$nominal_entry, clc$normal_usage_entry, 4]]
    ],
{ PARAMETER 11
    [[1, 0, clc$keyword_type], [14], [
    ['AA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
    ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry, clc$normal_usage_entry, 5],
    ['FA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['FAMILY_ADMINISTRATION          ', clc$nominal_entry, clc$normal_usage_entry, 3],
    ['PA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 6],
    ['PROJECT_ADMINISTRATION         ', clc$nominal_entry, clc$normal_usage_entry, 6],
    ['S                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['SA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['SYSTEM                         ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['U                              ', clc$abbreviation_entry, clc$normal_usage_entry, 7],
    ['UA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
    ['USER                           ', clc$nominal_entry, clc$normal_usage_entry, 7],
    ['USER_ADMINISTRATION            ', clc$nominal_entry, clc$normal_usage_entry, 4]]
    ],
{ PARAMETER 12
    [[1, 0, clc$keyword_type], [4], [
    ['FA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['FAMILY_ADMINISTRATION          ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['SA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry, clc$normal_usage_entry, 1]]
    ],
{ PARAMETER 13
    [[1, 0, clc$status_type]]];

?? POP ??

  CONST
    p$field_name = 1,
    p$default_value = 2,
    p$range = 3,
    p$date_time_application = 4,
    p$date_display_format = 5,
    p$time_display_format = 6,
    p$description = 7,
    p$change_command_names = 8,
    p$display_command_names = 9,
    p$change_authority = 10,
    p$display_authority = 11,
    p$manage_authority = 12,
    p$status = 13;

  VAR
    pvt: array [1 .. 13] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      date_applies: ^boolean,
      date_display_format: ^clt$date_time_form_string,
      default_value: ^avt$date_time,
      delete_authority: ^avt$validation_authority,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      display_format: ost$string,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes,
      time_applies: ^boolean,
      time_display_format: ^clt$date_time_form_string;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    PUSH date_applies;
    PUSH time_applies;
    IF pvt [p$date_time_application].value^.keyword_value = 'DATE_AND_TIME_APPLY' THEN
      date_applies^ := TRUE;
      time_applies^ := TRUE;
    ELSEIF pvt [p$date_time_application].value^.keyword_value = 'DATE_APPLIES' THEN
      date_applies^ := TRUE;
      time_applies^ := FALSE;
    ELSE
      date_applies^ := FALSE;
      time_applies^ := TRUE;
    IFEND;

    PUSH default_value;
    default_value^.range := pvt [p$range].value^.boolean_value.value;
    default_value^.date_specified := date_applies^;
    default_value^.time_specified := time_applies^;
    IF default_value^.range THEN
      default_value^.starting_value := pvt [p$default_value].value^.low_value^.date_time_value.value;
      default_value^.ending_value := pvt [p$default_value].value^.high_value^.date_time_value.value;
    ELSE
      default_value^.value := pvt [p$default_value].value^.low_value^.date_time_value.value;
    IFEND;

    translate_date_display_format (pvt [p$date_display_format].value^.keyword_value, display_format);
    PUSH date_display_format: [display_format.size];
    date_display_format^ := display_format.value;

    translate_time_display_format (pvt [p$time_display_format].value^.keyword_value, display_format);
    PUSH time_display_format: [display_format.size];
    time_display_format^ := display_format.value;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);
    IF (display_authority = NIL) THEN
      PUSH display_authority;
      IF current_subutility_session_info^.validation_record_name = avc$user_record_name THEN
        display_authority^ := avc$user_authority;
      ELSEIF (current_subutility_session_info^.validation_record_name = avc$account_record_name) OR
            (current_subutility_session_info^.validation_record_name = avc$account_member_record_name) THEN
        display_authority^ := avc$account_admin_authority;
      ELSE
        display_authority^ := avc$project_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$change_authority].value, change_authority);
    IF change_authority = NIL THEN
      PUSH change_authority;
      IF avp$system_administrator () THEN
        change_authority^ := avc$system_admin_authority;
      ELSE
        change_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);
    IF manage_authority = NIL THEN
      PUSH manage_authority;
      IF avp$system_administrator () THEN
        manage_authority^ := avc$system_admin_authority;
      ELSE
        manage_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    PUSH delete_authority;
    IF avp$system_administrator () THEN
      delete_authority^ := avc$system_admin_authority;
    ELSE
      delete_authority^ := avc$family_admin_authority;
    IFEND;

    avp$create_date_time_field (field_name, current_subutility_session_info^.validation_record_name,
          default_value^, default_value^.range, date_applies^, time_applies^, date_display_format^,
          time_display_format^, change_command_names^, display_command_names^, description^,
          display_authority^, change_authority^, manage_authority^, delete_authority^,
          validation_file_information, status);

  PROCEND create_date_time_field;
?? OLDTITLE ??
?? NEWTITLE := 'create_file_field', EJECT ??

{ PURPOSE:
{   This is the command processor used create a FILE field.

  PROCEDURE create_file_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_creff) create_file_field, creff (
{   field_name, fn: name = $required
{   default_value, dv: (BY_NAME) any of
{       key
{         none
{       keyend
{       file
{       string
{     anyend = none
{   description, d: (BY_NAME) string 0..256 = ''
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 17] of clt$pdt_parameter_name,
        parameters: array [1 .. 9] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
          recend,
          type_size_3: clt$type_specification_size,
          element_type_spec_3: record
            header: clt$type_specification_header,
            qualifier: clt$string_type_qualifier,
          recend,
          default_value: string (4),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
          default_value: string (2),
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type9: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 40, 10, 458], clc$command, 17, 9, 1, 0, 0, 0, 9, 'OSM$ADMV_CREFF'],
            [['CA                             ', clc$abbreviation_entry, 6],
            ['CCN                            ', clc$abbreviation_entry, 4],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 6],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 4],
            ['D                              ', clc$abbreviation_entry, 3],
            ['DA                             ', clc$abbreviation_entry, 7],
            ['DCN                            ', clc$abbreviation_entry, 5],
            ['DEFAULT_VALUE                  ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 3],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 7],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 5],
            ['DV                             ', clc$abbreviation_entry, 2],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 8],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 8],
            ['STATUS                         ', clc$nominal_entry, 9]], [

{ PARAMETER 1

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 79,
            clc$optional_default_parameter, 0, 4],

{ PARAMETER 3

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_default_parameter, 0, 2],

{ PARAMETER 4

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_default_parameter, 0, 7],

{ PARAMETER 5

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_default_parameter, 0, 7],

{ PARAMETER 6

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 7

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [16, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [17, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$file_type, clc$keyword_type, clc$string_type], FALSE, 3], 44,
            [[1, 0, clc$keyword_type], [1], [['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 3, [[1, 0, clc$file_type]], 8,
            [[1, 0, clc$string_type], [0, clc$max_string_size, FALSE]], 'none'],

{ PARAMETER 3

      [[1, 0, clc$string_type], [0, 256, FALSE], ''''''],

{ PARAMETER 4

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 6

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 7

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 8

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 9

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_value = 2,
      p$description = 3,
      p$change_command_names = 4,
      p$display_command_names = 5,
      p$change_authority = 6,
      p$display_authority = 7,
      p$manage_authority = 8,
      p$status = 9;

    VAR
      pvt: array [1 .. 9] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      default_value: ^fst$file_reference,
      delete_authority: ^avt$validation_authority,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      field_name: ost$name,
      file_reference: ^clt$file_reference,
      manage_authority: ^avt$validation_authority,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    process_file_parameter (pvt [p$default_value].value, NIL, default_value);

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);
    IF (display_authority = NIL) THEN
      PUSH display_authority;
      IF current_subutility_session_info^.validation_record_name = avc$user_record_name THEN
        display_authority^ := avc$user_authority;
      ELSEIF (current_subutility_session_info^.validation_record_name = avc$account_record_name) OR
            (current_subutility_session_info^.validation_record_name = avc$account_member_record_name) THEN
        display_authority^ := avc$account_admin_authority;
      ELSE
        display_authority^ := avc$project_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$change_authority].value, change_authority);
    IF change_authority = NIL THEN
      PUSH change_authority;
      IF avp$system_administrator () THEN
        change_authority^ := avc$system_admin_authority;
      ELSE
        change_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);
    IF manage_authority = NIL THEN
      PUSH manage_authority;
      IF avp$system_administrator () THEN
        manage_authority^ := avc$system_admin_authority;
      ELSE
        manage_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    PUSH delete_authority;
    IF avp$system_administrator () THEN
      delete_authority^ := avc$system_admin_authority;
    ELSE
      delete_authority^ := avc$family_admin_authority;
    IFEND;

    avp$create_file_field (field_name, current_subutility_session_info^.validation_record_name,
          default_value^, change_command_names^, display_command_names^, description^, display_authority^,
          change_authority^, manage_authority^, delete_authority^, validation_file_information, status);

  PROCEND create_file_field;
?? OLDTITLE ??
?? NEWTITLE := 'create_integer_field', EJECT ??

{ PURPOSE:
{   This is the command processor used create an INTEGER field.

  PROCEDURE create_integer_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_creif) create_integer_field, creif (
{   field_name, fn: name = $required
{   default_value, dv: (BY_NAME) integer = 0
{   display_field_width, dfw: (BY_NAME) integer 1..25 = 20
{   radix, r: (BY_NAME) integer 2..16 = 10
{   display_radix, dr: (BY_NAME) boolean = false
{   value_range, vr: (BY_NAME) range of integer = (0 .. $max_integer)
{   description, d: (BY_NAME) string 0..256 = ''
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 25] of clt$pdt_parameter_name,
        parameters: array [1 .. 13] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$integer_type_qualifier,
          default_value: string (1),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$integer_type_qualifier,
          default_value: string (2),
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$integer_type_qualifier,
          default_value: string (2),
        recend,
        type5: record
          header: clt$type_specification_header,
          default_value: string (5),
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$range_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
          default_value: string (19),
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
          default_value: string (2),
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type9: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type10: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type11: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type12: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type13: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 40, 27, 679], clc$command, 25, 13, 1, 0, 0, 0, 13, 'OSM$ADMV_CREIF'],
            [['CA                             ', clc$abbreviation_entry, 10],
            ['CCN                            ', clc$abbreviation_entry, 8],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 10],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 8],
            ['D                              ', clc$abbreviation_entry, 7],
            ['DA                             ', clc$abbreviation_entry, 11],
            ['DCN                            ', clc$abbreviation_entry, 9],
            ['DEFAULT_VALUE                  ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 7],
            ['DFW                            ', clc$abbreviation_entry, 3],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 11],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 9],
            ['DISPLAY_FIELD_WIDTH            ', clc$nominal_entry, 3],
            ['DISPLAY_RADIX                  ', clc$nominal_entry, 5],
            ['DR                             ', clc$abbreviation_entry, 5],
            ['DV                             ', clc$abbreviation_entry, 2],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 12],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 12],
            ['R                              ', clc$abbreviation_entry, 4],
            ['RADIX                          ', clc$nominal_entry, 4],
            ['STATUS                         ', clc$nominal_entry, 13],
            ['VALUE_RANGE                    ', clc$nominal_entry, 6],
            ['VR                             ', clc$abbreviation_entry, 6]], [

{ PARAMETER 1

      [17, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 20,
            clc$optional_default_parameter, 0, 1],

{ PARAMETER 3

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 20, clc$optional_default_parameter, 0, 2],

{ PARAMETER 4

      [22, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 20, clc$optional_default_parameter, 0, 2],

{ PARAMETER 5

      [14, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_default_parameter, 0, 5],

{ PARAMETER 6

      [24, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 27, clc$optional_default_parameter, 0, 19],

{ PARAMETER 7

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_default_parameter, 0, 2],

{ PARAMETER 8

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_default_parameter, 0, 7],

{ PARAMETER 9

      [12, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_default_parameter, 0, 7],

{ PARAMETER 10

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 11

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 12

      [20, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 13

      [23, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$integer_type], [clc$min_integer, clc$max_integer, 10], '0'],

{ PARAMETER 3

      [[1, 0, clc$integer_type], [1, 25, 10], '20'],

{ PARAMETER 4

      [[1, 0, clc$integer_type], [2, 16, 10], '10'],

{ PARAMETER 5

      [[1, 0, clc$boolean_type], 'false'],

{ PARAMETER 6

      [[1, 0, clc$range_type], [20], [[1, 0, clc$integer_type], [clc$min_integer, clc$max_integer, 10]],
            '(0 .. $max_integer)'],

{ PARAMETER 7

      [[1, 0, clc$string_type], [0, 256, FALSE], ''''''],

{ PARAMETER 8

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 9

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 10

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 11

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 12

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 13

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_value = 2,
      p$display_field_width = 3,
      p$radix = 4,
      p$display_radix = 5,
      p$value_range = 6,
      p$description = 7,
      p$change_command_names = 8,
      p$display_command_names = 9,
      p$change_authority = 10,
      p$display_authority = 11,
      p$manage_authority = 12,
      p$status = 13;

    VAR
      pvt: array [1 .. 13] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      default_value: ^integer,
      delete_authority: ^avt$validation_authority,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      display_format: ^avt$numeric_display_format,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      maximum_value: ^integer,
      minimum_value: ^integer,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    default_value := ^pvt [p$default_value].value^.integer_value.value;

    PUSH display_format;
    display_format^.kind := avc$integer_format;
    display_format^.field_size := pvt [p$display_field_width].value^.integer_value.value;
    display_format^.radix := pvt [p$radix].value^.integer_value.value;
    display_format^.display_radix := pvt [p$display_radix].value^.boolean_value.value;

    minimum_value := ^pvt [p$value_range].value^.low_value^.integer_value.value;
    maximum_value := ^pvt [p$value_range].value^.high_value^.integer_value.value;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);
    IF (display_authority = NIL) THEN
      PUSH display_authority;
      IF current_subutility_session_info^.validation_record_name = avc$user_record_name THEN
        display_authority^ := avc$user_authority;
      ELSEIF (current_subutility_session_info^.validation_record_name = avc$account_record_name) OR
            (current_subutility_session_info^.validation_record_name = avc$account_member_record_name) THEN
        display_authority^ := avc$account_admin_authority;
      ELSE
        display_authority^ := avc$project_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$change_authority].value, change_authority);
    IF change_authority = NIL THEN
      PUSH change_authority;
      IF avp$system_administrator () THEN
        change_authority^ := avc$system_admin_authority;
      ELSE
        change_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);
    IF manage_authority = NIL THEN
      PUSH manage_authority;
      IF avp$system_administrator () THEN
        manage_authority^ := avc$system_admin_authority;
      ELSE
        manage_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    PUSH delete_authority;
    IF avp$system_administrator () THEN
      delete_authority^ := avc$system_admin_authority;
    ELSE
      delete_authority^ := avc$family_admin_authority;
    IFEND;

    avp$create_integer_field (field_name, current_subutility_session_info^.validation_record_name,
          default_value^, minimum_value^, maximum_value^, display_format^, change_command_names^,
          display_command_names^, description^, display_authority^, change_authority^, manage_authority^,
          delete_authority^, validation_file_information, status);

  PROCEND create_integer_field;
?? OLDTITLE ??
?? NEWTITLE := 'create_limit_field', EJECT ??

{ PURPOSE:
{   This is the command processor used create a LIMIT field.

  PROCEDURE create_limit_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_crelf) create_limit_field, crelf (
{   field_name, fn: name = $required
{   default_value, dv: (BY_NAME) any of
{       key
{         unlimited
{       keyend
{       integer 0..osc$max_integer
{     anyend = unlimited
{   value_range, vr: (BY_NAME) range of any of
{       key
{         unlimited
{       keyend
{       integer 0..osc$max_integer
{     anyend = (0 .. unlimited)
{   description, d: (BY_NAME) string 0..256 = ''
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 19] of clt$pdt_parameter_name,
        parameters: array [1 .. 10] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
          default_value: string (9),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$range_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$union_type_qualifier,
            type_size_1: clt$type_specification_size,
            element_type_spec_1: record
              header: clt$type_specification_header,
              qualifier: clt$keyword_type_qualifier,
              keyword_specs: array [1 .. 1] of clt$keyword_specification,
            recend,
            type_size_2: clt$type_specification_size,
            element_type_spec_2: record
              header: clt$type_specification_header,
              qualifier: clt$integer_type_qualifier,
            recend,
          recend,
          default_value: string (16),
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
          default_value: string (2),
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type9: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type10: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 40, 40, 981], clc$command, 19, 10, 1, 0, 0, 0, 10, 'OSM$ADMV_CRELF'],
            [['CA                             ', clc$abbreviation_entry, 7],
            ['CCN                            ', clc$abbreviation_entry, 5],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 7],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 5],
            ['D                              ', clc$abbreviation_entry, 4],
            ['DA                             ', clc$abbreviation_entry, 8],
            ['DCN                            ', clc$abbreviation_entry, 6],
            ['DEFAULT_VALUE                  ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 4],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 8],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 6],
            ['DV                             ', clc$abbreviation_entry, 2],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 9],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 9],
            ['STATUS                         ', clc$nominal_entry, 10],
            ['VALUE_RANGE                    ', clc$nominal_entry, 3],
            ['VR                             ', clc$abbreviation_entry, 3]], [

{ PARAMETER 1

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 84,
            clc$optional_default_parameter, 0, 9],

{ PARAMETER 3

      [18, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 91, clc$optional_default_parameter, 0, 16],

{ PARAMETER 4

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_default_parameter, 0, 2],

{ PARAMETER 5

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_default_parameter, 0, 7],

{ PARAMETER 6

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_default_parameter, 0, 7],

{ PARAMETER 7

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [16, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 10

      [17, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [0, osc$max_integer, 10]],
            'unlimited'],

{ PARAMETER 3

      [[1, 0, clc$range_type], [84], [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type], FALSE,
            2], 44, [[1, 0, clc$keyword_type], [1], [['UNLIMITED                      ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 20, [[1, 0, clc$integer_type], [0, osc$max_integer, 10]]],
            '(0 .. unlimited)'],

{ PARAMETER 4

      [[1, 0, clc$string_type], [0, 256, FALSE], ''''''],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 6

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 7

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 8

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 9

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 10

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_value = 2,
      p$value_range = 3,
      p$description = 4,
      p$change_command_names = 5,
      p$display_command_names = 6,
      p$change_authority = 7,
      p$display_authority = 8,
      p$manage_authority = 9,
      p$status = 10;

    VAR
      pvt: array [1 .. 10] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      default_value: ^avt$limit_value,
      delete_authority: ^avt$validation_authority,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      maximum_value: ^avt$limit_value,
      minimum_value: ^avt$limit_value,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    process_limit_parameter (pvt [p$default_value].value, NIL, default_value);

    process_limit_range_parameter (pvt [p$value_range].value, minimum_value, maximum_value);

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);
    IF (display_authority = NIL) THEN
      PUSH display_authority;
      IF current_subutility_session_info^.validation_record_name = avc$user_record_name THEN
        display_authority^ := avc$user_authority;
      ELSEIF (current_subutility_session_info^.validation_record_name = avc$account_record_name) OR
            (current_subutility_session_info^.validation_record_name = avc$account_member_record_name) THEN
        display_authority^ := avc$account_admin_authority;
      ELSE
        display_authority^ := avc$project_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$change_authority].value, change_authority);
    IF change_authority = NIL THEN
      PUSH change_authority;
      IF avp$system_administrator () THEN
        change_authority^ := avc$system_admin_authority;
      ELSE
        change_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);
    IF manage_authority = NIL THEN
      PUSH manage_authority;
      IF avp$system_administrator () THEN
        manage_authority^ := avc$system_admin_authority;
      ELSE
        manage_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    PUSH delete_authority;
    IF avp$system_administrator () THEN
      delete_authority^ := avc$system_admin_authority;
    ELSE
      delete_authority^ := avc$family_admin_authority;
    IFEND;

    avp$create_limit_field (field_name, current_subutility_session_info^.validation_record_name,
          default_value^, minimum_value^, maximum_value^, change_command_names^, display_command_names^,
          description^, display_authority^, change_authority^, manage_authority^, delete_authority^,
          validation_file_information, status);

  PROCEND create_limit_field;
?? OLDTITLE ??
?? NEWTITLE := 'create_name_field', EJECT ??

{ PURPOSE:
{   This is the command processor used create a NAME field.

  PROCEDURE create_name_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_crenf) create_name_field, crenf (
{   field_name, fn: name = $required
{   default_value, dv: (BY_NAME, CHECK) any of
{       key
{         all, none
{       keyend
{       list 1..256 of name
{     anyend = none
{   number_of_names, non: (BY_NAME) range of integer 1..256 = (1 .. 1)
{   description, d: (BY_NAME) string 0..256 = ''
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 19] of clt$pdt_parameter_name,
        parameters: array [1 .. 10] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 2] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (4),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$range_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
          default_value: string (8),
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
          default_value: string (2),
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type9: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type10: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 40, 54, 470], clc$command, 19, 10, 1, 0, 0, 0, 10, 'OSM$ADMV_CRENF'],
            [['CA                             ', clc$abbreviation_entry, 7],
            ['CCN                            ', clc$abbreviation_entry, 5],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 7],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 5],
            ['D                              ', clc$abbreviation_entry, 4],
            ['DA                             ', clc$abbreviation_entry, 8],
            ['DCN                            ', clc$abbreviation_entry, 6],
            ['DEFAULT_VALUE                  ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 4],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 8],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 6],
            ['DV                             ', clc$abbreviation_entry, 2],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 9],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 9],
            ['NON                            ', clc$abbreviation_entry, 3],
            ['NUMBER_OF_NAMES                ', clc$nominal_entry, 3],
            ['STATUS                         ', clc$nominal_entry, 10]], [

{ PARAMETER 1

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 122,
            clc$optional_default_parameter, 0, 4],

{ PARAMETER 3

      [18, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 27, clc$optional_default_parameter, 0, 8],

{ PARAMETER 4

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_default_parameter, 0, 2],

{ PARAMETER 5

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_default_parameter, 0, 7],

{ PARAMETER 6

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_default_parameter, 0, 7],

{ PARAMETER 7

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [16, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 10

      [19, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 81,
            [[1, 0, clc$keyword_type], [2], [['ALL                            ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['NONE                           ', clc$nominal_entry,
            clc$normal_usage_entry, 2]]], 21, [[1, 0, clc$list_type],
            [5, 1, 256, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'none'],

{ PARAMETER 3

      [[1, 0, clc$range_type], [20], [[1, 0, clc$integer_type], [1, 256, 10]], '(1 .. 1)'],

{ PARAMETER 4

      [[1, 0, clc$string_type], [0, 256, FALSE], ''''''],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 6

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 7

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 8

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 9

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 10

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_value = 2,
      p$number_of_names = 3,
      p$description = 4,
      p$change_command_names = 5,
      p$display_command_names = 6,
      p$change_authority = 7,
      p$display_authority = 8,
      p$manage_authority = 9,
      p$status = 10;

    VAR
      pvt: array [1 .. 10] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      common_names: ^avt$name_list,
      default_names: ^avt$name_list,
      delete_authority: ^avt$validation_authority,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      minimum_number_of_names: ^avt$name_list_size,
      maximum_number_of_names: ^avt$name_list_size,
      pdt_changes: ^clt$pdt_changes;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$default_value) THEN
        verify_list_of_names_value ('DEFAULT_VALUE', parameter_value_table^ [p$default_value].value, status);
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    process_name_list_parameter (pvt [p$default_value].value, NIL, default_names);

    PUSH common_names: [1 .. 1];
    common_names^ [1] := 'NONE';

    PUSH minimum_number_of_names;
    minimum_number_of_names^ := pvt [p$number_of_names].value^.low_value^.integer_value.value;
    PUSH maximum_number_of_names;
    maximum_number_of_names^ := pvt [p$number_of_names].value^.high_value^.integer_value.value;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);
    IF (display_authority = NIL) THEN
      PUSH display_authority;
      IF current_subutility_session_info^.validation_record_name = avc$user_record_name THEN
        display_authority^ := avc$user_authority;
      ELSEIF (current_subutility_session_info^.validation_record_name = avc$account_record_name) OR
            (current_subutility_session_info^.validation_record_name = avc$account_member_record_name) THEN
        display_authority^ := avc$account_admin_authority;
      ELSE
        display_authority^ := avc$project_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$change_authority].value, change_authority);
    IF change_authority = NIL THEN
      PUSH change_authority;
      IF avp$system_administrator () THEN
        change_authority^ := avc$system_admin_authority;
      ELSE
        change_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);
    IF manage_authority = NIL THEN
      PUSH manage_authority;
      IF avp$system_administrator () THEN
        manage_authority^ := avc$system_admin_authority;
      ELSE
        manage_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    PUSH delete_authority;
    IF avp$system_administrator () THEN
      delete_authority^ := avc$system_admin_authority;
    ELSE
      delete_authority^ := avc$family_admin_authority;
    IFEND;

    avp$create_name_field (field_name, current_subutility_session_info^.validation_record_name,
          default_names^, minimum_number_of_names^, maximum_number_of_names^, common_names^,
          change_command_names^, display_command_names^, description^, display_authority^, change_authority^,
          manage_authority^, delete_authority^, validation_file_information, status);

  PROCEND create_name_field;
?? OLDTITLE ??
?? NEWTITLE := 'create_real_field', EJECT ??

{ PURPOSE:
{   This is the command processor used create a REAL field.

  PROCEDURE create_real_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_crerf) create_real_field, crerf (
{   field_name, fn: name = $required
{   default_value, dv: (BY_NAME) real = 0.0
{   display_field_width, dfw: (BY_NAME) list 1..2 of integer 1..25 = (16, 2)
{   value_range, vr: (BY_NAME) range of real = (0.0 .. 100000000000.0)
{   description, d: (BY_NAME) string 0..256 = ''
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 21] of clt$pdt_parameter_name,
        parameters: array [1 .. 11] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$real_type_qualifier,
          default_value: string (3),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$list_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
          default_value: string (7),
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$range_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$real_type_qualifier,
          recend,
          default_value: string (23),
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
          default_value: string (2),
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type9: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type10: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type11: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 41, 39, 368], clc$command, 21, 11, 1, 0, 0, 0, 11, 'OSM$ADMV_CRERF'],
            [['CA                             ', clc$abbreviation_entry, 8],
            ['CCN                            ', clc$abbreviation_entry, 6],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 8],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 6],
            ['D                              ', clc$abbreviation_entry, 5],
            ['DA                             ', clc$abbreviation_entry, 9],
            ['DCN                            ', clc$abbreviation_entry, 7],
            ['DEFAULT_VALUE                  ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 5],
            ['DFW                            ', clc$abbreviation_entry, 3],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 9],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 7],
            ['DISPLAY_FIELD_WIDTH            ', clc$nominal_entry, 3],
            ['DV                             ', clc$abbreviation_entry, 2],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 10],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 10],
            ['STATUS                         ', clc$nominal_entry, 11],
            ['VALUE_RANGE                    ', clc$nominal_entry, 4],
            ['VR                             ', clc$abbreviation_entry, 4]], [

{ PARAMETER 1

      [15, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 35,
            clc$optional_default_parameter, 0, 3],

{ PARAMETER 3

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 36, clc$optional_default_parameter, 0, 7],

{ PARAMETER 4

      [20, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 42, clc$optional_default_parameter, 0, 23],

{ PARAMETER 5

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_default_parameter, 0, 2],

{ PARAMETER 6

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_default_parameter, 0, 7],

{ PARAMETER 7

      [12, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_default_parameter, 0, 7],

{ PARAMETER 8

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 10

      [18, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 11

      [19, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$real_type], [[{-$INFINITY} 3, [[0D000(16), 0(16)], [0D000(16), 0(16)]]],
            [{$INFINITY} 3, [[5000(16), 0(16)], [5000(16), 0(16)]]]], '0.0'],

{ PARAMETER 3

      [[1, 0, clc$list_type], [20, 1, 2, FALSE], [[1, 0, clc$integer_type], [1, 25, 10]], '(16, 2)'],

{ PARAMETER 4

      [[1, 0, clc$range_type], [35], [[1, 0, clc$real_type], [[{-$INFINITY} 3,
            [[0D000(16), 0(16)], [0D000(16), 0(16)]]], [{$INFINITY} 3, [[5000(16), 0(16)],
            [5000(16), 0(16)]]]]], '(0.0 .. 100000000000.0)'],

{ PARAMETER 5

      [[1, 0, clc$string_type], [0, 256, FALSE], ''''''],

{ PARAMETER 6

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 7

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 8

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 9

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 10

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 11

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_value = 2,
      p$display_field_width = 3,
      p$value_range = 4,
      p$description = 5,
      p$change_command_names = 6,
      p$display_command_names = 7,
      p$change_authority = 8,
      p$display_authority = 9,
      p$manage_authority = 10,
      p$status = 11;

    VAR
      pvt: array [1 .. 11] of clt$parameter_value;

    TYPE
      long_real_type = record
        first: real,
        second: real,
      recend;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      default_value: ^real,
      delete_authority: ^avt$validation_authority,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      display_format: ^avt$numeric_display_format,
      field_name: ost$name,
      long_real_value: long_real_type,
      manage_authority: ^avt$validation_authority,
      maximum_value: ^real,
      minimum_value: ^real,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    #UNCHECKED_CONVERSION (pvt [p$default_value].value^.real_value.value, long_real_value);
    PUSH default_value;
    default_value^ := long_real_value.first;

    PUSH display_format;
    IF clp$count_list_elements (pvt [p$display_field_width].value) = 1 THEN
      display_format^.kind := avc$floating_point_format;
      display_format^.field_size := pvt [p$display_field_width].value^.element_value^.integer_value.value;
    ELSE
      display_format^.kind := avc$fixed_point_format;
      display_format^.field_size := pvt [p$display_field_width].value^.element_value^.integer_value.value;
      display_format^.fraction_size := pvt [p$display_field_width].value^.link^.element_value^.integer_value.
            value;
    IFEND;

    #UNCHECKED_CONVERSION (pvt [p$value_range].value^.low_value^.real_value.value, long_real_value);
    PUSH minimum_value;
    minimum_value^ := long_real_value.first;
    #UNCHECKED_CONVERSION (pvt [p$value_range].value^.high_value^.real_value.value, long_real_value);
    PUSH maximum_value;
    maximum_value^ := long_real_value.first;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);
    IF (display_authority = NIL) THEN
      PUSH display_authority;
      IF current_subutility_session_info^.validation_record_name = avc$user_record_name THEN
        display_authority^ := avc$user_authority;
      ELSEIF (current_subutility_session_info^.validation_record_name = avc$account_record_name) OR
            (current_subutility_session_info^.validation_record_name = avc$account_member_record_name) THEN
        display_authority^ := avc$account_admin_authority;
      ELSE
        display_authority^ := avc$project_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$change_authority].value, change_authority);
    IF change_authority = NIL THEN
      PUSH change_authority;
      IF avp$system_administrator () THEN
        change_authority^ := avc$system_admin_authority;
      ELSE
        change_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);
    IF manage_authority = NIL THEN
      PUSH manage_authority;
      IF avp$system_administrator () THEN
        manage_authority^ := avc$system_admin_authority;
      ELSE
        manage_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    PUSH delete_authority;
    IF avp$system_administrator () THEN
      delete_authority^ := avc$system_admin_authority;
    ELSE
      delete_authority^ := avc$family_admin_authority;
    IFEND;

    avp$create_real_field (field_name, current_subutility_session_info^.validation_record_name,
          default_value^, minimum_value^, maximum_value^, display_format^, change_command_names^,
          display_command_names^, description^, display_authority^, change_authority^, manage_authority^,
          delete_authority^, validation_file_information, status);

  PROCEND create_real_field;
?? OLDTITLE ??
?? NEWTITLE := 'create_string_field', EJECT ??

{ PURPOSE:
{   This is the command processor used create a STRING field.

  PROCEDURE create_string_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_cresf) create_string_field, cresf (
{   field_name, fn: name = $required
{   default_value, dv: (BY_NAME) string 0..256 = ''
{   size, s: (BY_NAME) range of integer 0..256 = (0 .. 256)
{   description, d: (BY_NAME) string 0..256 = ''
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   change_authority, ca: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   display_authority, da: (BY_NAME) key
{       (system, s)
{       (system_administration, sa)
{       (family_administration, fa)
{       (user_administration, ua)
{       (account_administration, aa)
{       (project_administration, pa)
{       (user, u)
{     keyend = $optional
{   manage_authority, ma: (BY_NAME) key
{       (system_administration, sa)
{       (family_administration, fa)
{     keyend = $optional
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 19] of clt$pdt_parameter_name,
        parameters: array [1 .. 10] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
          default_value: string (2),
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$range_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$integer_type_qualifier,
          recend,
          default_value: string (10),
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$string_type_qualifier,
          default_value: string (2),
        recend,
        type5: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type6: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type7: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type8: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 14] of clt$keyword_specification,
        recend,
        type9: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 4] of clt$keyword_specification,
        recend,
        type10: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 42, 2, 442], clc$command, 19, 10, 1, 0, 0, 0, 10, 'OSM$ADMV_CRESF'],
            [['CA                             ', clc$abbreviation_entry, 7],
            ['CCN                            ', clc$abbreviation_entry, 5],
            ['CHANGE_AUTHORITY               ', clc$nominal_entry, 7],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 5],
            ['D                              ', clc$abbreviation_entry, 4],
            ['DA                             ', clc$abbreviation_entry, 8],
            ['DCN                            ', clc$abbreviation_entry, 6],
            ['DEFAULT_VALUE                  ', clc$nominal_entry, 2],
            ['DESCRIPTION                    ', clc$nominal_entry, 4],
            ['DISPLAY_AUTHORITY              ', clc$nominal_entry, 8],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 6],
            ['DV                             ', clc$abbreviation_entry, 2],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['MA                             ', clc$abbreviation_entry, 9],
            ['MANAGE_AUTHORITY               ', clc$nominal_entry, 9],
            ['S                              ', clc$abbreviation_entry, 3],
            ['SIZE                           ', clc$nominal_entry, 3],
            ['STATUS                         ', clc$nominal_entry, 10]], [

{ PARAMETER 1

      [13, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [8, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_default_parameter, 0, 2],

{ PARAMETER 3

      [18, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 27, clc$optional_default_parameter, 0, 10],

{ PARAMETER 4

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 8,
            clc$optional_default_parameter, 0, 2],

{ PARAMETER 5

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_default_parameter, 0, 7],

{ PARAMETER 6

      [11, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 85, clc$optional_default_parameter, 0, 7],

{ PARAMETER 7

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 525,
            clc$optional_parameter, 0, 0],

{ PARAMETER 8

      [10, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 525, clc$optional_parameter, 0, 0],

{ PARAMETER 9

      [16, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 155, clc$optional_parameter, 0, 0],

{ PARAMETER 10

      [19, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name], clc$pass_by_reference, clc$immediate_evaluation,
            clc$standard_parameter_checking, 3, clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$string_type], [0, 256, FALSE], ''''''],

{ PARAMETER 3

      [[1, 0, clc$range_type], [20], [[1, 0, clc$integer_type], [0, 256, 10]], '(0 .. 256)'],

{ PARAMETER 4

      [[1, 0, clc$string_type], [0, 256, FALSE], ''''''],

{ PARAMETER 5

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 6

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 7

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 8

      [[1, 0, clc$keyword_type], [14], [['AA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['ACCOUNT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['PA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 6], ['PROJECT_ADMINISTRATION         ', clc$nominal_entry,
            clc$normal_usage_entry, 6], ['S                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['SYSTEM                         ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['U                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['UA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['USER                           ', clc$nominal_entry,
            clc$normal_usage_entry, 7], ['USER_ADMINISTRATION            ', clc$nominal_entry,
            clc$normal_usage_entry, 4]]],

{ PARAMETER 9

      [[1, 0, clc$keyword_type], [4], [['FA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['FAMILY_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['SA                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['SYSTEM_ADMINISTRATION          ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]],

{ PARAMETER 10

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$default_value = 2,
      p$size = 3,
      p$description = 4,
      p$change_command_names = 5,
      p$display_command_names = 6,
      p$change_authority = 7,
      p$display_authority = 8,
      p$manage_authority = 9,
      p$status = 10;

    VAR
      pvt: array [1 .. 10] of clt$parameter_value;

    VAR
      altered_pdt: ^clt$parameter_description_table,
      change_authority: ^avt$validation_authority,
      change_command_names: ^avt$name_list,
      default_value: ^ost$string,
      delete_authority: ^avt$validation_authority,
      description: ^ost$string,
      display_authority: ^avt$validation_authority,
      display_command_names: ^avt$name_list,
      field_name: ost$name,
      manage_authority: ^avt$validation_authority,
      maximum_size: ost$string_size,
      minimum_size: ost$string_size,
      pdt_changes: ^clt$pdt_changes;

    status.normal := TRUE;

    PUSH pdt_changes: [1 .. 2];
    pdt_changes^ [1].number := p$change_authority;
    pdt_changes^ [2].number := p$display_authority;

    hide_authority_keywords (#SEQ (pdt), pdt_changes, current_subutility_session_info^.validation_record_name,
          altered_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$evaluate_parameters (parameter_list, altered_pdt, NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    field_name := pvt [p$field_name].value^.name_value;

    PUSH default_value;
    default_value^.value := pvt [p$default_value].value^.string_value^;
    default_value^.size := #SIZE (pvt [p$default_value].value^.string_value^);

    minimum_size := pvt [p$size].value^.low_value^.integer_value.value;
    maximum_size := pvt [p$size].value^.high_value^.integer_value.value;

    process_command_names_parameter (pvt [p$change_command_names].value, field_name, 'CHANGE',
          change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, field_name, 'DISPLAY',
          display_command_names);

    process_description_parameter (pvt [p$description].value, description);

    process_authority_parameter (pvt [p$display_authority].value, display_authority);
    IF (display_authority = NIL) THEN
      PUSH display_authority;
      IF current_subutility_session_info^.validation_record_name = avc$user_record_name THEN
        display_authority^ := avc$user_authority;
      ELSEIF (current_subutility_session_info^.validation_record_name = avc$account_record_name) OR
            (current_subutility_session_info^.validation_record_name = avc$account_member_record_name) THEN
        display_authority^ := avc$account_admin_authority;
      ELSE
        display_authority^ := avc$project_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$change_authority].value, change_authority);
    IF change_authority = NIL THEN
      PUSH change_authority;
      IF avp$system_administrator () THEN
        change_authority^ := avc$system_admin_authority;
      ELSE
        change_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    process_authority_parameter (pvt [p$manage_authority].value, manage_authority);
    IF manage_authority = NIL THEN
      PUSH manage_authority;
      IF avp$system_administrator () THEN
        manage_authority^ := avc$system_admin_authority;
      ELSE
        manage_authority^ := avc$family_admin_authority;
      IFEND;
    IFEND;

    PUSH delete_authority;
    IF avp$system_administrator () THEN
      delete_authority^ := avc$system_admin_authority;
    ELSE
      delete_authority^ := avc$family_admin_authority;
    IFEND;

    avp$create_string_field (field_name, current_subutility_session_info^.validation_record_name,
          default_value^, minimum_size, maximum_size, change_command_names^, display_command_names^,
          description^, display_authority^, change_authority^, manage_authority^, delete_authority^,
          validation_file_information, status);

  PROCEND create_string_field;
?? OLDTITLE ??
?? NEWTITLE := 'change_field_name', EJECT ??

{ PURPOSE:
{   This is the command processor for the CHANGE_FIELD_NAME subcommand

  PROCEDURE change_field_name
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_chafn) change_field_name, chafn (
{   field_name, fn: name = $required
{   new_field_name, nfn: name = $required
{   change_command_names, ccn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   display_command_names, dcn: (BY_NAME) any of
{       key
{         default
{       keyend
{       list of name
{     anyend = default
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 9] of clt$pdt_parameter_name,
        parameters: array [1 .. 5] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type4: record
          header: clt$type_specification_header,
          qualifier: clt$union_type_qualifier,
          type_size_1: clt$type_specification_size,
          element_type_spec_1: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 1] of clt$keyword_specification,
          recend,
          type_size_2: clt$type_specification_size,
          element_type_spec_2: record
            header: clt$type_specification_header,
            qualifier: clt$list_type_qualifier,
            element_type_spec: record
              header: clt$type_specification_header,
              qualifier: clt$name_type_qualifier,
            recend,
          recend,
          default_value: string (7),
        recend,
        type5: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 17, 11, 43, 0, 336], clc$command, 9, 5, 2, 0, 0, 0, 5, 'OSM$ADMV_CHAFN'],
            [['CCN                            ', clc$abbreviation_entry, 3],
            ['CHANGE_COMMAND_NAMES           ', clc$nominal_entry, 3],
            ['DCN                            ', clc$abbreviation_entry, 4],
            ['DISPLAY_COMMAND_NAMES          ', clc$nominal_entry, 4],
            ['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['NEW_FIELD_NAME                 ', clc$nominal_entry, 2],
            ['NFN                            ', clc$abbreviation_entry, 2],
            ['STATUS                         ', clc$nominal_entry, 5]], [

{ PARAMETER 1

      [5, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [7, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 3

      [2, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_default_parameter, 0, 7],

{ PARAMETER 4

      [4, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 85,
            clc$optional_default_parameter, 0, 7],

{ PARAMETER 5

      [9, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 3

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 4

      [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type], FALSE, 2], 44,
            [[1, 0, clc$keyword_type], [1], [['DEFAULT                        ', clc$nominal_entry,
            clc$normal_usage_entry, 1]]], 21, [[1, 0, clc$list_type],
            [5, 1, clc$max_list_size, FALSE], [[1, 0, clc$name_type], [1, osc$max_name_size]]], 'default'],

{ PARAMETER 5

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$new_field_name = 2,
      p$change_command_names = 3,
      p$display_command_names = 4,
      p$status = 5;

    VAR
      pvt: array [1 .. 5] of clt$parameter_value;

    VAR
      change_command_names: ^avt$name_list,
      display_command_names: ^avt$name_list,
      ignore_status: ost$status;

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    process_command_names_parameter (pvt [p$change_command_names].value, pvt [p$new_field_name].
          value^.name_value, 'CHANGE', change_command_names);

    process_command_names_parameter (pvt [p$display_command_names].value, pvt [p$new_field_name].
          value^.name_value, 'DISPLAY', display_command_names);

{ Change the name of the field.

    avp$change_val_field_name (pvt [p$field_name].value^.name_value,
          current_subutility_session_info^.validation_record_name, pvt [p$new_field_name].value^.name_value,
          change_command_names, display_command_names, validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

  PROCEND change_field_name;
?? OLDTITLE ??
?? NEWTITLE := 'delete_field', EJECT ??

{ PURPOSE:
{   This is the command processor for the DELETE_FIELD subcommand.

  PROCEDURE delete_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_delf) delete_field, delf (
{   field_name, fn: name = $required
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 3] of clt$pdt_parameter_name,
        parameters: array [1 .. 2] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 16, 0, 7, 14, 3], clc$command, 3, 2, 1, 0, 0, 0, 2, 'OSM$ADMV_DELF'],
            [['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['STATUS                         ', clc$nominal_entry, 2]], [

{ PARAMETER 1

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$status = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    avp$delete_validation_field (pvt [p$field_name].value^.name_value,
          current_subutility_session_info^.validation_record_name, validation_file_information, status);

  PROCEND delete_field;
?? OLDTITLE ??
?? NEWTITLE := 'avp$display_field_description', EJECT ??

{ PURPOSE:
{   This is the command processor for the DISPLAY_FIELD_DESCRIPTION subcommand.

  PROCEDURE [XDCL] avp$display_field_description
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_disfd) display_field_description, disfd (
{   field_name, field_names, fn: (CHECK) any of
{       key
{         all
{       keyend
{       list 1..clc$max_list_size of name
{     anyend = all
{   output, o: file = $output
{   display_option, display_options, do: (BY_NAME) list of key
{       (type, k, kind, t)
{       (default_value, dv)
{       (description, d)
{       (change_authority, ca)
{       (display_authority, da)
{       (manage_authority, ma)
{       delete_authority, all, none
{     keyend = (type, default_value, description)
{   status)

?? PUSH (LISTEXT := ON) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 9] of clt$pdt_parameter_name,
      parameters: array [1 .. 4] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$union_type_qualifier,
        type_size_1: clt$type_specification_size,
        element_type_spec_1: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 1] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$list_type_qualifier,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$name_type_qualifier,
          recend,
        recend,
        default_value: string (3),
      recend,
      type2: record
        header: clt$type_specification_header,
        default_value: string (7),
      recend,
      type3: record
        header: clt$type_specification_header,
        qualifier: clt$list_type_qualifier,
        element_type_spec: record
          header: clt$type_specification_header,
          qualifier: clt$keyword_type_qualifier,
          keyword_specs: array [1 .. 17] of clt$keyword_specification,
        recend,
        default_value: string (34),
      recend,
      type4: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [88, 9, 29, 11, 0, 51, 152],
    clc$command, 9, 4, 0, 0, 0, 0, 4, 'OSM$ADMV_DISFD'], [
    ['DISPLAY_OPTION                 ',clc$nominal_entry, 3],
    ['DISPLAY_OPTIONS                ',clc$alias_entry, 3],
    ['DO                             ',clc$abbreviation_entry, 3],
    ['FIELD_NAME                     ',clc$nominal_entry, 1],
    ['FIELD_NAMES                    ',clc$alias_entry, 1],
    ['FN                             ',clc$abbreviation_entry, 1],
    ['O                              ',clc$abbreviation_entry, 2],
    ['OUTPUT                         ',clc$nominal_entry, 2],
    ['STATUS                         ',clc$nominal_entry, 4]],
    [
{ PARAMETER 1
    [4, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$extended_parameter_checking, 85,
  clc$optional_default_parameter, 0, 3],
{ PARAMETER 2
    [8, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_default_parameter, 0, 7],
{ PARAMETER 3
    [1, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 652,
  clc$optional_default_parameter, 0, 34],
{ PARAMETER 4
    [9, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_parameter, 0, 0]],
{ PARAMETER 1
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    21, [[1, 0, clc$list_type], [5, 1, clc$max_list_size, FALSE],
        [[1, 0, clc$name_type], [1, osc$max_name_size]]
      ]
    ,
    'all'],
{ PARAMETER 2
    [[1, 0, clc$file_type],
    '$output'],
{ PARAMETER 3
    [[1, 0, clc$list_type], [636, 1, clc$max_list_size, FALSE],
      [[1, 0, clc$keyword_type], [17], [
      ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 8],
      ['CA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
      ['CHANGE_AUTHORITY               ', clc$nominal_entry, clc$normal_usage_entry, 4],
      ['D                              ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
      ['DA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
      ['DEFAULT_VALUE                  ', clc$nominal_entry, clc$normal_usage_entry, 2],
      ['DELETE_AUTHORITY               ', clc$nominal_entry, clc$normal_usage_entry, 7],
      ['DESCRIPTION                    ', clc$nominal_entry, clc$normal_usage_entry, 3],
      ['DISPLAY_AUTHORITY              ', clc$nominal_entry, clc$normal_usage_entry, 5],
      ['DV                             ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
      ['K                              ', clc$alias_entry, clc$normal_usage_entry, 1],
      ['KIND                           ', clc$alias_entry, clc$normal_usage_entry, 1],
      ['MA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 6],
      ['MANAGE_AUTHORITY               ', clc$nominal_entry, clc$normal_usage_entry, 6],
      ['NONE                           ', clc$nominal_entry, clc$normal_usage_entry, 9],
      ['T                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
      ['TYPE                           ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ]
    ,
    '(type, default_value, description)'],
{ PARAMETER 4
    [[1, 0, clc$status_type]]];

?? POP ??

  CONST
    p$field_name = 1,
    p$output = 2,
    p$display_option = 3,
    p$status = 4;

  VAR
    pvt: array [1 .. 4] of clt$parameter_value;

    TYPE
      avt$display_option = (avc$field_kind, avc$default_value, avc$description, avc$change_authority,
            avc$display_authority, avc$manage_authority, avc$delete_authority);

    TYPE
      avt$display_option_set = set of avt$display_option;

    VAR
      current_parameter_value: ^clt$data_value,
      display_control: clt$display_control,
      display_options: avt$display_option_set,
      field_name_count: 0 .. avc$maximum_field_count,
      field_name_list: ^array [1 .. * ] of ost$name,
      field_name_work_area: ^SEQ ( * ),
      file_contents: amt$file_contents,
      ignore_status: ost$status,
      index: avt$name_list_size,
      ring_attributes: amt$ring_attributes;

?? NEWTITLE := 'check_parameters', EJECT ??

    PROCEDURE check_parameters
      (    parameter_value_table: ^clt$parameter_value_table;
           which_parameter: clt$which_parameter;
       VAR status: ost$status);

      status.normal := TRUE;

      IF (which_parameter.specific) AND (which_parameter.number = p$field_name) THEN
        verify_field_names_value ('FIELD_NAME', parameter_value_table^ [p$field_name].value,
              current_subutility_session_info^.validation_record_name, -$avt$field_kind_set [], status);
      IFEND;

    PROCEND check_parameters;
?? OLDTITLE, EJECT ??
?? NEWTITLE := 'condition_handler', EJECT ??

{ PURPOSE:
{   This block exit condition handler is used to insure that the output file
{   is closed if an error occurs.

    PROCEDURE condition_handler
      (    condition: pmt$condition;
           condition_information: ^pmt$condition_information;
           save_area: ^ost$stack_frame_save_area;
       VAR handler_status: ost$status);

      VAR
        ignore_status: ost$status;

{ This condition handler is used to close the display file in case of an abnormal termination.

      clp$close_display (display_control, ignore_status);

    PROCEND condition_handler;
?? OLDTITLE ??
?? NEWTITLE := 'display_field', EJECT ??

{ PURPOSE:
{   This procedure is used to display the field description for a specified
{   field name.

    PROCEDURE display_field
      (    field_name: ost$name;
           validation_record_name: ost$name;
           display_options: avt$display_option_set;
       VAR display_control: clt$display_control;
       VAR validation_file_information: avt$template_file_information;
       VAR status: ost$status);

      VAR
        field_kind: avt$field_kind;

?? NEWTITLE := 'display_account_project_field', EJECT ??

      PROCEDURE display_field_kind
        (    field_kind: avt$field_kind;
         VAR display_control: clt$display_control;
         VAR status: ost$status);

        status.normal := TRUE;

        clp$put_partial_display (display_control, '    Field type: ', clc$no_trim, amc$start, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        clp$put_partial_display (display_control, avv$field_kind_names [field_kind], clc$trim, amc$terminate,
              status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

      PROCEND display_field_kind;
?? OLDTITLE ??
?? NEWTITLE := 'display_account_project_field', EJECT ??

      PROCEDURE display_account_project_field
        (    field_name: ost$name;
             validation_record_name: ost$name;
             display_options: avt$display_option_set;
         VAR display_control: clt$display_control;
         VAR validation_file_information: avt$template_file_information;
         VAR status: ost$status);

        VAR
          change_authority: avt$validation_authority,
          default_account: avt$account_name,
          default_project: avt$project_name,
          description: ost$string,
          delete_authority: avt$validation_authority,
          display_authority: avt$validation_authority,
          manage_authority: avt$validation_authority;

        status.normal := TRUE;

        avp$get_acct_proj_field_desc (field_name, validation_record_name, osc$null_name, default_account,
              default_project, description, change_authority, delete_authority, display_authority,
              manage_authority, validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF avc$field_kind IN display_options THEN
          display_field_kind (avc$account_project_kind, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$default_value IN display_options THEN
          clp$put_partial_display (display_control, '    Default account: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, default_account, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          clp$put_partial_display (display_control, '    Default project: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, default_project, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$description IN display_options THEN
          clp$put_partial_display (display_control, '    Description: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, description.value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$change_authority IN display_options THEN
          display_authority_value ('    Change authority:  ', change_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$display_authority IN display_options THEN
          display_authority_value ('    Display authority: ', display_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$manage_authority IN display_options THEN
          display_authority_value ('    Manage authority:  ', manage_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$delete_authority IN display_options THEN
          display_authority_value ('    Delete authority:  ', delete_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

      PROCEND display_account_project_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_accum_limit_field', EJECT ??

      PROCEDURE display_accum_limit_field
        (    field_name: ost$name;
             validation_record_name: ost$name;
             display_options: avt$display_option_set;
         VAR display_control: clt$display_control;
         VAR validation_file_information: avt$template_file_information;
         VAR status: ost$status);

        VAR
          total_limit_applies: boolean,
          total_limit_stops_login: boolean,
          change_authority: avt$validation_authority,
          default_job_maximum_limit: avt$limit_value,
          default_job_warning_limit: avt$limit_value,
          default_total_limit: avt$limit_value,
          default_total_accumulation: avt$limit_value,
          description: ost$string,
          delete_authority: avt$validation_authority,
          display_authority: avt$validation_authority,
          job_limits_apply: boolean,
          limit_name: ost$name,
          manage_authority: avt$validation_authority,
          maximum_job_limit_value: avt$limit_value,
          minimum_job_limit_value: avt$limit_value,
          number_of_update_statistics: avt$name_list_size,
          statistic_name: ost$name,
          update_statistics: ^sft$limit_update_statistics,
          update_statistics_count: integer;

        status.normal := TRUE;

        PUSH update_statistics: [1 .. avc$maximum_name_list_size];

        avp$get_accum_limit_field_desc (field_name, validation_record_name, osc$null_name,
              default_job_warning_limit, default_job_maximum_limit, default_total_limit,
              default_total_accumulation, limit_name, job_limits_apply, minimum_job_limit_value,
              maximum_job_limit_value, number_of_update_statistics, update_statistics, total_limit_applies,
              total_limit_stops_login, description, change_authority, delete_authority, display_authority,
              manage_authority, validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF avc$field_kind IN display_options THEN
          display_field_kind (avc$accumulating_limit_kind, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          IF job_limits_apply AND total_limit_applies THEN
            clp$put_display (display_control, '      Job and total limits apply.', clc$trim, status);
          ELSEIF job_limits_apply THEN
            clp$put_display (display_control, '      Job limits apply.', clc$trim, status);
          ELSE
            clp$put_display (display_control, '      Total limits apply.', clc$trim, status);
          IFEND;
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          IF job_limits_apply THEN
            clp$put_partial_display (display_control, '      Limit name: ', clc$no_trim, amc$start, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            clp$put_partial_display (display_control, limit_name, clc$trim, amc$terminate, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            display_limit_value ('      Minimum job limit value: ', minimum_job_limit_value, display_control,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            display_limit_value ('      Maximum job limit value: ', maximum_job_limit_value, display_control,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            clp$put_partial_display (display_control, '      Limit update statistics: ', clc$no_trim,
                  amc$start, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            IF number_of_update_statistics = 0 THEN
              clp$put_partial_display (display_control, ' ', clc$no_trim, amc$terminate, status);
            ELSE
              FOR update_statistics_count := 1 TO number_of_update_statistics DO
                sfp$convert_stat_code_to_name (update_statistics^ [update_statistics_count].statistic_code,
                      statistic_name, status);
                IF NOT status.normal THEN
                  RETURN;
                IFEND;
                clp$put_partial_display (display_control, statistic_name, clc$trim, amc$terminate, status);
                IF NOT status.normal THEN
                  RETURN;
                IFEND;
                IF update_statistics_count <> number_of_update_statistics THEN
                  clp$put_partial_display (display_control, '                               ', clc$no_trim,
                        amc$start, status);
                  IF NOT status.normal THEN
                    RETURN;
                  IFEND;
                IFEND;
              FOREND;
            IFEND;
          IFEND;

          IF total_limit_applies THEN
            IF total_limit_stops_login THEN
              clp$put_display (display_control, '      Total limit prevents login.', clc$trim, status);
            ELSE
              clp$put_display (display_control, '      Total limit does not prevent login.', clc$trim,
                    status);
            IFEND;
            IF NOT status.normal THEN
              RETURN;
            IFEND;
          IFEND;
        IFEND;

        IF avc$default_value IN display_options THEN
          IF job_limits_apply THEN
            display_limit_value ('    Default job warning limit:   ', default_job_warning_limit,
                  display_control, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            display_limit_value ('    Default job maximum limit:   ', default_job_maximum_limit,
                  display_control, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
          IFEND;

          IF total_limit_applies THEN
            display_limit_value ('    Default total limit:         ', default_total_limit, display_control,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
          IFEND;
        IFEND;

        IF avc$description IN display_options THEN
          clp$put_partial_display (display_control, '    Description: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, description.value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$change_authority IN display_options THEN
          display_authority_value ('    Change authority:  ', change_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$display_authority IN display_options THEN
          display_authority_value ('    Display authority: ', display_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$manage_authority IN display_options THEN
          display_authority_value ('    Manage authority:  ', manage_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$delete_authority IN display_options THEN
          display_authority_value ('    Delete authority:  ', delete_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

      PROCEND display_accum_limit_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_authority_value', EJECT ??

      PROCEDURE display_authority_value
        (    title: string ( * <= osc$max_string_size);
             authority: avt$validation_authority;
         VAR display_control: clt$display_control;
         VAR status: ost$status);

        status.normal := TRUE;

        clp$put_partial_display (display_control, title, clc$no_trim, amc$continue, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        CASE authority OF
        = avc$system_authority =
          clp$put_partial_display (display_control, 'System', clc$trim, amc$terminate, status);
        = avc$system_admin_authority =
          clp$put_partial_display (display_control, 'System administration', clc$trim, amc$terminate, status);
        = avc$family_admin_authority =
          clp$put_partial_display (display_control, 'Family administration', clc$trim, amc$terminate, status);
        = avc$user_admin_authority =
          clp$put_partial_display (display_control, 'User administration', clc$trim, amc$terminate, status);
        = avc$account_admin_authority =
          clp$put_partial_display (display_control, 'Account administration', clc$trim, amc$terminate,
                status);
        = avc$project_admin_authority =
          clp$put_partial_display (display_control, 'Project administration', clc$trim, amc$terminate,
                status);
        = avc$user_authority =
          clp$put_partial_display (display_control, 'User', clc$trim, amc$terminate, status);
        = avc$any_authority =
          clp$put_partial_display (display_control, 'Any', clc$trim, amc$terminate, status);
        ELSE
          clp$put_partial_display (display_control, 'unknown', clc$trim, amc$terminate, status);
        CASEND;

      PROCEND display_authority_value;
?? OLDTITLE ??
?? NEWTITLE := 'display_capability_field', EJECT ??

      PROCEDURE display_capability_field
        (    field_name: ost$name;
             validation_record_name: ost$name;
             display_options: avt$display_option_set;
         VAR display_control: clt$display_control;
         VAR validation_file_information: avt$template_file_information;
         VAR status: ost$status);

        VAR
          change_authority: avt$validation_authority,
          default_value: boolean,
          description: ost$string,
          delete_authority: avt$validation_authority,
          display_authority: avt$validation_authority,
          manage_authority: avt$validation_authority;

        status.normal := TRUE;

        avp$get_capability_field_desc (field_name, validation_record_name, osc$null_name, default_value,
              description, change_authority, delete_authority, display_authority, manage_authority,
              validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF avc$field_kind IN display_options THEN
          display_field_kind (avc$capability_kind, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$default_value IN display_options THEN
          IF default_value THEN
            clp$put_partial_display (display_control, '    Default value: INCLUDE', clc$no_trim, amc$start,
                  status);
          ELSE
            clp$put_partial_display (display_control, '    Default value: EXCLUDE', clc$no_trim, amc$start,
                  status);
          IFEND;
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$description IN display_options THEN
          clp$put_partial_display (display_control, '    Description: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, description.value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$change_authority IN display_options THEN
          display_authority_value ('    Change authority:  ', change_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$display_authority IN display_options THEN
          display_authority_value ('    Display authority: ', display_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$manage_authority IN display_options THEN
          display_authority_value ('    Manage authority:  ', manage_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$delete_authority IN display_options THEN
          display_authority_value ('    Delete authority:  ', delete_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

      PROCEND display_capability_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_date_time_field', EJECT ??

      PROCEDURE display_date_time_field
        (    field_name: ost$name;
             validation_record_name: ost$name;
             display_options: avt$display_option_set;
         VAR display_control: clt$display_control;
         VAR validation_file_information: avt$template_file_information;
         VAR status: ost$status);

        VAR
          change_authority: avt$validation_authority,
          date_applies: boolean,
          date_display_format: string (clc$max_date_time_form_string),
          date_time_range: boolean,
          default_date_time: avt$date_time,
          description: ost$string,
          delete_authority: avt$validation_authority,
          display_authority: avt$validation_authority,
          formatted_date_time: ost$string,
          manage_authority: avt$validation_authority,
          time_applies: boolean,
          time_display_format: string (clc$max_date_time_form_string);

        status.normal := TRUE;

        avp$get_date_time_field_desc (field_name, validation_record_name, osc$null_name, default_date_time,
              date_time_range, date_applies, time_applies, date_display_format, time_display_format,
              description, change_authority, delete_authority, display_authority, manage_authority,
              validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF avc$field_kind IN display_options THEN
          display_field_kind (avc$date_time_kind, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          IF date_time_range THEN
            clp$put_display (display_control, '      Range can be specified.', clc$no_trim, status);
          ELSE
            clp$put_display (display_control, '      Range cannot be specified.', clc$no_trim, status);
          IFEND;
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          IF date_applies AND time_applies THEN
            clp$put_display (display_control, '      A date and time may be specified.', clc$no_trim, status);
          ELSEIF date_applies THEN
            clp$put_display (display_control, '      Only a date may be specified.', clc$no_trim, status);
          ELSE
            clp$put_display (display_control, '      Only a time may be specified.', clc$no_trim, status);
          IFEND;
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          IF date_applies THEN
            clp$put_partial_display (display_control, '      Date will be displayed in ', clc$no_trim,
                  amc$start, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            IF date_display_format = ' ' THEN
              clp$put_partial_display (display_control, 'DEFAULT', clc$trim, amc$continue, status);
            ELSEIF date_display_format = avc$dmy_date_format THEN
              clp$put_partial_display (display_control, 'DAY_MONTH_YEAR', clc$trim, amc$continue, status);
            ELSEIF date_display_format = avc$iso_date_format THEN
              clp$put_partial_display (display_control, 'ISO_DATE', clc$trim, amc$continue, status);
            ELSEIF date_display_format = avc$mdy_date_format THEN
              clp$put_partial_display (display_control, 'MONTH_DAY_YEAR', clc$trim, amc$continue, status);
            ELSEIF date_display_format = avc$month_date_format THEN
              clp$put_partial_display (display_control, 'MONTH', clc$trim, amc$continue, status);
            ELSEIF date_display_format = avc$ordinal_date_format THEN
              clp$put_partial_display (display_control, 'ORDINAL', clc$trim, amc$continue, status);
            ELSE
              clp$put_partial_display (display_control, date_display_format, clc$trim, amc$continue, status);
            IFEND;
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            clp$put_partial_display (display_control, ' format.', clc$no_trim, amc$terminate, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
          IFEND;

          IF time_applies THEN
            clp$put_partial_display (display_control, '      Time will be displayed in ', clc$no_trim,
                  amc$start, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            IF time_display_format = ' ' THEN
              clp$put_partial_display (display_control, 'DEFAULT', clc$trim, amc$continue, status);
            ELSEIF time_display_format = avc$ampm_time_format THEN
              clp$put_partial_display (display_control, 'AMPM', clc$trim, amc$continue, status);
            ELSEIF time_display_format = avc$hms_time_format THEN
              clp$put_partial_display (display_control, 'HOUR_MINUTE_SECOND', clc$trim, amc$continue, status);
            ELSEIF time_display_format = avc$iso_time_format THEN
              clp$put_partial_display (display_control, 'ISO_TIME', clc$trim, amc$continue, status);
            ELSEIF time_display_format = avc$millisecond_time_format THEN
              clp$put_partial_display (display_control, 'MILLISECOND', clc$trim, amc$continue, status);
            ELSE
              clp$put_partial_display (display_control, time_display_format, clc$trim, amc$continue, status);
            IFEND;
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            clp$put_partial_display (display_control, ' format.', clc$no_trim, amc$terminate, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
          IFEND;
        IFEND;

        IF avc$default_value IN display_options THEN
          clp$put_partial_display (display_control, '    Default value: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          IF date_time_range THEN
            format_date_time (default_date_time.starting_value, date_applies, date_display_format,
                  time_applies, time_display_format, formatted_date_time, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            clp$put_partial_display (display_control, formatted_date_time.value, clc$trim, amc$continue,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            clp$put_partial_display (display_control, ' .. ', clc$no_trim, amc$continue, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            format_date_time (default_date_time.ending_value, date_applies, date_display_format, time_applies,
                  time_display_format, formatted_date_time, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            clp$put_partial_display (display_control, formatted_date_time.value, clc$trim, amc$continue,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
          ELSE
            format_date_time (default_date_time.value, date_applies, date_display_format, time_applies,
                  time_display_format, formatted_date_time, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            clp$put_partial_display (display_control, formatted_date_time.value, clc$trim, amc$continue,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
          IFEND;
        IFEND;

        IF avc$description IN display_options THEN
          clp$put_partial_display (display_control, '    Description: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, description.value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$change_authority IN display_options THEN
          display_authority_value ('    Change authority:  ', change_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$display_authority IN display_options THEN
          display_authority_value ('    Display authority: ', display_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$manage_authority IN display_options THEN
          display_authority_value ('    Manage authority:  ', manage_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$delete_authority IN display_options THEN
          display_authority_value ('    Delete authority:  ', delete_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

      PROCEND display_date_time_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_file_field', EJECT ??

      PROCEDURE display_file_field
        (    field_name: ost$name;
             validation_record_name: ost$name;
             display_options: avt$display_option_set;
         VAR display_control: clt$display_control;
         VAR validation_file_information: avt$template_file_information;
         VAR status: ost$status);

        VAR
          change_authority: avt$validation_authority,
          default_value: string (fsc$max_path_size),
          description: ost$string,
          delete_authority: avt$validation_authority,
          display_authority: avt$validation_authority,
          manage_authority: avt$validation_authority;

        status.normal := TRUE;

        avp$get_file_field_desc (field_name, validation_record_name, osc$null_name, default_value,
              description, change_authority, delete_authority, display_authority, manage_authority,
              validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF avc$field_kind IN display_options THEN
          display_field_kind (avc$file_kind, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$default_value IN display_options THEN
          clp$put_partial_display (display_control, '    Default value: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, default_value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$description IN display_options THEN
          clp$put_partial_display (display_control, '    Description: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, description.value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$change_authority IN display_options THEN
          display_authority_value ('    Change authority:  ', change_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$display_authority IN display_options THEN
          display_authority_value ('    Display authority: ', display_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$manage_authority IN display_options THEN
          display_authority_value ('    Manage authority:  ', manage_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$delete_authority IN display_options THEN
          display_authority_value ('    Delete authority:  ', delete_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

      PROCEND display_file_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_integer_field', EJECT ??

      PROCEDURE display_integer_field
        (    field_name: ost$name;
             validation_record_name: ost$name;
             display_options: avt$display_option_set;
         VAR display_control: clt$display_control;
         VAR validation_file_information: avt$template_file_information;
         VAR status: ost$status);

        VAR
          change_authority: avt$validation_authority,
          default_value: integer,
          description: ost$string,
          delete_authority: avt$validation_authority,
          display_authority: avt$validation_authority,
          display_format: avt$numeric_display_format,
          integer_value: integer,
          manage_authority: avt$validation_authority,
          maximum_value: integer,
          minimum_value: integer;

        status.normal := TRUE;

        avp$get_integer_field_desc (field_name, validation_record_name, osc$null_name, default_value,
              minimum_value, maximum_value, display_format, description, change_authority, delete_authority,
              display_authority, manage_authority, validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF avc$field_kind IN display_options THEN
          display_field_kind (avc$integer_kind, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          integer_value := display_format.field_size;
          display_integer ('      Display field width: ', integer_value, 3, 10, FALSE, display_control,
                status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          integer_value := display_format.radix;
          display_integer ('      Radix used for display: ', integer_value, 3, 10, FALSE, display_control,
                status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          IF display_format.display_radix THEN
            clp$put_display (display_control, '      Radix will be displayed.', clc$no_trim, status);
          ELSE
            clp$put_display (display_control, '      Radix will not be displayed.', clc$no_trim, status);
          IFEND;
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          display_integer ('      Minimum value: ', minimum_value, display_format.field_size,
                display_format.radix, display_format.display_radix, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          display_integer ('      Maximum value: ', maximum_value, display_format.field_size,
                display_format.radix, display_format.display_radix, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$default_value IN display_options THEN
          display_integer ('    Default value: ', default_value, display_format.field_size,
                display_format.radix, display_format.display_radix, display_control, status);
        IFEND;

        IF avc$description IN display_options THEN
          clp$put_partial_display (display_control, '    Description: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, description.value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$change_authority IN display_options THEN
          display_authority_value ('    Change authority:  ', change_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$display_authority IN display_options THEN
          display_authority_value ('    Display authority: ', display_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$manage_authority IN display_options THEN
          display_authority_value ('    Manage authority:  ', manage_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$delete_authority IN display_options THEN
          display_authority_value ('    Delete authority:  ', delete_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

      PROCEND display_integer_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_job_class_field', EJECT ??

      PROCEDURE display_job_class_field
        (    field_name: ost$name;
             validation_record_name: ost$name;
             display_options: avt$display_option_set;
         VAR display_control: clt$display_control;
         VAR validation_file_information: avt$template_file_information;
         VAR status: ost$status);

        VAR
          batch_job_class_default: ost$name,
          change_authority: avt$validation_authority,
          common_job_classes: ^avt$name_list,
          default_job_classes: ^avt$name_list,
          description: ost$string,
          delete_authority: avt$validation_authority,
          display_authority: avt$validation_authority,
          interactive_job_class_default: ost$name,
          manage_authority: avt$validation_authority,
          number_of_common_job_classes: avt$name_list_size,
          number_of_default_job_classes: avt$name_list_size;

        status.normal := TRUE;

        PUSH default_job_classes: [1 .. avc$maximum_name_list_size];
        PUSH common_job_classes: [1 .. avc$maximum_name_list_size];

        avp$get_job_class_field_desc (field_name, validation_record_name, osc$null_name,
              number_of_default_job_classes, default_job_classes, batch_job_class_default,
              interactive_job_class_default, number_of_common_job_classes, common_job_classes, description,
              change_authority, delete_authority, display_authority, manage_authority,
              validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF avc$field_kind IN display_options THEN
          display_field_kind (avc$job_class_kind, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$default_value IN display_options THEN
          display_list_of_names ('    Default job classes', number_of_default_job_classes,
                default_job_classes, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          clp$put_partial_display (display_control, '    Interactive default: ', clc$no_trim, amc$start,
                status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          clp$put_partial_display (display_control, interactive_job_class_default, clc$trim, amc$terminate,
                status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          clp$put_partial_display (display_control, '    Batch default: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          clp$put_partial_display (display_control, batch_job_class_default, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$description IN display_options THEN
          clp$put_partial_display (display_control, '    Description: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, description.value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$change_authority IN display_options THEN
          display_authority_value ('    Change authority:  ', change_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$display_authority IN display_options THEN
          display_authority_value ('    Display authority: ', display_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$manage_authority IN display_options THEN
          display_authority_value ('    Manage authority:  ', manage_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$delete_authority IN display_options THEN
          display_authority_value ('    Delete authority:  ', delete_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

      PROCEND display_job_class_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_labeled_names_field', EJECT ??

      PROCEDURE display_labeled_names_field
        (    field_name: ost$name;
             validation_record_name: ost$name;
             display_options: avt$display_option_set;
         VAR display_control: clt$display_control;
         VAR validation_file_information: avt$template_file_information;
         VAR status: ost$status);

        VAR
          change_authority: avt$validation_authority,
          valid_labels: ^avt$name_list,
          valid_names: ^avt$name_list,
          default_labeled_names: ^avt$labeled_names_list,
          description: ost$string,
          delete_authority: avt$validation_authority,
          display_authority: avt$validation_authority,
          manage_authority: avt$validation_authority,
          number_of_valid_labels: avt$name_list_size,
          number_of_valid_names: avt$name_list_size,
          numeric_string: ost$string,
          work_area: ^seq (*);

        status.normal := TRUE;

        PUSH valid_labels: [1 .. avc$maximum_name_list_size];
        PUSH valid_names: [1 .. avc$maximum_name_list_size];
        PUSH work_area: [[REP avc$max_template_record_size OF cell]];
        RESET work_area;

        avp$get_labeled_names_field_des (field_name, validation_record_name, osc$null_name, work_area,
              default_labeled_names,
              number_of_valid_labels, valid_labels, number_of_valid_names, valid_names,
              description, change_authority, delete_authority, display_authority,
              manage_authority, validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF avc$field_kind IN display_options THEN
          display_field_kind (avc$labeled_names_kind, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$default_value IN display_options THEN
          display_labeled_names ('    Default value', default_labeled_names, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$description IN display_options THEN
          clp$put_partial_display (display_control, '    Description: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, description.value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$change_authority IN display_options THEN
          display_authority_value ('    Change authority:  ', change_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$display_authority IN display_options THEN
          display_authority_value ('    Display authority: ', display_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$manage_authority IN display_options THEN
          display_authority_value ('    Manage authority:  ', manage_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$delete_authority IN display_options THEN
          display_authority_value ('    Delete authority:  ', delete_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

      PROCEND display_labeled_names_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_limit_field', EJECT ??

      PROCEDURE display_limit_field
        (    field_name: ost$name;
             validation_record_name: ost$name;
             display_options: avt$display_option_set;
         VAR display_control: clt$display_control;
         VAR validation_file_information: avt$template_file_information;
         VAR status: ost$status);

        VAR
          change_authority: avt$validation_authority,
          default_value: avt$limit_value,
          description: ost$string,
          delete_authority: avt$validation_authority,
          display_authority: avt$validation_authority,
          manage_authority: avt$validation_authority,
          maximum_limit_value: avt$limit_value,
          minimum_limit_value: avt$limit_value;

        status.normal := TRUE;

        avp$get_limit_field_desc (field_name, validation_record_name, osc$null_name, default_value,
              minimum_limit_value, maximum_limit_value, description, change_authority, delete_authority,
              display_authority, manage_authority, validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF avc$field_kind IN display_options THEN
          display_field_kind (avc$limit_kind, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          display_limit_value ('      Minimum limit value: ', minimum_limit_value, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          display_limit_value ('      Maximum limit value: ', maximum_limit_value, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$default_value IN display_options THEN
          display_limit_value ('    Default value:   ', default_value, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$description IN display_options THEN
          clp$put_partial_display (display_control, '    Description: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, description.value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$change_authority IN display_options THEN
          display_authority_value ('    Change authority:  ', change_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$display_authority IN display_options THEN
          display_authority_value ('    Display authority: ', display_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$manage_authority IN display_options THEN
          display_authority_value ('    Manage authority:  ', manage_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$delete_authority IN display_options THEN
          display_authority_value ('    Delete authority:  ', delete_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

      PROCEND display_limit_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_login_password_field', EJECT ??

      PROCEDURE display_login_password_field
        (    field_name: ost$name;
             validation_record_name: ost$name;
             display_options: avt$display_option_set;
         VAR display_control: clt$display_control;
         VAR validation_file_information: avt$template_file_information;
         VAR status: ost$status);

        VAR
          change_authority: avt$validation_authority,
          date_time_to_format: clt$date_time,
          default_attributes: ^avt$name_list,
          default_expiration_date: ost$date_time,
          default_expiration_interval: pmt$time_increment,
          default_exp_pw_chg_interval: pmt$time_increment,
          default_exp_warning_interval: pmt$time_increment,
          default_max_expiration_interval: pmt$time_increment,
          default_password: avt$login_password,
          description: ost$string,
          delete_authority: avt$validation_authority,
          display_authority: avt$validation_authority,
          display_format: ^clt$date_time_form_string,
          formatted_date_time: ost$string,
          manage_authority: avt$validation_authority,
          number_of_default_attributes: avt$name_list_size;

        status.normal := TRUE;

        PUSH default_attributes: [1 .. avc$maximum_name_list_size];

        avp$get_login_pw_field_desc (field_name, validation_record_name, osc$null_name, default_password,
              default_expiration_date, default_expiration_interval, default_max_expiration_interval,
              default_exp_warning_interval, default_exp_pw_chg_interval, number_of_default_attributes,
              default_attributes, description, change_authority, delete_authority, display_authority,
              manage_authority, validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF avc$field_kind IN display_options THEN
          display_field_kind (avc$login_password_kind, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$default_value IN display_options THEN
          IF avp$system_administrator () OR avp$family_administrator () THEN
            clp$put_partial_display (display_control, '    Default password: ', clc$no_trim, amc$start,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            clp$put_partial_display (display_control, default_password.value, clc$trim, amc$terminate,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
          IFEND;

          clp$put_partial_display (display_control, '    Default expiration date: ', clc$no_trim, amc$start,
                status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          IF default_expiration_date.year = UPPERVALUE (default_expiration_date.year) THEN
            clp$put_partial_display (display_control, 'None', clc$trim, amc$terminate, status);
          ELSE
            date_time_to_format.value := default_expiration_date;
            date_time_to_format.date_specified := TRUE;
            date_time_to_format.time_specified := TRUE;


            PUSH display_format: [clc$max_date_time_form_string];
            display_format^ := avc$iso_date_format;
            display_format^ (clp$trimmed_string_size (display_format^) + 1, * ) := '.';
            display_format^ (clp$trimmed_string_size (display_format^) + 1, * ) := avc$hms_time_format;

            clp$convert_date_time_to_string (date_time_to_format, display_format^, formatted_date_time,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            clp$put_partial_display (display_control, formatted_date_time.value (1, formatted_date_time.size),
                  clc$trim, amc$terminate, status);
          IFEND;

          display_time_increment ('    Default expiration interval: ', default_expiration_interval,
                display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          display_time_increment ('    Default maximum expiration interval: ',
                default_max_expiration_interval, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          display_time_increment ('    Default expiration warning interval: ', default_exp_warning_interval,
                display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          display_list_of_names ('    Default password attributes', number_of_default_attributes,
                default_attributes, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$description IN display_options THEN
          clp$put_partial_display (display_control, '    Description: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, description.value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$change_authority IN display_options THEN
          display_authority_value ('    Change authority:  ', change_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$display_authority IN display_options THEN
          display_authority_value ('    Display authority: ', display_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$manage_authority IN display_options THEN
          display_authority_value ('    Manage authority:  ', manage_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$delete_authority IN display_options THEN
          display_authority_value ('    Delete authority:  ', delete_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

      PROCEND display_login_password_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_name_field', EJECT ??

      PROCEDURE display_name_field
        (    field_name: ost$name;
             validation_record_name: ost$name;
             display_options: avt$display_option_set;
         VAR display_control: clt$display_control;
         VAR validation_file_information: avt$template_file_information;
         VAR status: ost$status);

        VAR
          change_authority: avt$validation_authority,
          common_names: ^avt$name_list,
          default_names: ^avt$name_list,
          description: ost$string,
          delete_authority: avt$validation_authority,
          display_authority: avt$validation_authority,
          manage_authority: avt$validation_authority,
          maximum_number_of_names: avt$name_list_size,
          minimum_number_of_names: avt$name_list_size,
          number_of_common_names: avt$name_list_size,
          number_of_default_names: avt$name_list_size,
          numeric_string: ost$string;

        status.normal := TRUE;

        PUSH common_names: [1 .. avc$maximum_name_list_size];
        PUSH default_names: [1 .. avc$maximum_name_list_size];

        avp$get_name_field_desc (field_name, validation_record_name, osc$null_name, number_of_default_names,
              default_names, minimum_number_of_names, maximum_number_of_names, number_of_common_names,
              common_names, description, change_authority, delete_authority, display_authority,
              manage_authority, validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF avc$field_kind IN display_options THEN
          display_field_kind (avc$name_kind, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          clp$put_partial_display (display_control, '      Number of names allowed: ', clc$no_trim, amc$start,
                status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$convert_integer_to_string (minimum_number_of_names, 10, FALSE, numeric_string, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          IF minimum_number_of_names = maximum_number_of_names THEN
            clp$put_partial_display (display_control, numeric_string.value (1, numeric_string.size), clc$trim,
                  amc$terminate, status);
          ELSE
            clp$put_partial_display (display_control, numeric_string.value (1, numeric_string.size), clc$trim,
                  amc$continue, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            clp$put_partial_display (display_control, ' .. ', clc$no_trim, amc$continue, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            clp$convert_integer_to_string (maximum_number_of_names, 10, FALSE, numeric_string, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            clp$put_partial_display (display_control, numeric_string.value (1, numeric_string.size), clc$trim,
                  amc$terminate, status);
          IFEND;
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$default_value IN display_options THEN
          display_list_of_names ('    Default value', number_of_default_names, default_names, display_control,
                status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$description IN display_options THEN
          clp$put_partial_display (display_control, '    Description: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, description.value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$change_authority IN display_options THEN
          display_authority_value ('    Change authority:  ', change_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$display_authority IN display_options THEN
          display_authority_value ('    Display authority: ', display_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$manage_authority IN display_options THEN
          display_authority_value ('    Manage authority:  ', manage_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$delete_authority IN display_options THEN
          display_authority_value ('    Delete authority:  ', delete_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

      PROCEND display_name_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_real_field', EJECT ??

      PROCEDURE display_real_field
        (    field_name: ost$name;
             validation_record_name: ost$name;
             display_options: avt$display_option_set;
         VAR display_control: clt$display_control;
         VAR validation_file_information: avt$template_file_information;
         VAR status: ost$status);

        VAR
          change_authority: avt$validation_authority,
          default_value: real,
          description: ost$string,
          delete_authority: avt$validation_authority,
          display_authority: avt$validation_authority,
          display_format: avt$numeric_display_format,
          field_size_string: ost$string,
          integer_value: integer,
          manage_authority: avt$validation_authority,
          maximum_value: real,
          minimum_value: real,
          numeric_string: string (osc$max_string_size),
          numeric_string_size: integer;

        status.normal := TRUE;

        avp$get_real_field_desc (field_name, validation_record_name, osc$null_name, default_value,
              minimum_value, maximum_value, display_format, description, change_authority, delete_authority,
              display_authority, manage_authority, validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF avc$field_kind IN display_options THEN
          display_field_kind (avc$real_kind, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          CASE display_format.kind OF
          = avc$fixed_point_format =
            clp$put_display (display_control, '      Values will be displayed in fixed point format.',
                  clc$no_trim, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            integer_value := display_format.field_size;
            display_integer ('      Display field width: ', integer_value, 3, 10, FALSE, display_control,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            integer_value := display_format.fraction_size;
            display_integer ('      Number of decimal places: ', integer_value, 3, 10, FALSE, display_control,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            clp$put_partial_display (display_control, '      Minimum value: ', clc$no_trim, amc$start,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            STRINGREP (numeric_string, numeric_string_size, minimum_value: display_format.
                  field_size: display_format.fraction_size);
            clp$put_partial_display (display_control, numeric_string (1, numeric_string_size), clc$trim,
                  amc$terminate, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            clp$put_partial_display (display_control, '      Maximum value: ', clc$no_trim, amc$start,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            STRINGREP (numeric_string, numeric_string_size, maximum_value: display_format.
                  field_size: display_format.fraction_size);
            clp$put_partial_display (display_control, numeric_string (1, numeric_string_size), clc$trim,
                  amc$terminate, status);
          = avc$floating_point_format =
            clp$put_display (display_control, '      Values will be displayed in floating point format.',
                  clc$no_trim, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            integer_value := display_format.field_size;
            display_integer ('      Display field width: ', integer_value, 3, 10, FALSE, display_control,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            clp$put_partial_display (display_control, '      Minimum value: ', clc$no_trim, amc$start,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            STRINGREP (numeric_string, numeric_string_size, minimum_value: display_format.field_size);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            clp$put_partial_display (display_control, numeric_string (1, numeric_string_size), clc$trim,
                  amc$terminate, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;

            clp$put_partial_display (display_control, '      Maximum value: ', clc$no_trim, amc$start,
                  status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            STRINGREP (numeric_string, numeric_string_size, maximum_value: display_format.field_size);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
            clp$put_partial_display (display_control, numeric_string (1, numeric_string_size), clc$trim,
                  amc$terminate, status);
          CASEND;
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$default_value IN display_options THEN
          clp$put_partial_display (display_control, '    Default value: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          CASE display_format.kind OF
          = avc$fixed_point_format =
            STRINGREP (numeric_string, numeric_string_size, default_value: display_format.
                  field_size: display_format.fraction_size);
            clp$put_partial_display (display_control, numeric_string (1, numeric_string_size), clc$trim,
                  amc$terminate, status);
          = avc$floating_point_format =
            STRINGREP (numeric_string, numeric_string_size, default_value: display_format.field_size);
            clp$put_partial_display (display_control, numeric_string (1, numeric_string_size), clc$trim,
                  amc$terminate, status);
          CASEND;
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$description IN display_options THEN
          clp$put_partial_display (display_control, '    Description: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, description.value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$change_authority IN display_options THEN
          display_authority_value ('    Change authority:  ', change_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$display_authority IN display_options THEN
          display_authority_value ('    Display authority: ', display_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$manage_authority IN display_options THEN
          display_authority_value ('    Manage authority:  ', manage_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$delete_authority IN display_options THEN
          display_authority_value ('    Delete authority:  ', delete_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

      PROCEND display_real_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_ring_privilege_field', EJECT ??

      PROCEDURE display_ring_privilege_field
        (    field_name: ost$name;
             validation_record_name: ost$name;
             display_options: avt$display_option_set;
         VAR display_control: clt$display_control;
         VAR validation_file_information: avt$template_file_information;
         VAR status: ost$status);

        VAR
          change_authority: avt$validation_authority,
          default_minimum_ring: ost$ring,
          default_nominal_ring: ost$ring,
          description: ost$string,
          delete_authority: avt$validation_authority,
          display_authority: avt$validation_authority,
          integer_value: integer,
          manage_authority: avt$validation_authority;

        status.normal := TRUE;

        avp$get_ring_priv_field_desc (field_name, validation_record_name, osc$null_name, default_minimum_ring,
              default_nominal_ring, description, change_authority, delete_authority, display_authority,
              manage_authority, validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF avc$field_kind IN display_options THEN
          display_field_kind (avc$ring_privilege_kind, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$default_value IN display_options THEN
          integer_value := default_minimum_ring;
          display_integer ('    Default minimum ring: ', integer_value, 3, 10, FALSE, display_control,
                status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          integer_value := default_nominal_ring;
          display_integer ('    Default nominal ring: ', integer_value, 3, 10, FALSE, display_control,
                status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$description IN display_options THEN
          clp$put_partial_display (display_control, '    Description: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, description.value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$change_authority IN display_options THEN
          display_authority_value ('    Change authority:  ', change_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$display_authority IN display_options THEN
          display_authority_value ('    Display authority: ', display_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$manage_authority IN display_options THEN
          display_authority_value ('    Manage authority:  ', manage_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$delete_authority IN display_options THEN
          display_authority_value ('    Delete authority:  ', delete_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

      PROCEND display_ring_privilege_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_string_field', EJECT ??

      PROCEDURE display_string_field
        (    field_name: ost$name;
             validation_record_name: ost$name;
             display_options: avt$display_option_set;
         VAR display_control: clt$display_control;
         VAR validation_file_information: avt$template_file_information;
         VAR status: ost$status);

        VAR
          change_authority: avt$validation_authority,
          default_value: ost$string,
          description: ost$string,
          delete_authority: avt$validation_authority,
          display_authority: avt$validation_authority,
          integer_value: integer,
          manage_authority: avt$validation_authority,
          maximum_size: ost$string_size,
          minimum_size: ost$string_size;

        status.normal := TRUE;

        avp$get_string_field_desc (field_name, validation_record_name, osc$null_name, default_value,
              minimum_size, maximum_size, description, change_authority, delete_authority, display_authority,
              manage_authority, validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF avc$field_kind IN display_options THEN
          display_field_kind (avc$string_kind, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          integer_value := minimum_size;
          display_integer ('      Minimum size: ', integer_value, 4, 10, FALSE, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          integer_value := maximum_size;
          display_integer ('      Maximum size: ', integer_value, 4, 10, FALSE, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$default_value IN display_options THEN
          clp$put_partial_display (display_control, '    Default value: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          clp$put_partial_display (display_control, '''', clc$trim, amc$continue, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, default_value.value (1, default_value.size), clc$no_trim,
                amc$continue, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, '''', clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$description IN display_options THEN
          clp$put_partial_display (display_control, '    Description: ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, description.value, clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$change_authority IN display_options THEN
          display_authority_value ('    Change authority:  ', change_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$display_authority IN display_options THEN
          display_authority_value ('    Display authority: ', display_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$manage_authority IN display_options THEN
          display_authority_value ('    Manage authority:  ', manage_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF avc$delete_authority IN display_options THEN
          display_authority_value ('    Delete authority:  ', delete_authority, display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

      PROCEND display_string_field;
?? OLDTITLE, EJECT ??
      status.normal := TRUE;

      clp$put_display (display_control, ' ', clc$no_trim, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      clp$put_display (display_control, field_name, clc$trim, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      IF display_options <> $avt$display_option_set [] THEN
        avp$get_validation_field_kind (field_name, validation_record_name, field_kind,
              validation_file_information, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        CASE field_kind OF
        = avc$account_project_kind =
          display_account_project_field (field_name, validation_record_name, display_options, display_control,
                validation_file_information, status);
        = avc$accumulating_limit_kind =
          display_accum_limit_field (field_name, validation_record_name, display_options, display_control,
                validation_file_information, status);
        = avc$capability_kind =
          display_capability_field (field_name, validation_record_name, display_options, display_control,
                validation_file_information, status);
        = avc$date_time_kind =
          display_date_time_field (field_name, validation_record_name, display_options, display_control,
                validation_file_information, status);
        = avc$file_kind =
          display_file_field (field_name, validation_record_name, display_options, display_control,
                validation_file_information, status);
        = avc$integer_kind =
          display_integer_field (field_name, validation_record_name, display_options, display_control,
                validation_file_information, status);
        = avc$job_class_kind =
          display_job_class_field (field_name, validation_record_name, display_options, display_control,
                validation_file_information, status);
        = avc$keyword_kind =

{ keywords are not implemented yet.

        = avc$labeled_names_kind =
          display_labeled_names_field (field_name, validation_record_name, display_options, display_control,
                validation_file_information, status);
        = avc$limit_kind =
          display_limit_field (field_name, validation_record_name, display_options, display_control,
                validation_file_information, status);
        = avc$login_password_kind =
          display_login_password_field (field_name, validation_record_name, display_options, display_control,
                validation_file_information, status);
        = avc$name_kind =
          display_name_field (field_name, validation_record_name, display_options, display_control,
                validation_file_information, status);
        = avc$real_kind =
          display_real_field (field_name, validation_record_name, display_options, display_control,
                validation_file_information, status);
        = avc$ring_privilege_kind =
          display_ring_privilege_field (field_name, validation_record_name, display_options, display_control,
                validation_file_information, status);
        = avc$string_kind =
          display_string_field (field_name, validation_record_name, display_options, display_control,
                validation_file_information, status);
        ELSE
          clp$put_partial_display (display_control, '    Field type: unknown', clc$no_trim, amc$start,
                status);
        CASEND;
      IFEND;

    PROCEND display_field;
?? OLDTITLE ??
?? NEWTITLE := 'get_display_options', EJECT ??

    PROCEDURE get_display_options
      (VAR display_options: avt$display_option_set;
       VAR status: ost$status);

      VAR
        current_parameter_value: ^clt$data_value;

      status.normal := TRUE;

      display_options := $avt$display_option_set [];

      current_parameter_value := pvt [p$display_option].value;
      REPEAT
        IF (current_parameter_value^.element_value^.keyword_value = 'TYPE') THEN
          display_options := display_options + $avt$display_option_set [avc$field_kind];
        ELSEIF (current_parameter_value^.element_value^.keyword_value = 'DEFAULT_VALUE') THEN
          display_options := display_options + $avt$display_option_set [avc$default_value];
        ELSEIF (current_parameter_value^.element_value^.keyword_value = 'DESCRIPTION') THEN
          display_options := display_options + $avt$display_option_set [avc$description];
        ELSEIF (current_parameter_value^.element_value^.keyword_value = 'CHANGE_AUTHORITY') THEN
          display_options := display_options + $avt$display_option_set [avc$change_authority];
        ELSEIF (current_parameter_value^.element_value^.keyword_value = 'DISPLAY_AUTHORITY') THEN
          display_options := display_options + $avt$display_option_set [avc$display_authority];
        ELSEIF (current_parameter_value^.element_value^.keyword_value = 'MANAGE_AUTHORITY') THEN
          display_options := display_options + $avt$display_option_set [avc$manage_authority];
        ELSEIF (current_parameter_value^.element_value^.keyword_value = 'DELETE_AUTHORITY') THEN
          display_options := display_options + $avt$display_option_set [avc$delete_authority];
        ELSEIF current_parameter_value^.element_value^.keyword_value = 'ALL' THEN
          IF clp$count_list_elements (pvt [p$display_option].value) <> 1 THEN
            osp$set_status_abnormal ('AV', ave$must_be_used_alone, 'ALL', status);
            osp$append_status_parameter (osc$status_parameter_delimiter, 'DISPLAY_OPTION', status);
            RETURN;
          ELSE
            display_options := -$avt$display_option_set [];
            RETURN;
          IFEND;
        ELSEIF current_parameter_value^.element_value^.keyword_value = 'NONE' THEN
          IF clp$count_list_elements (pvt [p$display_option].value) <> 1 THEN
            osp$set_status_abnormal ('AV', ave$must_be_used_alone, 'NONE', status);
            osp$append_status_parameter (osc$status_parameter_delimiter, 'DISPLAY_OPTION', status);
            RETURN;
          ELSE
            display_options := $avt$display_option_set [];
            RETURN;
          IFEND;
        ELSE
          osp$set_status_abnormal ('AV', ave$unknown_display_option,
                current_parameter_value^.element_value^.keyword_value, status);
          RETURN;
        IFEND;
        current_parameter_value := current_parameter_value^.link;
      UNTIL current_parameter_value = NIL;

    PROCEND get_display_options;
?? OLDTITLE, EJECT ??

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), ^check_parameters, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    get_display_options (display_options, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF pvt [p$field_name].value^.kind = clc$list THEN
      PUSH field_name_list: [1 .. clp$count_list_elements (pvt [p$field_name].value)];
      current_parameter_value := pvt [p$field_name].value;
      index := 0;
      REPEAT
        index := index + 1;
        field_name_list^ [index] := current_parameter_value^.element_value^.name_value;
        current_parameter_value := current_parameter_value^.link;
      UNTIL current_parameter_value = NIL;
    ELSE { clc$keyword }
      PUSH field_name_work_area: [[REP avc$maximum_field_count OF ost$name]];
      RESET field_name_work_area;
      NEXT field_name_list: [1 .. avc$maximum_field_count] IN field_name_work_area;
      avp$get_validation_field_names (current_subutility_session_info^.validation_record_name,
            -$avt$field_kind_set [], FALSE, field_name_list^, field_name_count, validation_file_information,
            status);
      RESET field_name_work_area;
      NEXT field_name_list: [1 .. field_name_count] IN field_name_work_area;
    IFEND;

    clv$titles_built := FALSE;
    clv$command_name := 'display_field_description';
    ring_attributes.r1 := #RING (^ring_attributes);
    ring_attributes.r2 := #RING (^ring_attributes);
    ring_attributes.r3 := #RING (^ring_attributes);
    file_contents := amc$list;

    clp$open_display_reference (pvt [p$output].value^.file_value^, ^clp$new_page_procedure, file_contents,
          ring_attributes, display_control, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    osp$establish_block_exit_hndlr (^condition_handler);

  /display/
    FOR index := 1 TO UPPERBOUND (field_name_list^) DO
      display_field (field_name_list^ [index], current_subutility_session_info^.validation_record_name,
            display_options, display_control, validation_file_information, status);
      IF NOT status.normal THEN
        EXIT /display/;
      IFEND;
    FOREND /display/;

    osp$disestablish_cond_handler;

    IF NOT status.normal THEN
      clp$close_display (display_control, ignore_status);
    ELSE
      clp$close_display (display_control, status);
    IFEND;

  PROCEND avp$display_field_description;
?? OLDTITLE ??
?? NEWTITLE := 'avp$display_field_names', EJECT ??

{ PURPOSE:
{   This is the command processor for the DISPLAY_FIELD_NAMES subcommand.

  PROCEDURE [XDCL] avp$display_field_names
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_disfn) display_field_names, disfn (
{   output, o: file = $output
{   display_option, display_options, do: (BY_NAME) key
{       (active, a)
{       all
{       (deleted, d)
{     keyend = active
{   type, t: (BY_NAME) key
{       (account_project, ap)
{       (accumulating_limit, al)
{       (capability, capabilities, c)
{       (date_time, dt)
{       (file, f)
{       (integer, i)
{       (job_class, jc)
{       (labeled_names, ln)
{       (limit, l)
{       (login_password, lpw)
{       (name, n)
{       (real, r)
{       (ring_privilege, rp)
{       (string, s)
{       all
{     keyend = all
{   status)

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 8] of clt$pdt_parameter_name,
      parameters: array [1 .. 4] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        default_value: string (7),
      recend,
      type2: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 5] of clt$keyword_specification,
        default_value: string (6),
      recend,
      type3: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 30] of clt$keyword_specification,
        default_value: string (3),
      recend,
      type4: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [89, 5, 11, 14, 45, 52, 635],
    clc$command, 8, 4, 0, 0, 0, 0, 4, 'OSM$ADMV_DISFN'], [
    ['DISPLAY_OPTION                 ',clc$nominal_entry, 2],
    ['DISPLAY_OPTIONS                ',clc$alias_entry, 2],
    ['DO                             ',clc$abbreviation_entry, 2],
    ['O                              ',clc$abbreviation_entry, 1],
    ['OUTPUT                         ',clc$nominal_entry, 1],
    ['STATUS                         ',clc$nominal_entry, 4],
    ['T                              ',clc$abbreviation_entry, 3],
    ['TYPE                           ',clc$nominal_entry, 3]],
    [
{ PARAMETER 1
    [5, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_default_parameter, 0, 7],
{ PARAMETER 2
    [1, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 192,
  clc$optional_default_parameter, 0, 6],
{ PARAMETER 3
    [8, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 1117,
  clc$optional_default_parameter, 0, 3],
{ PARAMETER 4
    [6, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_parameter, 0, 0]],
{ PARAMETER 1
    [[1, 0, clc$file_type],
    '$output'],
{ PARAMETER 2
    [[1, 0, clc$keyword_type], [5], [
    ['A                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['ACTIVE                         ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['D                              ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['DELETED                        ', clc$nominal_entry, clc$normal_usage_entry, 3]]
    ,
    'active'],
{ PARAMETER 3
    [[1, 0, clc$keyword_type], [30], [
    ['ACCOUNT_PROJECT                ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['ACCUMULATING_LIMIT             ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['AL                             ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 15],
    ['AP                             ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['C                              ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['CAPABILITIES                   ', clc$alias_entry, clc$normal_usage_entry, 3],
    ['CAPABILITY                     ', clc$nominal_entry, clc$normal_usage_entry, 3],
    ['DATE_TIME                      ', clc$nominal_entry, clc$normal_usage_entry, 4],
    ['DT                             ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
    ['F                              ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
    ['FILE                           ', clc$nominal_entry, clc$normal_usage_entry, 5],
    ['I                              ', clc$abbreviation_entry, clc$normal_usage_entry, 6],
    ['INTEGER                        ', clc$nominal_entry, clc$normal_usage_entry, 6],
    ['JC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 7],
    ['JOB_CLASS                      ', clc$nominal_entry, clc$normal_usage_entry, 7],
    ['L                              ', clc$abbreviation_entry, clc$normal_usage_entry, 9],
    ['LABELED_NAMES                  ', clc$nominal_entry, clc$normal_usage_entry, 8],
    ['LIMIT                          ', clc$nominal_entry, clc$normal_usage_entry, 9],
    ['LN                             ', clc$abbreviation_entry, clc$normal_usage_entry, 8],
    ['LOGIN_PASSWORD                 ', clc$nominal_entry, clc$normal_usage_entry, 10],
    ['LPW                            ', clc$abbreviation_entry, clc$normal_usage_entry, 10],
    ['N                              ', clc$abbreviation_entry, clc$normal_usage_entry, 11],
    ['NAME                           ', clc$nominal_entry, clc$normal_usage_entry, 11],
    ['R                              ', clc$abbreviation_entry, clc$normal_usage_entry, 12],
    ['REAL                           ', clc$nominal_entry, clc$normal_usage_entry, 12],
    ['RING_PRIVILEGE                 ', clc$nominal_entry, clc$normal_usage_entry, 13],
    ['RP                             ', clc$abbreviation_entry, clc$normal_usage_entry, 13],
    ['S                              ', clc$abbreviation_entry, clc$normal_usage_entry, 14],
    ['STRING                         ', clc$nominal_entry, clc$normal_usage_entry, 14]]
    ,
    'all'],
{ PARAMETER 4
    [[1, 0, clc$status_type]]];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$output = 1,
      p$display_option = 2,
      p$type = 3,
      p$status = 4;

    VAR
      pvt: array [1 .. 4] of clt$parameter_value;

    VAR
      display_control: clt$display_control,
      field_count: 0 .. avc$maximum_field_count,
      field_names: array [1 .. avc$maximum_field_count] of ost$name,
      field_kind: avt$field_kind,
      field_kind_set: avt$field_kind_set,
      file_contents: amt$file_contents,
      ignore_status: ost$status,
      index: 1 .. avc$maximum_field_count,
      name_list: ^avt$name_list,
      ring_attributes: amt$ring_attributes;

?? NEWTITLE := 'condition_handler', EJECT ??

    PROCEDURE condition_handler
      (    condition: pmt$condition;
           condition_information: ^pmt$condition_information;
           save_area: ^ost$stack_frame_save_area;
       VAR handler_status: ost$status);

      VAR
        ignore_status: ost$status;

{ This condition handler is used to close the display file in case of an abnormal termination.

      clp$close_display (display_control, ignore_status);

    PROCEND condition_handler;
?? OLDTITLE, EJECT ??

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF pvt [p$type].value^.keyword_value = 'ALL' THEN
      field_kind_set := -$avt$field_kind_set [];
    ELSE
      field_kind_set := $avt$field_kind_set [];
    /get_field_kind/
      FOR field_kind := LOWERVALUE(field_kind) TO UPPERVALUE(field_kind) DO
        IF pvt [p$type].value^.keyword_value = avv$field_kind_names [field_kind] THEN
          field_kind_set := $avt$field_kind_set [field_kind];
          EXIT /get_field_kind/;
        IFEND;
      FOREND /get_field_kind/;
    IFEND;

    clv$titles_built := FALSE;
    clv$command_name := 'display_field_names';
    ring_attributes.r1 := #RING (^ring_attributes);
    ring_attributes.r2 := #RING (^ring_attributes);
    ring_attributes.r3 := #RING (^ring_attributes);
    file_contents := amc$list;

    clp$open_display_reference (pvt [p$output].value^.file_value^, ^clp$new_page_procedure, file_contents,
          ring_attributes, display_control, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    osp$establish_block_exit_hndlr (^condition_handler);

  /display/
    BEGIN

      IF (pvt [p$display_option].value^.keyword_value = 'ACTIVE') OR
            (pvt [p$display_option].value^.keyword_value = 'ALL') THEN
        avp$get_validation_field_names (current_subutility_session_info^.validation_record_name,
              field_kind_set, FALSE, field_names, field_count, validation_file_information, status);
        IF NOT status.normal THEN
          EXIT /display/;
        IFEND;

        IF field_count <> 0 THEN
          PUSH name_list: [1 .. field_count];
          FOR index := 1 TO field_count DO
            name_list^ [index] := field_names [index];
          FOREND;
        ELSE
          name_list := NIL;
        IFEND;

        IF name_list <> NIL THEN
          display_list_of_names ('Active field names ', field_count, name_list, display_control, status);
          IF NOT status.normal THEN
            EXIT /display/;
          IFEND;
        IFEND;
      IFEND;

      IF (pvt [p$display_option].value^.keyword_value = 'DELETED') OR
            (pvt [p$display_option].value^.keyword_value = 'ALL') THEN
        avp$get_validation_field_names (current_subutility_session_info^.validation_record_name,
              field_kind_set, TRUE, field_names, field_count, validation_file_information, status);
        IF NOT status.normal THEN
          EXIT /display/;
        IFEND;

        IF field_count <> 0 THEN
          PUSH name_list: [1 .. field_count];
          FOR index := 1 TO field_count DO
            name_list^ [index] := field_names [index];
          FOREND;
        ELSE
          name_list := NIL;
        IFEND;

        IF name_list <> NIL THEN
          display_list_of_names ('Deleted field names', field_count, name_list, display_control, status);
          IF NOT status.normal THEN
            EXIT /display/;
          IFEND;
        IFEND;
      IFEND;
    END /display/;

    osp$disestablish_cond_handler;

    IF NOT status.normal THEN
      clp$close_display (display_control, ignore_status);
    ELSE
      clp$close_display (display_control, status);
    IFEND;

  PROCEND avp$display_field_names;
?? OLDTITLE ??
?? NEWTITLE := 'end_manage_subutility', EJECT ??

{ PURPOSE:
{   This is the command processor for the END_MANAGE_ACCOUNT_FIELDS,
{   END_MANAGE_ACCT_MEMBER_FIELDS, END_MANAGE_PROJECT_FIELDS,
{   END_MANAGE_PROJ_MEMBER_FIELDS, and END_MANAGE_USER_FIELDS subcommands.

  PROCEDURE [XDCL] end_manage_subutility
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_endmf) end_manage_fields, endmf

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
      recend := [[1, [88, 5, 16, 0, 59, 53, 272], clc$command, 0, 0, 0, 0, 0, 0, 0, 'OSM$ADMV_ENDMF']];

?? POP ??

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, NIL, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$end_include (current_subutility_session_info^.subutility_name, status);

  PROCEND end_manage_subutility;
?? OLDTITLE ??
?? NEWTITLE := 'restore_field', EJECT ??

{ PURPOSE:
{   This is the command processor for the RESTORE_FIELD subcommand.

  PROCEDURE restore_field
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$admv_resf) restore_field, resf (
{   field_name, fn: name = $required
{   status)

?? PUSH (LISTEXT := ON) ??

    VAR
      pdt: [STATIC, READ, cls$declaration_section] record
        header: clt$pdt_header,
        names: array [1 .. 3] of clt$pdt_parameter_name,
        parameters: array [1 .. 2] of clt$pdt_parameter,
        type1: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type2: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 5, 16, 1, 1, 7, 425], clc$command, 3, 2, 1, 0, 0, 0, 2, 'OSM$ADMV_RESF'],
            [['FIELD_NAME                     ', clc$nominal_entry, 1],
            ['FN                             ', clc$abbreviation_entry, 1],
            ['STATUS                         ', clc$nominal_entry, 2]], [

{ PARAMETER 1

      [1, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods
            [clc$specify_by_name, clc$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 5, clc$required_parameter, 0, 0],

{ PARAMETER 2

      [3, clc$normal_usage_entry, clc$non_secure_parameter, $clt$parameter_spec_methods [clc$specify_by_name],
            clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
            clc$optional_parameter, 0, 0]],

{ PARAMETER 1

      [[1, 0, clc$name_type], [1, osc$max_name_size]],

{ PARAMETER 2

      [[1, 0, clc$status_type]]];

?? POP ??

    CONST
      p$field_name = 1,
      p$status = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;

    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    avp$restore_validation_field (pvt [p$field_name].value^.name_value,
          current_subutility_session_info^.validation_record_name, validation_file_information, status);

  PROCEND restore_field;
?? OLDTITLE ??
?? OLDTITLE ??
?? NEWTITLE := 'Helper Procedures', EJECT ??
?? NEWTITLE := 'create_change_subutility', EJECT ??

{ PURPOSE:
{   This procedure performs the bulk of the processing for the create and change ADMV subutilities.

  PROCEDURE create_change_subutility
    (    subutility_name: string ( * <= osc$max_name_size);
         subutility_prompt: string ( * <= osc$max_name_size);
         validation_record_name: ost$name;
         validation_record_key: avt$validation_key;
         record_id: ost$name;
         command_table_size: integer;
     VAR rewrite_record: boolean;
     VAR status: ost$status);

?? NEWTITLE := 'display_subutility_message', EJECT ??

{ PURPOSE:
{   This procedure displays a message, when the subutility is entered interactivly, to inform the user
{   what is being done.

    PROCEDURE display_subutility_message
      (    current_subutility_session_info: ^avt$subutility_session_info);

      VAR
        interactive: boolean,
        message_status: ost$status;

      clp$get_command_origin (interactive, ignore_status);
      IF (interactive) AND (current_subutility_session_info <> NIL) THEN
        IF current_subutility_session_info^.validation_record_name = avc$account_record_name THEN
          IF current_subutility_session_info^.subutility_name = avc$chaa_utility_name THEN
            osp$set_status_abnormal ('AV', ave$changing_account,
                  current_subutility_session_info^.key.account_name, message_status);
          ELSE
            osp$set_status_abnormal ('AV', ave$creating_account,
                  current_subutility_session_info^.key.account_name, message_status);
          IFEND;
        ELSEIF current_subutility_session_info^.validation_record_name = avc$account_member_record_name THEN
          IF current_subutility_session_info^.subutility_name = avc$chaam_utility_name THEN
            osp$set_status_abnormal ('AV', ave$changing_account_member,
                  current_subutility_session_info^.key.user_name, message_status);
          ELSE
            osp$set_status_abnormal ('AV', ave$creating_account_member,
                  current_subutility_session_info^.key.user_name, message_status);
          IFEND;
          osp$append_status_parameter (osc$status_parameter_delimiter,
                current_subutility_session_info^.key.account_name, message_status);
        ELSEIF current_subutility_session_info^.validation_record_name = avc$project_record_name THEN
          IF current_subutility_session_info^.subutility_name = avc$chap_utility_name THEN
            osp$set_status_abnormal ('AV', ave$changing_project,
                  current_subutility_session_info^.key.project_name, message_status);
          ELSE
            osp$set_status_abnormal ('AV', ave$creating_project,
                  current_subutility_session_info^.key.project_name, message_status);
          IFEND;
          osp$append_status_parameter (osc$status_parameter_delimiter,
                current_subutility_session_info^.key.account_name, message_status);
        ELSEIF current_subutility_session_info^.validation_record_name = avc$project_member_record_name THEN
          IF current_subutility_session_info^.subutility_name = avc$chapm_utility_name THEN
            osp$set_status_abnormal ('AV', ave$changing_project_member,
                  current_subutility_session_info^.key.user_name, message_status);
          ELSE
            osp$set_status_abnormal ('AV', ave$creating_project_member,
                  current_subutility_session_info^.key.user_name, message_status);
          IFEND;
          osp$append_status_parameter (osc$status_parameter_delimiter,
                current_subutility_session_info^.key.project_name, message_status);
          osp$append_status_parameter (osc$status_parameter_delimiter,
                current_subutility_session_info^.key.account_name, message_status);
        ELSE
          IF current_subutility_session_info^.subutility_name = avc$chau_utility_name THEN
            osp$set_status_abnormal ('AV', ave$changing_user, current_subutility_session_info^.key.user_name,
                  message_status);
          ELSE
            osp$set_status_abnormal ('AV', ave$creating_user, current_subutility_session_info^.key.user_name,
                  message_status);
          IFEND;
        IFEND;
        osp$generate_output_message (message_status, ignore_status);
      IFEND;

    PROCEND display_subutility_message;
?? OLDTITLE, EJECT ??

    VAR
      command_table: ^clt$command_table,
      command_table_work_area: ^SEQ ( * ),
      end_change_command: ost$name,
      end_create_command: ost$name,
      ignore_status: ost$status,
      index: integer,
      new_subutility_session_info: ^avt$subutility_session_info,
      previous_session_information: ^avt$subutility_session_info,
      session_info: ^avt$subutility_session_info,
      subutility_attributes: ^clt$utility_attributes;

    status.normal := TRUE;

{ Make sure no subutility is currently active referencing the specified key.

    session_info := current_subutility_session_info;
    WHILE session_info <> NIL DO
      IF session_info^.key.value = validation_record_key.value THEN
        osp$set_status_abnormal ('AV', ave$conflicting_operation, session_info^.subutility_name, status);
        RETURN;
      IFEND;
      session_info := session_info^.previous_session_information;
    WHILEND;

{ Add an entry to the subutility information chain.

    ALLOCATE new_subutility_session_info;
    new_subutility_session_info^.id := record_id;
    new_subutility_session_info^.rewrite_record := FALSE;
    new_subutility_session_info^.key := validation_record_key;
    new_subutility_session_info^.previous_account_default := default_account;
    new_subutility_session_info^.previous_project_default := default_project;
    new_subutility_session_info^.previous_user_default := default_user;
    new_subutility_session_info^.validation_record_name := validation_record_name;
    new_subutility_session_info^.subutility_name := subutility_name;
    new_subutility_session_info^.subutility_prompt := subutility_prompt;
    new_subutility_session_info^.previous_session_information := current_subutility_session_info;

    current_subutility_session_info := new_subutility_session_info;

{ Update the default values.

    IF (validation_record_key.account_name <> osc$null_name) AND
          (validation_record_key.account_name <> avc$high_value_name) THEN
      default_account := validation_record_key.account_name;
    IFEND;

    IF (validation_record_key.project_name <> osc$null_name) AND
          (validation_record_key.project_name <> avc$high_value_name) THEN
      default_project := validation_record_key.project_name;
    IFEND;

    IF (validation_record_key.user_name <> osc$null_name) THEN
      default_user := validation_record_key.user_name;
    IFEND;

{ Get the subutility command table from the validation file.

    PUSH command_table_work_area: [[REP command_table_size OF clt$command_table_entry]];
    RESET command_table_work_area;
    avp$get_command_table (current_subutility_session_info^.id, command_table_work_area, command_table,
          status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Adjust the command name used to exit the subutility if necessary.

    end_change_command := osc$null_name;
    end_create_command := osc$null_name;
    IF (subutility_name = avc$creu_utility_name) THEN
      end_change_command := 'END_CHANGE_USER';
      end_create_command := 'END_CREATE_USER';
    ELSEIF (subutility_name = avc$crea_utility_name) THEN
      end_change_command := 'END_CHANGE_ACCOUNT';
      end_create_command := 'END_CREATE_ACCOUNT';
    ELSEIF (subutility_name = avc$cream_utility_name) THEN
      end_change_command := 'END_CHANGE_ACCOUNT_MEMBER';
      end_create_command := 'END_CREATE_ACCOUNT_MEMBER';
    ELSEIF (subutility_name = avc$crep_utility_name) THEN
      end_change_command := 'END_CHANGE_PROJECT';
      end_create_command := 'END_CREATE_PROJECT';
    ELSEIF (subutility_name = avc$crepm_utility_name) THEN
      end_change_command := 'END_CHANGE_PROJECT_MEMBER';
      end_create_command := 'END_CREATE_PROJECT_MEMBER';
    IFEND;

    IF end_create_command <> osc$null_name THEN

    /set_end_command_name/
      FOR index := 1 TO UPPERBOUND (command_table^) DO
        IF command_table^ [index].name = end_change_command THEN
          command_table^ [index].name := end_create_command;
          EXIT /set_end_command_name/;
        IFEND;
      FOREND /set_end_command_name/;
    IFEND;

{ Process the subutility subcommands.

    PUSH subutility_attributes: [1 .. 3];
    subutility_attributes^ [1].key := clc$utility_prompt;
    subutility_attributes^ [1].prompt.value := subutility_prompt;
    subutility_attributes^ [1].prompt.size := clp$trimmed_string_size
          (subutility_attributes^ [1].prompt.value);
    subutility_attributes^ [2].key := clc$utility_command_table;
    subutility_attributes^ [2].command_table := command_table;
    subutility_attributes^ [3].key := clc$utility_function_proc_table;
    subutility_attributes^ [3].function_processor_table := admv_subutil_func_table;
    clp$begin_utility (subutility_name, subutility_attributes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    display_subutility_message (current_subutility_session_info);

    clp$include_file (clc$current_command_input, '', subutility_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$end_utility (subutility_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    rewrite_record := current_subutility_session_info^.rewrite_record;

{ Finish processing.  The validation record is rewritten with any changes made
{ during the subutility session if the rewrite record flag is TRUE.  If the rewrite
{ record flag is false, the record is not rewritten.  IF the rewrite fails because
{ the record does not exist, ignore the error.

    IF status.normal THEN
      avp$end_subutility_session (record_id, rewrite_record, validation_file_information, status);
      IF (NOT status.normal) AND (status.condition = ave$unknown_record) THEN
        status.normal := TRUE;
      IFEND;
    ELSE
      avp$end_subutility_session (record_id, rewrite_record, validation_file_information, ignore_status);
    IFEND;

{ Restore default values.

    default_account := current_subutility_session_info^.previous_account_default;
    default_project := current_subutility_session_info^.previous_project_default;
    default_user := current_subutility_session_info^.previous_user_default;

{ Release the subutility session information.

    previous_session_information := current_subutility_session_info^.previous_session_information;
    FREE current_subutility_session_info;
    current_subutility_session_info := previous_session_information;

    display_subutility_message (current_subutility_session_info);

  PROCEND create_change_subutility;
?? OLDTITLE ??
?? NEWTITLE := 'display_integer', EJECT ??

{ PURPOSE:
{   This procedure is used to format an integer for display and write it to a
{   report along with a specified title.

  PROCEDURE display_integer
    (    title: string ( * <= osc$max_string_size);
         integer_value: integer;
         field_size: ost$string_size;
         radix: 2 .. 16;
         display_radix: boolean;
     VAR display_control: clt$display_control;
     VAR status: ost$status);

    VAR
      index: ost$string_size,
      integer_string: ^string ( * );

    status.normal := TRUE;

    PUSH integer_string: [field_size];

    clp$put_partial_display (display_control, title, clc$no_trim, amc$start, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$convert_integer_to_rjstring (integer_value, radix, display_radix, ' ', integer_string^, status);
    IF NOT status.normal THEN
      IF status.condition = cle$string_too_short THEN

{ If the number will not fit in the specified field width, fill the field with
{ asterisks.

        status.normal := TRUE;
        FOR index := 1 TO #SIZE (integer_string^) DO
          integer_string^ (index) := '*';
        FOREND;
      ELSE
        RETURN;
      IFEND;
    IFEND;
    clp$put_partial_display (display_control, integer_string^, clc$trim, amc$terminate, status);

  PROCEND display_integer;
?? OLDTITLE ??
?? NEWTITLE := 'display_labeled_names', EJECT ??

{ PURPOSE:
{   This procedure is used to format a list of names for display and write it to
{   a report along with a specified title.

  PROCEDURE display_labeled_names
    (    title: string ( *  <= osc$max_string_size);
         labeled_names: ^avt$labeled_names_list;
     VAR display_control: clt$display_control;
     VAR status: ost$status);

    VAR
      index: avt$name_list_size,
      index2: avt$name_list_size,
      title_filler: ^string ( * );

    status.normal := TRUE;

    FOR index := 1 TO UPPERBOUND (labeled_names^) DO
      IF index = 1 THEN
        clp$put_partial_display (display_control, title, clc$no_trim, amc$start, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        clp$put_partial_display (display_control, ': (', clc$no_trim, amc$continue, status);
      ELSE
        PUSH title_filler: [#SIZE (title) + 3];
        title_filler^ := ' ';
        clp$put_partial_display (display_control, title_filler^, clc$no_trim, amc$start, status);
      IFEND;
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      clp$put_partial_display (display_control, '(', clc$no_trim, amc$continue, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      clp$put_partial_display (display_control, labeled_names^ [index].label^, clc$trim, amc$continue,
            status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      PUSH title_filler: [#SIZE (title) + clp$trimmed_string_size (labeled_names^ [index].label^) + 6];
      title_filler^ := ' ';

      clp$put_partial_display (display_control, ' (', clc$no_trim, amc$continue, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      FOR index2 := 1 TO UPPERBOUND (labeled_names^ [index].names^) DO
        clp$put_partial_display (display_control, labeled_names^ [index].names^ [index2], clc$trim,
              amc$continue, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF index2 < UPPERBOUND (labeled_names^ [index].names^) THEN
          clp$put_partial_display (display_control, ' ..', clc$no_trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, title_filler^, clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        ELSE
          clp$put_partial_display (display_control, '))', clc$no_trim, amc$continue, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          IF index < UPPERBOUND (labeled_names^) THEN
            clp$put_partial_display (display_control, ' ..', clc$no_trim, amc$terminate, status);
            IF NOT status.normal THEN
              RETURN;
            IFEND;
          IFEND;
        IFEND;
      FOREND;
    FOREND;
    clp$put_partial_display (display_control, ')', clc$trim, amc$terminate, status);

  PROCEND display_labeled_names;
?? OLDTITLE ??
?? NEWTITLE := 'display_limit_value', EJECT ??

{ PURPOSE:
{   This procedure is used to format a limit value for display and write it to a
{   report along with a specified title.

  PROCEDURE display_limit_value
    (    title: string ( * <= osc$max_string_size);
         limit_value: avt$limit_value;
     VAR display_control: clt$display_control;
     VAR status: ost$status);

    status.normal := TRUE;

    IF limit_value = sfc$unlimited THEN
      clp$put_partial_display (display_control, title, clc$no_trim, amc$start, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
      clp$put_partial_display (display_control, ' UNLIMITED', clc$no_trim, amc$terminate, status);
    ELSE
      IF limit_value < 10000000000 THEN
        display_integer (title, limit_value, 10, 10, FALSE, display_control, status);
      ELSE
        display_integer (title, limit_value, 20, 10, FALSE, display_control, status);
      IFEND;
    IFEND;

  PROCEND display_limit_value;
?? OLDTITLE ??
?? NEWTITLE := 'display_list_of_names', EJECT ??

{ PURPOSE:
{   This procedure is used to format a list of names for display and write it to
{   a report along with a specified title.

  PROCEDURE display_list_of_names
    (    title: string ( * <= osc$max_string_size);
         number_of_names: avt$name_list_size;
         name_list: ^avt$name_list;
     VAR display_control: clt$display_control;
     VAR status: ost$status);

    VAR
      index: avt$name_list_size,
      title_filler: ^string ( * );

    status.normal := TRUE;

    PUSH title_filler: [#SIZE (title) + 3];
    title_filler^ := ' ';

    clp$put_partial_display (display_control, title, clc$no_trim, amc$start, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF number_of_names > 1 THEN
      clp$put_partial_display (display_control, ': (', clc$no_trim, amc$continue, status);
    ELSE
      clp$put_partial_display (display_control, ':  ', clc$no_trim, amc$continue, status);
    IFEND;
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    FOR index := 1 TO number_of_names DO
      clp$put_partial_display (display_control, name_list^ [index], clc$trim, amc$continue, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      IF index < number_of_names THEN
        clp$put_partial_display (display_control, ' ..', clc$no_trim, amc$terminate, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        clp$put_partial_display (display_control, title_filler^, clc$no_trim, amc$start, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
      IFEND;
    FOREND;
    IF number_of_names > 1 THEN
      clp$put_partial_display (display_control, ')', clc$trim, amc$terminate, status);
    IFEND

  PROCEND display_list_of_names;
?? OLDTITLE ??
?? NEWTITLE := 'display_selected_fields', EJECT ??

{ PURPOSE:
{   This procedure displays the values of the specified fields.
{
{ NOTES:
{   If the field name list contains the name 'CAPABILITIES', all of the
{   all of the capabilities included in the data record will be displayed
{   as a list of names.

  PROCEDURE display_selected_fields
    (    title: string ( * <= osc$max_string_size);
         field_names: ^array [1 .. * ] of ost$name;
         validation_record_name: ost$name;
         record_id: ost$name;
     VAR display_control: clt$display_control;
     VAR status: ost$status);

    VAR
      capability: boolean,
      capability_field_count: avt$field_count,
      capability_field_index: avt$field_count,
      capability_field_names: array [1 .. avc$maximum_field_count] of ost$name,
      capability_name: ^ost$name,
      capability_name_list: ^avt$name_list,
      capability_name_list_size: avt$name_list_size,
      field_kind: avt$field_kind,
      field_names_index: 1 .. avc$maximum_field_count,
      ignore_status: ost$status,
      name_list_work_area: ^SEQ ( * );

?? NEWTITLE := 'display_account_project_field', EJECT ??

    PROCEDURE display_account_project_field
      (    field_name: ost$name;
           record_id: ost$name;
       VAR display_control: clt$display_control;
       VAR status: ost$status);

      VAR
        account: avt$account_name,
        project: avt$project_name;

      status.normal := TRUE;

      avp$get_acct_proj_display_value (field_name, record_id, account, project, status);
      IF status.normal THEN
        clp$put_partial_display (display_control, '    Account: ', clc$no_trim, amc$start, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        clp$put_partial_display (display_control, account, clc$trim, amc$terminate, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        clp$put_partial_display (display_control, '    Project: ', clc$no_trim, amc$start, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        clp$put_partial_display (display_control, project, clc$trim, amc$terminate, status);
      ELSEIF status.condition = ave$insufficient_authority THEN
        status.normal := TRUE;
        clp$put_display (display_control, '    Not authorized to display value.', clc$trim, status);
      IFEND;

    PROCEND display_account_project_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_accum_limit_field', EJECT ??

    PROCEDURE display_accum_limit_field
      (    field_name: ost$name;
           record_id: ost$name;
       VAR display_control: clt$display_control;
       VAR status: ost$status);

      VAR
        display_format: avt$numeric_display_format,
        job_limit_information: avt$job_limit_information,
        total_limit_information: avt$total_limit_information;

      status.normal := TRUE;

      avp$get_accum_limit_display_val (field_name, record_id, job_limit_information, total_limit_information,
            display_format, status);
      IF status.normal THEN
        IF job_limit_information.job_limits_apply THEN
          display_limit_value ('    Job warning limit:  ', job_limit_information.job_warning_limit,
                display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          display_limit_value ('    Job maximum limit:  ', job_limit_information.job_maximum_limit,
                display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        IF total_limit_information.total_limit_applies THEN
          display_limit_value ('    Total limit:        ', total_limit_information.total_limit,
                display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          display_limit_value ('    Total accumulation: ', total_limit_information.total_accumulation,
                display_control, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;
      ELSEIF status.condition = ave$insufficient_authority THEN
        status.normal := TRUE;
        clp$put_display (display_control, '    Not authorized to display value.', clc$trim, status);
      IFEND;

    PROCEND display_accum_limit_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_capability_field', EJECT ??

    PROCEDURE display_capability_field
      (    field_name: ost$name;
           record_id: ost$name;
       VAR display_control: clt$display_control;
       VAR status: ost$status);

      VAR
        value: boolean;

      status.normal := TRUE;

      avp$get_capabil_display_value (field_name, record_id, value, status);
      IF status.normal THEN
        IF value THEN
          clp$put_partial_display (display_control, '    Value: INCLUDE', clc$no_trim, amc$start, status);
        ELSE
          clp$put_partial_display (display_control, '    Value: EXCLUDE', clc$no_trim, amc$start, status);
        IFEND;
      ELSEIF status.condition = ave$insufficient_authority THEN
        status.normal := TRUE;
        clp$put_display (display_control, '    Not authorized to display value.', clc$trim, status);
      IFEND;

    PROCEND display_capability_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_date_time_field', EJECT ??

    PROCEDURE display_date_time_field
      (    field_name: ost$name;
           record_id: ost$name;
       VAR display_control: clt$display_control;
       VAR status: ost$status);

      VAR
        date_display_format: string (clc$max_date_time_form_string),
        date_time: avt$date_time,
        formatted_date_time: ost$string,
        time_display_format: string (clc$max_date_time_form_string);

      status.normal := TRUE;

      avp$get_date_time_display_value (field_name, record_id, date_time, date_display_format,
            time_display_format, status);
      IF status.normal THEN
        clp$put_partial_display (display_control, '   Value: ', clc$no_trim, amc$start, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        IF date_time.range THEN
          format_date_time (date_time.starting_value, date_time.date_specified, date_display_format,
                date_time.time_specified, time_display_format, formatted_date_time, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          clp$put_partial_display (display_control, formatted_date_time.value, clc$trim, amc$continue,
                status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          clp$put_partial_display (display_control, ' .. ', clc$no_trim, amc$continue, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          format_date_time (date_time.ending_value, date_time.date_specified, date_display_format,
                date_time.time_specified, time_display_format, formatted_date_time, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          clp$put_partial_display (display_control, formatted_date_time.value, clc$trim, amc$continue,
                status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        ELSE
          format_date_time (date_time.value, date_time.date_specified, date_display_format,
                date_time.time_specified, time_display_format, formatted_date_time, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          clp$put_partial_display (display_control, formatted_date_time.value, clc$trim, amc$continue,
                status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;
      ELSEIF status.condition = ave$insufficient_authority THEN
        status.normal := TRUE;
        clp$put_display (display_control, '    Not authorized to display value.', clc$trim, status);
      IFEND;

    PROCEND display_date_time_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_file_field', EJECT ??

    PROCEDURE display_file_field
      (    field_name: ost$name;
           record_id: ost$name;
       VAR display_control: clt$display_control;
       VAR status: ost$status);

      VAR
        value: string (fsc$max_path_size);

      status.normal := TRUE;

      avp$get_file_display_value (field_name, record_id, value, status);
      IF status.normal THEN
        clp$put_partial_display (display_control, '    Value: ', clc$no_trim, amc$start, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        clp$put_partial_display (display_control, value, clc$trim, amc$terminate, status);
      ELSEIF status.condition = ave$insufficient_authority THEN
        status.normal := TRUE;
        clp$put_display (display_control, '    Not authorized to display value.', clc$trim, status);
      IFEND;

    PROCEND display_file_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_integer_field', EJECT ??

    PROCEDURE display_integer_field
      (    field_name: ost$name;
           record_id: ost$name;
       VAR display_control: clt$display_control;
       VAR status: ost$status);

      VAR
        value: integer,
        display_format: avt$numeric_display_format;

      status.normal := TRUE;

      avp$get_integer_display_value (field_name, record_id, value, display_format, status);
      IF status.normal THEN
        display_integer ('    Value: ', value, display_format.field_size, display_format.radix,
              display_format.display_radix, display_control, status);
      ELSEIF status.condition = ave$insufficient_authority THEN
        status.normal := TRUE;
        clp$put_display (display_control, '    Not authorized to display value.', clc$trim, status);
      IFEND;

    PROCEND display_integer_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_job_class_field', EJECT ??

    PROCEDURE display_job_class_field
      (    field_name: ost$name;
           record_id: ost$name;
       VAR display_control: clt$display_control;
       VAR status: ost$status);

      VAR
        batch_job_class_default: ost$name,
        job_classes: ^avt$name_list,
        interactive_job_class_default: ost$name,
        number_of_job_classes: avt$name_list_size;

      status.normal := TRUE;

      PUSH job_classes: [1 .. avc$maximum_name_list_size];

      avp$get_job_class_display_value (field_name, record_id, job_classes^, number_of_job_classes,
            batch_job_class_default, interactive_job_class_default, status);
      IF status.normal THEN
        display_list_of_names ('    Job classes', number_of_job_classes, job_classes, display_control,
              status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        clp$put_partial_display (display_control, '    Interactive default: ', clc$no_trim, amc$start,
              status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        clp$put_partial_display (display_control, interactive_job_class_default, clc$trim, amc$terminate,
              status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        clp$put_partial_display (display_control, '    Batch default: ', clc$no_trim, amc$start, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        clp$put_partial_display (display_control, batch_job_class_default, clc$trim, amc$terminate, status);
      ELSEIF status.condition = ave$insufficient_authority THEN
        status.normal := TRUE;
        clp$put_display (display_control, '    Not authorized to display value.', clc$trim, status);
      IFEND;

    PROCEND display_job_class_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_labeled_names_field', EJECT ??

    PROCEDURE display_labeled_names_field
      (    field_name: ost$name;
           record_id: ost$name;
       VAR display_control: clt$display_control;
       VAR status: ost$status);

      VAR
        labeled_names: ^avt$labeled_names_list,
        work_area: ^seq (*);

      status.normal := TRUE;

      PUSH work_area: [[REP avc$max_template_record_size OF cell]];
      RESET work_area;
      avp$get_labeled_names_dis_value (field_name, record_id, work_area, labeled_names, status);
      IF status.normal THEN
        display_labeled_names ('    Value', labeled_names, display_control, status);
      ELSEIF status.condition = ave$insufficient_authority THEN
        status.normal := TRUE;
        clp$put_display (display_control, '    Not authorized to display value.', clc$trim, status);
      IFEND;

    PROCEND display_labeled_names_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_limit_field', EJECT ??

    PROCEDURE display_limit_field
      (    field_name: ost$name;
           record_id: ost$name;
       VAR display_control: clt$display_control;
       VAR status: ost$status);

      VAR
        display_format: avt$numeric_display_format,
        limit_value: avt$limit_value;

      status.normal := TRUE;

      avp$get_limit_display_value (field_name, record_id, limit_value, display_format, status);
      IF status.normal THEN
        display_limit_value ('    Value:  ', limit_value, display_control, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
      ELSEIF status.condition = ave$insufficient_authority THEN
        status.normal := TRUE;
        clp$put_display (display_control, '    Not authorized to display value.', clc$trim, status);
      IFEND;

    PROCEND display_limit_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_login_password_field', EJECT ??

    PROCEDURE display_login_password_field
      (    field_name: ost$name;
           record_id: ost$name;
       VAR display_control: clt$display_control;
       VAR status: ost$status);

      VAR
        attributes: ^avt$name_list,
        change_date: ost$date_time,
        date_time_to_format: clt$date_time,
        display_format: ^clt$date_time_form_string,
        expiration_date: ost$date_time,
        expiration_interval: pmt$time_increment,
        expiration_warning_interval: pmt$time_increment,
        exp_password_change_interval: pmt$time_increment,
        formatted_date_time: ost$string,
        max_expiration_interval: pmt$time_increment,
        number_of_attributes: avt$name_list_size;

      status.normal := TRUE;

      PUSH attributes: [1 .. avc$maximum_name_list_size];

      avp$get_login_pw_display_value (field_name, record_id, expiration_date, expiration_interval,
            max_expiration_interval, expiration_warning_interval, exp_password_change_interval, change_date,
            attributes^, number_of_attributes, status);
      IF status.normal THEN
        clp$put_partial_display (display_control, '    Expiration date: ', clc$no_trim, amc$start, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        IF expiration_date.year = UPPERVALUE (expiration_date.year) THEN
          clp$put_partial_display (display_control, 'None', clc$trim, amc$terminate, status);
        ELSE
          date_time_to_format.value := expiration_date;
          date_time_to_format.date_specified := TRUE;
          date_time_to_format.time_specified := TRUE;


          PUSH display_format: [clc$max_date_time_form_string];
          display_format^ := avc$iso_date_format;
          display_format^ (clp$trimmed_string_size (display_format^) + 1, * ) := '.';
          display_format^ (clp$trimmed_string_size (display_format^) + 1, * ) := avc$hms_time_format;

          clp$convert_date_time_to_string (date_time_to_format, display_format^, formatted_date_time, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          clp$put_partial_display (display_control, formatted_date_time.value (1, formatted_date_time.size),
                clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        display_time_increment ('    Expiration interval: ', expiration_interval, display_control, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        display_time_increment ('    Maximum expiration interval: ', max_expiration_interval, display_control,
              status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        display_time_increment ('    Expiration warning interval: ', expiration_warning_interval,
              display_control, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        clp$put_partial_display (display_control, '    Change date: ', clc$no_trim, amc$start, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        IF change_date.year = LOWERVALUE (change_date.year) THEN
          clp$put_partial_display (display_control, 'Unknown', clc$trim, amc$terminate, status);
        ELSE
          date_time_to_format.value := change_date;
          date_time_to_format.date_specified := TRUE;
          date_time_to_format.time_specified := TRUE;


          PUSH display_format: [clc$max_date_time_form_string];
          display_format^ := avc$iso_date_format;
          display_format^ (clp$trimmed_string_size (display_format^) + 1, * ) := '.';
          display_format^ (clp$trimmed_string_size (display_format^) + 1, * ) := avc$hms_time_format;

          clp$convert_date_time_to_string (date_time_to_format, display_format^, formatted_date_time, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          clp$put_partial_display (display_control, formatted_date_time.value (1, formatted_date_time.size),
                clc$trim, amc$terminate, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        display_list_of_names ('    Password attributes', number_of_attributes, attributes, display_control,
              status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
      ELSEIF status.condition = ave$insufficient_authority THEN
        status.normal := TRUE;
        clp$put_display (display_control, '    Not authorized to display value.', clc$trim, status);
      IFEND;

    PROCEND display_login_password_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_name_field', EJECT ??

    PROCEDURE display_name_field
      (    field_name: ost$name;
           record_id: ost$name;
       VAR display_control: clt$display_control;
       VAR status: ost$status);

      VAR
        names: ^avt$name_list,
        number_of_names: avt$name_list_size;

      status.normal := TRUE;

      PUSH names: [1 .. avc$maximum_name_list_size];

      avp$get_name_display_value (field_name, record_id, names^, number_of_names, status);
      IF status.normal THEN
        display_list_of_names ('    Value', number_of_names, names, display_control, status);
      ELSEIF status.condition = ave$insufficient_authority THEN
        status.normal := TRUE;
        clp$put_display (display_control, '    Not authorized to display value.', clc$trim, status);
      IFEND;

    PROCEND display_name_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_real_field', EJECT ??

    PROCEDURE display_real_field
      (    field_name: ost$name;
           record_id: ost$name;
       VAR display_control: clt$display_control;
       VAR status: ost$status);

      VAR
        value: real,
        display_format: avt$numeric_display_format,
        numeric_string: string (osc$max_string_size),
        numeric_string_size: integer;

      status.normal := TRUE;

      avp$get_real_display_value (field_name, record_id, value, display_format, status);
      IF status.normal THEN
        clp$put_partial_display (display_control, '    Value: ', clc$no_trim, amc$start, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        CASE display_format.kind OF
        = avc$fixed_point_format =
          STRINGREP (numeric_string, numeric_string_size, value: display_format.field_size: display_format.
                fraction_size);
          clp$put_partial_display (display_control, numeric_string (1, numeric_string_size), clc$trim,
                amc$terminate, status);
        = avc$floating_point_format =
          STRINGREP (numeric_string, numeric_string_size, value: display_format.field_size);
          clp$put_partial_display (display_control, numeric_string (1, numeric_string_size), clc$trim,
                amc$terminate, status);
        CASEND;
      ELSEIF status.condition = ave$insufficient_authority THEN
        status.normal := TRUE;
        clp$put_display (display_control, '    Not authorized to display value.', clc$trim, status);
      IFEND;

    PROCEND display_real_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_ring_privilege_field', EJECT ??

    PROCEDURE display_ring_privilege_field
      (    field_name: ost$name;
           record_id: ost$name;
       VAR display_control: clt$display_control;
       VAR status: ost$status);

      VAR
        minimum_ring: ost$ring,
        nominal_ring: ost$ring,
        integer_value: integer;

      status.normal := TRUE;

      avp$get_ring_priv_display_value (field_name, record_id, minimum_ring, nominal_ring, status);
      IF status.normal THEN
        integer_value := minimum_ring;
        display_integer ('    Minimum ring: ', integer_value, 3, 10, FALSE, display_control, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        integer_value := nominal_ring;
        display_integer ('    Nominal ring: ', integer_value, 3, 10, FALSE, display_control, status);
      ELSEIF status.condition = ave$insufficient_authority THEN
        status.normal := TRUE;
        clp$put_display (display_control, '    Not authorized to display value.', clc$trim, status);
      IFEND;

    PROCEND display_ring_privilege_field;
?? OLDTITLE ??
?? NEWTITLE := 'display_string_field', EJECT ??

    PROCEDURE display_string_field
      (    field_name: ost$name;
           record_id: ost$name;
       VAR display_control: clt$display_control;
       VAR status: ost$status);

      VAR
        string_value: ost$string;

      status.normal := TRUE;

      avp$get_string_display_value (field_name, record_id, string_value, status);
      IF status.normal THEN
        clp$put_partial_display (display_control, '    Value: ', clc$no_trim, amc$start, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;

        clp$put_partial_display (display_control, '''', clc$trim, amc$continue, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        clp$put_partial_display (display_control, string_value.value (1, string_value.size), clc$no_trim,
              amc$continue, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
        clp$put_partial_display (display_control, '''', clc$trim, amc$terminate, status);
      ELSEIF status.condition = ave$insufficient_authority THEN
        status.normal := TRUE;
        clp$put_display (display_control, '    Not authorized to display value.', clc$trim, status);
      IFEND;

    PROCEND display_string_field;
?? OLDTITLE, EJECT ??
    status.normal := TRUE;

    IF field_names <> NIL THEN
      clp$put_display (display_control, ' ', clc$no_trim, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
    IFEND;
    clp$put_display (display_control, title, clc$trim, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF field_names <> NIL THEN
      FOR field_names_index := 1 TO UPPERBOUND (field_names^) DO
        IF (field_names^ [field_names_index] <> 'CAPABILITIES') AND (field_names^ [field_names_index] <>
              'CAPABILITY') THEN
          clp$put_partial_display (display_control, '  ', clc$no_trim, amc$start, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
          clp$put_partial_display (display_control, field_names^ [field_names_index], clc$trim, amc$terminate,
                status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          avp$get_validation_field_kind (field_names^ [field_names_index], validation_record_name, field_kind,
                validation_file_information, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          CASE field_kind OF
          = avc$account_project_kind =
            display_account_project_field (field_names^ [field_names_index], record_id, display_control,
                  status);
          = avc$accumulating_limit_kind =
            display_accum_limit_field (field_names^ [field_names_index], record_id, display_control, status);
          = avc$capability_kind =
            display_capability_field (field_names^ [field_names_index], record_id, display_control, status);
          = avc$date_time_kind =
            display_date_time_field (field_names^ [field_names_index], record_id, display_control, status);
          = avc$file_kind =
            display_file_field (field_names^ [field_names_index], record_id, display_control, status);
          = avc$integer_kind =
            display_integer_field (field_names^ [field_names_index], record_id, display_control, status);
          = avc$job_class_kind =
            display_job_class_field (field_names^ [field_names_index], record_id, display_control, status);
          = avc$keyword_kind =

{ keywords are not implemented yet.

          = avc$labeled_names_kind =
            display_labeled_names_field (field_names^ [field_names_index], record_id, display_control,
                  status);
          = avc$limit_kind =
            display_limit_field (field_names^ [field_names_index], record_id, display_control, status);
          = avc$login_password_kind =
            display_login_password_field (field_names^ [field_names_index], record_id, display_control,
                  status);
          = avc$name_kind =
            display_name_field (field_names^ [field_names_index], record_id, display_control, status);
          = avc$real_kind =
            display_real_field (field_names^ [field_names_index], record_id, display_control, status);
          = avc$ring_privilege_kind =
            display_ring_privilege_field (field_names^ [field_names_index], record_id, display_control,
                  status);
          = avc$string_kind =
            display_string_field (field_names^ [field_names_index], record_id, display_control, status);
          ELSE
            clp$put_partial_display (display_control, '    Field type: unknown', clc$no_trim, amc$start,
                  status);
          CASEND;
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        ELSE
          clp$put_display (display_control, '  CAPABILITIES', clc$trim, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          avp$get_validation_field_names (validation_record_name, $avt$field_kind_set [avc$capability_kind],
                FALSE, capability_field_names, capability_field_count, validation_file_information, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;

          PUSH name_list_work_area: [[REP avc$maximum_field_count OF ost$name]];
          RESET name_list_work_area;
          capability_name_list_size := 0;

          FOR capability_field_index := 1 TO capability_field_count DO
            avp$get_capabil_display_value (capability_field_names [capability_field_index], record_id,
                  capability, status);
            IF NOT status.normal THEN
              IF status.condition = ave$insufficient_authority THEN
                status.normal := TRUE;
                capability := FALSE;
              ELSE
                RETURN;
              IFEND;
            IFEND;

            IF capability THEN
              NEXT capability_name IN name_list_work_area;
              capability_name^ := capability_field_names [capability_field_index];
              capability_name_list_size := capability_name_list_size + 1;
            IFEND;
          FOREND;
          IF capability_name_list_size <> 0 THEN
            RESET name_list_work_area;
            NEXT capability_name_list: [1 .. capability_name_list_size] IN name_list_work_area;
          ELSE
            capability_name_list := NIL;
          IFEND;
          display_list_of_names ('    Value', capability_name_list_size, capability_name_list,
                display_control, status);
        IFEND;
      FOREND;
    IFEND;

  PROCEND display_selected_fields;
?? OLDTITLE ??
?? NEWTITLE := 'display_time_increment', EJECT ??

{ PURPOSE:
{   This procedure is used to format a time increment for display and write it
{   to a report along with a specified title.

  PROCEDURE display_time_increment
    (    title: string ( * <= osc$max_string_size);
         time_increment: pmt$time_increment;
     VAR display_control: clt$display_control;
     VAR status: ost$status);

    VAR
      numeric_string: ost$string;

    status.normal := TRUE;

    clp$put_partial_display (display_control, title, clc$no_trim, amc$start, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    IF time_increment.day = UPPERVALUE (time_increment.day) THEN
      clp$put_partial_display (display_control, 'Unlimited', clc$trim, amc$terminate, status);
    ELSE
      IF time_increment.day < 0 THEN
        clp$convert_integer_to_string (-time_increment.day, 10, FALSE, numeric_string, status);
      ELSE
        clp$convert_integer_to_string (time_increment.day, 10, FALSE, numeric_string, status);
      IFEND;
      IF NOT status.normal THEN
        RETURN;
      IFEND;
      clp$put_partial_display (display_control, numeric_string.value (1, numeric_string.size), clc$trim,
            amc$continue, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
      clp$put_partial_display (display_control, ' days', clc$trim, amc$terminate, status);
    IFEND;

  PROCEND display_time_increment;
?? OLDTITLE ??
?? NEWTITLE := 'format_date_time', EJECT ??

{ PURPOSE:
{   This procedure is used to format a date time value for display.

  PROCEDURE format_date_time
    (    date_time: ost$date_time;
         date_specified: boolean;
         date_display_format: clt$date_time_form_string;
         time_specified: boolean;
         time_display_format: clt$date_time_form_string;
     VAR formatted_date_time: ost$string;
     VAR status: ost$status);

    VAR
      date_time_to_format: clt$date_time,
      default_date_display_format: ost$default_date_format,
      default_time_display_format: ost$default_time_format,
      display_format: string (clc$max_date_time_form_string);

    status.normal := TRUE;

    date_time_to_format.value := date_time;
    date_time_to_format.date_specified := date_specified;
    date_time_to_format.time_specified := time_specified;

    IF (date_display_format = ' ') OR (time_display_format = ' ') THEN
      pmp$get_default_date_time_form (default_date_display_format, default_time_display_format);
    IFEND;

    IF date_specified AND time_specified THEN
      IF date_display_format = ' ' THEN
        display_format := default_date_display_format.format_string;
      ELSE
        display_format := date_display_format;
      IFEND;
      IF time_display_format = ' ' THEN
        display_format (clp$trimmed_string_size (display_format) + 2, * ) :=
              default_time_display_format.format_string;
      ELSE
        display_format (clp$trimmed_string_size (display_format) + 2, * ) := time_display_format;
      IFEND;
    ELSEIF date_specified THEN
      IF date_display_format = ' ' THEN
        display_format := default_date_display_format.format_string;
      ELSE
        display_format := date_display_format;
      IFEND;
    ELSE
      IF time_display_format = ' ' THEN
        display_format := default_time_display_format.format_string;
      ELSE
        display_format := time_display_format;
      IFEND;
    IFEND;

    clp$convert_date_time_to_string (date_time_to_format,
          display_format (1, clp$trimmed_string_size(display_format)), formatted_date_time, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

  PROCEND format_date_time;
?? OLDTITLE ??
?? NEWTITLE := 'get_data_record_display_options', EJECT ??

{ PURPOSE:
{   This procedure returns a list of display options based the value of the
{   DISPLAY_OPTIONS parameter on all of the data record display commands.  It
{   also verifies that the specified display options are correct.

  PROCEDURE get_data_record_display_options
    (    validation_record_name: ost$name;
         parameter_value: ^clt$data_value;
     VAR display_option_work_area: ^SEQ ( * );
     VAR display_option_list: ^array [1 .. * ] of ost$name;
     VAR status: ost$status);

    VAR
      display_option: ^ost$name,
      display_option_count: avt$field_count,
      display_option_index: avt$field_count,
      display_option_parameter_value: ^clt$data_value,
      field_name_count: avt$field_count,
      field_name_index: avt$field_count,
      field_name_list: array [1 .. avc$maximum_field_count] of ost$name,
      first_display_option: ^ost$name,
      ignore_status: ost$status;

    status.normal := TRUE;

{ Get the list of field names excluding capabilitiy fields.

    avp$get_validation_field_names (validation_record_name, -$avt$field_kind_set [avc$capability_kind], FALSE,
          field_name_list, field_name_count, validation_file_information, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Go through the list of fields that were specified.

    IF parameter_value^.kind = clc$keyword THEN
      IF parameter_value^.keyword_value = 'NONE' THEN
        display_option_count := 0;
        display_option_list := NIL;
      ELSE { ALL }

{ Return a list composed of all the field names retieved earlier and insert the CAPABILITIES into the
{ appropriate place.

        NEXT display_option_list: [1 .. field_name_count + 1] IN display_option_work_area;
        IF display_option_list = NIL THEN
          osp$set_status_abnormal ('AV', ave$work_area_full, 'DISPLAY_OPTION_WORK_AREA', status);
          osp$append_status_parameter (osc$status_parameter_delimiter, 'GET_DISPLAY_OPTIONS', status);
          RETURN;
        IFEND;
        display_option_count := field_name_count + 1;
        display_option_index := 1;
        FOR field_name_index := 1 TO field_name_count DO
          IF (display_option_index = field_name_index) AND (field_name_list [field_name_index] >
                'CAPABILITIES') THEN
            display_option_list^ [display_option_index] := 'CAPABILITIES';
            display_option_index := display_option_index + 1;
          IFEND;
          display_option_list^ [display_option_index] := field_name_list [field_name_index];
          display_option_index := display_option_index + 1;
        FOREND;
        IF display_option_index = display_option_count THEN
          display_option_list^ [display_option_index] := 'CAPABILITIES';
        IFEND;
      IFEND;
    ELSE

{ Build an array containing each of the specified field names and check that the specified field
{ name exist.

      display_option_parameter_value := parameter_value;
      first_display_option := NIL;
      display_option_count := 0;
      REPEAT
        NEXT display_option IN display_option_work_area;
        IF display_option = NIL THEN
          osp$set_status_abnormal ('AV', ave$work_area_full, 'DISPLAY_OPTION_WORK_AREA', status);
          osp$append_status_parameter (osc$status_parameter_delimiter, 'GET_DISPLAY_OPTIONS', status);
          RETURN;
        IFEND;
        IF first_display_option = NIL THEN
          first_display_option := display_option;
        IFEND;
        display_option_count := display_option_count + 1;
        display_option^ := display_option_parameter_value^.element_value^.name_value;

        IF (display_option^ <> 'CAPABILITIES') AND (display_option^ <> 'CAPABILITY') THEN
          osp$set_status_abnormal ('AV', ave$unknown_display_option, display_option^, status);

        /check_display_option/
          FOR field_name_index := 1 TO field_name_count DO
            IF field_name_list [field_name_index] = display_option^ THEN
              status.normal := TRUE;
              EXIT /check_display_option/;
            IFEND;
          FOREND /check_display_option/;
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;

        display_option_parameter_value := display_option_parameter_value^.link;
      UNTIL display_option_parameter_value = NIL;

      RESET display_option_work_area TO first_display_option;
      NEXT display_option_list: [1 .. display_option_count] IN display_option_work_area;
      IF display_option_list = NIL THEN
        osp$set_status_abnormal ('AV', ave$work_area_full, 'DISPLAY_OPTION_WORK_AREA', status);
        osp$append_status_parameter (osc$status_parameter_delimiter, 'GET_DISPLAY_OPTIONS', status);
        RETURN;
      IFEND;
    IFEND;

  PROCEND get_data_record_display_options;
?? OLDTITLE ??
?? NEWTITLE := 'hide_authority_keywords', EJECT ??

  PROCEDURE [INLINE] hide_authority_keywords
    (    pdt: ^clt$parameter_description_table;
         pdt_changes: ^clt$pdt_changes;
         validation_record_name: ost$name;
     VAR altered_pdt: ^clt$parameter_description_table;
     VAR status: ost$status);

    VAR
      index: integer,
      keyword_type_changes: ^clt$type_changes;

{ Make a copy of the PDT so it can be altered.

    PUSH altered_pdt: [[REP #SIZE (pdt^) OF cell]];
    RESET altered_pdt;
    altered_pdt^ := pdt^;

    PUSH keyword_type_changes: [1 .. 4];
    keyword_type_changes^ [1].kind := clc$tc_keyword_availability;
    keyword_type_changes^ [1].keyword := 'USER_ADMINISTRATION            ';
    keyword_type_changes^ [2].kind := clc$tc_keyword_availability;
    keyword_type_changes^ [2].keyword := 'ACCOUNT_ADMINISTRATION         ';
    keyword_type_changes^ [3].kind := clc$tc_keyword_availability;
    keyword_type_changes^ [3].keyword := 'PROJECT_ADMINISTRATION         ';
    keyword_type_changes^ [4].kind := clc$tc_keyword_availability;
    keyword_type_changes^ [4].keyword := 'USER                           ';
    IF validation_record_name = avc$user_record_name THEN
      keyword_type_changes^ [1].availability := clc$normal_usage_entry;
      keyword_type_changes^ [2].availability := clc$hidden_entry;
      keyword_type_changes^ [3].availability := clc$hidden_entry;
      keyword_type_changes^ [4].availability := clc$normal_usage_entry;
    ELSEIF (validation_record_name = avc$account_record_name) OR
          (validation_record_name = avc$account_member_record_name) THEN
      keyword_type_changes^ [1].availability := clc$hidden_entry;
      keyword_type_changes^ [2].availability := clc$normal_usage_entry;
      keyword_type_changes^ [3].availability := clc$hidden_entry;
      keyword_type_changes^ [4].availability := clc$hidden_entry;
    ELSE
      keyword_type_changes^ [1].availability := clc$hidden_entry;
      keyword_type_changes^ [2].availability := clc$normal_usage_entry;
      keyword_type_changes^ [3].availability := clc$normal_usage_entry;
      keyword_type_changes^ [4].availability := clc$hidden_entry;
    IFEND;

    FOR index := 1 TO UPPERBOUND (pdt_changes^) DO
      pdt_changes^ [index].kind := clc$pdtc_type;
      pdt_changes^ [index].type_changes := keyword_type_changes;
    FOREND;

    clp$change_pdt (altered_pdt, pdt_changes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

  PROCEND hide_authority_keywords;
?? OLDTITLE ??
?? NEWTITLE := 'make_scl_name_list_element', EJECT ??

{ PURPOSE:
{   This procedure is used to construct an entry in an SCL list of names.

  PROCEDURE make_scl_name_list_element
    (    name_value: ost$name;
     VAR work_area: ^clt$work_area;
     VAR list_element: ^clt$data_value;
     VAR status: ost$status);

    status.normal := TRUE;

    clp$make_list_value (work_area, list_element);
    IF list_element = NIL THEN
      osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
      RETURN;
    IFEND;

    clp$make_name_value (name_value, work_area, list_element^.element_value);
    IF list_element^.element_value = NIL THEN
      osp$set_status_abnormal ('CL', cle$work_area_overflow, '', status);
      RETURN;
    IFEND;

  PROCEND make_scl_name_list_element;
?? OLDTITLE ??
?? NEWTITLE := 'manage_fields_subutility', EJECT ??

{ PURPOSE:
{   This procedure contains the common code used by the manage subutilites.

  PROCEDURE manage_fields_subutility
    (    subutility_name: string ( * <= osc$max_name_size);
         subutility_prompt: string ( * <= osc$max_name_size);
         validation_record_name: ost$name;
         command_table: ^clt$command_table;
     VAR status: ost$status);

    VAR
      ignore_status: ost$status,
      new_subutility_session_info: ^avt$subutility_session_info,
      previous_session_information: ^avt$subutility_session_info,
      subutility_attributes: ^clt$utility_attributes;

    status.normal := TRUE;

{ Field management subutilities may only be used by system or family administrators.

    IF NOT (avp$system_administrator () OR avp$family_administrator ()) THEN
      osp$set_status_abnormal ('AV', ave$insufficient_authority, '', status);
      RETURN;
    IFEND;

{ Make sure a validation file is open.

    IF NOT validation_file_open THEN
      osp$set_status_abnormal ('AV', ave$no_validation_file_open, '', status);
      RETURN;
    IFEND;

{ Field management subutilities may not be used if any other ADMINISTER_VALIDATIONS subutility is currently
{ active.  This prevents the confusion that could result from changing the names of fields or deleting fields
{ while a data record change is going on.

    IF current_subutility_session_info <> NIL THEN
      osp$set_status_abnormal ('AV', ave$not_allowed_from_subutility, subutility_name, status);
      RETURN;
    IFEND;

{ Add an entry to the subutility information chain.

    ALLOCATE new_subutility_session_info;
    new_subutility_session_info^.id := osc$null_name;
    new_subutility_session_info^.rewrite_record := FALSE;
    new_subutility_session_info^.key.account_name := osc$null_name;
    new_subutility_session_info^.key.project_name := osc$null_name;
    new_subutility_session_info^.key.user_name := osc$null_name;
    new_subutility_session_info^.validation_record_name := validation_record_name;
    new_subutility_session_info^.subutility_name := subutility_name;
    new_subutility_session_info^.subutility_prompt := subutility_prompt;
    new_subutility_session_info^.previous_session_information := current_subutility_session_info;

    current_subutility_session_info := new_subutility_session_info;

{ Process the subutility subcommands.

    PUSH subutility_attributes: [1 .. 3];
    subutility_attributes^ [1].key := clc$utility_prompt;
    subutility_attributes^ [1].prompt.value := subutility_prompt;
    subutility_attributes^ [1].prompt.size := clp$trimmed_string_size
          (subutility_attributes^ [1].prompt.value);
    subutility_attributes^ [2].key := clc$utility_command_table;
    subutility_attributes^ [2].command_table := command_table;
    subutility_attributes^ [3].key := clc$utility_function_proc_table;
    subutility_attributes^ [3].function_processor_table := admv_subutil_func_table;
    clp$begin_utility (subutility_name, subutility_attributes^, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$include_file (clc$current_command_input, '', subutility_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$end_utility (subutility_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

{ Release the subutility session information.

    previous_session_information := current_subutility_session_info^.previous_session_information;
    FREE current_subutility_session_info;
    current_subutility_session_info := previous_session_information;

  PROCEND manage_fields_subutility;
?? OLDTITLE ??
?? NEWTITLE := 'put_subtitle', EJECT ??

{ PURPOSE:
{   This is a dummy subtitle procedure used by the display formatting procedures.

  PROCEDURE put_subtitle
    (VAR display_control: clt$display_control;
     VAR status: ost$status);

    status.normal := TRUE;

  PROCEND put_subtitle;
?? OLDTITLE ??
?? NEWTITLE := '[INLINE] process_authority_parameter', EJECT ??

{ PURPOSE:
{   This procedure is used to translate the value specified for a authority parameter.

  PROCEDURE [INLINE] process_authority_parameter
    (    parameter_value: ^clt$data_value;
     VAR authority: ^avt$validation_authority);

    IF parameter_value <> NIL THEN
      PUSH authority;
      IF (parameter_value^.keyword_value = 'SYSTEM') THEN
        authority^ := avc$system_authority;
      ELSEIF (parameter_value^.keyword_value = 'SYSTEM_ADMINISTRATION') THEN
        authority^ := avc$system_admin_authority;
      ELSEIF (parameter_value^.keyword_value = 'FAMILY_ADMINISTRATION') THEN
        authority^ := avc$family_admin_authority;
      ELSEIF (parameter_value^.keyword_value = 'USER_ADMINISTRATION') THEN
        authority^ := avc$user_admin_authority;
      ELSEIF (parameter_value^.keyword_value = 'ACCOUNT_ADMINISTRATION') THEN
        authority^ := avc$account_admin_authority;
      ELSEIF (parameter_value^.keyword_value = 'PROJECT_ADMINISTRATION') THEN
        authority^ := avc$project_admin_authority;
      ELSEIF (parameter_value^.keyword_value = 'USER') THEN
        authority^ := avc$user_authority;
      ELSE
        authority^ := avc$any_authority;
      IFEND;
    ELSE
      authority := NIL;
    IFEND;

  PROCEND process_authority_parameter;
?? OLDTITLE ??
?? NEWTITLE := '[INLINE] process_command_names_parameter', EJECT ??

{ PURPOSE:
{   This procedure is used to translate the value specified for a command names parameter.

  PROCEDURE [INLINE] process_command_names_parameter
    (    parameter_value: ^clt$data_value;
         field_name: ost$name;
         verb: string ( * <= osc$max_name_size);
     VAR command_names: ^avt$name_list);

    VAR
      command_name_size: ost$string_size,
      current_parameter_value: ^clt$data_value,
      field_name_size: ost$string_size,
      index: integer,
      position: ost$string_size;

    IF parameter_value <> NIL THEN
      IF parameter_value^.kind = clc$keyword THEN
        PUSH command_names: [1 .. 2];

{ Build the nominal command name by concatenating the verb with the field name (inserting an underscore
{ between them and truncating the result to match the maximum name size.

        command_names^ [1] := verb;
        command_name_size := clp$trimmed_string_size (verb);
        command_names^ [1] (command_name_size + 1, 1) := '_';
        command_names^ [1] (command_name_size + 2, * ) := field_name;

{ Build the alias for the command by concatenating the first three characters of the verb with the
{ first letter of each word in the field name.

        command_names^ [2] := verb;
        command_names^ [2] := command_names^ [2] (1, 3);
        field_name_size := clp$trimmed_string_size (field_name);
        command_name_size := clp$trimmed_string_size (command_names^ [2]);
        IF field_name (1, 1) <> '_' THEN
          command_names^ [2] (command_name_size + 1, 1) := field_name (1, 1);
          command_name_size := command_name_size + 1;
        IFEND;
        position := 2;
        WHILE position < field_name_size DO
          IF (field_name (position, 1) = '_') AND (field_name (position + 1, 1) <> '_') THEN
            command_names^ [2] (command_name_size + 1, 1) := field_name (position + 1, 1);
            command_name_size := command_name_size + 1;
            position := position + 2;
          ELSE
            position := position + 1;
          IFEND;
        WHILEND;
      ELSE { list of name }
        PUSH command_names: [1 .. clp$count_list_elements (parameter_value)];
        current_parameter_value := parameter_value;
        index := 0;
        REPEAT
          index := index + 1;
          command_names^ [index] := current_parameter_value^.element_value^.name_value;
          current_parameter_value := current_parameter_value^.link;
        UNTIL current_parameter_value = NIL;
      IFEND;
    ELSE
      command_names := NIL;
    IFEND;

  PROCEND process_command_names_parameter;
?? OLDTITLE ??
?? NEWTITLE := '[INLINE] process_description_parameter', EJECT ??

{ PURPOSE:
{   This procedure is used to translate the value specified for a description parameter.

  PROCEDURE [INLINE] process_description_parameter
    (    parameter_value: ^clt$data_value;
     VAR description: ^ost$string);

    IF parameter_value <> NIL THEN
      PUSH description;
      description^.value := parameter_value^.string_value^;
      description^.size := clp$trimmed_string_size (description^.value);
    ELSE
      description := NIL;
    IFEND;

  PROCEND process_description_parameter;
?? OLDTITLE ??
?? NEWTITLE := '[INLINE] process_file_parameter', EJECT ??

{ PURPOSE:
{   This procedure is used to translate the value specified for a file parameter.

  PROCEDURE [INLINE] process_file_parameter
    (    parameter_value: ^clt$data_value;
         default_value: ^fst$file_reference;
     VAR file_reference: ^fst$file_reference);

    IF parameter_value <> NIL THEN
      CASE parameter_value^.kind OF
      = clc$file =
        file_reference := parameter_value^.file_value;
      = clc$keyword =
        IF parameter_value^.keyword_value = 'DEFAULT' THEN
          file_reference := default_value;
        ELSE
          PUSH file_reference: [clp$trimmed_string_size (clc$null_file)];
          file_reference^ := clc$null_file;
        IFEND;
      = clc$string =
        file_reference := parameter_value^.string_value;
      CASEND;
    ELSE
      file_reference := NIL;
    IFEND;

  PROCEND process_file_parameter;
?? OLDTITLE ??
?? NEWTITLE := '[INLINE] process_labeled_names_parameter', EJECT ??

{ PURPOSE:
{   This procedure is used to translate the value specified for a labeled names parameter.

  PROCEDURE [INLINE] process_labeled_names_parameter
    (    parameter_value: ^clt$data_value;
         default_labeled_names: ^avt$labeled_names_list;
     VAR labeled_names: ^avt$labeled_names_list);

    VAR
      current_parameter_value: ^clt$data_value,
      current_names_value: ^clt$data_value,
      index: avt$name_list_size,
      index2: avt$name_list_size;

    IF parameter_value <> NIL THEN
      IF parameter_value^.kind = clc$keyword THEN
        IF (parameter_value^.keyword_value = 'DEFAULT') THEN
          labeled_names := default_labeled_names;
        IFEND;
      ELSE {IF parameter_value^.kind = clc$list THEN}
        PUSH labeled_names: [1 .. clp$count_list_elements (parameter_value)];
        current_parameter_value := parameter_value;
        index := 0;
        REPEAT
          index := index + 1;
          PUSH labeled_names^ [index].label;
          labeled_names^ [index].label^ :=
                current_parameter_value^.element_value^.field_values^ [1].value^.name_value;
          current_names_value := current_parameter_value^.element_value^.field_values^ [2].value;
          IF current_names_value <> NIL THEN
            IF current_names_value^.kind = clc$keyword THEN
              PUSH labeled_names^ [index].names: [1 .. 1];
              labeled_names^ [index].names^ [1] := current_names_value^.keyword_value;
            ELSE {IF current_names_value^.kind = clc$list THEN}
              PUSH labeled_names^ [index].names: [1 .. clp$count_list_elements (current_names_value)];
              index2 := 0;
              REPEAT
                index2 := index2 + 1;
                labeled_names^ [index].names^ [index2] := current_names_value^.element_value^.name_value;
                current_names_value := current_names_value^.link;
              UNTIL current_names_value = NIL;
            IFEND;
          ELSE
            labeled_names^ [index].names := NIL;
          IFEND;
          current_parameter_value := current_parameter_value^.link;
        UNTIL current_parameter_value = NIL;
      IFEND;
    IFEND;

  PROCEND process_labeled_names_parameter;
?? OLDTITLE ??
?? NEWTITLE := '[INLINE] process_limit_appl_parameter', EJECT ??

{ PURPOSE:
{   This procedure is used to translate the value specified for a limit application parameter.

  PROCEDURE [INLINE] process_limit_appl_parameter
    (    parameter_value: ^clt$data_value;
     VAR job_limits_apply: ^boolean;
     VAR total_limit_applies: ^boolean);

    IF parameter_value <> NIL THEN
      PUSH job_limits_apply;
      PUSH total_limit_applies;
      IF parameter_value^.keyword_value = 'JOB_AND_TOTAL_LIMITS_APPLY' THEN
        job_limits_apply^ := TRUE;
        total_limit_applies^ := TRUE;
      ELSEIF parameter_value^.keyword_value = 'JOB_LIMITS_APPLY' THEN
        job_limits_apply^ := TRUE;
        total_limit_applies^ := FALSE;
      ELSE
        job_limits_apply^ := FALSE;
        total_limit_applies^ := TRUE;
      IFEND;
    ELSE
      job_limits_apply := NIL;
      total_limit_applies := NIL;
    IFEND;

  PROCEND process_limit_appl_parameter;
?? OLDTITLE ??
?? NEWTITLE := '[INLINE] process_limit_parameter', EJECT ??

{ PURPOSE:
{   This procedure is used to translate the value specified for a limit parameter.

  PROCEDURE [INLINE] process_limit_parameter
    (    parameter_value: ^clt$data_value;
         default_value: ^avt$limit_value;
     VAR limit_value: ^avt$limit_value);

    IF parameter_value <> NIL THEN
      PUSH limit_value;
      IF parameter_value^.kind = clc$keyword THEN
        IF parameter_value^.keyword_value = 'DEFAULT' THEN
          IF default_value <> NIL THEN
            limit_value^ := default_value^;
          ELSE
            limit_value := NIL;
          IFEND;
        ELSE { UNLIMITED }
          limit_value^ := sfc$unlimited;
        IFEND;
      ELSE { clc$integer }
        limit_value^ := parameter_value^.integer_value.value;
      IFEND;
    ELSE
      limit_value := NIL;
    IFEND;

  PROCEND process_limit_parameter;
?? OLDTITLE ??
?? NEWTITLE := '[INLINE] process_limit_range_parameter', EJECT ??

{ PURPOSE:
{   This procedure is used to translate the value specified for a limit value range parameter.

  PROCEDURE [INLINE] process_limit_range_parameter
    (    parameter_value: ^clt$data_value;
     VAR minimum_value: ^avt$limit_value;
     VAR maximum_value: ^avt$limit_value);

    IF parameter_value <> NIL THEN
      PUSH minimum_value;
      PUSH maximum_value;
      IF parameter_value^.low_value^.kind = clc$keyword THEN
        minimum_value^ := sfc$unlimited;
      ELSE
        minimum_value^ := parameter_value^.low_value^.integer_value.value;
      IFEND;
      IF parameter_value^.high_value^.kind = clc$keyword THEN
        maximum_value^ := sfc$unlimited;
      ELSE
        maximum_value^ := parameter_value^.high_value^.integer_value.value;
      IFEND;
    ELSE
      minimum_value := NIL;
      maximum_value := NIL;
    IFEND;

  PROCEND process_limit_range_parameter;
?? OLDTITLE ??
?? NEWTITLE := '[INLINE] process_name_list_parameter', EJECT ??

{ PURPOSE:
{   This procedure is used to translate the value specified for a list of names parameter.

  PROCEDURE [INLINE] process_name_list_parameter
    (    parameter_value: ^clt$data_value;
         default_names: ^avt$name_list;
     VAR name_list: ^avt$name_list);

    VAR
      current_parameter_value: ^clt$data_value,
      index: avt$name_list_size,
      number_of_default_names: avt$name_list_size;

    IF parameter_value <> NIL THEN
      IF parameter_value^.kind = clc$keyword THEN
        IF (parameter_value^.keyword_value = 'DEFAULT') AND (default_names <> NIL) THEN
          number_of_default_names := UPPERBOUND (default_names^);
          WHILE default_names^ [number_of_default_names] = osc$null_name DO
            number_of_default_names := number_of_default_names - 1;
          WHILEND;
          PUSH name_list: [1 .. number_of_default_names];
          FOR index := 1 TO number_of_default_names DO
            name_list^ [index] := default_names^ [index];
          FOREND;
        ELSE
          PUSH name_list: [1 .. 1];
          name_list^ [1] := parameter_value^.keyword_value;
        IFEND;
      ELSEIF parameter_value^.kind = clc$name THEN
        PUSH name_list: [1 .. 1];
        name_list^ [1] := parameter_value^.name_value;
      ELSE { list of name}
        PUSH name_list: [1 .. clp$count_list_elements (parameter_value)];
        current_parameter_value := parameter_value;
        index := 0;
        REPEAT
          index := index + 1;
          name_list^ [index] := current_parameter_value^.element_value^.name_value;
          current_parameter_value := current_parameter_value^.link;
        UNTIL current_parameter_value = NIL;
      IFEND;
    IFEND;

  PROCEND process_name_list_parameter;
?? OLDTITLE ??
?? NEWTITLE := 'translate_date_display_format', EJECT ??

{ PURPOSE:
{   This procedure translates the keyword for a date display format into an
{   actual date display format string.

  PROCEDURE translate_date_display_format
    (    date_display_format_keyword: clt$keyword;
     VAR date_display_format: ost$string);

    IF (date_display_format_keyword = 'DEFAULT') THEN
      date_display_format.value := ' ';
    ELSEIF (date_display_format_keyword = 'MONTH') THEN
      date_display_format.value := avc$month_date_format;
    ELSEIF (date_display_format_keyword = 'MONTH_DAY_YEAR') THEN
      date_display_format.value := avc$mdy_date_format;
    ELSEIF (date_display_format_keyword = 'DAY_MONTH_YEAR') THEN
      date_display_format.value := avc$dmy_date_format;
    ELSEIF (date_display_format_keyword = 'ISO_DATE') THEN
      date_display_format.value := avc$iso_date_format;
    ELSEIF (date_display_format_keyword = 'ORDINAL') THEN
      date_display_format.value := avc$ordinal_date_format;
    ELSE
      date_display_format.value := avc$mdy_date_format;
    IFEND;

    IF date_display_format.value <> ' ' THEN
      date_display_format.size := clp$trimmed_string_size (date_display_format.value);
    ELSE
      date_display_format.size := 1;
    IFEND;

  PROCEND translate_date_display_format;
?? OLDTITLE ??
?? NEWTITLE := 'translate_time_display_format', EJECT ??

{ PURPOSE:
{   This procedure translates a time display format keyword into an actual
{   time display format string.

  PROCEDURE translate_time_display_format
    (    time_display_format_keyword: clt$keyword;
     VAR time_display_format: ost$string);

    IF (time_display_format_keyword = 'DEFAULT') THEN
      time_display_format.value := ' ';
    ELSEIF (time_display_format_keyword = 'AMPM') THEN
      time_display_format.value := avc$ampm_time_format;
    ELSEIF (time_display_format_keyword = 'HOUR_MINUTE_SECOND') THEN
      time_display_format.value := avc$hms_time_format;
    ELSEIF (time_display_format_keyword = 'MILLISECOND') THEN
      time_display_format.value := avc$millisecond_time_format;
    ELSEIF (time_display_format_keyword = 'ISO_TIME') THEN
      time_display_format.value := avc$iso_time_format;
    ELSE
      time_display_format.value := avc$ampm_time_format;
    IFEND;

    IF time_display_format.value <> ' ' THEN
      time_display_format.size := clp$trimmed_string_size (time_display_format.value);
    ELSE
      time_display_format.size := 1;
    IFEND;

  PROCEND translate_time_display_format;
?? OLDTITLE ??
?? NEWTITLE := 'verify_field_names_value', EJECT ??

{ PURPOSE:
{   This procedure scans the values that were specified for a parameter that
{   is declared to be a list of names to insure that the keyword values ALL
{   and NONE are not specified with other values.  It also verifiies that the
{   names that are specified are actually the names of validation fields.

  PROCEDURE verify_field_names_value
    (    parameter_name: string ( * <= osc$max_name_size);
         parameter_value: ^clt$data_value;
         validation_record_name: ost$name;
         allowed_types: avt$field_kind_set;
     VAR status: ost$status);

    VAR
      active_field_names: ^array [1 .. * ] of ost$name,
      active_field_count: avt$field_count,
      current_parameter_value: ^clt$data_value,
      index: avt$field_count;

    status.normal := TRUE;

    IF parameter_value^.kind = clc$list THEN
      current_parameter_value := parameter_value;

{ Get the list of possible validation field names.

      PUSH active_field_names: [1 .. avc$maximum_field_count];
      avp$get_validation_field_names (validation_record_name, allowed_types, FALSE, active_field_names^,
            active_field_count, validation_file_information, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      REPEAT
        IF current_parameter_value^.element_value^.kind = clc$keyword THEN
          osp$set_status_abnormal ('AV', ave$must_be_used_alone,
                current_parameter_value^.element_value^.keyword_value, status);
          osp$append_status_parameter (osc$status_parameter_delimiter, parameter_name, status);
          RETURN;
        ELSEIF current_parameter_value^.element_value^.kind = clc$name THEN
          IF (current_parameter_value^.element_value^.name_value = 'ALL') OR
                (current_parameter_value^.element_value^.name_value = 'NONE') THEN
            osp$set_status_abnormal ('AV', ave$must_be_used_alone,
                  current_parameter_value^.element_value^.name_value, status);
            osp$append_status_parameter (osc$status_parameter_delimiter, parameter_name, status);
            RETURN;
          ELSE

          /verify_field_name/
            BEGIN
              FOR index := 1 TO active_field_count DO
                IF current_parameter_value^.element_value^.name_value = active_field_names^ [index] THEN
                  EXIT /verify_field_name/;
                IFEND;
              FOREND;
              osp$set_status_abnormal ('AV', ave$unknown_field,
                    current_parameter_value^.element_value^.name_value, status);
              RETURN;
            END /verify_field_name/
          IFEND;
        IFEND;
        current_parameter_value := current_parameter_value^.link;
      UNTIL current_parameter_value = NIL;
    IFEND;

  PROCEND verify_field_names_value;
?? OLDTITLE ??
?? NEWTITLE := 'verify_labeled_names_value', EJECT ??

{ PURPOSE:
{   This procedure scans the values that were specified for a parameter that
{   is declared to be a list of labeled names to insure that the keyword values ALL,
{   DEFAULT, and NONE are not specified with other values.

  PROCEDURE verify_labeled_names_value
    (    parameter_name: string ( * <= osc$max_name_size);
         parameter_value: ^clt$data_value;
     VAR status: ost$status);

    VAR
      current_parameter_value: ^clt$data_value,
      list_size: clt$list_size;

    status.normal := TRUE;

    IF (parameter_value^.kind = clc$list) THEN
      list_size := clp$count_list_elements (parameter_value);
      current_parameter_value := parameter_value;
      REPEAT
        IF ((current_parameter_value^.element_value^.field_values^ [1].value^.name_value = 'ALL') OR
              (current_parameter_value^.element_value^.field_values^ [1].value^.name_value = 'NONE')) AND
              (list_size > 1) THEN
            osp$set_status_abnormal ('AV', ave$must_be_used_alone,
                  current_parameter_value^.element_value^.field_values^ [1].value^.name_value, status);
            osp$append_status_parameter (osc$status_parameter_delimiter, parameter_name, status);
            RETURN;
        IFEND;
        IF current_parameter_value^.element_value^.field_values^ [2].value <> NIL THEN
          verify_list_of_names_value (parameter_name,
                current_parameter_value^.element_value^.field_values^ [2].value, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;
        current_parameter_value := current_parameter_value^.link;
      UNTIL current_parameter_value = NIL;
    IFEND;

  PROCEND verify_labeled_names_value;
?? OLDTITLE ??
?? NEWTITLE := 'verify_list_of_names_value', EJECT ??

{ PURPOSE:
{   This procedure scans the values that were specified for a parameter that
{   is declared to be a list of names to insure that the keyword values ALL,
{   DEFAULT, and NONE are not specified with other values.

  PROCEDURE verify_list_of_names_value
    (    parameter_name: string ( * <= osc$max_name_size);
         parameter_value: ^clt$data_value;
     VAR status: ost$status);

    VAR
      current_parameter_value: ^clt$data_value,
      list_size: clt$list_size;

    status.normal := TRUE;

    IF (parameter_value^.kind = clc$list) THEN
      list_size := clp$count_list_elements (parameter_value);
      current_parameter_value := parameter_value;
      REPEAT
        IF current_parameter_value^.element_value^.kind = clc$keyword THEN
          osp$set_status_abnormal ('AV', ave$must_be_used_alone,
                current_parameter_value^.element_value^.keyword_value, status);
          osp$append_status_parameter (osc$status_parameter_delimiter, parameter_name, status);
          RETURN;
        ELSEIF current_parameter_value^.element_value^.kind = clc$name THEN
          IF ((current_parameter_value^.element_value^.name_value = 'ALL') OR
                (current_parameter_value^.element_value^.name_value = 'DEFAULT') OR
                (current_parameter_value^.element_value^.name_value = 'NONE')) AND (list_size > 1) THEN
            osp$set_status_abnormal ('AV', ave$must_be_used_alone,
                  current_parameter_value^.element_value^.name_value, status);
            osp$append_status_parameter (osc$status_parameter_delimiter, parameter_name, status);
            RETURN;
          IFEND;
        IFEND;
        current_parameter_value := current_parameter_value^.link;
      UNTIL current_parameter_value = NIL;
    IFEND;

  PROCEND verify_list_of_names_value;
?? OLDTITLE ??
?? NEWTITLE := 'verify_statistic_code_value', EJECT ??

{ PURPOSE:
{   This procedure scans the values that were specified for an update statitics
{   parameter to insure that the values are all correctly formed statistic codes
{   and that the keyword value NONE is not specified with other values.

  PROCEDURE verify_statistic_code_value
    (    parameter_name: string ( * <= osc$max_name_size);
         parameter_value: ^clt$data_value;
     VAR status: ost$status);

    VAR
      current_parameter_value: ^clt$data_value,
      statistic_name: ost$name,
      valid_name: boolean;

    status.normal := TRUE;

    IF (parameter_value^.kind = clc$list) THEN
      current_parameter_value := parameter_value;
      REPEAT
        IF current_parameter_value^.element_value^.kind = clc$keyword THEN
          osp$set_status_abnormal ('AV', ave$must_be_used_alone,
                current_parameter_value^.element_value^.keyword_value, status);
          osp$append_status_parameter (osc$status_parameter_delimiter, parameter_name, status);
          RETURN;
        ELSE { clc$statistic_code }
          sfp$convert_stat_code_to_name (current_parameter_value^.element_value^.statistic_code_value,
                statistic_name, status);
          IF NOT status.normal THEN
            RETURN;
          IFEND;
        IFEND;
        current_parameter_value := current_parameter_value^.link;
      UNTIL current_parameter_value = NIL;
    IFEND;

  PROCEND verify_statistic_code_value;
?? OLDTITLE ??
?? OLDTITLE ??
MODEND avm$administer_validations;
