?? RIGHT := 110 ??
?? NEWTITLE := 'NOS/VE Job Management: job management commands' ??
MODULE jmm$queue_file_commands;
?? RIGHT := 110 ??

{ PURPOSE:
{   This module contains the SCL command processors for the NOS/VE user job
{ management queue file commands.
{
{ DESIGN:
{   The command processors in this module are defined by the queue file
{ management ERS DCS#A6668.  The procedures in this module execute in the
{ callers ring (2DD).

?? NEWTITLE := 'Global Declarations Referenced by this Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc osd$virtual_address
*copyc cle$detached_jobs
*copyc cle$detached_jobs_all
*copyc cle$ecc_command_processing
*copyc cle$ecc_control_statement
*copyc cle$ecc_parameter_list
*copyc cle$ecc_parsing
*copyc cle$improper_substitution_mark
*copyc cle$no_detached_jobs_selected
*copyc cle$unexpected_call_to
*copyc jme$job_deleted_via_command
*copyc jme$operator_queue_backup
*copyc jme$operator_queue_restore
*copyc jme$output_deleted_via_command
*copyc jme$queued_file_conditions
*copyc amt$local_file_name
*copyc clt$control_statement_info
*copyc clt$input_data_line_header
*copyc clt$when_condition
*copyc jmt$attribute_keys_set
*copyc jmt$job_state_set
*copyc jmt$job_status_count
*copyc jmt$job_status_options
*copyc jmt$job_status_results
*copyc jmt$job_submission_options
*copyc jmt$job_termination_options
*copyc jmt$name
*copyc jmt$name_list
*copyc jmt$output_status_count
*copyc jmt$output_status_options
*copyc jmt$output_status_results
*copyc jmt$output_submission_options
*copyc jmt$output_termination_options
*copyc jmt$system_supplied_name
*copyc jmt$user_supplied_name
*copyc ost$status
*copyc ost$user_identification
*copyc pmt$sense_switches
?? POP ??
*copyc amp$put_next
*copyc amp$return
*copyc avp$system_administrator
*copyc avp$system_operator
*copyc clp$build_standard_title
*copyc clp$change_variable
*copyc clp$close_display
*copyc clp$convert_integer_to_string
*copyc clp$count_list_elements
*copyc clp$evaluate_parameters
*copyc clp$find_current_block
*copyc clp$get_command_search_mode
*copyc clp$get_interpreter_mode
*copyc clp$get_type_information
*copyc clp$get_variable
*copyc clp$get_work_area
*copyc clp$new_display_line
*copyc clp$open_display_reference
*copyc clp$prepare_delayed_block
*copyc clp$put_display
*copyc clp$reset_for_next_display_page
*copyc fsp$close_file
*copyc fsp$copy_data_and_close_files
*copyc fsp$open_file
*copyc jmp$change_input_attributes
*copyc jmp$change_job_attributes
*copyc jmp$change_output_attributes
*copyc jmp$close_files_for_copof
*copyc jmp$cluster_attach_job_enabled
*copyc jmp$convert_name_to_ssn
*copyc jmp$determine_name_kind
*copyc jmp$display_attributes
*copyc jmp$get_attribute_defaults
*copyc jmp$get_attribute_index
*copyc jmp$get_input_attributes
*copyc jmp$get_job_attributes
*copyc jmp$get_job_status
*copyc jmp$get_output_attributes
*copyc jmp$get_output_status
*copyc jmp$get_result_size
*copyc jmp$open_files_for_copof
*copyc jmp$print_file
*copyc jmp$submit_detached_job
*copyc jmp$submit_job
*copyc jmp$switch_command_r3
*copyc jmp$terminate_job
*copyc jmp$terminate_output
*copyc jmp$update_display_message
*copyc osp$append_status_parameter
*copyc osp$disestablish_cond_handler
*copyc osp$establish_block_exit_hndlr
*copyc osp$generate_message_display
*copyc osp$get_status_condition_name
*copyc osp$i_await_activity_completion
*copyc osp$set_status_abnormal
*copyc osp$set_status_condition
*copyc pmp$get_unique_name
*copyc pmp$get_user_identification
*copyc pmp$manage_sense_switches
*copyc amv$nil_file_identifier
*copyc clv$non_substitution_mark
*copyc clv$user_identification

  CONST
    no_queue_space_wait_time = 300000; { in milliseconds - five minutes

?? TITLE := '[XDCL] jmp$display_job_status', EJECT ??
*copy jmh$display_job_status

  PROCEDURE [XDCL] jmp$display_job_status
    (    file: fst$file_reference;
         display_options: jmt$attribute_keys_set;
         job_names: clt$data_value;
     VAR status: ost$status);

{ This constant represents the maximum number of parameters specified on the
{ command.

    CONST
      maximum_get_keys = 16,
      non_duplicate_hidden_keys = 3;

    TYPE
      jobs_names = record
        system_job_name: jmt$system_supplied_name,
        user_job_name: jmt$user_supplied_name,
      recend;

    VAR
      attribute_key: jmt$attribute_keys,
      display_all_jobs: boolean,
      get_keys: jmt$attribute_keys_set,
      get_key_number: 0 .. maximum_get_keys + non_duplicate_hidden_keys,
      get_key_count: 0 .. maximum_get_keys + non_duplicate_hidden_keys,
      inserted_system_job_name: boolean,
      inserted_user_job_name: boolean,
      job_index: jmt$job_status_count,
      jobs_found: ^array [1 .. * ] of jobs_names,
      key_number: 0 .. maximum_get_keys + non_duplicate_hidden_keys,
      name_count: 0 .. clc$max_list_size,
      name_found: boolean,
      name_list: ^clt$data_value,
      name_number: 0 .. clc$max_list_size,
      not_found_list_p: ^jmt$name_list,
      not_found_list_size: jmt$job_status_count,
      number_of_jobs_found: jmt$job_status_count,
      size_of_sequence: ost$segment_length,
      status_options_p: ^jmt$job_status_options,
      status_results_keys_p: ^jmt$results_keys,
      status_results_p: ^jmt$job_status_results,
      status_results_seq: ^SEQ ( * ),
      status_results_work_area_p: ^jmt$work_area,
      user_supplied_name: jmt$user_supplied_name;

?? NEWTITLE := 'add_to_attributes', EJECT ??

    PROCEDURE [INLINE] add_to_attributes
      (    get_attribute_key: jmt$attribute_keys);

      IF get_attribute_key IN get_keys THEN
        get_key_number := get_key_number + 1;
        status_results_keys_p^ [get_key_number] := get_attribute_key;
      IFEND;

    PROCEND add_to_attributes;
?? OLDTITLE ??

    status.normal := TRUE;

{  Process NAME parameter.

    PUSH status_options_p: [1 .. 2];
    status_options_p^ [1].key := jmc$name_list;
    status_options_p^ [1].name_list := NIL;
    status_options_p^ [2].key := jmc$continue_request_to_servers;
    status_options_p^ [2].continue_request_to_servers := TRUE;

    display_all_jobs := FALSE;
    IF job_names.kind = clc$keyword THEN { the only keyword allowed is ALL. }
      status_options_p^ [1].key := jmc$null_attribute;
      display_all_jobs := TRUE;

{ Make a guess at the number of names.  Calls to jmp$get_job_status (found below) will
{ ensure getting 'ALL' jobs.

      name_count := 5;

    ELSEIF job_names.kind = clc$name THEN
      name_count := 1;
      PUSH status_options_p^ [1].name_list: [1 .. name_count];
      jmp$determine_name_kind (job_names.name_value, status_options_p^ [1].name_list^ [1], status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

    ELSE
      name_list := ^job_names;
      name_count := clp$count_list_elements (name_list);

      IF (name_count > 0) AND (name_list^.element_value^.kind = clc$keyword) THEN
        status_options_p^ [1].key := jmc$job_mode_set;
        status_options_p^ [1].job_mode_set := $jmt$job_mode_set [];
        FOR name_number := 1 TO name_count DO
          IF name_list^.element_value^.keyword_value = 'BATCH' THEN
            status_options_p^ [1].job_mode_set := status_options_p^ [1].
                  job_mode_set + $jmt$job_mode_set [jmc$batch];
          ELSEIF name_list^.element_value^.keyword_value = 'INTERACTIVE_CONNECTED' THEN
            status_options_p^ [1].job_mode_set := status_options_p^ [1].
                  job_mode_set + $jmt$job_mode_set [jmc$interactive_connected];
          ELSEIF name_list^.element_value^.keyword_value = 'INTERACTIVE_DISCONNECTED' THEN
            status_options_p^ [1].job_mode_set := status_options_p^
                  [1].job_mode_set + (-$jmt$job_mode_set [jmc$batch, jmc$interactive_connected]);
          ELSEIF name_list^.element_value^.keyword_value = 'INTERACTIVE_COMMAND_DISCONNECT' THEN
            status_options_p^ [1].job_mode_set := status_options_p^ [1].
                  job_mode_set + $jmt$job_mode_set [jmc$interactive_cmnd_disconnect];
          ELSEIF name_list^.element_value^.keyword_value = 'INTERACTIVE_LINE_DISCONNECT' THEN
            status_options_p^ [1].job_mode_set := status_options_p^ [1].
                  job_mode_set + $jmt$job_mode_set [jmc$interactive_line_disconnect];
          ELSEIF name_list^.element_value^.keyword_value = 'INTERACTIVE_SYSTEM_DISCONNECT' THEN
            status_options_p^ [1].job_mode_set := status_options_p^ [1].
                  job_mode_set + $jmt$job_mode_set [jmc$interactive_sys_disconnect];
          IFEND;
        FOREND;

{ The List of Key selection is handled as the ALL Key selection.
{ Make a guess at the number of names.  Calls to jmp$get_job_status (found below) will
{ ensure getting 'ALL' jobs.

        display_all_jobs := TRUE;
        name_count := 5;
      ELSE
        PUSH status_options_p^ [1].name_list: [1 .. name_count];
        FOR name_number := 1 TO name_count DO
          jmp$determine_name_kind (name_list^.element_value^.name_value, status_options_p^ [1].
                name_list^ [name_number], status);
          IF NOT status.normal THEN
            RETURN; {----->
          IFEND;

          name_list := name_list^.link;
        FOREND;
      IFEND;
    IFEND;

    get_key_number := 0;
    get_key_count := 0;

    get_keys := display_options;
    IF NOT display_all_jobs THEN
      inserted_system_job_name := NOT (jmc$system_job_name IN get_keys);
      inserted_user_job_name := NOT (jmc$user_job_name IN get_keys);
      get_keys := get_keys + $jmt$attribute_keys_set [jmc$user_job_name, jmc$system_job_name];
    IFEND;

    FOR attribute_key := LOWERVALUE (attribute_key) TO UPPERVALUE (attribute_key) DO
      IF attribute_key IN get_keys THEN
        get_key_count := get_key_count + 1;
      IFEND;
    FOREND;

    PUSH status_results_keys_p: [1 .. get_key_count];
    add_to_attributes (jmc$client_mainframe_id);
    add_to_attributes (jmc$control_family);
    add_to_attributes (jmc$control_user);
    add_to_attributes (jmc$cpu_time_used);
    add_to_attributes (jmc$display_message);
    add_to_attributes (jmc$input_file_location);
    add_to_attributes (jmc$job_class);
    add_to_attributes (jmc$job_class_position);
    add_to_attributes (jmc$job_destination_usage);
    add_to_attributes (jmc$job_initiation_time);
    add_to_attributes (jmc$job_mode);
    add_to_attributes (jmc$job_state);
    add_to_attributes (jmc$login_family);
    add_to_attributes (jmc$login_user);
    add_to_attributes (jmc$operator_action_posted);
    add_to_attributes (jmc$page_faults);
    add_to_attributes (jmc$server_mainframe_id);
    add_to_attributes (jmc$system_job_name);
    add_to_attributes (jmc$user_job_name);

    jmp$get_result_size (name_count * 2, #SEQ (status_results_keys_p^), size_of_sequence);
    PUSH status_results_work_area_p: [[REP size_of_sequence OF cell]];

    jmp$get_job_status (status_options_p, status_results_keys_p, status_results_work_area_p, status_results_p,
          number_of_jobs_found, status);

    WHILE (NOT status.normal) AND (status.condition = jme$work_area_too_small) DO
      status.normal := TRUE;
      jmp$get_result_size (number_of_jobs_found + 1, #SEQ (status_results_keys_p^), size_of_sequence);
      PUSH status_results_work_area_p: [[REP size_of_sequence OF cell]];
      jmp$get_job_status (status_options_p, status_results_keys_p, status_results_work_area_p,
            status_results_p, number_of_jobs_found, status);
    WHILEND;

    IF NOT status.normal THEN
      IF status.condition = jme$no_jobs_were_found THEN
        number_of_jobs_found := 0;
        status.normal := TRUE;
      ELSE
        RETURN; {----->
      IFEND;
    IFEND;

{ Build a list of the job names that were not found.
    not_found_list_size := 0;

    IF NOT display_all_jobs THEN
      PUSH not_found_list_p: [1 .. name_count];

      IF number_of_jobs_found > 0 THEN
        PUSH jobs_found: [1 .. number_of_jobs_found];
        FOR job_index := 1 TO number_of_jobs_found DO
          FOR key_number := 1 TO UPPERBOUND (status_results_p^ [job_index]^) DO
            IF status_results_p^ [job_index]^ [key_number].key = jmc$system_job_name THEN
              jobs_found^ [job_index].system_job_name := status_results_p^ [job_index]^ [key_number].
                    system_job_name;
              IF inserted_system_job_name THEN
                status_results_p^ [job_index]^ [key_number].key := jmc$null_attribute;
              IFEND;
            ELSEIF status_results_p^ [job_index]^ [key_number].key = jmc$user_job_name THEN
              jobs_found^ [job_index].user_job_name := status_results_p^ [job_index]^ [key_number].
                    user_job_name;
              IF inserted_user_job_name THEN
                status_results_p^ [job_index]^ [key_number].key := jmc$null_attribute;
              IFEND;
            IFEND;
          FOREND;
        FOREND;
      IFEND;

      FOR name_number := 1 TO name_count DO
        name_found := FALSE;
        IF status_options_p^ [1].name_list^ [name_number].kind = jmc$system_supplied_name THEN
          job_index := 1;
          WHILE NOT name_found AND (job_index <= number_of_jobs_found) DO
            name_found := (status_options_p^ [1].name_list^ [name_number].
                  system_supplied_name = jobs_found^ [job_index].system_job_name);
            job_index := job_index + 1;
          WHILEND;
        ELSE
          job_index := 1;
          WHILE NOT name_found AND (job_index <= number_of_jobs_found) DO
            name_found := (status_options_p^ [1].name_list^ [name_number].
                  user_supplied_name = jobs_found^ [job_index].user_job_name);
            job_index := job_index + 1;
          WHILEND;
        IFEND;
        IF NOT name_found THEN
          not_found_list_size := not_found_list_size + 1;
          not_found_list_p^ [not_found_list_size] := status_options_p^ [1].name_list^ [name_number];
        IFEND;
      FOREND;
    IFEND;

    IF not_found_list_size = 0 THEN
      not_found_list_p := NIL;
    IFEND;

    status_results_seq := #SEQ (status_results_p);
    jmp$display_attributes (file, status_results_seq, number_of_jobs_found, NIL, not_found_list_p,
          not_found_list_size, 'display_job_status', status);

  PROCEND jmp$display_job_status;
?? TITLE := '[XDCL] jmp$jobend_statement', EJECT ??

  PROCEDURE [XDCL] jmp$jobend_statement
    (    info: clt$control_statement_info;
     VAR parse {input, output} : clt$parse_state;
     VAR work_area {input, output} : ^clt$work_area;
     VAR cause_condition {input, output} : clt$when_condition;
     VAR status: ost$status);


    osp$set_status_abnormal ('CL', cle$unexpected_control_statemnt, 'JOBEND', status);

  PROCEND jmp$jobend_statement;
?? TITLE := '[XDCL] jmp$_change_input_attribute', EJECT ??

  PROCEDURE [XDCL] jmp$_change_input_attribute
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{  PROCEDURE (osm$chaia) change_input_attribute, change_input_attributes, cha..
{ ia (
{    name, names, n: list of name = $required
{    comment_banner, cb: string 0..jmc$output_comment_banner_size = $optional
{    copies, c: integer 1..jmc$output_copy_count_max = $optional
{    cpu_time_limit, ctl: any of
{        key
{          system_default, unlimited, unspecified
{        keyend
{        integer jmc$lowest_cpu_time_limit..jmc$highest_cpu_time_limit
{      anyend = $optional
{    device, d: any of
{        key
{          automatic
{        keyend
{        name
{      anyend = $optional
{    earliest_print_time, ept: any of
{        key
{          none
{        keyend
{        date_time
{      anyend = $optional
{    earliest_run_time, ert: any of
{        key
{          none
{        keyend
{        date_time
{      anyend = $optional
{    external_characteristics, ec: any of
{        key
{          normal
{        keyend
{        string 0..jmc$ext_characteristics_size
{      anyend = $optional
{    forms_code, fc: any of
{        key
{          normal
{        keyend
{        string 0..jmc$forms_code_size
{      anyend = $optional
{    job_abort_disposition, jad: key
{        (restart, r)
{        (terminate, t)
{      keyend = $optional
{    job_class, jc: name = $optional
{    job_deferred_by_operator, jdbo: boolean = $optional
{    job_deferred_by_user, jdbu: boolean = $optional
{    job_qualifier, job_qualifiers, jq: any of
{        key
{          none, system_default
{        keyend
{        list 1..jmc$maximum_job_qualifiers of name
{      anyend = $optional
{    job_recovery_disposition, jrd: key
{        (continue, c)
{        (restart, r)
{        (terminate, t)
{      keyend = $optional
{    latest_print_time, lpt: any of
{        key
{          none
{        keyend
{        date_time
{      anyend = $optional
{    latest_run_time, lrt: any of
{        key
{          none
{        keyend
{        date_time
{      anyend = $optional
{    login_account, la: any of
{        key
{          unspecified
{        keyend
{        name
{      anyend = $optional
{    login_project, lp: any of
{        key
{          unspecified
{        keyend
{        name
{      anyend = $optional
{    magnetic_tape_limit, mtl: any of
{        key
{          system_default, unlimited, unspecified
{        keyend
{        integer jmc$lowest_magnetic_tape_limit..jmc$highest_magnetic_tape_li..
{ mit
{      anyend = $optional
{    maximum_working_set, maxws: any of
{        key
{          system_default, unlimited, unspecified
{        keyend
{        integer jmc$lowest_working_set_size..jmc$highest_working_set_size
{      anyend = $optional
{    operator_family, of: name = $optional
{    operator_user, ou: name = $optional
{    output_class, oc: key
{        normal
{      keyend = $optional
{    output_deferred_by_user, odbu: boolean = $optional
{    output_destination, ode: any of
{        string 0..osc$max_name_size
{        name
{      anyend = $optional
{    output_destination_usage, odu: any of
{        key
{          dual_state, ntf, private, public, qtf
{        keyend
{        name
{      anyend = $optional
{    output_disposition, odi: any of
{        key
{          (discard_all_output, dao)
{          (discard_standard_output, dso)
{          (local, l)
{          (printer, p)
{          (wait_queue, wt, wq)
{        keyend
{        file
{      anyend = $optional
{    output_priority, op: key
{        low, medium, high
{      keyend = $optional
{    purge_delay, pd: any of
{        key
{          none
{        keyend
{        time_increment
{      anyend = $optional
{    remote_host_directive, rhd: string 0..jmc$remote_host_directive_size = $..
{ optional
{    routing_banner, rb: string 0..jmc$output_routing_banner_size = $optional
{    site_information, si: (BY_NAME, ADVANCED) string 0..jmc$site_information..
{ _size = $optional
{    sru_limit, sl: any of
{        key
{          system_default, unlimited, unspecified
{        keyend
{        integer jmc$lowest_sru_limit..jmc$highest_sru_limit
{      anyend = $optional
{    station, s: any of
{        key
{          automatic
{        keyend
{        name
{      anyend = $optional
{    user_information, ui: string 0..jmc$user_information_size = $optional
{    user_job_name, ujn: name = $optional
{    vertical_print_density, vpd: key
{        six, eight, none, file
{      keyend = $optional
{    vfu_load_procedure, vlp: any of
{        key
{          none
{        keyend
{        name
{      anyend = $optional
{    status)

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

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 81] of clt$pdt_parameter_name,
      parameters: array [1 .. 40] 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,
        qualifier: clt$string_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$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$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$name_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 .. 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,
      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$date_time_type_qualifier,
        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$string_type_qualifier,
        recend,
      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$string_type_qualifier,
        recend,
      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,
        qualifier: clt$name_type_qualifier,
      recend,
      type12: record
        header: clt$type_specification_header,
      recend,
      type13: record
        header: clt$type_specification_header,
      recend,
      type14: 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,
      type15: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 6] of clt$keyword_specification,
      recend,
      type16: 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,
      type17: 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,
      type18: 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,
      type19: 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,
      type20: 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$integer_type_qualifier,
        recend,
      recend,
      type21: 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$integer_type_qualifier,
        recend,
      recend,
      type22: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type23: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type24: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 1] of clt$keyword_specification,
      recend,
      type25: record
        header: clt$type_specification_header,
      recend,
      type26: 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$string_type_qualifier,
        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,
      type27: 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 .. 5] 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,
      type28: 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 .. 11] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
        recend,
      recend,
      type29: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 3] of clt$keyword_specification,
      recend,
      type30: 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,
      recend,
      type31: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type32: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type33: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type34: 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$integer_type_qualifier,
        recend,
      recend,
      type35: 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,
      type36: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type37: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type38: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 4] of clt$keyword_specification,
      recend,
      type39: 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,
      type40: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [89, 11, 23, 9, 7, 53, 391],
    clc$command, 81, 40, 1, 1, 0, 0, 40, 'OSM$CHAIA'], [
    ['C                              ',clc$abbreviation_entry, 3],
    ['CB                             ',clc$abbreviation_entry, 2],
    ['COMMENT_BANNER                 ',clc$nominal_entry, 2],
    ['COPIES                         ',clc$nominal_entry, 3],
    ['CPU_TIME_LIMIT                 ',clc$nominal_entry, 4],
    ['CTL                            ',clc$abbreviation_entry, 4],
    ['D                              ',clc$abbreviation_entry, 5],
    ['DEVICE                         ',clc$nominal_entry, 5],
    ['EARLIEST_PRINT_TIME            ',clc$nominal_entry, 6],
    ['EARLIEST_RUN_TIME              ',clc$nominal_entry, 7],
    ['EC                             ',clc$abbreviation_entry, 8],
    ['EPT                            ',clc$abbreviation_entry, 6],
    ['ERT                            ',clc$abbreviation_entry, 7],
    ['EXTERNAL_CHARACTERISTICS       ',clc$nominal_entry, 8],
    ['FC                             ',clc$abbreviation_entry, 9],
    ['FORMS_CODE                     ',clc$nominal_entry, 9],
    ['JAD                            ',clc$abbreviation_entry, 10],
    ['JC                             ',clc$abbreviation_entry, 11],
    ['JDBO                           ',clc$abbreviation_entry, 12],
    ['JDBU                           ',clc$abbreviation_entry, 13],
    ['JOB_ABORT_DISPOSITION          ',clc$nominal_entry, 10],
    ['JOB_CLASS                      ',clc$nominal_entry, 11],
    ['JOB_DEFERRED_BY_OPERATOR       ',clc$nominal_entry, 12],
    ['JOB_DEFERRED_BY_USER           ',clc$nominal_entry, 13],
    ['JOB_QUALIFIER                  ',clc$nominal_entry, 14],
    ['JOB_QUALIFIERS                 ',clc$alias_entry, 14],
    ['JOB_RECOVERY_DISPOSITION       ',clc$nominal_entry, 15],
    ['JQ                             ',clc$abbreviation_entry, 14],
    ['JRD                            ',clc$abbreviation_entry, 15],
    ['LA                             ',clc$abbreviation_entry, 18],
    ['LATEST_PRINT_TIME              ',clc$nominal_entry, 16],
    ['LATEST_RUN_TIME                ',clc$nominal_entry, 17],
    ['LOGIN_ACCOUNT                  ',clc$nominal_entry, 18],
    ['LOGIN_PROJECT                  ',clc$nominal_entry, 19],
    ['LP                             ',clc$abbreviation_entry, 19],
    ['LPT                            ',clc$abbreviation_entry, 16],
    ['LRT                            ',clc$abbreviation_entry, 17],
    ['MAGNETIC_TAPE_LIMIT            ',clc$nominal_entry, 20],
    ['MAXIMUM_WORKING_SET            ',clc$nominal_entry, 21],
    ['MAXWS                          ',clc$abbreviation_entry, 21],
    ['MTL                            ',clc$abbreviation_entry, 20],
    ['N                              ',clc$abbreviation_entry, 1],
    ['NAME                           ',clc$nominal_entry, 1],
    ['NAMES                          ',clc$alias_entry, 1],
    ['OC                             ',clc$abbreviation_entry, 24],
    ['ODBU                           ',clc$abbreviation_entry, 25],
    ['ODE                            ',clc$abbreviation_entry, 26],
    ['ODI                            ',clc$abbreviation_entry, 28],
    ['ODU                            ',clc$abbreviation_entry, 27],
    ['OF                             ',clc$abbreviation_entry, 22],
    ['OP                             ',clc$abbreviation_entry, 29],
    ['OPERATOR_FAMILY                ',clc$nominal_entry, 22],
    ['OPERATOR_USER                  ',clc$nominal_entry, 23],
    ['OU                             ',clc$abbreviation_entry, 23],
    ['OUTPUT_CLASS                   ',clc$nominal_entry, 24],
    ['OUTPUT_DEFERRED_BY_USER        ',clc$nominal_entry, 25],
    ['OUTPUT_DESTINATION             ',clc$nominal_entry, 26],
    ['OUTPUT_DESTINATION_USAGE       ',clc$nominal_entry, 27],
    ['OUTPUT_DISPOSITION             ',clc$nominal_entry, 28],
    ['OUTPUT_PRIORITY                ',clc$nominal_entry, 29],
    ['PD                             ',clc$abbreviation_entry, 30],
    ['PURGE_DELAY                    ',clc$nominal_entry, 30],
    ['RB                             ',clc$abbreviation_entry, 32],
    ['REMOTE_HOST_DIRECTIVE          ',clc$nominal_entry, 31],
    ['RHD                            ',clc$abbreviation_entry, 31],
    ['ROUTING_BANNER                 ',clc$nominal_entry, 32],
    ['S                              ',clc$abbreviation_entry, 35],
    ['SI                             ',clc$abbreviation_entry, 33],
    ['SITE_INFORMATION               ',clc$nominal_entry, 33],
    ['SL                             ',clc$abbreviation_entry, 34],
    ['SRU_LIMIT                      ',clc$nominal_entry, 34],
    ['STATION                        ',clc$nominal_entry, 35],
    ['STATUS                         ',clc$nominal_entry, 40],
    ['UI                             ',clc$abbreviation_entry, 36],
    ['UJN                            ',clc$abbreviation_entry, 37],
    ['USER_INFORMATION               ',clc$nominal_entry, 36],
    ['USER_JOB_NAME                  ',clc$nominal_entry, 37],
    ['VERTICAL_PRINT_DENSITY         ',clc$nominal_entry, 38],
    ['VFU_LOAD_PROCEDURE             ',clc$nominal_entry, 39],
    ['VLP                            ',clc$abbreviation_entry, 39],
    ['VPD                            ',clc$abbreviation_entry, 38]],
    [
{ PARAMETER 1
    [43, 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, 21, 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$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 8, clc$optional_parameter, 0, 0],
{ 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, 20, 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$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 158, clc$optional_parameter, 0, 0],
{ PARAMETER 5
    [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, 69, 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$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 69, 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$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 69, clc$optional_parameter, 0, 0],
{ PARAMETER 8
    [14, 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 9
    [16, 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 10
    [21, 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, 155, clc$optional_parameter, 0, 0],
{ PARAMETER 11
    [22, 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_parameter, 0, 0],
{ PARAMETER 12
    [23, 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_parameter, 0, 0],
{ PARAMETER 13
    [24, 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_parameter, 0, 0],
{ PARAMETER 14
    [25, 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, 122, clc$optional_parameter, 0, 0],
{ PARAMETER 15
    [27, 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_parameter, 0, 0],
{ PARAMETER 16
    [31, 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 17
    [32, 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 18
    [33, 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 19
    [34, 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 20
    [38, 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, 158, clc$optional_parameter, 0, 0],
{ PARAMETER 21
    [39, 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, 158, clc$optional_parameter, 0, 0],
{ PARAMETER 22
    [52, 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_parameter, 0, 0],
{ PARAMETER 23
    [53, 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_parameter, 0, 0],
{ PARAMETER 24
    [55, 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, 44, clc$optional_parameter, 0, 0],
{ PARAMETER 25
    [56, 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_parameter, 0, 0],
{ PARAMETER 26
    [57, 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, 33, clc$optional_parameter, 0, 0],
{ PARAMETER 27
    [58, 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, 217, clc$optional_parameter, 0, 0],
{ PARAMETER 28
    [59, 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, 437, clc$optional_parameter, 0, 0],
{ PARAMETER 29
    [60, 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, 118, clc$optional_parameter, 0, 0],
{ PARAMETER 30
    [62, 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, 67, clc$optional_parameter, 0, 0],
{ PARAMETER 31
    [64, 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, 8, clc$optional_parameter, 0, 0],
{ PARAMETER 32
    [66, 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, 8, clc$optional_parameter, 0, 0],
{ PARAMETER 33
    [69, clc$advanced_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 34
    [71, 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, 158, clc$optional_parameter, 0, 0],
{ PARAMETER 35
    [72, 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 36
    [76, 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, 8, clc$optional_parameter, 0, 0],
{ PARAMETER 37
    [77, 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_parameter, 0, 0],
{ PARAMETER 38
    [78, 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, 155, clc$optional_parameter, 0, 0],
{ PARAMETER 39
    [79, 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 40
    [73, 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$string_type], [0, jmc$output_comment_banner_size, FALSE]],
{ PARAMETER 3
    [[1, 0, clc$integer_type], [1, jmc$output_copy_count_max, 10]],
{ PARAMETER 4
    [[1, 0, clc$union_type], [[clc$integer_type,
    clc$keyword_type],
    FALSE, 2],
    118, [[1, 0, clc$keyword_type], [3], [
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
      ['UNSPECIFIED                    ', clc$nominal_entry,
  clc$normal_usage_entry, 3]]
      ],
    20, [[1, 0, clc$integer_type], [jmc$lowest_cpu_time_limit,
  jmc$highest_cpu_time_limit, 10]]
    ],
{ PARAMETER 5
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['AUTOMATIC                      ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 6
    [[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 7
    [[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 8
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$string_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['NORMAL                         ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    8, [[1, 0, clc$string_type], [0, jmc$ext_characteristics_size, FALSE]]
    ],
{ PARAMETER 9
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$string_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['NORMAL                         ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    8, [[1, 0, clc$string_type], [0, jmc$forms_code_size, FALSE]]
    ],
{ PARAMETER 10
    [[1, 0, clc$keyword_type], [4], [
    ['R                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 1],
    ['RESTART                        ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
    ['T                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 2],
    ['TERMINATE                      ', clc$nominal_entry,
  clc$normal_usage_entry, 2]]
    ],
{ PARAMETER 11
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 12
    [[1, 0, clc$boolean_type]],
{ PARAMETER 13
    [[1, 0, clc$boolean_type]],
{ PARAMETER 14
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$list_type],
    FALSE, 2],
    81, [[1, 0, clc$keyword_type], [2], [
      ['NONE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry,
  clc$normal_usage_entry, 2]]
      ],
    21, [[1, 0, clc$list_type], [5, 1, jmc$maximum_job_qualifiers, FALSE],
        [[1, 0, clc$name_type], [1, osc$max_name_size]]
      ]
    ],
{ PARAMETER 15
    [[1, 0, clc$keyword_type], [6], [
    ['C                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 1],
    ['CONTINUE                       ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
    ['R                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 2],
    ['RESTART                        ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
    ['T                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 3],
    ['TERMINATE                      ', clc$nominal_entry,
  clc$normal_usage_entry, 3]]
    ],
{ PARAMETER 16
    [[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 17
    [[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 18
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['UNSPECIFIED                    ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 19
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['UNSPECIFIED                    ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 20
    [[1, 0, clc$union_type], [[clc$integer_type,
    clc$keyword_type],
    FALSE, 2],
    118, [[1, 0, clc$keyword_type], [3], [
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
      ['UNSPECIFIED                    ', clc$nominal_entry,
  clc$normal_usage_entry, 3]]
      ],
    20, [[1, 0, clc$integer_type], [jmc$lowest_magnetic_tape_limit,
  jmc$highest_magnetic_tape_limit, 10]]
    ],
{ PARAMETER 21
    [[1, 0, clc$union_type], [[clc$integer_type,
    clc$keyword_type],
    FALSE, 2],
    118, [[1, 0, clc$keyword_type], [3], [
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
      ['UNSPECIFIED                    ', clc$nominal_entry,
  clc$normal_usage_entry, 3]]
      ],
    20, [[1, 0, clc$integer_type], [jmc$lowest_working_set_size,
  jmc$highest_working_set_size, 10]]
    ],
{ PARAMETER 22
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 23
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 24
    [[1, 0, clc$keyword_type], [1], [
    ['NORMAL                         ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
    ],
{ PARAMETER 25
    [[1, 0, clc$boolean_type]],
{ PARAMETER 26
    [[1, 0, clc$union_type], [[clc$name_type, clc$string_type],
    TRUE, 2],
    8, [[1, 0, clc$string_type], [0, osc$max_name_size, FALSE]],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 27
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    192, [[1, 0, clc$keyword_type], [5], [
      ['DUAL_STATE                     ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['NTF                            ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
      ['PRIVATE                        ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
      ['PUBLIC                         ', clc$nominal_entry,
  clc$normal_usage_entry, 4],
      ['QTF                            ', clc$nominal_entry,
  clc$normal_usage_entry, 5]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 28
    [[1, 0, clc$union_type], [[clc$file_type, clc$keyword_type],
    FALSE, 2],
    414, [[1, 0, clc$keyword_type], [11], [
      ['DAO                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 1],
      ['DISCARD_ALL_OUTPUT             ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['DISCARD_STANDARD_OUTPUT        ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
      ['DSO                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 2],
      ['L                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 3],
      ['LOCAL                          ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
      ['P                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 4],
      ['PRINTER                        ', clc$nominal_entry,
  clc$normal_usage_entry, 4],
      ['WAIT_QUEUE                     ', clc$nominal_entry,
  clc$normal_usage_entry, 5],
      ['WQ                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 5],
      ['WT                             ', clc$alias_entry,
  clc$normal_usage_entry, 5]]
      ],
    3, [[1, 0, clc$file_type]]
    ],
{ PARAMETER 29
    [[1, 0, clc$keyword_type], [3], [
    ['HIGH                           ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
    ['LOW                            ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
    ['MEDIUM                         ', clc$nominal_entry,
  clc$normal_usage_entry, 2]]
    ],
{ PARAMETER 30
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$time_increment_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['NONE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    3, [[1, 0, clc$time_increment_type]]
    ],
{ PARAMETER 31
    [[1, 0, clc$string_type], [0, jmc$remote_host_directive_size, FALSE]],
{ PARAMETER 32
    [[1, 0, clc$string_type], [0, jmc$output_routing_banner_size, FALSE]],
{ PARAMETER 33
    [[1, 0, clc$string_type], [0, jmc$site_information_size, FALSE]],
{ PARAMETER 34
    [[1, 0, clc$union_type], [[clc$integer_type,
    clc$keyword_type],
    FALSE, 2],
    118, [[1, 0, clc$keyword_type], [3], [
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
      ['UNSPECIFIED                    ', clc$nominal_entry,
  clc$normal_usage_entry, 3]]
      ],
    20, [[1, 0, clc$integer_type], [jmc$lowest_sru_limit, jmc$highest_sru_limit
  , 10]]
    ],
{ PARAMETER 35
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['AUTOMATIC                      ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 36
    [[1, 0, clc$string_type], [0, jmc$user_information_size, FALSE]],
{ PARAMETER 37
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 38
    [[1, 0, clc$keyword_type], [4], [
    ['EIGHT                          ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
    ['FILE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 4],
    ['NONE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
    ['SIX                            ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
    ],
{ PARAMETER 39
    [[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 40
    [[1, 0, clc$status_type]]];

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

    CONST
      p$name = 1,
      p$comment_banner = 2,
      p$copies = 3,
      p$cpu_time_limit = 4,
      p$device = 5,
      p$earliest_print_time = 6,
      p$earliest_run_time = 7,
      p$external_characteristics = 8,
      p$forms_code = 9,
      p$job_abort_disposition = 10,
      p$job_class = 11,
      p$job_deferred_by_operator = 12,
      p$job_deferred_by_user = 13,
      p$job_qualifier = 14,
      p$job_recovery_disposition = 15,
      p$latest_print_time = 16,
      p$latest_run_time = 17,
      p$login_account = 18,
      p$login_project = 19,
      p$magnetic_tape_limit = 20,
      p$maximum_working_set = 21,
      p$operator_family = 22,
      p$operator_user = 23,
      p$output_class = 24,
      p$output_deferred_by_user = 25,
      p$output_destination = 26,
      p$output_destination_usage = 27,
      p$output_disposition = 28,
      p$output_priority = 29,
      p$purge_delay = 30,
      p$remote_host_directive = 31,
      p$routing_banner = 32,
      p$site_information = 33,
      p$sru_limit = 34,
      p$station = 35,
      p$user_information = 36,
      p$user_job_name = 37,
      p$vertical_print_density = 38,
      p$vfu_load_procedure = 39,
      p$status = 40;

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

    CONST
      max_input_attfributes = p$vfu_load_procedure;

    VAR
      default_job_attributes_p: ^jmt$default_attribute_results,
      index: 1 .. p$status,
      input_attribute_changes: ^jmt$input_attribute_changes,
      input_attribute_index: 0 .. p$status - 2,
      job_qualifier_count: 0 .. clc$max_list_size,
      job_qualifier_index: 1 .. jmc$maximum_job_qualifiers,
      list_count: 0 .. clc$max_list_size,
      name_list: ^clt$data_value,
      number_of_input_attributes: 0 .. max_input_attfributes,
      qualifier_options: ^clt$data_value,
      valid_name: jmt$name;

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

    input_attribute_changes := NIL;
    input_attribute_index := 0;
    number_of_input_attributes := 0;

    FOR index := p$comment_banner TO p$vfu_load_procedure DO
      CASE pvt [index].passing_method OF
      = clc$pass_by_value =
        IF pvt [index].value <> NIL THEN
          number_of_input_attributes := number_of_input_attributes + 1;
        IFEND;
      = clc$pass_by_reference =
        IF pvt [index].variable <> NIL THEN
          number_of_input_attributes := number_of_input_attributes + 1;
        IFEND;
      CASEND;
    FOREND;

    IF number_of_input_attributes <> 0 THEN
      PUSH input_attribute_changes: [1 .. number_of_input_attributes];
    IFEND;

{  Process COMMENT_BANNER parameter.

    IF pvt [p$comment_banner].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$comment_banner;
      input_attribute_changes^ [input_attribute_index].comment_banner :=
            pvt [p$comment_banner].value^.string_value^;
    IFEND;

{  Process COPIES parameter.

    IF pvt [p$copies].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$copies;
      input_attribute_changes^ [input_attribute_index].copies := pvt [p$copies].value^.integer_value.value;
    IFEND;

{  Process CPU_TIME_LIMIT parameter.

    IF pvt [p$cpu_time_limit].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$cpu_time_limit;
      IF pvt [p$cpu_time_limit].value^.kind = clc$integer THEN
        input_attribute_changes^ [input_attribute_index].cpu_time_limit :=
              pvt [p$cpu_time_limit].value^.integer_value.value;
      ELSE
        IF pvt [p$cpu_time_limit].value^.keyword_value = 'UNSPECIFIED' THEN
          input_attribute_changes^ [input_attribute_index].cpu_time_limit := jmc$unspecified_cpu_time_limit;
        ELSEIF pvt [p$cpu_time_limit].value^.keyword_value = 'SYSTEM_DEFAULT' THEN
          input_attribute_changes^ [input_attribute_index].cpu_time_limit := jmc$system_default_cpu_time_lim;
        ELSE { pvt [p$cpu_time_limit].value^.keyword_value = 'UNLIMITED'.
          input_attribute_changes^ [input_attribute_index].cpu_time_limit := jmc$unlimited_cpu_time_limit;
        IFEND;
      IFEND;
    IFEND;

{  Process DEVICE parameter.

    IF pvt [p$device].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$device;
      IF pvt [p$device].value^.kind = clc$name THEN
        input_attribute_changes^ [input_attribute_index].device := pvt [p$device].value^.name_value;
      ELSE
        input_attribute_changes^ [input_attribute_index].device := pvt [p$device].value^.keyword_value;
      IFEND;
    IFEND;

{  Process EARLIEST_PRINT_TIME parameter.

    IF pvt [p$earliest_print_time].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$earliest_print_time;
      IF pvt [p$earliest_print_time].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
        input_attribute_changes^ [input_attribute_index].earliest_print_time.specified := FALSE;
      ELSE
        input_attribute_changes^ [input_attribute_index].earliest_print_time.specified := TRUE;
        input_attribute_changes^ [input_attribute_index].earliest_print_time.date_time :=
              pvt [p$earliest_print_time].value^.date_time_value.value;
      IFEND;
    IFEND;

{  Process EARLIEST_RUN_TIME parameter.

    IF pvt [p$earliest_run_time].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$earliest_run_time;
      IF pvt [p$earliest_run_time].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
        input_attribute_changes^ [input_attribute_index].earliest_run_time.specified := FALSE;
      ELSE
        input_attribute_changes^ [input_attribute_index].earliest_run_time.specified := TRUE;
        input_attribute_changes^ [input_attribute_index].earliest_run_time.date_time :=
              pvt [p$earliest_run_time].value^.date_time_value.value;
      IFEND;
    IFEND;

{  Process EXTERNAL_CHARACTERISTICS parameter.

    IF pvt [p$external_characteristics].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$external_characteristics;
      IF pvt [p$external_characteristics].value^.kind = clc$keyword THEN { the only keyword is NORMAL. }
        input_attribute_changes^ [input_attribute_index].external_characteristics :=
              pvt [p$external_characteristics].value^.keyword_value;
      ELSE
        input_attribute_changes^ [input_attribute_index].external_characteristics :=
              pvt [p$external_characteristics].value^.string_value^;
      IFEND;
    IFEND;

{  Process FORMS_CODE parameter.

    IF pvt [p$forms_code].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$forms_code;
      IF pvt [p$forms_code].value^.kind = clc$keyword THEN { the only keyword allowed is NORMAL. }
        input_attribute_changes^ [input_attribute_index].forms_code := pvt [p$forms_code].value^.
              keyword_value;
      ELSE
        input_attribute_changes^ [input_attribute_index].forms_code := pvt [p$forms_code].value^.
              string_value^;
      IFEND;
    IFEND;

{  Process JOB_ABORT_DISPOSITION parameter.

    IF pvt [p$job_abort_disposition].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$job_abort_disposition;
      IF pvt [p$job_abort_disposition].value^.keyword_value = 'RESTART' THEN
        input_attribute_changes^ [input_attribute_index].job_abort_disposition := jmc$restart_on_abort;
      ELSE { TERMINATE is the only other choice. }
        input_attribute_changes^ [input_attribute_index].job_abort_disposition := jmc$terminate_on_abort;
      IFEND;
    IFEND;

{ Process JOB_CLASS parameter.

    IF pvt [p$job_class].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$job_class;
      input_attribute_changes^ [input_attribute_index].job_class := pvt [p$job_class].value^.name_value;
    IFEND;

{  Process JOB_DEFERRED_BY_OPERATOR parameter.

    IF pvt [p$job_deferred_by_operator].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$job_deferred_by_operator;
      input_attribute_changes^ [input_attribute_index].job_deferred_by_operator :=
            pvt [p$job_deferred_by_operator].value^.boolean_value.value;
    IFEND;

{  Process JOB_DEFERRED_BY_USER parameter.

    IF pvt [p$job_deferred_by_user].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$job_deferred_by_user;
      input_attribute_changes^ [input_attribute_index].job_deferred_by_user :=
            pvt [p$job_deferred_by_user].value^.boolean_value.value;
    IFEND;

{  Process JOB_QUALIFIER parameter.

    IF pvt [p$job_qualifier].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$job_qualifier_list;
      IF pvt [p$job_qualifier].value^.kind = clc$keyword THEN
        IF pvt [p$job_qualifier].value^.keyword_value = 'NONE' THEN
          PUSH input_attribute_changes^ [input_attribute_index].job_qualifier_list: [1 .. 1];
          input_attribute_changes^ [input_attribute_index].job_qualifier_list^ [1] := osc$null_name;
        ELSE { keyword_value = 'SYSTEM_DEFAULT'}
          PUSH default_job_attributes_p: [1 .. 1];
          default_job_attributes_p^ [1].key := jmc$job_qualifier_list;
          PUSH input_attribute_changes^ [input_attribute_index].job_qualifier_list:
                [1 .. jmc$maximum_job_qualifiers];
          default_job_attributes_p^ [1].job_qualifier_list :=
                input_attribute_changes^ [input_attribute_index].job_qualifier_list;

{  Input attributes can be changed only for batch jobs.

          jmp$get_attribute_defaults (jmc$batch, default_job_attributes_p, status);
          IF NOT status.normal THEN
            RETURN; {----->
          IFEND;
        IFEND;
      ELSE
        list_count := clp$count_list_elements (pvt [p$job_qualifier].value);
        PUSH input_attribute_changes^ [input_attribute_index].job_qualifier_list: [1 .. list_count];
        qualifier_options := pvt [p$job_qualifier].value;
        FOR index := 1 TO list_count DO
          input_attribute_changes^ [input_attribute_index].job_qualifier_list^ [index] :=
                qualifier_options^.element_value^.name_value;
          qualifier_options := qualifier_options^.link;
        FOREND;
      IFEND;
    IFEND;

{  Process JOB_RECOVERY_DISPOSITION parameter.

    IF pvt [p$job_recovery_disposition].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$job_recovery_disposition;
      IF pvt [p$job_recovery_disposition].value^.keyword_value = 'RESTART' THEN
        input_attribute_changes^ [input_attribute_index].job_recovery_disposition := jmc$restart_on_recovery;
      ELSEIF pvt [p$job_recovery_disposition].value^.keyword_value = 'CONTINUE' THEN
        input_attribute_changes^ [input_attribute_index].job_recovery_disposition := jmc$continue_on_recovery;
      ELSE { pvt [p$job_recovery_disposition].value^.keyword_value = 'TERMINATE'.
        input_attribute_changes^ [input_attribute_index].job_recovery_disposition :=
              jmc$terminate_on_recovery;
      IFEND;
    IFEND;

{  Process LATEST_PRINT_TIME parameter.

    IF pvt [p$latest_print_time].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$latest_print_time;
      IF pvt [p$latest_print_time].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
        input_attribute_changes^ [input_attribute_index].latest_print_time.specified := FALSE;
      ELSE
        input_attribute_changes^ [input_attribute_index].latest_print_time.specified := TRUE;
        input_attribute_changes^ [input_attribute_index].latest_print_time.date_time :=
              pvt [p$latest_print_time].value^.date_time_value.value;
      IFEND;
    IFEND;

{  Process LATEST_RUN_TIME parameter.

    IF pvt [p$latest_run_time].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$latest_run_time;
      IF pvt [p$latest_run_time].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
        input_attribute_changes^ [input_attribute_index].latest_run_time.specified := FALSE;
      ELSE
        input_attribute_changes^ [input_attribute_index].latest_run_time.specified := TRUE;
        input_attribute_changes^ [input_attribute_index].latest_run_time.date_time :=
              pvt [p$latest_run_time].value^.date_time_value.value;
      IFEND;
    IFEND;

{  Process LOGIN_ACCOUNT parameter.

    IF pvt [p$login_account].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$login_account;
      IF pvt [p$login_account].value^.kind = clc$name THEN
        input_attribute_changes^ [input_attribute_index].login_account :=
              pvt [p$login_account].value^.name_value;
      ELSE { kind = clc$keyword.
        IF pvt [p$login_account].value^.keyword_value = 'UNSPECIFIED' THEN
          input_attribute_changes^ [input_attribute_index].login_account := osc$null_name;
        ELSE
          input_attribute_changes^ [input_attribute_index].login_account :=
                pvt [p$login_account].value^.keyword_value;
        IFEND;
      IFEND;
    IFEND;

{  Process LOGIN_PROJECT parameter.

    IF pvt [p$login_project].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$login_project;
      IF pvt [p$login_project].value^.kind = clc$name THEN
        input_attribute_changes^ [input_attribute_index].login_project :=
              pvt [p$login_project].value^.name_value;
      ELSE { kind = clc$keyword.
        IF pvt [p$login_project].value^.keyword_value = 'UNSPECIFIED' THEN
          input_attribute_changes^ [input_attribute_index].login_project := osc$null_name;
        ELSE
          input_attribute_changes^ [input_attribute_index].login_project :=
                pvt [p$login_project].value^.keyword_value;
        IFEND;
      IFEND;
    IFEND;

{  Process MAGNETIC_TAPE_LIMIT parameter.

    IF pvt [p$magnetic_tape_limit].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$magnetic_tape_limit;
      IF pvt [p$magnetic_tape_limit].value^.kind = clc$integer THEN
        input_attribute_changes^ [input_attribute_index].magnetic_tape_limit :=
              pvt [p$magnetic_tape_limit].value^.integer_value.value;
      ELSE
        IF pvt [p$magnetic_tape_limit].value^.keyword_value = 'UNSPECIFIED' THEN
          input_attribute_changes^ [input_attribute_index].magnetic_tape_limit :=
                jmc$unspecified_mag_tape_limit;
        ELSEIF pvt [p$magnetic_tape_limit].value^.keyword_value = 'SYSTEM_DEFAULT' THEN
          input_attribute_changes^ [input_attribute_index].magnetic_tape_limit :=
                jmc$system_default_mag_tape_lim;
        ELSE { pvt [p$magnetic_tape_limit].value^.keyword_value = 'UNLIMITED'.
          input_attribute_changes^ [input_attribute_index].magnetic_tape_limit :=
                jmc$unlimited_mag_tape_limit;
        IFEND;
      IFEND;
    IFEND;

{  Process MAXIMUM_WORKING_SET parameter.

    IF pvt [p$maximum_working_set].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$maximum_working_set;
      IF pvt [p$maximum_working_set].value^.kind = clc$integer THEN
        input_attribute_changes^ [input_attribute_index].maximum_working_set :=
              pvt [p$maximum_working_set].value^.integer_value.value;
      ELSE
        IF pvt [p$maximum_working_set].value^.keyword_value = 'UNSPECIFIED' THEN
          input_attribute_changes^ [input_attribute_index].maximum_working_set :=
                jmc$unspecified_work_set_size;
        ELSEIF pvt [p$maximum_working_set].value^.keyword_value = 'SYSTEM_DEFAULT' THEN
          input_attribute_changes^ [input_attribute_index].maximum_working_set :=
                jmc$system_default_work_set_siz;
        ELSE { pvt [p$maximum_working_set].value^.keyword_value = 'UNLIMITED'.
          input_attribute_changes^ [input_attribute_index].maximum_working_set :=
                jmc$unlimited_working_set_size;
        IFEND;
      IFEND;
    IFEND;

{  Process OPERATOR_FAMILY parameter.

    IF pvt [p$operator_family].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$output_destination_family;
      input_attribute_changes^ [input_attribute_index].output_destination_family :=
            pvt [p$operator_family].value^.name_value;
    IFEND;

{  Process OPERATOR_USER parameter.

    IF pvt [p$operator_user].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$station_operator;
      input_attribute_changes^ [input_attribute_index].station_operator :=
            pvt [p$operator_user].value^.name_value;
    IFEND;

{  Process OUTPUT_CLASS parameter.

    IF pvt [p$output_class].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$output_class;
      input_attribute_changes^ [input_attribute_index].output_class :=
            pvt [p$output_class].value^.keyword_value;
    IFEND;

{  Process OUTPUT_DEFERRED_BY_USER parameter.

    IF pvt [p$output_deferred_by_user].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$output_deferred_by_user;
      input_attribute_changes^ [input_attribute_index].output_deferred_by_user :=
            pvt [p$output_deferred_by_user].value^.boolean_value.value;
    IFEND;

{  Process OUTPUT_DESTINATION parameter.

    IF pvt [p$output_destination].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$output_destination;
      IF pvt [p$output_destination].value^.kind = clc$name THEN
        input_attribute_changes^ [input_attribute_index].output_destination :=
              pvt [p$output_destination].value^.name_value;
      ELSE
        input_attribute_changes^ [input_attribute_index].output_destination :=
              pvt [p$output_destination].value^.string_value^;

      IFEND;
    IFEND;

{  Process OUTPUT_DESTINATION_USAGE parameter.

    IF pvt [p$output_destination_usage].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$output_destination_usage;
      IF pvt [p$output_destination_usage].value^.kind = clc$name THEN
        input_attribute_changes^ [input_attribute_index].output_destination_usage :=
              pvt [p$output_destination_usage].value^.name_value;
      ELSE
        input_attribute_changes^ [input_attribute_index].output_destination_usage :=
              pvt [p$output_destination_usage].value^.keyword_value;
      IFEND;
    IFEND;

{  Process OUTPUT_DISPOSITION parameter.

    IF pvt [p$output_disposition].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$output_disposition;
      IF pvt [p$output_disposition].value^.kind = clc$file THEN
        input_attribute_changes^ [input_attribute_index].output_disposition.key := jmc$standard_output_path;
        PUSH input_attribute_changes^ [input_attribute_index].output_disposition.standard_output_path;
        input_attribute_changes^ [input_attribute_index].output_disposition.standard_output_path^ :=
              pvt [p$output_disposition].value^.file_value^;
      ELSE
        IF pvt [p$output_disposition].value^.keyword_value = 'PRINTER' THEN
          input_attribute_changes^ [input_attribute_index].output_disposition.key :=
                jmc$normal_output_disposition;
        ELSEIF pvt [p$output_disposition].value^.keyword_value = 'DISCARD_ALL_OUTPUT' THEN
          input_attribute_changes^ [input_attribute_index].output_disposition.key := jmc$discard_all_output;
        ELSEIF pvt [p$output_disposition].value^.keyword_value = 'DISCARD_STANDARD_OUTPUT' THEN
          input_attribute_changes^ [input_attribute_index].output_disposition.key :=
                jmc$discard_standard_output;
        ELSEIF pvt [p$output_disposition].value^.keyword_value = 'LOCAL' THEN
          input_attribute_changes^ [input_attribute_index].output_disposition.key :=
                jmc$local_output_disposition;
        ELSE { pvt [p$output_disposition].value^.keyword_value = "WAIT_QUEUE'.
          input_attribute_changes^ [input_attribute_index].output_disposition.key := jmc$wait_queue_path;
          input_attribute_changes^ [input_attribute_index].output_disposition.wait_queue_path := NIL;
        IFEND;
      IFEND;
    IFEND;

{  Process OUTPUT_PRIORITY parameter.

    IF pvt [p$output_priority].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$output_priority;
      input_attribute_changes^ [input_attribute_index].output_priority :=
            pvt [p$output_priority].value^.keyword_value;
    IFEND;

{  Process PURGE_DELAY parameter.

    IF pvt [p$purge_delay].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$purge_delay;
      PUSH input_attribute_changes^ [input_attribute_index].purge_delay;
      IF pvt [p$purge_delay].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
        input_attribute_changes^ [input_attribute_index].purge_delay^.specified := FALSE;
      ELSE
        input_attribute_changes^ [input_attribute_index].purge_delay^.specified := TRUE;
        input_attribute_changes^ [input_attribute_index].purge_delay^.time_increment :=
              pvt [p$purge_delay].value^.time_increment_value^;
      IFEND;
    IFEND;

{  Process REMOTE_HOST_DIRECTIVE parameter.

    IF pvt [p$remote_host_directive].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$remote_host_directive;
      PUSH input_attribute_changes^ [input_attribute_index].remote_host_directive;
      input_attribute_changes^ [input_attribute_index].remote_host_directive^.size :=
            STRLENGTH (pvt [p$remote_host_directive].value^.string_value^);
      input_attribute_changes^ [input_attribute_index].remote_host_directive^.parameters :=
            pvt [p$remote_host_directive].value^.string_value^;
    IFEND;

{  Process ROUTING_BANNER parameter.

    IF pvt [p$routing_banner].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$routing_banner;
      input_attribute_changes^ [input_attribute_index].routing_banner :=
            pvt [p$routing_banner].value^.string_value^;
    IFEND;

{  Process SITE_INFORMATION parameter.

    IF pvt [p$site_information].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$site_information;
      PUSH input_attribute_changes^ [input_attribute_index].site_information;
      input_attribute_changes^ [input_attribute_index].site_information^ :=
            pvt [p$site_information].value^.string_value^;
    IFEND;

{  Process SRU_LIMIT parameter.

    IF pvt [p$sru_limit].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$sru_limit;
      IF pvt [p$sru_limit].value^.kind = clc$integer THEN
        input_attribute_changes^ [input_attribute_index].sru_limit :=
              pvt [p$sru_limit].value^.integer_value.value;
      ELSE
        IF pvt [p$sru_limit].value^.keyword_value = 'UNSPECIFIED' THEN
          input_attribute_changes^ [input_attribute_index].sru_limit := jmc$unspecified_sru_limit;
        ELSEIF pvt [p$sru_limit].value^.keyword_value = 'SYSTEM_DEFAULT' THEN
          input_attribute_changes^ [input_attribute_index].sru_limit := jmc$system_default_sru_limit;
        ELSE { pvt [p$sru_limit].value^.keyword_value = 'UNLIMITED'.
          input_attribute_changes^ [input_attribute_index].sru_limit := jmc$unlimited_sru_limit;
        IFEND;
      IFEND;
    IFEND;

{  Process STATION parameter.

    IF pvt [p$station].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$station;
      IF pvt [p$station].value^.kind = clc$keyword THEN
        input_attribute_changes^ [input_attribute_index].station := pvt [p$station].value^.keyword_value;
      ELSE
        input_attribute_changes^ [input_attribute_index].station := pvt [p$station].value^.name_value;
      IFEND;
    IFEND;

{  Process USER_INFORMATION parameter.

    IF pvt [p$user_information].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$user_information;
      PUSH input_attribute_changes^ [input_attribute_index].user_information;
      input_attribute_changes^ [input_attribute_index].user_information^ :=
            pvt [p$user_information].value^.string_value^;
    IFEND;

{  Process USER_JOB_NAME parameter.

    IF pvt [p$user_job_name].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$user_job_name;
      input_attribute_changes^ [input_attribute_index].user_job_name :=
            pvt [p$user_job_name].value^.name_value;
    IFEND;

{  Process VERTICAL_PRINT_DENSITY parameter.

    IF pvt [p$vertical_print_density].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$vertical_print_density;
      IF pvt [p$vertical_print_density].value^.keyword_value = 'FILE' THEN
        input_attribute_changes^ [input_attribute_index].vertical_print_density :=
              jmc$vertical_print_density_file;
      ELSEIF pvt [p$vertical_print_density].value^.keyword_value = 'NONE' THEN
        input_attribute_changes^ [input_attribute_index].vertical_print_density :=
              jmc$vertical_print_density_none;
      ELSEIF pvt [p$vertical_print_density].value^.keyword_value = 'SIX' THEN
        input_attribute_changes^ [input_attribute_index].vertical_print_density :=
              jmc$vertical_print_density_6;
      ELSE { pvt [p$vertical_print_density].value^.keyword_value = 'EIGHT'.
        input_attribute_changes^ [input_attribute_index].vertical_print_density :=
              jmc$vertical_print_density_8;
      IFEND;
    IFEND;

{  Process VFU_LOAD_PROCEDURE parameter.

    IF pvt [p$vfu_load_procedure].specified THEN
      input_attribute_index := input_attribute_index + 1;
      input_attribute_changes^ [input_attribute_index].key := jmc$vfu_load_procedure;
      IF pvt [p$vfu_load_procedure].value^.kind = clc$keyword THEN
        input_attribute_changes^ [input_attribute_index].vfu_load_procedure := osc$null_name;
      ELSE
        input_attribute_changes^ [input_attribute_index].vfu_load_procedure :=
              pvt [p$vfu_load_procedure].value^.name_value;
      IFEND;
    IFEND;

{  Process NAME parameter.

    name_list := pvt [p$name].value;

    WHILE name_list <> NIL DO
      jmp$determine_name_kind (name_list^.element_value^.name_value, valid_name, status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      jmp$change_input_attributes (valid_name, input_attribute_changes, status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      name_list := name_list^.link;
    WHILEND;

  PROCEND jmp$_change_input_attribute;
?? TITLE := '[XDCL] jmp$_change_job_attribute', EJECT ??

  PROCEDURE [XDCL] jmp$_change_job_attribute
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{  PROCEDURE (osm$chaja) change_job_attribute, change_job_attributes, chaja (
{    comment_banner, cb: string 0..jmc$output_comment_banner_size = $optional
{    copies, c: integer 1..jmc$output_copy_count_max = $optional
{    cyclic_aging_interval, cai: integer jmc$lowest_aging_interval..jmc$highe..
{ st_aging_interval = $optional
{    detached_job_wait_time, djwt: any of
{        key
{          unlimited
{        keyend
{        integer jmc$lowest_det_job_wait_time..jmc$highest_det_job_wait_time
{      anyend = $optional
{    device, d: any of
{        key
{          automatic
{        keyend
{        name
{      anyend = $optional
{    dispatching_priority, dp: any of
{        key
{          default
{        keyend
{        name
{      anyend = $optional
{    earliest_print_time, ept: any of
{        key
{          none
{        keyend
{        date_time
{      anyend = $optional
{    external_characteristics, ec: any of
{        key
{          normal
{        keyend
{        string 0..jmc$ext_characteristics_size
{      anyend = $optional
{    forms_code, fc: any of
{        key
{          normal
{        keyend
{        string 0..jmc$forms_code_size
{      anyend = $optional
{    job_abort_disposition, jad: key
{        (restart, r)
{        (terminate, t)
{      keyend = $optional
{    job_recovery_disposition, jrd: key
{        (continue, c)
{        (restart, r)
{        (terminate, t)
{      keyend = $optional
{    latest_print_time, lpt: any of
{        key
{          none
{        keyend
{        date_time
{      anyend = $optional
{    maximum_working_set, maxws: any of
{        key
{          system_default, unlimited
{        keyend
{        integer jmc$lowest_working_set_size..jmc$highest_working_set_size
{      anyend = $optional
{    minimum_working_set, minws: integer jmc$lowest_working_set_size..jmc$hig..
{ hest_working_set_size = $optional
{    operator_family, destination_family, df, of: name = $optional
{    operator_user, so, station_operator, ou: name = $optional
{    output_class, oc: key
{        normal
{      keyend = $optional
{    output_deferred_by_user, odbu: boolean = $optional
{    output_destination, ode: any of
{        string 0..osc$max_name_size
{        name
{      anyend = $optional
{    output_destination_usage, destination_usage, du, odu: any of
{        key
{          dual_state, ntf, private, public, qtf
{        keyend
{        name
{      anyend = $optional
{    output_disposition, odi: any of
{        key
{          (discard_all_output, dao)
{          (discard_standard_output, dso)
{          (local, l)
{          (printer, p)
{          (wait_queue, wt, wq)
{        keyend
{        file
{      anyend = $optional
{    output_priority, op: key
{        low, medium, high
{      keyend = $optional
{    page_aging_interval, pai: integer jmc$lowest_aging_interval..jmc$highest..
{ _aging_interval = $optional
{    purge_delay, pd: any of
{        key
{          none
{        keyend
{        time_increment
{      anyend = $optional
{    remote_host_directive, dsrp, dual_state_route_parameters, rhd: string ..
{      0..jmc$remote_host_directive_size = $optional
{    routing_banner, rb: string 0..jmc$output_routing_banner_size = $optional
{    site_information, si: (BY_NAME, ADVANCED) string 0..jmc$site_information..
{ _size = $optional
{    station, s: any of
{        key
{          automatic
{        keyend
{        name
{      anyend = $optional
{    user_information, ui: string 0..jmc$user_information_size = $optional
{    vertical_print_density, vpd: key
{        six, eight, none, file
{      keyend = $optional
{    vfu_load_procedure, vlp: any of
{        key
{          none
{        keyend
{        name
{      anyend = $optional
{    status)

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

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 71] of clt$pdt_parameter_name,
      parameters: array [1 .. 32] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$string_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$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$name_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 .. 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,
      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$date_time_type_qualifier,
        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$string_type_qualifier,
        recend,
      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$string_type_qualifier,
        recend,
      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,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 6] of clt$keyword_specification,
      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$date_time_type_qualifier,
        recend,
      recend,
      type13: 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,
      type14: record
        header: clt$type_specification_header,
        qualifier: clt$integer_type_qualifier,
      recend,
      type15: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type16: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type17: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 1] of clt$keyword_specification,
      recend,
      type18: record
        header: clt$type_specification_header,
      recend,
      type19: 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$string_type_qualifier,
        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,
      type20: 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 .. 5] 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,
      type21: 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 .. 11] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
        recend,
      recend,
      type22: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 3] of clt$keyword_specification,
      recend,
      type23: record
        header: clt$type_specification_header,
        qualifier: clt$integer_type_qualifier,
      recend,
      type24: 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,
      recend,
      type25: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type26: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type27: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type28: 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,
      type29: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type30: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 4] of clt$keyword_specification,
      recend,
      type31: 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,
      type32: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [89, 11, 23, 9, 15, 4, 97],
    clc$command, 71, 32, 0, 1, 0, 0, 32, 'OSM$CHAJA'], [
    ['C                              ',clc$abbreviation_entry, 2],
    ['CAI                            ',clc$abbreviation_entry, 3],
    ['CB                             ',clc$abbreviation_entry, 1],
    ['COMMENT_BANNER                 ',clc$nominal_entry, 1],
    ['COPIES                         ',clc$nominal_entry, 2],
    ['CYCLIC_AGING_INTERVAL          ',clc$nominal_entry, 3],
    ['D                              ',clc$abbreviation_entry, 5],
    ['DESTINATION_FAMILY             ',clc$alias_entry, 15],
    ['DESTINATION_USAGE              ',clc$alias_entry, 20],
    ['DETACHED_JOB_WAIT_TIME         ',clc$nominal_entry, 4],
    ['DEVICE                         ',clc$nominal_entry, 5],
    ['DF                             ',clc$alias_entry, 15],
    ['DISPATCHING_PRIORITY           ',clc$nominal_entry, 6],
    ['DJWT                           ',clc$abbreviation_entry, 4],
    ['DP                             ',clc$abbreviation_entry, 6],
    ['DSRP                           ',clc$alias_entry, 25],
    ['DU                             ',clc$alias_entry, 20],
    ['DUAL_STATE_ROUTE_PARAMETERS    ',clc$alias_entry, 25],
    ['EARLIEST_PRINT_TIME            ',clc$nominal_entry, 7],
    ['EC                             ',clc$abbreviation_entry, 8],
    ['EPT                            ',clc$abbreviation_entry, 7],
    ['EXTERNAL_CHARACTERISTICS       ',clc$nominal_entry, 8],
    ['FC                             ',clc$abbreviation_entry, 9],
    ['FORMS_CODE                     ',clc$nominal_entry, 9],
    ['JAD                            ',clc$abbreviation_entry, 10],
    ['JOB_ABORT_DISPOSITION          ',clc$nominal_entry, 10],
    ['JOB_RECOVERY_DISPOSITION       ',clc$nominal_entry, 11],
    ['JRD                            ',clc$abbreviation_entry, 11],
    ['LATEST_PRINT_TIME              ',clc$nominal_entry, 12],
    ['LPT                            ',clc$abbreviation_entry, 12],
    ['MAXIMUM_WORKING_SET            ',clc$nominal_entry, 13],
    ['MAXWS                          ',clc$abbreviation_entry, 13],
    ['MINIMUM_WORKING_SET            ',clc$nominal_entry, 14],
    ['MINWS                          ',clc$abbreviation_entry, 14],
    ['OC                             ',clc$abbreviation_entry, 17],
    ['ODBU                           ',clc$abbreviation_entry, 18],
    ['ODE                            ',clc$abbreviation_entry, 19],
    ['ODI                            ',clc$abbreviation_entry, 21],
    ['ODU                            ',clc$abbreviation_entry, 20],
    ['OF                             ',clc$abbreviation_entry, 15],
    ['OP                             ',clc$abbreviation_entry, 22],
    ['OPERATOR_FAMILY                ',clc$nominal_entry, 15],
    ['OPERATOR_USER                  ',clc$nominal_entry, 16],
    ['OU                             ',clc$abbreviation_entry, 16],
    ['OUTPUT_CLASS                   ',clc$nominal_entry, 17],
    ['OUTPUT_DEFERRED_BY_USER        ',clc$nominal_entry, 18],
    ['OUTPUT_DESTINATION             ',clc$nominal_entry, 19],
    ['OUTPUT_DESTINATION_USAGE       ',clc$nominal_entry, 20],
    ['OUTPUT_DISPOSITION             ',clc$nominal_entry, 21],
    ['OUTPUT_PRIORITY                ',clc$nominal_entry, 22],
    ['PAGE_AGING_INTERVAL            ',clc$nominal_entry, 23],
    ['PAI                            ',clc$abbreviation_entry, 23],
    ['PD                             ',clc$abbreviation_entry, 24],
    ['PURGE_DELAY                    ',clc$nominal_entry, 24],
    ['RB                             ',clc$abbreviation_entry, 26],
    ['REMOTE_HOST_DIRECTIVE          ',clc$nominal_entry, 25],
    ['RHD                            ',clc$abbreviation_entry, 25],
    ['ROUTING_BANNER                 ',clc$nominal_entry, 26],
    ['S                              ',clc$abbreviation_entry, 28],
    ['SI                             ',clc$abbreviation_entry, 27],
    ['SITE_INFORMATION               ',clc$nominal_entry, 27],
    ['SO                             ',clc$alias_entry, 16],
    ['STATION                        ',clc$nominal_entry, 28],
    ['STATION_OPERATOR               ',clc$alias_entry, 16],
    ['STATUS                         ',clc$nominal_entry, 32],
    ['UI                             ',clc$abbreviation_entry, 29],
    ['USER_INFORMATION               ',clc$nominal_entry, 29],
    ['VERTICAL_PRINT_DENSITY         ',clc$nominal_entry, 30],
    ['VFU_LOAD_PROCEDURE             ',clc$nominal_entry, 31],
    ['VLP                            ',clc$abbreviation_entry, 31],
    ['VPD                            ',clc$abbreviation_entry, 30]],
    [
{ 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, 8, clc$optional_parameter, 0, 0],
{ 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, 20, clc$optional_parameter, 0, 0],
{ PARAMETER 3
    [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, 20, clc$optional_parameter, 0, 0],
{ PARAMETER 4
    [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$standard_parameter_checking, 84, 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$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 69, clc$optional_parameter, 0, 0],
{ PARAMETER 6
    [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, 69, clc$optional_parameter, 0, 0],
{ PARAMETER 7
    [19, 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 8
    [22, 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 9
    [24, 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 10
    [26, 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, 155, clc$optional_parameter, 0, 0],
{ PARAMETER 11
    [27, 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_parameter, 0, 0],
{ PARAMETER 12
    [29, 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 13
    [31, 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 14
    [33, 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, 20, clc$optional_parameter, 0, 0],
{ PARAMETER 15
    [42, 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_parameter, 0, 0],
{ PARAMETER 16
    [43, 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_parameter, 0, 0],
{ PARAMETER 17
    [45, 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, 44, clc$optional_parameter, 0, 0],
{ PARAMETER 18
    [46, 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_parameter, 0, 0],
{ PARAMETER 19
    [47, 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, 33, clc$optional_parameter, 0, 0],
{ PARAMETER 20
    [48, 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, 217, clc$optional_parameter, 0, 0],
{ PARAMETER 21
    [49, 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, 437, clc$optional_parameter, 0, 0],
{ PARAMETER 22
    [50, 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, 118, clc$optional_parameter, 0, 0],
{ PARAMETER 23
    [51, 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, 20, clc$optional_parameter, 0, 0],
{ PARAMETER 24
    [54, 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, 67, clc$optional_parameter, 0, 0],
{ PARAMETER 25
    [56, 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, 8, clc$optional_parameter, 0, 0],
{ PARAMETER 26
    [58, 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, 8, clc$optional_parameter, 0, 0],
{ PARAMETER 27
    [61, clc$advanced_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 28
    [63, 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 29
    [67, 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, 8, clc$optional_parameter, 0, 0],
{ PARAMETER 30
    [68, 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, 155, clc$optional_parameter, 0, 0],
{ PARAMETER 31
    [69, 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 32
    [65, 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$string_type], [0, jmc$output_comment_banner_size, FALSE]],
{ PARAMETER 2
    [[1, 0, clc$integer_type], [1, jmc$output_copy_count_max, 10]],
{ PARAMETER 3
    [[1, 0, clc$integer_type], [jmc$lowest_aging_interval,
  jmc$highest_aging_interval, 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], [jmc$lowest_det_job_wait_time,
  jmc$highest_det_job_wait_time, 10]]
    ],
{ PARAMETER 5
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['AUTOMATIC                      ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 6
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['DEFAULT                        ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 7
    [[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 8
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$string_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['NORMAL                         ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    8, [[1, 0, clc$string_type], [0, jmc$ext_characteristics_size, FALSE]]
    ],
{ PARAMETER 9
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$string_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['NORMAL                         ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    8, [[1, 0, clc$string_type], [0, jmc$forms_code_size, FALSE]]
    ],
{ PARAMETER 10
    [[1, 0, clc$keyword_type], [4], [
    ['R                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 1],
    ['RESTART                        ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
    ['T                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 2],
    ['TERMINATE                      ', clc$nominal_entry,
  clc$normal_usage_entry, 2]]
    ],
{ PARAMETER 11
    [[1, 0, clc$keyword_type], [6], [
    ['C                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 1],
    ['CONTINUE                       ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
    ['R                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 2],
    ['RESTART                        ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
    ['T                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 3],
    ['TERMINATE                      ', clc$nominal_entry,
  clc$normal_usage_entry, 3]]
    ],
{ PARAMETER 12
    [[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 13
    [[1, 0, clc$union_type], [[clc$integer_type,
    clc$keyword_type],
    FALSE, 2],
    81, [[1, 0, clc$keyword_type], [2], [
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry,
  clc$normal_usage_entry, 2]]
      ],
    20, [[1, 0, clc$integer_type], [jmc$lowest_working_set_size,
  jmc$highest_working_set_size, 10]]
    ],
{ PARAMETER 14
    [[1, 0, clc$integer_type], [jmc$lowest_working_set_size,
  jmc$highest_working_set_size, 10]],
{ PARAMETER 15
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 16
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 17
    [[1, 0, clc$keyword_type], [1], [
    ['NORMAL                         ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
    ],
{ PARAMETER 18
    [[1, 0, clc$boolean_type]],
{ PARAMETER 19
    [[1, 0, clc$union_type], [[clc$name_type, clc$string_type],
    TRUE, 2],
    8, [[1, 0, clc$string_type], [0, osc$max_name_size, FALSE]],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 20
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    192, [[1, 0, clc$keyword_type], [5], [
      ['DUAL_STATE                     ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['NTF                            ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
      ['PRIVATE                        ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
      ['PUBLIC                         ', clc$nominal_entry,
  clc$normal_usage_entry, 4],
      ['QTF                            ', clc$nominal_entry,
  clc$normal_usage_entry, 5]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 21
    [[1, 0, clc$union_type], [[clc$file_type, clc$keyword_type],
    FALSE, 2],
    414, [[1, 0, clc$keyword_type], [11], [
      ['DAO                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 1],
      ['DISCARD_ALL_OUTPUT             ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['DISCARD_STANDARD_OUTPUT        ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
      ['DSO                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 2],
      ['L                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 3],
      ['LOCAL                          ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
      ['P                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 4],
      ['PRINTER                        ', clc$nominal_entry,
  clc$normal_usage_entry, 4],
      ['WAIT_QUEUE                     ', clc$nominal_entry,
  clc$normal_usage_entry, 5],
      ['WQ                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 5],
      ['WT                             ', clc$alias_entry,
  clc$normal_usage_entry, 5]]
      ],
    3, [[1, 0, clc$file_type]]
    ],
{ PARAMETER 22
    [[1, 0, clc$keyword_type], [3], [
    ['HIGH                           ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
    ['LOW                            ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
    ['MEDIUM                         ', clc$nominal_entry,
  clc$normal_usage_entry, 2]]
    ],
{ PARAMETER 23
    [[1, 0, clc$integer_type], [jmc$lowest_aging_interval,
  jmc$highest_aging_interval, 10]],
{ PARAMETER 24
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$time_increment_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['NONE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    3, [[1, 0, clc$time_increment_type]]
    ],
{ PARAMETER 25
    [[1, 0, clc$string_type], [0, jmc$remote_host_directive_size, FALSE]],
{ PARAMETER 26
    [[1, 0, clc$string_type], [0, jmc$output_routing_banner_size, FALSE]],
{ PARAMETER 27
    [[1, 0, clc$string_type], [0, jmc$site_information_size, FALSE]],
{ PARAMETER 28
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['AUTOMATIC                      ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 29
    [[1, 0, clc$string_type], [0, jmc$user_information_size, FALSE]],
{ PARAMETER 30
    [[1, 0, clc$keyword_type], [4], [
    ['EIGHT                          ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
    ['FILE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 4],
    ['NONE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
    ['SIX                            ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
    ],
{ PARAMETER 31
    [[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 32
    [[1, 0, clc$status_type]]];

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

    CONST
      p$comment_banner = 1,
      p$copies = 2,
      p$cyclic_aging_interval = 3,
      p$detached_job_wait_time = 4,
      p$device = 5,
      p$dispatching_priority = 6,
      p$earliest_print_time = 7,
      p$external_characteristics = 8,
      p$forms_code = 9,
      p$job_abort_disposition = 10,
      p$job_recovery_disposition = 11,
      p$latest_print_time = 12,
      p$maximum_working_set = 13,
      p$minimum_working_set = 14,
      p$operator_family = 15,
      p$operator_user = 16,
      p$output_class = 17,
      p$output_deferred_by_user = 18,
      p$output_destination = 19,
      p$output_destination_usage = 20,
      p$output_disposition = 21,
      p$output_priority = 22,
      p$page_aging_interval = 23,
      p$purge_delay = 24,
      p$remote_host_directive = 25,
      p$routing_banner = 26,
      p$site_information = 27,
      p$station = 28,
      p$user_information = 29,
      p$vertical_print_density = 30,
      p$vfu_load_procedure = 31,
      p$status = 32;

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

    CONST
      max_job_attributes = p$vfu_load_procedure;

    VAR
      job_attribute_changes: ^jmt$job_attribute_changes,
      job_attribute_index: 0 .. max_job_attributes,
      number_of_job_attributes: 0 .. max_job_attributes;

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

    job_attribute_changes := NIL;
    number_of_job_attributes := 0;

    FOR job_attribute_index := p$comment_banner TO p$vfu_load_procedure DO
      CASE pvt [job_attribute_index].passing_method OF
      = clc$pass_by_value =
        IF pvt [job_attribute_index].value <> NIL THEN
          number_of_job_attributes := number_of_job_attributes + 1;
        IFEND;
      = clc$pass_by_reference =
        IF pvt [job_attribute_index].variable <> NIL THEN
          number_of_job_attributes := number_of_job_attributes + 1;
        IFEND;
      CASEND;
    FOREND;

    job_attribute_index := 0;

    IF number_of_job_attributes <> 0 THEN
      PUSH job_attribute_changes: [1 .. number_of_job_attributes];
    IFEND;

{  Process COMMENT_BANNER parameter.

    IF pvt [p$comment_banner].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$comment_banner;
      job_attribute_changes^ [job_attribute_index].comment_banner :=
            pvt [p$comment_banner].value^.string_value^;
    IFEND;

{  Process COPIES parameter.

    IF pvt [p$copies].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$copies;
      job_attribute_changes^ [job_attribute_index].copies := pvt [p$copies].value^.integer_value.value;
    IFEND;

{  Process CYCLIC_AGING_INTERVAL parameter.

    IF pvt [p$cyclic_aging_interval].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$cyclic_aging_interval;
      job_attribute_changes^ [job_attribute_index].cyclic_aging_interval :=
            pvt [p$cyclic_aging_interval].value^.integer_value.value;
    IFEND;

{  Process DETACHED_JOB_WAIT_TIME parameter.

    IF pvt [p$detached_job_wait_time].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$detached_job_wait_time;
      IF pvt [p$detached_job_wait_time].value^.kind = clc$integer THEN
        job_attribute_changes^ [job_attribute_index].detached_job_wait_time :=
              pvt [p$detached_job_wait_time].value^.integer_value.value;
      ELSE { UNLIMITED is the only KEYWORD allowed.
        job_attribute_changes^ [job_attribute_index].detached_job_wait_time :=
              jmc$unlimited_det_job_wait_time;
      IFEND;
    IFEND;

{  Process DEVICE parameter.

    IF pvt [p$device].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$device;
      IF pvt [p$device].value^.kind = clc$name THEN
        job_attribute_changes^ [job_attribute_index].device := pvt [p$device].value^.name_value;
      ELSE
        job_attribute_changes^ [job_attribute_index].device := pvt [p$device].value^.keyword_value;
      IFEND;
    IFEND;

{  Process DISPATCHING_PRIORITY parameter.

    IF pvt [p$dispatching_priority].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$dispatching_priority;
      IF pvt [p$dispatching_priority].value^.kind = clc$name THEN
        job_attribute_changes^ [job_attribute_index].dispatching_priority :=
              pvt [p$dispatching_priority].value^.name_value;
      ELSE { pvt [p$dispatching_priority].value^.kind = clc$keyword.
        job_attribute_changes^ [job_attribute_index].dispatching_priority :=
              pvt [p$dispatching_priority].value^.keyword_value;
      IFEND;
    IFEND;

{  Process EARLIEST_PRINT_TIME parameter.

    IF pvt [p$earliest_print_time].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$earliest_print_time;
      IF pvt [p$earliest_print_time].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
        job_attribute_changes^ [job_attribute_index].earliest_print_time.specified := FALSE;
      ELSE
        job_attribute_changes^ [job_attribute_index].earliest_print_time.specified := TRUE;
        job_attribute_changes^ [job_attribute_index].earliest_print_time.date_time :=
              pvt [p$earliest_print_time].value^.date_time_value.value;
      IFEND;
    IFEND;

{  Process EXTERNAL_CHARACTERISTICS parameter.

    IF pvt [p$external_characteristics].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$external_characteristics;
      IF pvt [p$external_characteristics].value^.kind = clc$keyword THEN { the only keyword is NORMAL. }
        job_attribute_changes^ [job_attribute_index].external_characteristics :=
              pvt [p$external_characteristics].value^.keyword_value;
      ELSE
        job_attribute_changes^ [job_attribute_index].external_characteristics :=
              pvt [p$external_characteristics].value^.string_value^;
      IFEND;
    IFEND;

{  Process FORMS_CODE parameter.

    IF pvt [p$forms_code].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$forms_code;
      IF pvt [p$forms_code].value^.kind = clc$keyword THEN { the only keyword allowed is NORMAL. }
        job_attribute_changes^ [job_attribute_index].forms_code := pvt [p$forms_code].value^.keyword_value;
      ELSE
        job_attribute_changes^ [job_attribute_index].forms_code := pvt [p$forms_code].value^.string_value^;
      IFEND;
    IFEND;

{  Process JOB_ABORT_DISPOSITION parameter.

    IF pvt [p$job_abort_disposition].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$job_abort_disposition;
      IF pvt [p$job_abort_disposition].value^.keyword_value = 'RESTART' THEN
        job_attribute_changes^ [job_attribute_index].job_abort_disposition := jmc$restart_on_abort;
      ELSE { TERMINATE is the only other choice. }
        job_attribute_changes^ [job_attribute_index].job_abort_disposition := jmc$terminate_on_abort;
      IFEND;
    IFEND;

{  Process JOB_RECOVERY_DISPOSITION parameter.

    IF pvt [p$job_recovery_disposition].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$job_recovery_disposition;
      IF pvt [p$job_recovery_disposition].value^.keyword_value = 'RESTART' THEN
        job_attribute_changes^ [job_attribute_index].job_recovery_disposition := jmc$restart_on_recovery;
      ELSEIF pvt [p$job_recovery_disposition].value^.keyword_value = 'CONTINUE' THEN
        job_attribute_changes^ [job_attribute_index].job_recovery_disposition := jmc$continue_on_recovery;
      ELSE { pvt [p$job_recovery_disposition].value^.keyword_value = 'TERMINATE'.
        job_attribute_changes^ [job_attribute_index].job_recovery_disposition := jmc$terminate_on_recovery;
      IFEND;
    IFEND;

{  Process LATEST_PRINT_TIME parameter.

    IF pvt [p$latest_print_time].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$latest_print_time;
      IF pvt [p$latest_print_time].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
        job_attribute_changes^ [job_attribute_index].latest_print_time.specified := FALSE;
      ELSE
        job_attribute_changes^ [job_attribute_index].latest_print_time.specified := TRUE;
        job_attribute_changes^ [job_attribute_index].latest_print_time.date_time :=
              pvt [p$latest_print_time].value^.date_time_value.value;
      IFEND;
    IFEND;

{  Process MAXIMUM_WORKING_SET parameter.

    IF pvt [p$maximum_working_set].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$maximum_working_set;
      IF pvt [p$maximum_working_set].value^.kind = clc$integer THEN
        job_attribute_changes^ [job_attribute_index].maximum_working_set := pvt [p$maximum_working_set].
              value^.integer_value.value;
      ELSE
        IF pvt [p$maximum_working_set].value^.keyword_value = 'SYSTEM_DEFAULT' THEN
          job_attribute_changes^ [job_attribute_index].maximum_working_set := jmc$system_default_work_set_siz;
        ELSE { pvt [p$maximum_working_set].value^.keyword_value = 'UNLIMITED'.
          job_attribute_changes^ [job_attribute_index].maximum_working_set := jmc$unlimited_working_set_size;
        IFEND;
      IFEND;
    IFEND;

{  Process MINIMUM_WORKING_SET parameter.

    IF pvt [p$minimum_working_set].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$minimum_working_set;
      job_attribute_changes^ [job_attribute_index].minimum_working_set :=
            pvt [p$minimum_working_set].value^.integer_value.value;
    IFEND;

{  Process OPERATOR_FAMILY parameter.

    IF pvt [p$operator_family].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$output_destination_family;
      job_attribute_changes^ [job_attribute_index].output_destination_family := pvt [p$operator_family].
            value^.name_value;
    IFEND;

{  Process OPERATOR_USER parameter.

    IF pvt [p$operator_user].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$station_operator;
      job_attribute_changes^ [job_attribute_index].station_operator := pvt [p$operator_user].value^.
            name_value;
    IFEND;

{  Process OUTPUT_CLASS parameter.

    IF pvt [p$output_class].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$output_class;
      job_attribute_changes^ [job_attribute_index].output_class := pvt [p$output_class].value^.keyword_value;
    IFEND;

{  Process OUTPUT_DEFERRED_BY_USER parameter.

    IF pvt [p$output_deferred_by_user].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$output_deferred_by_user;
      job_attribute_changes^ [job_attribute_index].output_deferred_by_user :=
            pvt [p$output_deferred_by_user].value^.boolean_value.value;
    IFEND;

{  Process OUTPUT_DESTINATION parameter.

    IF pvt [p$output_destination].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$output_destination;
      IF pvt [p$output_destination].value^.kind = clc$name THEN
        job_attribute_changes^ [job_attribute_index].output_destination :=
              pvt [p$output_destination].value^.name_value;
      ELSE
        job_attribute_changes^ [job_attribute_index].output_destination :=
              pvt [p$output_destination].value^.string_value^;

      IFEND;
    IFEND;

{  Process OUTPUT_DESTINATION_USAGE parameter.

    IF pvt [p$output_destination_usage].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$output_destination_usage;
      IF pvt [p$output_destination_usage].value^.kind = clc$name THEN
        job_attribute_changes^ [job_attribute_index].output_destination_usage :=
              pvt [p$output_destination_usage].value^.name_value;
      ELSE
        job_attribute_changes^ [job_attribute_index].output_destination_usage :=
              pvt [p$output_destination_usage].value^.keyword_value;

      IFEND;
    IFEND;

{  Process OUTPUT_DISPOSITION parameter.

    IF pvt [p$output_disposition].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$output_disposition;
      IF pvt [p$output_disposition].value^.kind = clc$file THEN
        job_attribute_changes^ [job_attribute_index].output_disposition.key := jmc$standard_output_path;
        PUSH job_attribute_changes^ [job_attribute_index].output_disposition.standard_output_path;
        job_attribute_changes^ [job_attribute_index].output_disposition.standard_output_path^ :=
              pvt [p$output_disposition].value^.file_value^;
      ELSE
        IF pvt [p$output_disposition].value^.keyword_value = 'PRINTER' THEN
          job_attribute_changes^ [job_attribute_index].output_disposition.key :=
                jmc$normal_output_disposition;
        ELSEIF pvt [p$output_disposition].value^.keyword_value = 'DISCARD_ALL_OUTPUT' THEN
          job_attribute_changes^ [job_attribute_index].output_disposition.key := jmc$discard_all_output;
        ELSEIF pvt [p$output_disposition].value^.keyword_value = 'DISCARD_STANDARD_OUTPUT' THEN
          job_attribute_changes^ [job_attribute_index].output_disposition.key := jmc$discard_standard_output;
        ELSEIF pvt [p$output_disposition].value^.keyword_value = 'LOCAL' THEN
          job_attribute_changes^ [job_attribute_index].output_disposition.key := jmc$local_output_disposition;
        ELSE { pvt [p$output_disposition].value^.keyword_value = 'WAIT_QUEUE'.
          job_attribute_changes^ [job_attribute_index].output_disposition.key := jmc$wait_queue_path;
          job_attribute_changes^ [job_attribute_index].output_disposition.wait_queue_path := NIL;
        IFEND;
      IFEND;
    IFEND;

{  Process OUTPUT_PRIORITY parameter.

    IF pvt [p$output_priority].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$output_priority;
      job_attribute_changes^ [job_attribute_index].output_priority :=
            pvt [p$output_priority].value^.keyword_value;
    IFEND;

{  Process PAGE_AGING_INTERVAL parameter.

    IF pvt [p$page_aging_interval].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$page_aging_interval;
      job_attribute_changes^ [job_attribute_index].page_aging_interval :=
            pvt [p$page_aging_interval].value^.integer_value.value;
    IFEND;

{  Process PURGE_DELAY parameter.

    IF pvt [p$purge_delay].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$purge_delay;
      PUSH job_attribute_changes^ [job_attribute_index].purge_delay;
      IF pvt [p$purge_delay].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
        job_attribute_changes^ [job_attribute_index].purge_delay^.specified := FALSE;
      ELSE
        job_attribute_changes^ [job_attribute_index].purge_delay^.specified := TRUE;
        job_attribute_changes^ [job_attribute_index].purge_delay^.time_increment := pvt [p$purge_delay].
              value^.time_increment_value^;
      IFEND;
    IFEND;

{  Process REMOTE_HOST_DIRECTIVE parameter.

    IF pvt [p$remote_host_directive].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$remote_host_directive;
      PUSH job_attribute_changes^ [job_attribute_index].remote_host_directive;
      job_attribute_changes^ [job_attribute_index].remote_host_directive^.size :=
            STRLENGTH (pvt [p$remote_host_directive].value^.string_value^);
      job_attribute_changes^ [job_attribute_index].remote_host_directive^.parameters :=
            pvt [p$remote_host_directive].value^.string_value^;
    IFEND;

{  Process ROUTING_BANNER parameter.

    IF pvt [p$routing_banner].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$routing_banner;
      job_attribute_changes^ [job_attribute_index].routing_banner :=
            pvt [p$routing_banner].value^.string_value^;
    IFEND;

{  Process SITE_INFORMATION parameter.

    IF pvt [p$site_information].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$site_information;
      PUSH job_attribute_changes^ [job_attribute_index].site_information;
      job_attribute_changes^ [job_attribute_index].site_information^ :=
            pvt [p$site_information].value^.string_value^;
    IFEND;

{  Process STATION parameter.

    IF pvt [p$station].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$station;
      IF pvt [p$station].value^.kind = clc$keyword THEN
        job_attribute_changes^ [job_attribute_index].station := pvt [p$station].value^.keyword_value;
      ELSE
        job_attribute_changes^ [job_attribute_index].station := pvt [p$station].value^.name_value;
      IFEND;
    IFEND;

{  Process USER_INFORMATION parameter.

    IF pvt [p$user_information].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$user_information;
      PUSH job_attribute_changes^ [job_attribute_index].user_information;
      job_attribute_changes^ [job_attribute_index].user_information^ :=
            pvt [p$user_information].value^.string_value^;
    IFEND;

{  Process VERTICAL_PRINT_DENSITY parameter.

    IF pvt [p$vertical_print_density].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$vertical_print_density;
      IF pvt [p$vertical_print_density].value^.keyword_value = 'FILE' THEN
        job_attribute_changes^ [job_attribute_index].vertical_print_density :=
              jmc$vertical_print_density_file;
      ELSEIF pvt [p$vertical_print_density].value^.keyword_value = 'NONE' THEN
        job_attribute_changes^ [job_attribute_index].vertical_print_density :=
              jmc$vertical_print_density_none;
      ELSEIF pvt [p$vertical_print_density].value^.keyword_value = 'SIX' THEN
        job_attribute_changes^ [job_attribute_index].vertical_print_density := jmc$vertical_print_density_6;
      ELSE { pvt [p$vertical_print_density].value^.keyword_value = 'EIGHT'
        job_attribute_changes^ [job_attribute_index].vertical_print_density := jmc$vertical_print_density_8;
      IFEND;
    IFEND;

{  Process VFU_LOAD_PROCEDURE parameter.

    IF pvt [p$vfu_load_procedure].specified THEN
      job_attribute_index := job_attribute_index + 1;
      job_attribute_changes^ [job_attribute_index].key := jmc$vfu_load_procedure;
      IF pvt [p$vfu_load_procedure].value^.kind = clc$keyword THEN
        job_attribute_changes^ [job_attribute_index].vfu_load_procedure := osc$null_name;
      ELSE
        job_attribute_changes^ [job_attribute_index].vfu_load_procedure :=
              pvt [p$vfu_load_procedure].value^.name_value;
      IFEND;
    IFEND;

    jmp$change_job_attributes (job_attribute_changes, status);

  PROCEND jmp$_change_job_attribute;
?? TITLE := '[XDCL] jmp$_change_output_attribute', EJECT ??

  PROCEDURE [XDCL] jmp$_change_output_attribute
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{  PROCEDURE (osm$chaoa) change_output_attribute, change_output_attributes, c..
{ haoa (
{    name, names, n: list of name = $required
{    comment_banner, cb: string 0..jmc$output_comment_banner_size = $optional
{    copies, c: integer 1..jmc$output_copy_count_max = $optional
{    device, d: any of
{        key
{          automatic
{        keyend
{        name
{      anyend = $optional
{    earliest_print_time, ept: any of
{        key
{          none
{        keyend
{        date_time
{      anyend = $optional
{    external_characteristics, ec: any of
{        key
{          normal
{        keyend
{        string 0..jmc$ext_characteristics_size
{      anyend = $optional
{    forms_code, fc: any of
{        key
{          normal
{        keyend
{        string 0..jmc$forms_code_size
{      anyend = $optional
{    latest_print_time, lpt: any of
{        key
{          none
{        keyend
{        date_time
{      anyend = $optional
{    operator_family, destination_family, df, of: name = $optional
{    operator_user, so, station_operator, ou: name = $optional
{    output_class, oc: key
{        normal
{      keyend = $optional
{    output_deferred_by_operator, odbo: boolean = $optional
{    output_deferred_by_user, odbu: boolean = $optional
{    output_destination, ode: any of
{        string 0..osc$max_name_size
{        name
{      anyend = $optional
{    output_destination_usage, destination_usage, du, odu: any of
{        key
{          dual_state, ntf, private, public, qtf
{        keyend
{        name
{      anyend = $optional
{    output_priority, op: key
{        low, medium, high
{      keyend = $optional
{    purge_delay, pd: any of
{        key
{          none
{        keyend
{        time_increment
{      anyend = $optional
{    remote_host_directive, dsrp, dual_state_route_parameters, rhd: string ..
{      0..jmc$remote_host_directive_size = $optional
{    reprint_disposition, rd: key
{        (discard, d)
{        (reprint, r)
{      keyend = $optional
{    routing_banner, rb: string 0..jmc$output_routing_banner_size = $optional
{    site_information, si: (BY_NAME, ADVANCED) string 0..jmc$site_information..
{ _size = $optional
{    station, s: any of
{        key
{          automatic
{        keyend
{        name
{      anyend = $optional
{    user_information, ui: string 0..jmc$user_information_size = $optional
{    vertical_print_density, vpd: key
{        six, eight, none
{      keyend = $optional
{    vfu_load_procedure, vlp: any of
{        key
{          none
{        keyend
{        name
{      anyend = $optional
{    status)

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

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 60] of clt$pdt_parameter_name,
      parameters: array [1 .. 26] 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,
        qualifier: clt$string_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$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$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,
      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$string_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 .. 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,
      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$date_time_type_qualifier,
        recend,
      recend,
      type9: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type10: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type11: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 1] of clt$keyword_specification,
      recend,
      type12: record
        header: clt$type_specification_header,
      recend,
      type13: record
        header: clt$type_specification_header,
      recend,
      type14: 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$string_type_qualifier,
        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,
      type15: 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 .. 5] 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,
      type16: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 3] of clt$keyword_specification,
      recend,
      type17: 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,
      recend,
      type18: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type19: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 4] of clt$keyword_specification,
      recend,
      type20: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type21: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type22: 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,
      type23: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type24: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 3] of clt$keyword_specification,
      recend,
      type25: 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,
      type26: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [89, 11, 23, 9, 20, 7, 718],
    clc$command, 60, 26, 1, 1, 0, 0, 26, 'OSM$CHAOA'], [
    ['C                              ',clc$abbreviation_entry, 3],
    ['CB                             ',clc$abbreviation_entry, 2],
    ['COMMENT_BANNER                 ',clc$nominal_entry, 2],
    ['COPIES                         ',clc$nominal_entry, 3],
    ['D                              ',clc$abbreviation_entry, 4],
    ['DESTINATION_FAMILY             ',clc$alias_entry, 9],
    ['DESTINATION_USAGE              ',clc$alias_entry, 15],
    ['DEVICE                         ',clc$nominal_entry, 4],
    ['DF                             ',clc$alias_entry, 9],
    ['DSRP                           ',clc$alias_entry, 18],
    ['DU                             ',clc$alias_entry, 15],
    ['DUAL_STATE_ROUTE_PARAMETERS    ',clc$alias_entry, 18],
    ['EARLIEST_PRINT_TIME            ',clc$nominal_entry, 5],
    ['EC                             ',clc$abbreviation_entry, 6],
    ['EPT                            ',clc$abbreviation_entry, 5],
    ['EXTERNAL_CHARACTERISTICS       ',clc$nominal_entry, 6],
    ['FC                             ',clc$abbreviation_entry, 7],
    ['FORMS_CODE                     ',clc$nominal_entry, 7],
    ['LATEST_PRINT_TIME              ',clc$nominal_entry, 8],
    ['LPT                            ',clc$abbreviation_entry, 8],
    ['N                              ',clc$abbreviation_entry, 1],
    ['NAME                           ',clc$nominal_entry, 1],
    ['NAMES                          ',clc$alias_entry, 1],
    ['OC                             ',clc$abbreviation_entry, 11],
    ['ODBO                           ',clc$abbreviation_entry, 12],
    ['ODBU                           ',clc$abbreviation_entry, 13],
    ['ODE                            ',clc$abbreviation_entry, 14],
    ['ODU                            ',clc$abbreviation_entry, 15],
    ['OF                             ',clc$abbreviation_entry, 9],
    ['OP                             ',clc$abbreviation_entry, 16],
    ['OPERATOR_FAMILY                ',clc$nominal_entry, 9],
    ['OPERATOR_USER                  ',clc$nominal_entry, 10],
    ['OU                             ',clc$abbreviation_entry, 10],
    ['OUTPUT_CLASS                   ',clc$nominal_entry, 11],
    ['OUTPUT_DEFERRED_BY_OPERATOR    ',clc$nominal_entry, 12],
    ['OUTPUT_DEFERRED_BY_USER        ',clc$nominal_entry, 13],
    ['OUTPUT_DESTINATION             ',clc$nominal_entry, 14],
    ['OUTPUT_DESTINATION_USAGE       ',clc$nominal_entry, 15],
    ['OUTPUT_PRIORITY                ',clc$nominal_entry, 16],
    ['PD                             ',clc$abbreviation_entry, 17],
    ['PURGE_DELAY                    ',clc$nominal_entry, 17],
    ['RB                             ',clc$abbreviation_entry, 20],
    ['RD                             ',clc$abbreviation_entry, 19],
    ['REMOTE_HOST_DIRECTIVE          ',clc$nominal_entry, 18],
    ['REPRINT_DISPOSITION            ',clc$nominal_entry, 19],
    ['RHD                            ',clc$abbreviation_entry, 18],
    ['ROUTING_BANNER                 ',clc$nominal_entry, 20],
    ['S                              ',clc$abbreviation_entry, 22],
    ['SI                             ',clc$abbreviation_entry, 21],
    ['SITE_INFORMATION               ',clc$nominal_entry, 21],
    ['SO                             ',clc$alias_entry, 10],
    ['STATION                        ',clc$nominal_entry, 22],
    ['STATION_OPERATOR               ',clc$alias_entry, 10],
    ['STATUS                         ',clc$nominal_entry, 26],
    ['UI                             ',clc$abbreviation_entry, 23],
    ['USER_INFORMATION               ',clc$nominal_entry, 23],
    ['VERTICAL_PRINT_DENSITY         ',clc$nominal_entry, 24],
    ['VFU_LOAD_PROCEDURE             ',clc$nominal_entry, 25],
    ['VLP                            ',clc$abbreviation_entry, 25],
    ['VPD                            ',clc$abbreviation_entry, 24]],
    [
{ PARAMETER 1
    [22, 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, 21, 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$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 8, clc$optional_parameter, 0, 0],
{ 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, 20, 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$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 69, clc$optional_parameter, 0, 0],
{ PARAMETER 5
    [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, 69, clc$optional_parameter, 0, 0],
{ PARAMETER 6
    [16, 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 7
    [18, 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 8
    [19, 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 9
    [31, 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_parameter, 0, 0],
{ PARAMETER 10
    [32, 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_parameter, 0, 0],
{ PARAMETER 11
    [34, 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, 44, clc$optional_parameter, 0, 0],
{ PARAMETER 12
    [35, 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_parameter, 0, 0],
{ PARAMETER 13
    [36, 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_parameter, 0, 0],
{ PARAMETER 14
    [37, 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, 33, clc$optional_parameter, 0, 0],
{ PARAMETER 15
    [38, 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, 217, clc$optional_parameter, 0, 0],
{ PARAMETER 16
    [39, 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, 118, clc$optional_parameter, 0, 0],
{ PARAMETER 17
    [41, 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, 67, clc$optional_parameter, 0, 0],
{ PARAMETER 18
    [44, 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, 8, clc$optional_parameter, 0, 0],
{ PARAMETER 19
    [45, 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, 155, clc$optional_parameter, 0, 0],
{ PARAMETER 20
    [47, 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, 8, clc$optional_parameter, 0, 0],
{ PARAMETER 21
    [50, clc$advanced_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 22
    [52, 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 23
    [56, 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, 8, clc$optional_parameter, 0, 0],
{ PARAMETER 24
    [57, 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, 118, clc$optional_parameter, 0, 0],
{ PARAMETER 25
    [58, 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 26
    [54, 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$string_type], [0, jmc$output_comment_banner_size, FALSE]],
{ PARAMETER 3
    [[1, 0, clc$integer_type], [1, jmc$output_copy_count_max, 10]],
{ PARAMETER 4
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['AUTOMATIC                      ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 5
    [[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 6
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$string_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['NORMAL                         ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    8, [[1, 0, clc$string_type], [0, jmc$ext_characteristics_size, FALSE]]
    ],
{ PARAMETER 7
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$string_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['NORMAL                         ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    8, [[1, 0, clc$string_type], [0, jmc$forms_code_size, FALSE]]
    ],
{ PARAMETER 8
    [[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 9
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 10
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 11
    [[1, 0, clc$keyword_type], [1], [
    ['NORMAL                         ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
    ],
{ PARAMETER 12
    [[1, 0, clc$boolean_type]],
{ PARAMETER 13
    [[1, 0, clc$boolean_type]],
{ PARAMETER 14
    [[1, 0, clc$union_type], [[clc$name_type, clc$string_type],
    TRUE, 2],
    8, [[1, 0, clc$string_type], [0, osc$max_name_size, FALSE]],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 15
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    192, [[1, 0, clc$keyword_type], [5], [
      ['DUAL_STATE                     ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['NTF                            ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
      ['PRIVATE                        ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
      ['PUBLIC                         ', clc$nominal_entry,
  clc$normal_usage_entry, 4],
      ['QTF                            ', clc$nominal_entry,
  clc$normal_usage_entry, 5]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 16
    [[1, 0, clc$keyword_type], [3], [
    ['HIGH                           ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
    ['LOW                            ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
    ['MEDIUM                         ', clc$nominal_entry,
  clc$normal_usage_entry, 2]]
    ],
{ PARAMETER 17
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$time_increment_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['NONE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    3, [[1, 0, clc$time_increment_type]]
    ],
{ PARAMETER 18
    [[1, 0, clc$string_type], [0, jmc$remote_host_directive_size, FALSE]],
{ PARAMETER 19
    [[1, 0, clc$keyword_type], [4], [
    ['D                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 1],
    ['DISCARD                        ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
    ['R                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 2],
    ['REPRINT                        ', clc$nominal_entry,
  clc$normal_usage_entry, 2]]
    ],
{ PARAMETER 20
    [[1, 0, clc$string_type], [0, jmc$output_routing_banner_size, FALSE]],
{ PARAMETER 21
    [[1, 0, clc$string_type], [0, jmc$site_information_size, FALSE]],
{ PARAMETER 22
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['AUTOMATIC                      ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 23
    [[1, 0, clc$string_type], [0, jmc$user_information_size, FALSE]],
{ PARAMETER 24
    [[1, 0, clc$keyword_type], [3], [
    ['EIGHT                          ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
    ['NONE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
    ['SIX                            ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
    ],
{ PARAMETER 25
    [[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 26
    [[1, 0, clc$status_type]]];

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

    CONST
      p$name = 1,
      p$comment_banner = 2,
      p$copies = 3,
      p$device = 4,
      p$earliest_print_time = 5,
      p$external_characteristics = 6,
      p$forms_code = 7,
      p$latest_print_time = 8,
      p$operator_family = 9,
      p$operator_user = 10,
      p$output_class = 11,
      p$output_deferred_by_operator = 12,
      p$output_deferred_by_user = 13,
      p$output_destination = 14,
      p$output_destination_usage = 15,
      p$output_priority = 16,
      p$purge_delay = 17,
      p$remote_host_directive = 18,
      p$reprint_disposition = 19,
      p$routing_banner = 20,
      p$site_information = 21,
      p$station = 22,
      p$user_information = 23,
      p$vertical_print_density = 24,
      p$vfu_load_procedure = 25,
      p$status = 26;

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

    CONST
      max_output_attributes = p$vfu_load_procedure;

    VAR
      index: 0 .. max_output_attributes,
      name_list: ^clt$data_value,
      number_of_output_attributes: 0 .. max_output_attributes,
      output_attribute_index: 0 .. max_output_attributes,
      valid_name: jmt$name,
      output_attribute_changes: ^jmt$output_attribute_changes;

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

    output_attribute_changes := NIL;
    output_attribute_index := 0;
    number_of_output_attributes := 0;

    FOR index := p$comment_banner TO p$vfu_load_procedure DO
      CASE pvt [index].passing_method OF
      = clc$pass_by_value =
        IF pvt [index].value <> NIL THEN
          number_of_output_attributes := number_of_output_attributes + 1;
        IFEND;
      = clc$pass_by_reference =
        IF pvt [index].variable <> NIL THEN
          number_of_output_attributes := number_of_output_attributes + 1;
        IFEND;
      CASEND;
    FOREND;

    IF number_of_output_attributes <> 0 THEN
      PUSH output_attribute_changes: [1 .. number_of_output_attributes];
    IFEND;

{  Process COMMENT_BANNER parameter.

    IF pvt [p$comment_banner].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$comment_banner;
      output_attribute_changes^ [output_attribute_index].comment_banner :=
            pvt [p$comment_banner].value^.string_value^;
    IFEND;

{  Process COPIES parameter.

    IF pvt [p$copies].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$copies;
      output_attribute_changes^ [output_attribute_index].copies := pvt [p$copies].value^.integer_value.value;
    IFEND;

{  Process DEVICE parameter.

    IF pvt [p$device].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$device;
      IF pvt [p$device].value^.kind = clc$name THEN
        output_attribute_changes^ [output_attribute_index].device := pvt [p$device].value^.name_value;
      ELSE
        output_attribute_changes^ [output_attribute_index].device := pvt [p$device].value^.keyword_value;
      IFEND;
    IFEND;

{  Process EARLIEST_PRINT_TIME parameter.

    IF pvt [p$earliest_print_time].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$earliest_print_time;
      IF pvt [p$earliest_print_time].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
        output_attribute_changes^ [output_attribute_index].earliest_print_time.specified := FALSE;
      ELSE
        output_attribute_changes^ [output_attribute_index].earliest_print_time.specified := TRUE;
        output_attribute_changes^ [output_attribute_index].earliest_print_time.date_time :=
              pvt [p$earliest_print_time].value^.date_time_value.value;
      IFEND;
    IFEND;

{  Process EXTERNAL_CHARACTERISTICS parameter.

    IF pvt [p$external_characteristics].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$external_characteristics;
      IF pvt [p$external_characteristics].value^.kind = clc$keyword THEN { the only keyword is NORMAL. }
        output_attribute_changes^ [output_attribute_index].external_characteristics :=
              pvt [p$external_characteristics].value^.keyword_value;
      ELSE
        output_attribute_changes^ [output_attribute_index].external_characteristics :=
              pvt [p$external_characteristics].value^.string_value^;
      IFEND;
    IFEND;

{  Process FORMS_CODE parameter.

    IF pvt [p$forms_code].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$forms_code;
      IF pvt [p$forms_code].value^.kind = clc$keyword THEN { the only keyword allowed is NORMAL. }
        output_attribute_changes^ [output_attribute_index].forms_code :=
              pvt [p$forms_code].value^.keyword_value;
      ELSE
        output_attribute_changes^ [output_attribute_index].forms_code :=
              pvt [p$forms_code].value^.string_value^;
      IFEND;
    IFEND;

{  Process LATEST_PRINT_TIME parameter.

    IF pvt [p$latest_print_time].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$latest_print_time;
      IF pvt [p$latest_print_time].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
        output_attribute_changes^ [output_attribute_index].latest_print_time.specified := FALSE;
      ELSE
        output_attribute_changes^ [output_attribute_index].latest_print_time.specified := TRUE;
        output_attribute_changes^ [output_attribute_index].latest_print_time.date_time :=
              pvt [p$latest_print_time].value^.date_time_value.value;
      IFEND;
    IFEND;

{  Process OPERATOR_FAMILY parameter.

    IF pvt [p$operator_family].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$output_destination_family;
      output_attribute_changes^ [output_attribute_index].output_destination_family :=
            pvt [p$operator_family].value^.name_value;
    IFEND;

{  Process OPERATOR_USER parameter.

    IF pvt [p$operator_user].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$station_operator;
      output_attribute_changes^ [output_attribute_index].station_operator :=
            pvt [p$operator_user].value^.name_value;
    IFEND;

{  Process OUTPUT_CLASS parameter.

    IF pvt [p$output_class].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$output_class;
      output_attribute_changes^ [output_attribute_index].output_class :=
            pvt [p$output_class].value^.keyword_value;
    IFEND;

{  Process OUTPUT_DEFERRED_BY_OPERATOR parameter.

    IF pvt [p$output_deferred_by_operator].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$output_deferred_by_operator;
      output_attribute_changes^ [output_attribute_index].output_deferred_by_operator :=
            pvt [p$output_deferred_by_operator].value^.boolean_value.value;
    IFEND;

{  Process OUTPUT_DEFERRED_BY_USER parameter.

    IF pvt [p$output_deferred_by_user].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$output_deferred_by_user;
      output_attribute_changes^ [output_attribute_index].output_deferred_by_user :=
            pvt [p$output_deferred_by_user].value^.boolean_value.value;
    IFEND;

{  Process OUTPUT_DESTINATION parameter.

    IF pvt [p$output_destination].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$output_destination;
      IF pvt [p$output_destination].value^.kind = clc$name THEN
        output_attribute_changes^ [output_attribute_index].output_destination :=
              pvt [p$output_destination].value^.name_value;
      ELSE
        output_attribute_changes^ [output_attribute_index].output_destination :=
              pvt [p$output_destination].value^.string_value^;
      IFEND;
    IFEND;

{  Process OUTPUT_DESTINATION_USAGE parameter.

    IF pvt [p$output_destination_usage].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$output_destination_usage;
      IF pvt [p$output_destination_usage].value^.kind = clc$name THEN
        output_attribute_changes^ [output_attribute_index].output_destination_usage :=
              pvt [p$output_destination_usage].value^.name_value;
      ELSE
        output_attribute_changes^ [output_attribute_index].output_destination_usage :=
              pvt [p$output_destination_usage].value^.keyword_value;
      IFEND;
    IFEND;

{  Process OUTPUT_PRIORITY parameter.

    IF pvt [p$output_priority].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$output_priority;
      output_attribute_changes^ [output_attribute_index].output_priority :=
            pvt [p$output_priority].value^.keyword_value;
    IFEND;

{  Process PURGE_DELAY parameter.

    IF pvt [p$purge_delay].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$purge_delay;
      PUSH output_attribute_changes^ [output_attribute_index].purge_delay;
      IF pvt [p$purge_delay].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
        output_attribute_changes^ [output_attribute_index].purge_delay^.specified := FALSE;
      ELSE
        output_attribute_changes^ [output_attribute_index].purge_delay^.specified := TRUE;
        output_attribute_changes^ [output_attribute_index].purge_delay^.time_increment :=
              pvt [p$purge_delay].value^.time_increment_value^;
      IFEND;
    IFEND;

{  Process REMOTE_HOST_DIRECTIVE parameter.

    IF pvt [p$remote_host_directive].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$remote_host_directive;
      PUSH output_attribute_changes^ [output_attribute_index].remote_host_directive;
      output_attribute_changes^ [output_attribute_index].remote_host_directive^.size :=
            STRLENGTH (pvt [p$remote_host_directive].value^.string_value^);
      output_attribute_changes^ [output_attribute_index].remote_host_directive^.parameters :=
            pvt [p$remote_host_directive].value^.string_value^;
    IFEND;

{  Process REPRINT_DISPOSITION parameter.

    IF pvt [p$reprint_disposition].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$reprint_disposition;
      IF pvt [p$reprint_disposition].value^.keyword_value = 'REPRINT' THEN
        output_attribute_changes^ [output_attribute_index].reprint_disposition := jmc$rd_reprint_file;
      ELSE { DISCARD is the only other choice. }
        output_attribute_changes^ [output_attribute_index].reprint_disposition := jmc$rd_discard_file;
      IFEND;
    IFEND;

{  Process ROUTING_BANNER parameter.

    IF pvt [p$routing_banner].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$routing_banner;
      output_attribute_changes^ [output_attribute_index].routing_banner :=
            pvt [p$routing_banner].value^.string_value^;
    IFEND;

{  Process SITE_INFORMATION parameter.

    IF pvt [p$site_information].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$site_information;
      PUSH output_attribute_changes^ [output_attribute_index].site_information;
      output_attribute_changes^ [output_attribute_index].site_information^ :=
            pvt [p$site_information].value^.string_value^;
    IFEND;

{  Process STATION parameter.

    IF pvt [p$station].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$station;
      IF pvt [p$station].value^.kind = clc$keyword THEN
        output_attribute_changes^ [output_attribute_index].station := pvt [p$station].value^.keyword_value;
      ELSE
        output_attribute_changes^ [output_attribute_index].station := pvt [p$station].value^.name_value;
      IFEND;
    IFEND;

{  Process USER_INFORMATION parameter.

    IF pvt [p$user_information].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$user_information;
      PUSH output_attribute_changes^ [output_attribute_index].user_information;
      output_attribute_changes^ [output_attribute_index].user_information^ :=
            pvt [p$user_information].value^.string_value^;
    IFEND;

{  Process VERTICAL_PRINT_DENSITY parameter.

    IF pvt [p$vertical_print_density].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$vertical_print_density;
      IF pvt [p$vertical_print_density].value^.keyword_value = 'NONE' THEN
        output_attribute_changes^ [output_attribute_index].vertical_print_density :=
              jmc$vertical_print_density_none;
      ELSEIF pvt [p$vertical_print_density].value^.keyword_value = 'SIX' THEN
        output_attribute_changes^ [output_attribute_index].vertical_print_density :=
              jmc$vertical_print_density_6;
      ELSE { pvt [p$vertical_print_density].value^.keyword_value = 'EIGHT'
        output_attribute_changes^ [output_attribute_index].vertical_print_density :=
              jmc$vertical_print_density_8;
      IFEND;
    IFEND;

{  Process VFU_LOAD_PROCEDURE parameter.

    IF pvt [p$vfu_load_procedure].specified THEN
      output_attribute_index := output_attribute_index + 1;
      output_attribute_changes^ [output_attribute_index].key := jmc$vfu_load_procedure;
      IF pvt [p$vfu_load_procedure].value^.kind = clc$keyword THEN
        output_attribute_changes^ [output_attribute_index].vfu_load_procedure := osc$null_name;
      ELSE
        output_attribute_changes^ [output_attribute_index].vfu_load_procedure :=
              pvt [p$vfu_load_procedure].value^.name_value;
      IFEND;
    IFEND;

{  Process NAME parameter.

    name_list := pvt [p$name].value;

    WHILE name_list <> NIL DO
      jmp$determine_name_kind (name_list^.element_value^.name_value, valid_name, status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      jmp$change_output_attributes (valid_name, output_attribute_changes, status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      name_list := name_list^.link;
    WHILEND;

  PROCEND jmp$_change_output_attribute;
?? OLDTITLE ??
?? NEWTITLE := '[XDCL] jmp$_copy_output_file', EJECT ??

  PROCEDURE [XDCL] jmp$_copy_output_file
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$copof) copy_output_file, copof (
{   name, n: name = $REQUIRED
{   output, o: file = $output
{   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,
      recend,
      type2: record
        header: clt$type_specification_header,
        default_value: string (7),
      recend,
      type3: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [89, 4, 10, 12, 31, 5, 804],
    clc$command, 5, 3, 1, 0, 0, 0, 3, 'OSM$COPOF'], [
    ['N                              ',clc$abbreviation_entry, 1],
    ['NAME                           ',clc$nominal_entry, 1],
    ['O                              ',clc$abbreviation_entry, 2],
    ['OUTPUT                         ',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, 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$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  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_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$file_type],
    '$output'],
{ PARAMETER 3
    [[1, 0, clc$status_type]]];

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

    CONST
      p$name = 1,
      p$output = 2,
      p$status = 3;

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

    VAR
      control_info: fst$copy_control_information,
      ignore_status: ost$status,
      output_fid: amt$file_identifier,
      output_lfn: amt$local_file_name,
      output_name: jmt$name,
      target_fid: amt$file_identifier;

?? NEWTITLE := 'abort_handler', EJECT ??

    PROCEDURE abort_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;

      jmp$close_files_for_copof (output_fid, output_lfn, target_fid, ignore_status);

    PROCEND abort_handler;
?? OLDTITLE, EJECT ??
    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN; {----->
    IFEND;

    ignore_status.normal := TRUE;

{ Process NAME parameter.  Validate the supplied name.

    jmp$determine_name_kind (pvt [p$name].value^.name_value, output_name, status);
    IF NOT status.normal THEN
      RETURN; {----->
    IFEND;

{ Retrieve the control information required by fsp$copy_data_and_close_files.

    osp$establish_block_exit_hndlr (^abort_handler);
    jmp$open_files_for_copof (output_name, pvt [p$output].value^.file_value^, control_info, output_fid,
          output_lfn, target_fid, status);
    IF NOT status.normal THEN
      RETURN; {----->
    IFEND;

{ Copy the output file into the target file.  Ignore any ring validation error condition.  Close the files
{ at ring 3.

    fsp$copy_data_and_close_files (output_fid, target_fid, control_info, status);

    IF NOT status.normal THEN
      IF (status.condition = ame$ring_validation_error) THEN
        jmp$close_files_for_copof (output_fid, output_lfn, target_fid, status);
      ELSE
        jmp$close_files_for_copof (output_fid, output_lfn, target_fid, ignore_status);
      IFEND;
    ELSE
      amp$return (output_lfn, status);
    IFEND;

    osp$disestablish_cond_handler;

  PROCEND jmp$_copy_output_file;
?? OLDTITLE ??
?? NEWTITLE := '[XDCL] jmp$_display_detached_jobs', EJECT ??

  PROCEDURE [XDCL] jmp$_display_detached_jobs
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE display_detached_jobs, disdj (
{   output, o: file = $output
{   display_option, display_options, do: any of
{       key
{         all
{         (brief, b)
{       keyend
{       list of key
{         (control_family, cf)
{         (control_user, cu)
{         (cpu_time_used, ctu)
{         (display_message, dm)
{         (job_class, jc)
{         (job_class_position, jcp)
{         (job_destination_usage, jdu)
{         (job_initiation_time, jit)
{         (job_mode, jm)
{         (job_state, js)
{         (login_family, lf)
{         (login_user, lu)
{         (operator_action_posted, oap)
{         (page_faults, pf)
{         (system_job_name, sjn)
{         (user_job_name, ujn)
{       hidden_key
{         (client_mainframe_identifier, cmi)
{         (input_file_location, ifl)
{         (server_mainframe_identifier, smi)
{       keyend
{     anyend = osd$disdj_display_options, brief
{   login_family, lf: any of
{       key
{         all
{       keyend
{       name
{     anyend = $job(login_family)
{   login_user, lu: any of
{       key
{         all
{       keyend
{       name
{     anyend = $job(login_user)
{   status)

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

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 10] of clt$pdt_parameter_name,
      parameters: array [1 .. 5] 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$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$keyword_type_qualifier,
            keyword_specs: array [1 .. 38] of clt$keyword_specification,
          recend,
        recend,
        default_name: string (25),
        default_value: string (5),
      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,
        default_value: string (18),
      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,
        default_value: string (16),
      recend,
      type5: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [104, 9, 29, 10, 23, 17, 885],
    clc$command, 10, 5, 0, 0, 0, 0, 5, ''], [
    ['DISPLAY_OPTION                 ',clc$nominal_entry, 2],
    ['DISPLAY_OPTIONS                ',clc$alias_entry, 2],
    ['DO                             ',clc$abbreviation_entry, 2],
    ['LF                             ',clc$abbreviation_entry, 3],
    ['LOGIN_FAMILY                   ',clc$nominal_entry, 3],
    ['LOGIN_USER                     ',clc$nominal_entry, 4],
    ['LU                             ',clc$abbreviation_entry, 4],
    ['O                              ',clc$abbreviation_entry, 1],
    ['OUTPUT                         ',clc$nominal_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$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$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 1567,
  clc$optional_default_parameter, 25, 5],
{ PARAMETER 3
    [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, 18],
{ PARAMETER 4
    [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, 69,
  clc$optional_default_parameter, 0, 16],
{ PARAMETER 5
    [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$file_type],
    '$output'],
{ 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],
      ['B                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
      ['BRIEF                          ', clc$nominal_entry, clc$normal_usage_entry, 2]]
      ],
    1429, [[1, 0, clc$list_type], [1413, 1, clc$max_list_size, 0, FALSE, FALSE],
        [[1, 0, clc$keyword_type], [38], [
        ['CF                             ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
        ['CLIENT_MAINFRAME_IDENTIFIER    ', clc$nominal_entry, clc$hidden_entry, 17],
        ['CMI                            ', clc$abbreviation_entry, clc$hidden_entry, 17],
        ['CONTROL_FAMILY                 ', clc$nominal_entry, clc$normal_usage_entry, 1],
        ['CONTROL_USER                   ', clc$nominal_entry, clc$normal_usage_entry, 2],
        ['CPU_TIME_USED                  ', clc$nominal_entry, clc$normal_usage_entry, 3],
        ['CTU                            ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
        ['CU                             ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
        ['DISPLAY_MESSAGE                ', clc$nominal_entry, clc$normal_usage_entry, 4],
        ['DM                             ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
        ['IFL                            ', clc$abbreviation_entry, clc$hidden_entry, 18],
        ['INPUT_FILE_LOCATION            ', clc$nominal_entry, clc$hidden_entry, 18],
        ['JC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
        ['JCP                            ', clc$abbreviation_entry, clc$normal_usage_entry, 6],
        ['JDU                            ', clc$abbreviation_entry, clc$normal_usage_entry, 7],
        ['JIT                            ', clc$abbreviation_entry, clc$normal_usage_entry, 8],
        ['JM                             ', clc$abbreviation_entry, clc$normal_usage_entry, 9],
        ['JOB_CLASS                      ', clc$nominal_entry, clc$normal_usage_entry, 5],
        ['JOB_CLASS_POSITION             ', clc$nominal_entry, clc$normal_usage_entry, 6],
        ['JOB_DESTINATION_USAGE          ', clc$nominal_entry, clc$normal_usage_entry, 7],
        ['JOB_INITIATION_TIME            ', clc$nominal_entry, clc$normal_usage_entry, 8],
        ['JOB_MODE                       ', clc$nominal_entry, clc$normal_usage_entry, 9],
        ['JOB_STATE                      ', clc$nominal_entry, clc$normal_usage_entry, 10],
        ['JS                             ', clc$abbreviation_entry, clc$normal_usage_entry, 10],
        ['LF                             ', clc$abbreviation_entry, clc$normal_usage_entry, 11],
        ['LOGIN_FAMILY                   ', clc$nominal_entry, clc$normal_usage_entry, 11],
        ['LOGIN_USER                     ', clc$nominal_entry, clc$normal_usage_entry, 12],
        ['LU                             ', clc$abbreviation_entry, clc$normal_usage_entry, 12],
        ['OAP                            ', clc$abbreviation_entry, clc$normal_usage_entry, 13],
        ['OPERATOR_ACTION_POSTED         ', clc$nominal_entry, clc$normal_usage_entry, 13],
        ['PAGE_FAULTS                    ', clc$nominal_entry, clc$normal_usage_entry, 14],
        ['PF                             ', clc$abbreviation_entry, clc$normal_usage_entry, 14],
        ['SERVER_MAINFRAME_IDENTIFIER    ', clc$nominal_entry, clc$hidden_entry, 19],
        ['SJN                            ', clc$abbreviation_entry, clc$normal_usage_entry, 15],
        ['SMI                            ', clc$abbreviation_entry, clc$hidden_entry, 19],
        ['SYSTEM_JOB_NAME                ', clc$nominal_entry, clc$normal_usage_entry, 15],
        ['UJN                            ', clc$abbreviation_entry, clc$normal_usage_entry, 16],
        ['USER_JOB_NAME                  ', clc$nominal_entry, clc$normal_usage_entry, 16]]
        ]
      ]
    ,
    'OSD$DISDJ_DISPLAY_OPTIONS',
    'brief'],
{ PARAMETER 3
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ,
    '$job(login_family)'],
{ PARAMETER 4
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ,
    '$job(login_user)'],
{ PARAMETER 5
    [[1, 0, clc$status_type]]];

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

    CONST
      p$output = 1,
      p$display_option = 2,
      p$login_family = 3,
      p$login_user = 4,
      p$status = 5;

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

    CONST
      maximum_get_keys = 16,
      non_duplicate_hidden_keys = 3;

    CONST
      c$display_detached_jobs = 'Display_Detached_Jobs';

    VAR
      attribute_key: jmt$attribute_keys,
      brief_display: boolean,
      display_option_list: ^clt$data_value,
      get_attribute: jmt$attribute_keys,
      get_key_count: 0 .. maximum_get_keys + non_duplicate_hidden_keys,
      get_key_number: 0 .. maximum_get_keys + non_duplicate_hidden_keys,
      get_keys: jmt$attribute_keys_set,
      job_count: ost$non_negative_integers,
      job_index: jmt$job_status_count,
      job_status_count: jmt$job_status_count,
      login_user: boolean,
      message_status: ost$status,
      size_of_sequence: ost$segment_length,
      status_options_p: ^jmt$job_status_options,
      status_results_keys_p: ^jmt$results_keys,
      status_results_p: ^jmt$job_status_results,
      status_results_seq_p: ^jmt$work_area;

?? NEWTITLE := 'add_to_attributes', EJECT ??

    PROCEDURE [INLINE] add_to_attributes
      (    get_attribute_key: jmt$attribute_keys);

      IF get_attribute_key IN get_keys THEN
        get_key_number := get_key_number + 1;
        status_results_keys_p^ [get_key_number] := get_attribute_key;
      IFEND;

    PROCEND add_to_attributes;
?? OLDTITLE ??
?? NEWTITLE := 'p$put_message', EJECT ??

    PROCEDURE p$put_message
      (    output_file: fst$file_reference;
           message_status: ost$status;
       VAR status: ost$status);

      VAR
        default_ring_attributes: amt$ring_attributes,
        display_control: clt$display_control,
        ignore_status: ost$status;

?? NEWTITLE := 'abort_handler', EJECT ??

{ PURPOSE:
{   Attempt to cleanup on block exit if something doesn't work.

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

        clp$close_display (display_control, ignore_status);

      PROCEND abort_handler;
*copy clp$new_page_procedure
*copy clv$display_variables

      PROCEDURE [INLINE] put_subtitle
        (VAR display_control: clt$display_control;
         VAR status: ost$status);

      PROCEND put_subtitle;
?? OLDTITLE ??
?? EJECT ??

      osp$establish_block_exit_hndlr (^abort_handler);
      default_ring_attributes.r1 := #RING (^default_ring_attributes);
      default_ring_attributes.r2 := #RING (^default_ring_attributes);
      default_ring_attributes.r3 := #RING (^default_ring_attributes);

      clv$titles_built := FALSE;
      clv$command_name := c$display_detached_jobs;

      clp$open_display_reference (output_file, ^clp$new_page_procedure, fsc$list, default_ring_attributes,
            display_control, status);
      IF NOT status.normal THEN
        osp$disestablish_cond_handler;
        RETURN {----->
      IFEND;

      osp$generate_message_display (message_status, display_control, status);

      clp$close_display (display_control, ignore_status);
      osp$disestablish_cond_handler;

    PROCEND p$put_message;
?? OLDTITLE ??
?? EJECT ??

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

    get_keys := $jmt$attribute_keys_set [];
    brief_display := FALSE;

    IF pvt [p$display_option].value^.kind <> clc$keyword THEN
      display_option_list := pvt [p$display_option].value;
      WHILE display_option_list <> NIL DO
        jmp$get_attribute_index (display_option_list^.element_value^.keyword_value, get_attribute);
        IF NOT (get_attribute IN get_keys) THEN
          get_keys := get_keys + $jmt$attribute_keys_set [get_attribute];
        IFEND;
        display_option_list := display_option_list^.link;
      WHILEND;

    ELSEIF pvt [p$display_option].value^.keyword_value = 'ALL' THEN
      get_keys := $jmt$attribute_keys_set [jmc$control_family, jmc$control_user, jmc$cpu_time_used,
            jmc$display_message, jmc$job_class, jmc$job_class_position, jmc$job_destination_usage,
            jmc$job_initiation_time, jmc$job_mode, jmc$job_state, jmc$login_family, jmc$login_user,
            jmc$operator_action_posted, jmc$page_faults, jmc$system_job_name, jmc$user_job_name];

    ELSE {BRIEF
      brief_display := TRUE;
      get_keys := $jmt$attribute_keys_set [jmc$system_job_name];
    IFEND;

    PUSH status_options_p: [1 .. 5];
    status_options_p^ [1].key := jmc$job_mode_set;
    status_options_p^ [1].job_mode_set := $jmt$job_mode_set
          [jmc$interactive_cmnd_disconnect, jmc$interactive_line_disconnect, jmc$interactive_sys_disconnect];
    status_options_p^ [2].key := jmc$job_state_set;
    status_options_p^ [2].job_state_set := $jmt$job_state_set [jmc$initiated_job];

    IF pvt [p$login_user].value^.kind = clc$keyword THEN
      status_options_p^ [3].key := jmc$null_attribute;
      login_user := FALSE;
    ELSE
      login_user := pvt [p$login_user].value^.name_value = clv$user_identification.user.value;
      status_options_p^ [3].key := jmc$login_user;
      status_options_p^ [3].login_user := pvt [p$login_user].value^.name_value;
    IFEND;

    IF pvt [p$login_family].value^.kind = clc$keyword THEN
      status_options_p^ [4].key := jmc$null_attribute;
      login_user := FALSE;
    ELSE
      login_user := login_user AND (pvt [p$login_family].value^.name_value =
            clv$user_identification.family.value);
      status_options_p^ [4].key := jmc$login_family;
      status_options_p^ [4].login_user := pvt [p$login_family].value^.name_value;
    IFEND;

    status_options_p^ [5].key := jmc$continue_request_to_servers;
    status_options_p^ [5].continue_request_to_servers := jmp$cluster_attach_job_enabled ();

    get_key_number := 0;
    get_key_count := 0;

    IF brief_display AND (NOT login_user) THEN
      get_keys := get_keys + $jmt$attribute_keys_set [jmc$login_user, jmc$login_family];
    IFEND;

    FOR attribute_key := LOWERVALUE (attribute_key) TO UPPERVALUE (attribute_key) DO
      IF attribute_key IN get_keys THEN
        get_key_count := get_key_count + 1;
      IFEND;
    FOREND;

    PUSH status_results_keys_p: [1 .. get_key_count];
    add_to_attributes (jmc$client_mainframe_id);
    add_to_attributes (jmc$control_family);
    add_to_attributes (jmc$control_user);
    add_to_attributes (jmc$cpu_time_used);
    add_to_attributes (jmc$display_message);
    add_to_attributes (jmc$input_file_location);
    add_to_attributes (jmc$job_class);
    add_to_attributes (jmc$job_class_position);
    add_to_attributes (jmc$job_destination_usage);
    add_to_attributes (jmc$job_initiation_time);
    add_to_attributes (jmc$job_mode);
    add_to_attributes (jmc$job_state);
    add_to_attributes (jmc$login_family);
    add_to_attributes (jmc$login_user);
    add_to_attributes (jmc$operator_action_posted);
    add_to_attributes (jmc$page_faults);
    add_to_attributes (jmc$server_mainframe_id);
    add_to_attributes (jmc$system_job_name);
    add_to_attributes (jmc$user_job_name);

    job_count := #SIZE (message_status.text.value) DIV #SIZE (jmt$system_supplied_name);
    jmp$get_result_size (job_count, #SEQ (status_results_keys_p^), size_of_sequence);
    PUSH status_results_seq_p: [[REP size_of_sequence OF cell]];
    jmp$get_job_status (status_options_p, status_results_keys_p, status_results_seq_p, status_results_p,
          job_status_count, status);
    WHILE (NOT status.normal) AND (status.condition = jme$work_area_too_small) DO
      jmp$get_result_size (job_status_count + 2, #SEQ (status_results_keys_p^), size_of_sequence);
      PUSH status_results_seq_p: [[REP size_of_sequence OF cell]];
      jmp$get_job_status (status_options_p, status_results_keys_p, status_results_seq_p, status_results_p,
            job_status_count, status);
    WHILEND;

    IF NOT status.normal THEN
      IF status.condition = jme$no_jobs_were_found THEN
        osp$set_status_condition (cle$no_detached_jobs_selected, status);
      IFEND;
      RETURN; {----->
    IFEND;

    IF brief_display THEN
      message_status.normal := TRUE;
      IF login_user THEN
        FOR job_index := 1 TO job_status_count DO
          IF message_status.normal THEN
            osp$set_status_abnormal ('CL', cle$detached_jobs,
                  status_results_p^ [job_index]^ [1].system_job_name, message_status)
          ELSE
            osp$append_status_parameter (' ', status_results_p^ [job_index]^ [1].system_job_name,
                  message_status);
          IFEND;
        FOREND;

      ELSE
        FOR job_index := 1 TO job_status_count DO
          IF message_status.normal THEN
            osp$set_status_abnormal ('CL', cle$detached_jobs_all,
                  status_results_p^ [job_index]^ [1].login_family, message_status);
            osp$append_status_parameter (osc$status_parameter_delimiter, status_results_p^ [job_index]^ [2].
                  login_user, message_status);
            osp$append_status_parameter (osc$status_parameter_delimiter, status_results_p^ [job_index]^ [3].
                  system_job_name, message_status);
          ELSE
            osp$append_status_parameter (osc$status_parameter_delimiter, status_results_p^ [job_index]^ [1].
                  login_family, message_status);
            osp$append_status_parameter (osc$status_parameter_delimiter, status_results_p^ [job_index]^ [2].
                  login_user, message_status);
            osp$append_status_parameter (osc$status_parameter_delimiter, status_results_p^ [job_index]^ [3].
                  system_job_name, message_status);
          IFEND;
        FOREND;
      IFEND;

      p$put_message (pvt [p$output].value^.file_value^, message_status, status);
    ELSE
      status_results_seq_p := #SEQ (status_results_p);
      jmp$display_attributes (pvt [p$output].value^.file_value^, status_results_seq_p, job_status_count, NIL,
            NIL, 0, c$display_detached_jobs, status);
    IFEND;

  PROCEND jmp$_display_detached_jobs;
?? OLDTITLE ??
?? NEWTITLE := '[XDCL] jmp$_display_input_attribute', EJECT ??

  PROCEDURE [XDCL] jmp$_display_input_attribute
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$disia) display_input_attribute, display_input_attributes, disia (
{   name, names, n: list of name = $required
{   display_option, display_options, do: any of
{       key
{         all
{       keyend
{       list of key
{         (comment_banner, cb)
{         (control_family, cf)
{         (control_user, cu)
{         (copies, c)
{         (cpu_time_limit, ctl)
{         (data_mode, dm)
{         (display_message, message, m)
{         (device, d)
{         (earliest_print_time, ept)
{         (earliest_run_time, ert)
{         (external_characteristics, ec)
{         (forms_code, fc)
{         (job_abort_disposition, jad)
{         (job_class, jc)
{         (job_deferred_by_operator, jdbo)
{         (job_deferred_by_user, jdbu)
{         (job_destination, jd)
{         (job_destination_usage, jdu)
{         (job_execution_ring, jer)
{         (job_mode, jm)
{         (job_qualifier, job_qualifiers, jq)
{         (job_recovery_disposition, jrd)
{         (job_size, js)
{         (job_submission_time, jst)
{         (latest_print_time, lpt)
{         (latest_run_time, lrt)
{         (login_account, la)
{         (login_family, lf)
{         (login_project, lp)
{         (login_user, lu)
{         (magnetic_tape_limit, mtl)
{         (maximum_working_set, maxws)
{         (operator_family, of)
{         (operator_user, ou)
{         (originating_application_name, oan)
{         (output_class, oc)
{         (output_deferred_by_user, odbu)
{         (output_destination, ode)
{         (output_destination_usage, odu)
{         (output_disposition, odi)
{         (output_priority, op)
{         (purge_delay, pd)
{         (remote_host_directive, rhd)
{         (routing_banner, rb)
{         (site_information, si)
{         (sru_limit, sl)
{         (station, s)
{         (system_job_name, sjn)
{         (user_information, ui)
{         (user_job_name, ujn)
{         (vertical_print_density, vpd)
{         (vfu_load_procedure, vlp)
{       keyend
{     anyend = osd$disia_display_options, all
{   output, o: file = $OUTPUT
{   status)

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

  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$list_type_qualifier_v2,
        element_type_spec: 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 .. 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_v2,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 106] of clt$keyword_specification,
          recend,
        recend,
        default_name: string (25),
        default_value: string (3),
      recend,
      type3: record
        header: clt$type_specification_header,
        default_value: string (7),
      recend,
      type4: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [104, 9, 27, 14, 49, 26, 182],
    clc$command, 9, 4, 1, 0, 0, 0, 4, 'OSM$DISIA'], [
    ['DISPLAY_OPTION                 ',clc$nominal_entry, 2],
    ['DISPLAY_OPTIONS                ',clc$alias_entry, 2],
    ['DO                             ',clc$abbreviation_entry, 2],
    ['N                              ',clc$abbreviation_entry, 1],
    ['NAME                           ',clc$nominal_entry, 1],
    ['NAMES                          ',clc$alias_entry, 1],
    ['O                              ',clc$abbreviation_entry, 3],
    ['OUTPUT                         ',clc$nominal_entry, 3],
    ['STATUS                         ',clc$nominal_entry, 4]],
    [
{ 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, 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, 4009,
  clc$optional_default_parameter, 25, 3],
{ PARAMETER 3
    [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 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$list_type], [5, 1, clc$max_list_size, 0, FALSE, FALSE],
      [[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],
    44, [[1, 0, clc$keyword_type], [1], [
      ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    3945, [[1, 0, clc$list_type], [3929, 1, clc$max_list_size, 0, FALSE, FALSE],
        [[1, 0, clc$keyword_type], [106], [
        ['C                              ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
        ['CB                             ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
        ['CF                             ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
        ['COMMENT_BANNER                 ', clc$nominal_entry, clc$normal_usage_entry, 1],
        ['CONTROL_FAMILY                 ', clc$nominal_entry, clc$normal_usage_entry, 2],
        ['CONTROL_USER                   ', clc$nominal_entry, clc$normal_usage_entry, 3],
        ['COPIES                         ', clc$nominal_entry, clc$normal_usage_entry, 4],
        ['CPU_TIME_LIMIT                 ', clc$nominal_entry, clc$normal_usage_entry, 5],
        ['CTL                            ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
        ['CU                             ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
        ['D                              ', clc$abbreviation_entry, clc$normal_usage_entry, 8],
        ['DATA_MODE                      ', clc$nominal_entry, clc$normal_usage_entry, 6],
        ['DEVICE                         ', clc$nominal_entry, clc$normal_usage_entry, 8],
        ['DISPLAY_MESSAGE                ', clc$nominal_entry, clc$normal_usage_entry, 7],
        ['DM                             ', clc$abbreviation_entry, clc$normal_usage_entry, 6],
        ['EARLIEST_PRINT_TIME            ', clc$nominal_entry, clc$normal_usage_entry, 9],
        ['EARLIEST_RUN_TIME              ', clc$nominal_entry, clc$normal_usage_entry, 10],
        ['EC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 11],
        ['EPT                            ', clc$abbreviation_entry, clc$normal_usage_entry, 9],
        ['ERT                            ', clc$abbreviation_entry, clc$normal_usage_entry, 10],
        ['EXTERNAL_CHARACTERISTICS       ', clc$nominal_entry, clc$normal_usage_entry, 11],
        ['FC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 12],
        ['FORMS_CODE                     ', clc$nominal_entry, clc$normal_usage_entry, 12],
        ['JAD                            ', clc$abbreviation_entry, clc$normal_usage_entry, 13],
        ['JC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 14],
        ['JD                             ', clc$abbreviation_entry, clc$normal_usage_entry, 17],
        ['JDBO                           ', clc$abbreviation_entry, clc$normal_usage_entry, 15],
        ['JDBU                           ', clc$abbreviation_entry, clc$normal_usage_entry, 16],
        ['JDU                            ', clc$abbreviation_entry, clc$normal_usage_entry, 18],
        ['JER                            ', clc$abbreviation_entry, clc$normal_usage_entry, 19],
        ['JM                             ', clc$abbreviation_entry, clc$normal_usage_entry, 20],
        ['JOB_ABORT_DISPOSITION          ', clc$nominal_entry, clc$normal_usage_entry, 13],
        ['JOB_CLASS                      ', clc$nominal_entry, clc$normal_usage_entry, 14],
        ['JOB_DEFERRED_BY_OPERATOR       ', clc$nominal_entry, clc$normal_usage_entry, 15],
        ['JOB_DEFERRED_BY_USER           ', clc$nominal_entry, clc$normal_usage_entry, 16],
        ['JOB_DESTINATION                ', clc$nominal_entry, clc$normal_usage_entry, 17],
        ['JOB_DESTINATION_USAGE          ', clc$nominal_entry, clc$normal_usage_entry, 18],
        ['JOB_EXECUTION_RING             ', clc$nominal_entry, clc$normal_usage_entry, 19],
        ['JOB_MODE                       ', clc$nominal_entry, clc$normal_usage_entry, 20],
        ['JOB_QUALIFIER                  ', clc$nominal_entry, clc$normal_usage_entry, 21],
        ['JOB_QUALIFIERS                 ', clc$alias_entry, clc$normal_usage_entry, 21],
        ['JOB_RECOVERY_DISPOSITION       ', clc$nominal_entry, clc$normal_usage_entry, 22],
        ['JOB_SIZE                       ', clc$nominal_entry, clc$normal_usage_entry, 23],
        ['JOB_SUBMISSION_TIME            ', clc$nominal_entry, clc$normal_usage_entry, 24],
        ['JQ                             ', clc$abbreviation_entry, clc$normal_usage_entry, 21],
        ['JRD                            ', clc$abbreviation_entry, clc$normal_usage_entry, 22],
        ['JS                             ', clc$abbreviation_entry, clc$normal_usage_entry, 23],
        ['JST                            ', clc$abbreviation_entry, clc$normal_usage_entry, 24],
        ['LA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 27],
        ['LATEST_PRINT_TIME              ', clc$nominal_entry, clc$normal_usage_entry, 25],
        ['LATEST_RUN_TIME                ', clc$nominal_entry, clc$normal_usage_entry, 26],
        ['LF                             ', clc$abbreviation_entry, clc$normal_usage_entry, 28],
        ['LOGIN_ACCOUNT                  ', clc$nominal_entry, clc$normal_usage_entry, 27],
        ['LOGIN_FAMILY                   ', clc$nominal_entry, clc$normal_usage_entry, 28],
        ['LOGIN_PROJECT                  ', clc$nominal_entry, clc$normal_usage_entry, 29],
        ['LOGIN_USER                     ', clc$nominal_entry, clc$normal_usage_entry, 30],
        ['LP                             ', clc$abbreviation_entry, clc$normal_usage_entry, 29],
        ['LPT                            ', clc$abbreviation_entry, clc$normal_usage_entry, 25],
        ['LRT                            ', clc$abbreviation_entry, clc$normal_usage_entry, 26],
        ['LU                             ', clc$abbreviation_entry, clc$normal_usage_entry, 30],
        ['M                              ', clc$abbreviation_entry, clc$normal_usage_entry, 7],
        ['MAGNETIC_TAPE_LIMIT            ', clc$nominal_entry, clc$normal_usage_entry, 31],
        ['MAXIMUM_WORKING_SET            ', clc$nominal_entry, clc$normal_usage_entry, 32],
        ['MAXWS                          ', clc$abbreviation_entry, clc$normal_usage_entry, 32],
        ['MESSAGE                        ', clc$alias_entry, clc$normal_usage_entry, 7],
        ['MTL                            ', clc$abbreviation_entry, clc$normal_usage_entry, 31],
        ['OAN                            ', clc$abbreviation_entry, clc$normal_usage_entry, 35],
        ['OC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 36],
        ['ODBU                           ', clc$abbreviation_entry, clc$normal_usage_entry, 37],
        ['ODE                            ', clc$abbreviation_entry, clc$normal_usage_entry, 38],
        ['ODI                            ', clc$abbreviation_entry, clc$normal_usage_entry, 40],
        ['ODU                            ', clc$abbreviation_entry, clc$normal_usage_entry, 39],
        ['OF                             ', clc$abbreviation_entry, clc$normal_usage_entry, 33],
        ['OP                             ', clc$abbreviation_entry, clc$normal_usage_entry, 41],
        ['OPERATOR_FAMILY                ', clc$nominal_entry, clc$normal_usage_entry, 33],
        ['OPERATOR_USER                  ', clc$nominal_entry, clc$normal_usage_entry, 34],
        ['ORIGINATING_APPLICATION_NAME   ', clc$nominal_entry, clc$normal_usage_entry, 35],
        ['OU                             ', clc$abbreviation_entry, clc$normal_usage_entry, 34],
        ['OUTPUT_CLASS                   ', clc$nominal_entry, clc$normal_usage_entry, 36],
        ['OUTPUT_DEFERRED_BY_USER        ', clc$nominal_entry, clc$normal_usage_entry, 37],
        ['OUTPUT_DESTINATION             ', clc$nominal_entry, clc$normal_usage_entry, 38],
        ['OUTPUT_DESTINATION_USAGE       ', clc$nominal_entry, clc$normal_usage_entry, 39],
        ['OUTPUT_DISPOSITION             ', clc$nominal_entry, clc$normal_usage_entry, 40],
        ['OUTPUT_PRIORITY                ', clc$nominal_entry, clc$normal_usage_entry, 41],
        ['PD                             ', clc$abbreviation_entry, clc$normal_usage_entry, 42],
        ['PURGE_DELAY                    ', clc$nominal_entry, clc$normal_usage_entry, 42],
        ['RB                             ', clc$abbreviation_entry, clc$normal_usage_entry, 44],
        ['REMOTE_HOST_DIRECTIVE          ', clc$nominal_entry, clc$normal_usage_entry, 43],
        ['RHD                            ', clc$abbreviation_entry, clc$normal_usage_entry, 43],
        ['ROUTING_BANNER                 ', clc$nominal_entry, clc$normal_usage_entry, 44],
        ['S                              ', clc$abbreviation_entry, clc$normal_usage_entry, 47],
        ['SI                             ', clc$abbreviation_entry, clc$normal_usage_entry, 45],
        ['SITE_INFORMATION               ', clc$nominal_entry, clc$normal_usage_entry, 45],
        ['SJN                            ', clc$abbreviation_entry, clc$normal_usage_entry, 48],
        ['SL                             ', clc$abbreviation_entry, clc$normal_usage_entry, 46],
        ['SRU_LIMIT                      ', clc$nominal_entry, clc$normal_usage_entry, 46],
        ['STATION                        ', clc$nominal_entry, clc$normal_usage_entry, 47],
        ['SYSTEM_JOB_NAME                ', clc$nominal_entry, clc$normal_usage_entry, 48],
        ['UI                             ', clc$abbreviation_entry, clc$normal_usage_entry, 49],
        ['UJN                            ', clc$abbreviation_entry, clc$normal_usage_entry, 50],
        ['USER_INFORMATION               ', clc$nominal_entry, clc$normal_usage_entry, 49],
        ['USER_JOB_NAME                  ', clc$nominal_entry, clc$normal_usage_entry, 50],
        ['VERTICAL_PRINT_DENSITY         ', clc$nominal_entry, clc$normal_usage_entry, 51],
        ['VFU_LOAD_PROCEDURE             ', clc$nominal_entry, clc$normal_usage_entry, 52],
        ['VLP                            ', clc$abbreviation_entry, clc$normal_usage_entry, 52],
        ['VPD                            ', clc$abbreviation_entry, clc$normal_usage_entry, 51]]
        ]
      ]
    ,
    'OSD$DISIA_DISPLAY_OPTIONS',
    'all'],
{ PARAMETER 3
    [[1, 0, clc$file_type],
    '$OUTPUT'],
{ PARAMETER 4
    [[1, 0, clc$status_type]]];

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

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

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

{ This constant represents the maximum number of display options specified on the
{ command.

    CONST
      max_get_key_count = 51;

    VAR
      display_option_list: ^clt$data_value,
      get_attribute_count: integer,
      get_attribute_key: jmt$attribute_keys,
      get_attribute_number: integer,
      get_keys: jmt$attribute_keys_set,
      input_attribute_options_p: ^jmt$input_attribute_options,
      input_attribute_results_keys_p: ^jmt$results_keys,
      input_attribute_results_p: ^jmt$input_attribute_results,
      input_attribute_results_seq: ^SEQ ( * ),
      name_count: 0 .. clc$max_list_size,
      name_list: ^clt$data_value,
      name_number: 1 .. clc$max_list_size,
      number_of_inputs_found: jmt$job_status_count,
      result_size: ost$segment_length,
      work_area_p: ^jmt$work_area;

?? NEWTITLE := 'add_to_attributes', EJECT ??

    PROCEDURE [INLINE] add_to_attributes
      (    get_attribute_key: jmt$attribute_keys);

      IF get_attribute_key IN get_keys THEN
        get_attribute_number := get_attribute_number + 1;
        input_attribute_results_keys_p^ [get_attribute_number] := get_attribute_key;
      IFEND;

    PROCEND add_to_attributes;
?? OLDTITLE ??
?? EJECT ??

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

{  Process NAME parameter.

    name_count := clp$count_list_elements (pvt [p$name].value);
    name_list := pvt [p$name].value;

    PUSH input_attribute_options_p: [1 .. 2];
    input_attribute_options_p^ [1].key := jmc$name_list;
    PUSH input_attribute_options_p^ [1].name_list: [1 .. name_count];
    input_attribute_options_p^ [2].key := jmc$continue_request_to_servers;
    input_attribute_options_p^ [2].continue_request_to_servers := TRUE;

    FOR name_number := 1 TO name_count DO
      jmp$determine_name_kind (name_list^.element_value^.name_value, input_attribute_options_p^ [1].
            name_list^ [name_number], status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      name_list := name_list^.link;
    FOREND;
    get_attribute_number := 0;

{  Process DISPLAY_OPTION parameter.

    IF pvt [p$display_option].value^.kind = clc$keyword THEN { the only keyword allowed is ALL. }
      get_attribute_count := max_get_key_count;
      get_keys := $jmt$attribute_keys_set [jmc$comment_banner, jmc$control_family, jmc$control_user,
            jmc$copies, jmc$cpu_time_limit, jmc$data_mode, jmc$device, jmc$display_message,
            jmc$earliest_print_time, jmc$earliest_run_time, jmc$external_characteristics, jmc$forms_code,
            jmc$job_abort_disposition, jmc$job_class, jmc$job_deferred_by_operator, jmc$job_deferred_by_user,
            jmc$job_destination_family, jmc$job_destination_usage, jmc$job_execution_ring, jmc$job_mode,
            jmc$job_qualifier_list, jmc$job_recovery_disposition, jmc$job_size, jmc$job_submission_time,
            jmc$latest_print_time, jmc$latest_run_time, jmc$login_account, jmc$login_family,
            jmc$login_project, jmc$login_user, jmc$magnetic_tape_limit, jmc$maximum_working_set,
            jmc$origin_application_name, jmc$output_class, jmc$output_deferred_by_user,
            jmc$output_destination, jmc$output_destination_family, jmc$output_destination_usage,
            jmc$output_disposition, jmc$output_priority, jmc$purge_delay, jmc$remote_host_directive,
            jmc$routing_banner, jmc$site_information, jmc$sru_limit, jmc$station, jmc$station_operator,
            jmc$system_job_name, jmc$user_information, jmc$user_job_name, jmc$vertical_print_density,
            jmc$vfu_load_procedure];

    ELSE {process the display option list.

      get_keys := $jmt$attribute_keys_set [];
      get_attribute_count := 0;

      display_option_list := pvt [p$display_option].value;
      WHILE display_option_list <> NIL DO
        jmp$get_attribute_index (display_option_list^.element_value^.keyword_value, get_attribute_key);
        IF NOT (get_attribute_key IN get_keys) THEN
          get_keys := get_keys + $jmt$attribute_keys_set [get_attribute_key];
          get_attribute_count := get_attribute_count + 1;
        IFEND;
        display_option_list := display_option_list^.link;
      WHILEND;
    IFEND;

    PUSH input_attribute_results_keys_p: [1 .. get_attribute_count];
    add_to_attributes (jmc$comment_banner);
    add_to_attributes (jmc$control_family);
    add_to_attributes (jmc$control_user);
    add_to_attributes (jmc$copies);
    add_to_attributes (jmc$cpu_time_limit);
    add_to_attributes (jmc$data_mode);
    add_to_attributes (jmc$display_message);
    add_to_attributes (jmc$device);
    add_to_attributes (jmc$earliest_print_time);
    add_to_attributes (jmc$earliest_run_time);
    add_to_attributes (jmc$external_characteristics);
    add_to_attributes (jmc$forms_code);
    add_to_attributes (jmc$job_abort_disposition);
    add_to_attributes (jmc$job_class);
    add_to_attributes (jmc$job_deferred_by_operator);
    add_to_attributes (jmc$job_deferred_by_user);
    add_to_attributes (jmc$job_destination_family);
    add_to_attributes (jmc$job_destination_usage);
    add_to_attributes (jmc$job_execution_ring);
    add_to_attributes (jmc$job_mode);
    add_to_attributes (jmc$job_qualifier_list);
    add_to_attributes (jmc$job_recovery_disposition);
    add_to_attributes (jmc$job_size);
    add_to_attributes (jmc$job_submission_time);
    add_to_attributes (jmc$latest_print_time);
    add_to_attributes (jmc$latest_run_time);
    add_to_attributes (jmc$login_account);
    add_to_attributes (jmc$login_family);
    add_to_attributes (jmc$login_project);
    add_to_attributes (jmc$login_user);
    add_to_attributes (jmc$magnetic_tape_limit);
    add_to_attributes (jmc$maximum_working_set);
    add_to_attributes (jmc$output_destination_family); { operator_family
    add_to_attributes (jmc$station_operator); { operator_user
    add_to_attributes (jmc$origin_application_name);
    add_to_attributes (jmc$output_class);
    add_to_attributes (jmc$output_deferred_by_user);
    add_to_attributes (jmc$output_destination);
    add_to_attributes (jmc$output_destination_usage);
    add_to_attributes (jmc$output_disposition);
    add_to_attributes (jmc$output_priority);
    add_to_attributes (jmc$purge_delay);
    add_to_attributes (jmc$remote_host_directive);
    add_to_attributes (jmc$routing_banner);
    add_to_attributes (jmc$site_information);
    add_to_attributes (jmc$sru_limit);
    add_to_attributes (jmc$station);
    add_to_attributes (jmc$system_job_name);
    add_to_attributes (jmc$user_information);
    add_to_attributes (jmc$user_job_name);
    add_to_attributes (jmc$vertical_print_density);
    add_to_attributes (jmc$vfu_load_procedure);

    jmp$get_result_size (name_count + 1, #SEQ (input_attribute_results_keys_p^), result_size);
    PUSH work_area_p: [[REP result_size OF cell]];
    RESET work_area_p;
    jmp$get_input_attributes (input_attribute_options_p, input_attribute_results_keys_p, work_area_p,
          input_attribute_results_p, number_of_inputs_found, status);

    WHILE (NOT status.normal) AND (status.condition = jme$work_area_too_small) DO
      status.normal := TRUE;

      jmp$get_result_size (number_of_inputs_found + 1, #SEQ (input_attribute_results_keys_p^), result_size);
      PUSH work_area_p: [[REP result_size OF cell]];
      RESET work_area_p;
      jmp$get_input_attributes (input_attribute_options_p, input_attribute_results_keys_p, work_area_p,
            input_attribute_results_p, number_of_inputs_found, status);
    WHILEND;

    IF NOT status.normal THEN
      IF status.condition = jme$no_jobs_were_found THEN
        status.normal := TRUE;
        number_of_inputs_found := 0;
      ELSE
        RETURN; {----->
      IFEND;
    IFEND;

{  Process OUTPUT parameter.
    input_attribute_results_seq := #SEQ (input_attribute_results_p);
    jmp$display_attributes (pvt [p$output].value^.file_value^, input_attribute_results_seq,
          number_of_inputs_found, NIL, NIL, 0, 'display_input_attributes', status);

  PROCEND jmp$_display_input_attribute;
?? TITLE := '[XDCL] jmp$_display_job_attribute', EJECT ??

  PROCEDURE [XDCL] jmp$_display_job_attribute
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$disja) display_job_attribute, display_job_attributes, disja (
{   display_option, display_options, do: any of
{       key
{         all
{       keyend
{       list of key
{         (comment_banner, cb)
{         (control_family, cf)
{         (control_user, cu)
{         (copies, c)
{         (cyclic_aging_interval, cai)
{         (detached_job_wait_time, djwt)
{         (device, d)
{         (dispatching_priority, dp)
{         (earliest_print_time, ept)
{         (earliest_run_time, ert)
{         (external_characteristics, ec)
{         (forms_code, fc)
{         (job_abort_disposition, jad)
{         (job_class, jc)
{         (job_mode, jm)
{         (job_qualifier, job_qualifiers, jq)
{         (job_recovery_disposition, jrd)
{         (job_size, js)
{         (job_submission_time, jst)
{         (latest_print_time, lpt)
{         (latest_run_time, lrt)
{         (login_account, la)
{         (login_family, lf)
{         (login_project, lp)
{         (login_user, lu)
{         (maximum_working_set, maxws)
{         (minimum_working_set, minws)
{         (operator_family, of)
{         (operator_user, ou)
{         (originating_application_name, oan)
{         (output_class, oc)
{         (output_deferred_by_user, odbu)
{         (output_destination, ode)
{         (output_destination_usage, odu)
{         (output_disposition, odi)
{         (output_priority, op)
{         (page_aging_interval, pai)
{         (purge_delay, pd)
{         (remote_host_directive, rhd)
{         (routing_banner, rb)
{         (sense_switches, ss)
{         (service_class, sc)
{         (site_information, si)
{         (station, s)
{         (system_job_name, sjn)
{         (user_information, ui)
{         (user_job_name, ujn)
{         (vertical_print_density, vpd)
{         (vfu_load_procedure, vlp)
{       hidden_key
{         (qt, queued_time)
{         (destination_family, df)
{         (station_operator, so)
{         (destination_usage, du)
{         (dual_state_route_parameters, dsrp)
{       keyend
{     anyend = all
{   output, o: file = $OUTPUT
{   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$keyword_type_qualifier,
              keyword_specs: array [1 .. 109] of clt$keyword_specification,
            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,
        recend,
      recend := [[1, [88, 2, 25, 15, 41, 18, 718], clc$command, 6, 3, 0, 0, 0, 0, 3, 'OSM$DISJA'],
            [['DISPLAY_OPTION                 ', clc$nominal_entry, 1],
            ['DISPLAY_OPTIONS                ', clc$alias_entry, 1],
            ['DO                             ', clc$abbreviation_entry, 1],
            ['O                              ', clc$abbreviation_entry, 2],
            ['OUTPUT                         ', clc$nominal_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$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 4120, clc$optional_default_parameter, 0, 3],

{ 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

      [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]]], 4056, [[1, 0, clc$list_type], [4040, 1, clc$max_list_size, FALSE],
            [[1, 0, clc$keyword_type], [109], [['C                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 4], ['CAI                            ', clc$abbreviation_entry,
            clc$normal_usage_entry, 5], ['CB                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 1], ['CF                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 2], ['COMMENT_BANNER                 ', clc$nominal_entry,
            clc$normal_usage_entry, 1], ['CONTROL_FAMILY                 ', clc$nominal_entry,
            clc$normal_usage_entry, 2], ['CONTROL_USER                   ', clc$nominal_entry,
            clc$normal_usage_entry, 3], ['COPIES                         ', clc$nominal_entry,
            clc$normal_usage_entry, 4], ['CU                             ', clc$abbreviation_entry,
            clc$normal_usage_entry, 3], ['CYCLIC_AGING_INTERVAL          ', clc$nominal_entry,
            clc$normal_usage_entry, 5], ['D                              ', clc$abbreviation_entry,
            clc$normal_usage_entry, 7], ['DESTINATION_FAMILY             ', clc$nominal_entry,
            clc$hidden_entry, 51], ['DESTINATION_USAGE              ', clc$nominal_entry, clc$hidden_entry,
            53], ['DETACHED_JOB_WAIT_TIME         ', clc$nominal_entry, clc$normal_usage_entry, 6],
            ['DEVICE                         ', clc$nominal_entry, clc$normal_usage_entry, 7],
            ['DF                             ', clc$abbreviation_entry, clc$hidden_entry, 51],
            ['DISPATCHING_PRIORITY           ', clc$nominal_entry, clc$normal_usage_entry, 8],
            ['DJWT                           ', clc$abbreviation_entry, clc$normal_usage_entry, 6],
            ['DP                             ', clc$abbreviation_entry, clc$normal_usage_entry, 8],
            ['DSRP                           ', clc$abbreviation_entry, clc$hidden_entry, 54],
            ['DU                             ', clc$abbreviation_entry, clc$hidden_entry, 53],
            ['DUAL_STATE_ROUTE_PARAMETERS    ', clc$nominal_entry, clc$hidden_entry, 54],
            ['EARLIEST_PRINT_TIME            ', clc$nominal_entry, clc$normal_usage_entry, 9],
            ['EARLIEST_RUN_TIME              ', clc$nominal_entry, clc$normal_usage_entry, 10],
            ['EC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 11],
            ['EPT                            ', clc$abbreviation_entry, clc$normal_usage_entry, 9],
            ['ERT                            ', clc$abbreviation_entry, clc$normal_usage_entry, 10],
            ['EXTERNAL_CHARACTERISTICS       ', clc$nominal_entry, clc$normal_usage_entry, 11],
            ['FC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 12],
            ['FORMS_CODE                     ', clc$nominal_entry, clc$normal_usage_entry, 12],
            ['JAD                            ', clc$abbreviation_entry, clc$normal_usage_entry, 13],
            ['JC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 14],
            ['JM                             ', clc$abbreviation_entry, clc$normal_usage_entry, 15],
            ['JOB_ABORT_DISPOSITION          ', clc$nominal_entry, clc$normal_usage_entry, 13],
            ['JOB_CLASS                      ', clc$nominal_entry, clc$normal_usage_entry, 14],
            ['JOB_MODE                       ', clc$nominal_entry, clc$normal_usage_entry, 15],
            ['JOB_QUALIFIER                  ', clc$nominal_entry, clc$normal_usage_entry, 16],
            ['JOB_QUALIFIERS                 ', clc$alias_entry, clc$normal_usage_entry, 16],
            ['JOB_RECOVERY_DISPOSITION       ', clc$nominal_entry, clc$normal_usage_entry, 17],
            ['JOB_SIZE                       ', clc$nominal_entry, clc$normal_usage_entry, 18],
            ['JOB_SUBMISSION_TIME            ', clc$nominal_entry, clc$normal_usage_entry, 19],
            ['JQ                             ', clc$abbreviation_entry, clc$normal_usage_entry, 16],
            ['JRD                            ', clc$abbreviation_entry, clc$normal_usage_entry, 17],
            ['JS                             ', clc$abbreviation_entry, clc$normal_usage_entry, 18],
            ['JST                            ', clc$abbreviation_entry, clc$normal_usage_entry, 19],
            ['LA                             ', clc$abbreviation_entry, clc$normal_usage_entry, 22],
            ['LATEST_PRINT_TIME              ', clc$nominal_entry, clc$normal_usage_entry, 20],
            ['LATEST_RUN_TIME                ', clc$nominal_entry, clc$normal_usage_entry, 21],
            ['LF                             ', clc$abbreviation_entry, clc$normal_usage_entry, 23],
            ['LOGIN_ACCOUNT                  ', clc$nominal_entry, clc$normal_usage_entry, 22],
            ['LOGIN_FAMILY                   ', clc$nominal_entry, clc$normal_usage_entry, 23],
            ['LOGIN_PROJECT                  ', clc$nominal_entry, clc$normal_usage_entry, 24],
            ['LOGIN_USER                     ', clc$nominal_entry, clc$normal_usage_entry, 25],
            ['LP                             ', clc$abbreviation_entry, clc$normal_usage_entry, 24],
            ['LPT                            ', clc$abbreviation_entry, clc$normal_usage_entry, 20],
            ['LRT                            ', clc$abbreviation_entry, clc$normal_usage_entry, 21],
            ['LU                             ', clc$abbreviation_entry, clc$normal_usage_entry, 25],
            ['MAXIMUM_WORKING_SET            ', clc$nominal_entry, clc$normal_usage_entry, 26],
            ['MAXWS                          ', clc$abbreviation_entry, clc$normal_usage_entry, 26],
            ['MINIMUM_WORKING_SET            ', clc$nominal_entry, clc$normal_usage_entry, 27],
            ['MINWS                          ', clc$abbreviation_entry, clc$normal_usage_entry, 27],
            ['OAN                            ', clc$abbreviation_entry, clc$normal_usage_entry, 30],
            ['OC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 31],
            ['ODBU                           ', clc$abbreviation_entry, clc$normal_usage_entry, 32],
            ['ODE                            ', clc$abbreviation_entry, clc$normal_usage_entry, 33],
            ['ODI                            ', clc$abbreviation_entry, clc$normal_usage_entry, 35],
            ['ODU                            ', clc$abbreviation_entry, clc$normal_usage_entry, 34],
            ['OF                             ', clc$abbreviation_entry, clc$normal_usage_entry, 28],
            ['OP                             ', clc$abbreviation_entry, clc$normal_usage_entry, 36],
            ['OPERATOR_FAMILY                ', clc$nominal_entry, clc$normal_usage_entry, 28],
            ['OPERATOR_USER                  ', clc$nominal_entry, clc$normal_usage_entry, 29],
            ['ORIGINATING_APPLICATION_NAME   ', clc$nominal_entry, clc$normal_usage_entry, 30],
            ['OU                             ', clc$abbreviation_entry, clc$normal_usage_entry, 29],
            ['OUTPUT_CLASS                   ', clc$nominal_entry, clc$normal_usage_entry, 31],
            ['OUTPUT_DEFERRED_BY_USER        ', clc$nominal_entry, clc$normal_usage_entry, 32],
            ['OUTPUT_DESTINATION             ', clc$nominal_entry, clc$normal_usage_entry, 33],
            ['OUTPUT_DESTINATION_USAGE       ', clc$nominal_entry, clc$normal_usage_entry, 34],
            ['OUTPUT_DISPOSITION             ', clc$nominal_entry, clc$normal_usage_entry, 35],
            ['OUTPUT_PRIORITY                ', clc$nominal_entry, clc$normal_usage_entry, 36],
            ['PAGE_AGING_INTERVAL            ', clc$nominal_entry, clc$normal_usage_entry, 37],
            ['PAI                            ', clc$abbreviation_entry, clc$normal_usage_entry, 37],
            ['PD                             ', clc$abbreviation_entry, clc$normal_usage_entry, 38],
            ['PURGE_DELAY                    ', clc$nominal_entry, clc$normal_usage_entry, 38],
            ['QT                             ', clc$nominal_entry, clc$hidden_entry, 50],
            ['QUEUED_TIME                    ', clc$abbreviation_entry, clc$hidden_entry, 50],
            ['RB                             ', clc$abbreviation_entry, clc$normal_usage_entry, 40],
            ['REMOTE_HOST_DIRECTIVE          ', clc$nominal_entry, clc$normal_usage_entry, 39],
            ['RHD                            ', clc$abbreviation_entry, clc$normal_usage_entry, 39],
            ['ROUTING_BANNER                 ', clc$nominal_entry, clc$normal_usage_entry, 40],
            ['S                              ', clc$abbreviation_entry, clc$normal_usage_entry, 44],
            ['SC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 42],
            ['SENSE_SWITCHES                 ', clc$nominal_entry, clc$normal_usage_entry, 41],
            ['SERVICE_CLASS                  ', clc$nominal_entry, clc$normal_usage_entry, 42],
            ['SI                             ', clc$abbreviation_entry, clc$normal_usage_entry, 43],
            ['SITE_INFORMATION               ', clc$nominal_entry, clc$normal_usage_entry, 43],
            ['SJN                            ', clc$abbreviation_entry, clc$normal_usage_entry, 45],
            ['SO                             ', clc$abbreviation_entry, clc$hidden_entry, 52],
            ['SS                             ', clc$abbreviation_entry, clc$normal_usage_entry, 41],
            ['STATION                        ', clc$nominal_entry, clc$normal_usage_entry, 44],
            ['STATION_OPERATOR               ', clc$nominal_entry, clc$hidden_entry, 52],
            ['SYSTEM_JOB_NAME                ', clc$nominal_entry, clc$normal_usage_entry, 45],
            ['UI                             ', clc$abbreviation_entry, clc$normal_usage_entry, 46],
            ['UJN                            ', clc$abbreviation_entry, clc$normal_usage_entry, 47],
            ['USER_INFORMATION               ', clc$nominal_entry, clc$normal_usage_entry, 46],
            ['USER_JOB_NAME                  ', clc$nominal_entry, clc$normal_usage_entry, 47],
            ['VERTICAL_PRINT_DENSITY         ', clc$nominal_entry, clc$normal_usage_entry, 48],
            ['VFU_LOAD_PROCEDURE             ', clc$nominal_entry, clc$normal_usage_entry, 49],
            ['VLP                            ', clc$abbreviation_entry, clc$normal_usage_entry, 49],
            ['VPD                            ', clc$abbreviation_entry, clc$normal_usage_entry, 48]]]],
            'all'],

{ PARAMETER 2

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

{ PARAMETER 3

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

?? POP ??

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

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

{ This constant represents the maximum number of parameters specified on the
{ command.

    CONST
      max_get_key_count = 49;

    VAR
      display_option_list: ^clt$data_value,
      get_attribute_count: 0 .. max_get_key_count,
      get_attribute_number: 0 .. max_get_key_count,
      get_attribute_key: jmt$attribute_keys,
      get_keys: jmt$attribute_keys_set,
      job_attribute_p: ^jmt$job_attribute_results,
      job_attribute_results_pp: ^array [1 .. * ] of ^jmt$job_attribute_results,
      job_attribute_results_seq: ^SEQ ( * );

?? NEWTITLE := 'add_to_attributes', EJECT ??

    PROCEDURE [INLINE] add_to_attributes
      (    get_attribute_key: jmt$attribute_keys);

      IF get_attribute_key IN get_keys THEN
        get_attribute_number := get_attribute_number + 1;
        job_attribute_p^ [get_attribute_number].key := get_attribute_key;

        CASE get_attribute_key OF
        = jmc$job_qualifier_list =
          PUSH job_attribute_p^ [get_attribute_number].job_qualifier_list: [1 .. jmc$maximum_job_qualifiers];

        = jmc$output_disposition =
          PUSH job_attribute_p^ [get_attribute_number].output_disposition.standard_output_path;

        = jmc$purge_delay =
          PUSH job_attribute_p^ [get_attribute_number].purge_delay;

        = jmc$remote_host_directive =
          PUSH job_attribute_p^ [get_attribute_number].remote_host_directive;

        = jmc$site_information =
          PUSH job_attribute_p^ [get_attribute_number].site_information;

        = jmc$user_information =
          PUSH job_attribute_p^ [get_attribute_number].user_information;

        ELSE
        CASEND;
      IFEND;

    PROCEND add_to_attributes;
?? OLDTITLE, EJECT ??

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

    get_keys := $jmt$attribute_keys_set [];
    get_attribute_count := 0;
    get_attribute_number := 0;


    IF pvt [p$display_option].value^.kind = clc$keyword THEN { the only keyword allowed is ALL. }
      get_attribute_count := max_get_key_count;
      get_keys := $jmt$attribute_keys_set [jmc$comment_banner, jmc$control_family, jmc$control_user,
            jmc$copies, jmc$cyclic_aging_interval, jmc$detached_job_wait_time, jmc$device,
            jmc$dispatching_priority, jmc$earliest_print_time, jmc$earliest_run_time,
            jmc$external_characteristics, jmc$forms_code, jmc$job_abort_disposition, jmc$job_class,
            jmc$job_mode, jmc$job_qualifier_list, jmc$job_recovery_disposition, jmc$job_size,
            jmc$job_submission_time, jmc$latest_print_time, jmc$latest_run_time, jmc$login_account,
            jmc$login_family, jmc$login_project, jmc$login_user, jmc$maximum_working_set,
            jmc$minimum_working_set, jmc$origin_application_name, jmc$output_class,
            jmc$output_deferred_by_user, jmc$output_destination, jmc$output_destination_family,
            jmc$output_destination_usage, jmc$output_disposition, jmc$output_priority,
            jmc$page_aging_interval, jmc$purge_delay, jmc$remote_host_directive, jmc$routing_banner,
            jmc$sense_switches, jmc$service_class, jmc$site_information, jmc$station, jmc$station_operator,
            jmc$system_job_name, jmc$user_information, jmc$user_job_name, jmc$vertical_print_density,
            jmc$vfu_load_procedure];

    ELSE

      display_option_list := pvt [p$display_option].value;
      WHILE display_option_list <> NIL DO

{  Some attributes are NOT available in the attribute table - check for them
{  explicitly.

        IF (display_option_list^.element_value^.keyword_value = 'QUEUED_TIME') THEN
          get_attribute_key := jmc$job_submission_time;
        ELSE
          jmp$get_attribute_index (display_option_list^.element_value^.keyword_value, get_attribute_key);
        IFEND;

        IF NOT (get_attribute_key IN get_keys) THEN
          get_keys := get_keys + $jmt$attribute_keys_set [get_attribute_key];
          get_attribute_count := get_attribute_count + 1;
        IFEND;
        display_option_list := display_option_list^.link;
      WHILEND;
    IFEND;

    PUSH job_attribute_p: [1 .. get_attribute_count];
    add_to_attributes (jmc$comment_banner);
    add_to_attributes (jmc$control_family);
    add_to_attributes (jmc$control_user);
    add_to_attributes (jmc$copies);
    add_to_attributes (jmc$cyclic_aging_interval);
    add_to_attributes (jmc$detached_job_wait_time);
    add_to_attributes (jmc$device);
    add_to_attributes (jmc$dispatching_priority);
    add_to_attributes (jmc$earliest_print_time);
    add_to_attributes (jmc$earliest_run_time);
    add_to_attributes (jmc$external_characteristics);
    add_to_attributes (jmc$forms_code);
    add_to_attributes (jmc$job_abort_disposition);
    add_to_attributes (jmc$job_class);
    add_to_attributes (jmc$job_mode);
    add_to_attributes (jmc$job_qualifier_list);
    add_to_attributes (jmc$job_recovery_disposition);
    add_to_attributes (jmc$job_size);
    add_to_attributes (jmc$job_submission_time);
    add_to_attributes (jmc$latest_print_time);
    add_to_attributes (jmc$latest_run_time);
    add_to_attributes (jmc$login_account);
    add_to_attributes (jmc$login_family);
    add_to_attributes (jmc$login_project);
    add_to_attributes (jmc$login_user);
    add_to_attributes (jmc$maximum_working_set);
    add_to_attributes (jmc$minimum_working_set);
    add_to_attributes (jmc$output_destination_family); { operator_family
    add_to_attributes (jmc$station_operator); { operator_user
    add_to_attributes (jmc$origin_application_name);
    add_to_attributes (jmc$output_class);
    add_to_attributes (jmc$output_deferred_by_user);
    add_to_attributes (jmc$output_destination);
    add_to_attributes (jmc$output_destination_usage);
    add_to_attributes (jmc$output_disposition);
    add_to_attributes (jmc$output_priority);
    add_to_attributes (jmc$page_aging_interval);
    add_to_attributes (jmc$purge_delay);
    add_to_attributes (jmc$remote_host_directive);
    add_to_attributes (jmc$routing_banner);
    add_to_attributes (jmc$sense_switches);
    add_to_attributes (jmc$service_class);
    add_to_attributes (jmc$site_information);
    add_to_attributes (jmc$station);
    add_to_attributes (jmc$system_job_name);
    add_to_attributes (jmc$user_information);
    add_to_attributes (jmc$user_job_name);
    add_to_attributes (jmc$vertical_print_density);
    add_to_attributes (jmc$vfu_load_procedure);

    jmp$get_job_attributes (job_attribute_p, status);
    IF NOT status.normal THEN
      RETURN; {----->
    IFEND;

    PUSH job_attribute_results_pp: [1 .. 1];
    job_attribute_results_pp^ [1] := job_attribute_p;
    job_attribute_results_seq := #SEQ (job_attribute_results_pp);

{  Process OUTPUT parameter.
    jmp$display_attributes (pvt [p$output].value^.file_value^, job_attribute_results_seq, 1, NIL, NIL, 0,
          'display_job_attributes', status);

  PROCEND jmp$_display_job_attribute;
?? TITLE := '[XDCL] jmp$_display_job_attribute_def', EJECT ??

  PROCEDURE [XDCL] jmp$_display_job_attribute_def
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$disjad) display_job_attribute_default, display_job_attribute_defaults, disjad (
{   job_mode, jm: any of
{       key
{         all
{       keyend
{       list of key
{         (batch, b)
{         (interactive, i)
{       keyend
{     anyend = all
{   display_option, display_options, do: any of
{       key
{         all
{       keyend
{       list of key
{         (cpu_time_limit, ctl)
{         (job_abort_disposition, jad)
{         (job_class, jc)
{         (job_deferred_by_operator, jdbo)
{         (job_destination_usage, jdu)
{         (job_qualifier, job_qualifiers, jq)
{         (job_recovery_disposition, jrd)
{         (login_family, lf)
{         (magnetic_tape_limit, mtl)
{         (maximum_working_set, maxws)
{         (output_class, oc)
{         (output_deferred_by_operator, odbo)
{         (output_destination_usage, odu)
{         (purge_delay, pd)
{         (site_information, si)
{         (sru_limit, sl)
{         (station, s)
{         (vertical_print_density, vpd)
{       hidden_key
{         (destination_usage, du)
{       keyend
{     anyend = all
{   output, o: file = $output
{   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,
        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_v2,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 4] of clt$keyword_specification,
          recend,
        recend,
        default_value: string (3),
      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_v2,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 39] of clt$keyword_specification,
          recend,
        recend,
        default_value: string (3),
      recend,
      type3: record
        header: clt$type_specification_header,
        default_value: string (7),
      recend,
      type4: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [91, 7, 8, 14, 4, 54, 666],
    clc$command, 8, 4, 0, 0, 0, 0, 4, 'OSM$DISJAD'], [
    ['DISPLAY_OPTION                 ',clc$nominal_entry, 2],
    ['DISPLAY_OPTIONS                ',clc$alias_entry, 2],
    ['DO                             ',clc$abbreviation_entry, 2],
    ['JM                             ',clc$abbreviation_entry, 1],
    ['JOB_MODE                       ',clc$nominal_entry, 1],
    ['O                              ',clc$abbreviation_entry, 3],
    ['OUTPUT                         ',clc$nominal_entry, 3],
    ['STATUS                         ',clc$nominal_entry, 4]],
    [
{ 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, 235,
  clc$optional_default_parameter, 0, 3],
{ 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, 1530,
  clc$optional_default_parameter, 0, 3],
{ 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
    [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]]
      ],
    171, [[1, 0, clc$list_type], [155, 1, clc$max_list_size, 0, FALSE, FALSE],
        [[1, 0, clc$keyword_type], [4], [
        ['B                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
        ['BATCH                          ', clc$nominal_entry, clc$normal_usage_entry, 1],
        ['I                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
        ['INTERACTIVE                    ', clc$nominal_entry, clc$normal_usage_entry, 2]]
        ]
      ]
    ,
    'all'],
{ PARAMETER 2
    [[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]]
      ],
    1466, [[1, 0, clc$list_type], [1450, 1, clc$max_list_size, 0, FALSE, FALSE],
        [[1, 0, clc$keyword_type], [39], [
        ['CPU_TIME_LIMIT                 ', clc$nominal_entry, clc$normal_usage_entry, 1],
        ['CTL                            ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
        ['DESTINATION_USAGE              ', clc$nominal_entry, clc$hidden_entry, 19],
        ['DU                             ', clc$abbreviation_entry, clc$hidden_entry, 19],
        ['JAD                            ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
        ['JC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
        ['JDBO                           ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
        ['JDU                            ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
        ['JOB_ABORT_DISPOSITION          ', clc$nominal_entry, clc$normal_usage_entry, 2],
        ['JOB_CLASS                      ', clc$nominal_entry, clc$normal_usage_entry, 3],
        ['JOB_DEFERRED_BY_OPERATOR       ', clc$nominal_entry, clc$normal_usage_entry, 4],
        ['JOB_DESTINATION_USAGE          ', clc$nominal_entry, clc$normal_usage_entry, 5],
        ['JOB_QUALIFIER                  ', clc$nominal_entry, clc$normal_usage_entry, 6],
        ['JOB_QUALIFIERS                 ', clc$alias_entry, clc$normal_usage_entry, 6],
        ['JOB_RECOVERY_DISPOSITION       ', clc$nominal_entry, clc$normal_usage_entry, 7],
        ['JQ                             ', clc$abbreviation_entry, clc$normal_usage_entry, 6],
        ['JRD                            ', clc$abbreviation_entry, clc$normal_usage_entry, 7],
        ['LF                             ', clc$abbreviation_entry, clc$normal_usage_entry, 8],
        ['LOGIN_FAMILY                   ', clc$nominal_entry, clc$normal_usage_entry, 8],
        ['MAGNETIC_TAPE_LIMIT            ', clc$nominal_entry, clc$normal_usage_entry, 9],
        ['MAXIMUM_WORKING_SET            ', clc$nominal_entry, clc$normal_usage_entry, 10],
        ['MAXWS                          ', clc$abbreviation_entry, clc$normal_usage_entry, 10],
        ['MTL                            ', clc$abbreviation_entry, clc$normal_usage_entry, 9],
        ['OC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 11],
        ['ODBO                           ', clc$abbreviation_entry, clc$normal_usage_entry, 12],
        ['ODU                            ', clc$abbreviation_entry, clc$normal_usage_entry, 13],
        ['OUTPUT_CLASS                   ', clc$nominal_entry, clc$normal_usage_entry, 11],
        ['OUTPUT_DEFERRED_BY_OPERATOR    ', clc$nominal_entry, clc$normal_usage_entry, 12],
        ['OUTPUT_DESTINATION_USAGE       ', clc$nominal_entry, clc$normal_usage_entry, 13],
        ['PD                             ', clc$abbreviation_entry, clc$normal_usage_entry, 14],
        ['PURGE_DELAY                    ', clc$nominal_entry, clc$normal_usage_entry, 14],
        ['S                              ', clc$abbreviation_entry, clc$normal_usage_entry, 17],
        ['SI                             ', clc$abbreviation_entry, clc$normal_usage_entry, 15],
        ['SITE_INFORMATION               ', clc$nominal_entry, clc$normal_usage_entry, 15],
        ['SL                             ', clc$abbreviation_entry, clc$normal_usage_entry, 16],
        ['SRU_LIMIT                      ', clc$nominal_entry, clc$normal_usage_entry, 16],
        ['STATION                        ', clc$nominal_entry, clc$normal_usage_entry, 17],
        ['VERTICAL_PRINT_DENSITY         ', clc$nominal_entry, clc$normal_usage_entry, 18],
        ['VPD                            ', clc$abbreviation_entry, clc$normal_usage_entry, 18]]
        ]
      ]
    ,
    'all'],
{ PARAMETER 3
    [[1, 0, clc$file_type],
    '$output'],
{ PARAMETER 4
    [[1, 0, clc$status_type]]];

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

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

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

    CONST
      maximum_attribute_count = 18;

    VAR
      attribute_key: jmt$attribute_keys,
      batch_default_attribute_p: ^jmt$default_attribute_results,
      default_attribute_result_index: 0 .. 2, { 2 is the number of job modes
      default_attribute_results_pp: ^array [1 .. * ] of ^jmt$default_attribute_results,
      default_attribute_results_seq: ^SEQ ( * ),
      display_attribute_count: 0 .. maximum_attribute_count,
      display_attribute_number: 0 .. maximum_attribute_count,
      display_batch: boolean,
      display_interactive: boolean,
      display_keys: jmt$attribute_keys_set,
      display_option_list: ^clt$data_value,
      header_display_list_p: ^jmt$header_display_information,
      interactive_default_attribute_p: ^jmt$default_attribute_results,
      set_list: ^clt$data_value;

?? NEWTITLE := 'add_to_attributes', EJECT ??

    PROCEDURE [INLINE] add_to_attributes
      (    attribute_key: jmt$attribute_keys);

      IF attribute_key IN display_keys THEN
        display_attribute_number := display_attribute_number + 1;
        batch_default_attribute_p^ [display_attribute_number].key := attribute_key;
        interactive_default_attribute_p^ [display_attribute_number].key := attribute_key;
        CASE attribute_key OF
        = jmc$site_information =
          PUSH batch_default_attribute_p^ [display_attribute_number].site_information;
          PUSH interactive_default_attribute_p^ [display_attribute_number].site_information;

        = jmc$job_qualifier_list =
          PUSH batch_default_attribute_p^ [display_attribute_number].job_qualifier_list:
                [1 .. jmc$maximum_job_qualifiers];
          PUSH interactive_default_attribute_p^ [display_attribute_number].job_qualifier_list:
                [1 .. jmc$maximum_job_qualifiers];

        = jmc$purge_delay =
          PUSH batch_default_attribute_p^ [display_attribute_number].purge_delay;
          PUSH interactive_default_attribute_p^ [display_attribute_number].purge_delay;
        ELSE
        CASEND;
      IFEND;
    PROCEND add_to_attributes;
?? OLDTITLE, EJECT ??

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


    display_keys := $jmt$attribute_keys_set [];
    display_attribute_count := 0;
    display_attribute_number := 0;

    IF pvt [p$display_option].value^.kind = clc$keyword THEN { the only keyword allowed is ALL. }
      display_keys := $jmt$attribute_keys_set [jmc$cpu_time_limit, jmc$deferred_by_operator,
            jmc$job_abort_disposition, jmc$job_class, jmc$job_deferred_by_operator, jmc$job_destination_usage,
            jmc$job_qualifier_list, jmc$job_recovery_disposition, jmc$login_family, jmc$magnetic_tape_limit,
            jmc$maximum_working_set, jmc$output_class, jmc$output_deferred_by_operator,
            jmc$output_destination_usage, jmc$purge_delay, jmc$site_information, jmc$sru_limit, jmc$station,
            jmc$vertical_print_density];

      display_attribute_count := maximum_attribute_count;
    ELSE

      display_option_list := pvt [p$display_option].value;

      WHILE display_option_list <> NIL DO
        jmp$get_attribute_index (display_option_list^.element_value^.keyword_value, attribute_key);
        IF NOT (attribute_key IN display_keys) THEN
          display_attribute_count := display_attribute_count + 1;
          display_keys := display_keys + $jmt$attribute_keys_set [attribute_key];
        IFEND;
        display_option_list := display_option_list^.link;
      WHILEND;
    IFEND;

    PUSH batch_default_attribute_p: [1 .. display_attribute_count];
    PUSH interactive_default_attribute_p: [1 .. display_attribute_count];
    add_to_attributes (jmc$cpu_time_limit);
    add_to_attributes (jmc$job_abort_disposition);
    add_to_attributes (jmc$job_class);
    add_to_attributes (jmc$job_deferred_by_operator);
    add_to_attributes (jmc$job_destination_usage);
    add_to_attributes (jmc$job_qualifier_list);
    add_to_attributes (jmc$job_recovery_disposition);
    add_to_attributes (jmc$login_family);
    add_to_attributes (jmc$magnetic_tape_limit);
    add_to_attributes (jmc$maximum_working_set);
    add_to_attributes (jmc$output_class);
    add_to_attributes (jmc$output_deferred_by_operator);
    add_to_attributes (jmc$output_destination_usage);
    add_to_attributes (jmc$purge_delay);
    add_to_attributes (jmc$deferred_by_operator);
    add_to_attributes (jmc$site_information);
    add_to_attributes (jmc$sru_limit);
    add_to_attributes (jmc$station);
    add_to_attributes (jmc$vertical_print_density);

    jmp$get_attribute_defaults (jmc$interactive_connected, interactive_default_attribute_p, status);
    IF NOT status.normal THEN
      RETURN; {----->
    IFEND;

    jmp$get_attribute_defaults (jmc$batch, batch_default_attribute_p, status);
    IF NOT status.normal THEN
      RETURN; {----->
    IFEND;

    PUSH default_attribute_results_pp: [1 .. 2];
    PUSH header_display_list_p: [1 .. 2];
    default_attribute_result_index := 0;

{  Process JOB_MODE parameter.

    display_batch := FALSE;
    display_interactive := FALSE;

    IF pvt [p$job_mode].value^.kind = clc$keyword THEN { the only keyword allowed is ALL. }
      display_batch := TRUE;
      display_interactive := TRUE;
    ELSE
      set_list := pvt [p$job_mode].value;
      WHILE set_list <> NIL DO
        IF set_list^.element_value^.keyword_value = 'BATCH' THEN
          display_batch := TRUE;
        ELSE { set_list^.element_value^.keyword_value = 'INTERACTIVE'.
          display_interactive := TRUE;
        IFEND;
        set_list := set_list^.link;
      WHILEND;
    IFEND;

    IF display_batch THEN
      default_attribute_result_index := default_attribute_result_index + 1;
      default_attribute_results_pp^ [default_attribute_result_index] := batch_default_attribute_p;
      header_display_list_p^ [default_attribute_result_index].value := 'Job_Mode: BATCH';
      header_display_list_p^ [default_attribute_result_index].size := 15;
    IFEND;

    IF display_interactive THEN
      default_attribute_result_index := default_attribute_result_index + 1;
      default_attribute_results_pp^ [default_attribute_result_index] := interactive_default_attribute_p;
      header_display_list_p^ [default_attribute_result_index].value := 'Job_Mode: INTERACTIVE';
      header_display_list_p^ [default_attribute_result_index].size := 21;
    IFEND;

    default_attribute_results_seq := #SEQ (default_attribute_results_pp);

{  Process OUTPUT parameter.
    jmp$display_attributes (pvt [p$output].value^.file_value^, default_attribute_results_seq,
          default_attribute_result_index, header_display_list_p, NIL, 0, 'display_job_attribute_default',
          status);

  PROCEND jmp$_display_job_attribute_def;
?? TITLE := '[XDCL] jmp$_display_job_status', EJECT ??

  PROCEDURE [XDCL] jmp$_display_job_status
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$disjs) display_job_status, disjs (
{   name, jn, job_name, job_names, names, n: any of
{       key
{         all
{       keyend
{       list of key
{         (batch, b)
{         (interactive_connected, ic, interactive, i)
{         (interactive_disconnected, id)
{         advanced_usage
{         (interactive_command_disconnect, icd)
{         (interactive_line_disconnect, ild)
{         (interactive_system_disconnect, isd)
{       keyend
{       list of name
{     anyend = $job(system_job_name)
{   display_option, display_options, do: any of
{       key
{         all
{       keyend
{       list of key
{         (control_family, cf)
{         (control_user, cu)
{         (cpu_time_used, ctu)
{         (display_message, dm)
{         (job_class, jc)
{         (job_class_position, jcp)
{         (job_destination_usage, jdu)
{         (job_initiation_time, jit)
{         (job_mode, jm)
{         (job_state, js)
{         (login_family, lf)
{         (login_user, lu)
{         (operator_action_posted, oap)
{         (page_faults, pf)
{         (system_job_name, sjn)
{         (user_job_name, ujn)
{       hidden_key
{         (client_mainframe_identifier, cmi)
{         (input_file_location, ifl)
{         (server_mainframe_identifier, smi)
{       keyend
{     anyend = osd$disjs_display_options,
{     (cpu_time_used, display_message, job_state, page_faults, system_job_name)
{   output, o: file = $output
{   status)

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

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 12] 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_v2,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 15] of clt$keyword_specification,
          recend,
        recend,
        type_size_3: clt$type_specification_size,
        element_type_spec_3: 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 (21),
      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_v2,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 38] of clt$keyword_specification,
          recend,
        recend,
        default_name: string (25),
        default_value: string (73),
      recend,
      type3: record
        header: clt$type_specification_header,
        default_value: string (7),
      recend,
      type4: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [104, 10, 1, 17, 23, 58, 560],
    clc$command, 12, 4, 0, 0, 0, 0, 4, 'OSM$DISJS'], [
    ['DISPLAY_OPTION                 ',clc$nominal_entry, 2],
    ['DISPLAY_OPTIONS                ',clc$alias_entry, 2],
    ['DO                             ',clc$abbreviation_entry, 2],
    ['JN                             ',clc$alias_entry, 1],
    ['JOB_NAME                       ',clc$alias_entry, 1],
    ['JOB_NAMES                      ',clc$alias_entry, 1],
    ['N                              ',clc$abbreviation_entry, 1],
    ['NAME                           ',clc$nominal_entry, 1],
    ['NAMES                          ',clc$alias_entry, 1],
    ['O                              ',clc$abbreviation_entry, 3],
    ['OUTPUT                         ',clc$nominal_entry, 3],
    ['STATUS                         ',clc$nominal_entry, 4]],
    [
{ 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$standard_parameter_checking, 667,
  clc$optional_default_parameter, 0, 21],
{ 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, 1493,
  clc$optional_default_parameter, 25, 73],
{ PARAMETER 3
    [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, 3,
  clc$optional_default_parameter, 0, 7],
{ PARAMETER 4
    [12, 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, 3],
    44, [[1, 0, clc$keyword_type], [1], [
      ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    578, [[1, 0, clc$list_type], [562, 1, clc$max_list_size, 0, FALSE, FALSE],
        [[1, 0, clc$keyword_type], [15], [
        ['ADVANCED_USAGE                 ', clc$nominal_entry, clc$normal_usage_entry, 4],
        ['B                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
        ['BATCH                          ', clc$nominal_entry, clc$normal_usage_entry, 1],
        ['I                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
        ['IC                             ', clc$alias_entry, clc$normal_usage_entry, 2],
        ['ICD                            ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
        ['ID                             ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
        ['ILD                            ', clc$abbreviation_entry, clc$normal_usage_entry, 6],
        ['INTERACTIVE                    ', clc$alias_entry, clc$normal_usage_entry, 2],
        ['INTERACTIVE_COMMAND_DISCONNECT ', clc$nominal_entry, clc$normal_usage_entry, 5],
        ['INTERACTIVE_CONNECTED          ', clc$nominal_entry, clc$normal_usage_entry, 2],
        ['INTERACTIVE_DISCONNECTED       ', clc$nominal_entry, clc$normal_usage_entry, 3],
        ['INTERACTIVE_LINE_DISCONNECT    ', clc$nominal_entry, clc$normal_usage_entry, 6],
        ['INTERACTIVE_SYSTEM_DISCONNECT  ', clc$nominal_entry, clc$normal_usage_entry, 7],
        ['ISD                            ', clc$abbreviation_entry, clc$normal_usage_entry, 7]]
        ]
      ],
    21, [[1, 0, clc$list_type], [5, 1, clc$max_list_size, 0, FALSE, FALSE],
        [[1, 0, clc$name_type], [1, osc$max_name_size]]
      ]
    ,
    '$job(system_job_name)'],
{ PARAMETER 2
    [[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]]
      ],
    1429, [[1, 0, clc$list_type], [1413, 1, clc$max_list_size, 0, FALSE, FALSE],
        [[1, 0, clc$keyword_type], [38], [
        ['CF                             ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
        ['CLIENT_MAINFRAME_IDENTIFIER    ', clc$nominal_entry, clc$hidden_entry, 17],
        ['CMI                            ', clc$abbreviation_entry, clc$hidden_entry, 17],
        ['CONTROL_FAMILY                 ', clc$nominal_entry, clc$normal_usage_entry, 1],
        ['CONTROL_USER                   ', clc$nominal_entry, clc$normal_usage_entry, 2],
        ['CPU_TIME_USED                  ', clc$nominal_entry, clc$normal_usage_entry, 3],
        ['CTU                            ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
        ['CU                             ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
        ['DISPLAY_MESSAGE                ', clc$nominal_entry, clc$normal_usage_entry, 4],
        ['DM                             ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
        ['IFL                            ', clc$abbreviation_entry, clc$hidden_entry, 18],
        ['INPUT_FILE_LOCATION            ', clc$nominal_entry, clc$hidden_entry, 18],
        ['JC                             ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
        ['JCP                            ', clc$abbreviation_entry, clc$normal_usage_entry, 6],
        ['JDU                            ', clc$abbreviation_entry, clc$normal_usage_entry, 7],
        ['JIT                            ', clc$abbreviation_entry, clc$normal_usage_entry, 8],
        ['JM                             ', clc$abbreviation_entry, clc$normal_usage_entry, 9],
        ['JOB_CLASS                      ', clc$nominal_entry, clc$normal_usage_entry, 5],
        ['JOB_CLASS_POSITION             ', clc$nominal_entry, clc$normal_usage_entry, 6],
        ['JOB_DESTINATION_USAGE          ', clc$nominal_entry, clc$normal_usage_entry, 7],
        ['JOB_INITIATION_TIME            ', clc$nominal_entry, clc$normal_usage_entry, 8],
        ['JOB_MODE                       ', clc$nominal_entry, clc$normal_usage_entry, 9],
        ['JOB_STATE                      ', clc$nominal_entry, clc$normal_usage_entry, 10],
        ['JS                             ', clc$abbreviation_entry, clc$normal_usage_entry, 10],
        ['LF                             ', clc$abbreviation_entry, clc$normal_usage_entry, 11],
        ['LOGIN_FAMILY                   ', clc$nominal_entry, clc$normal_usage_entry, 11],
        ['LOGIN_USER                     ', clc$nominal_entry, clc$normal_usage_entry, 12],
        ['LU                             ', clc$abbreviation_entry, clc$normal_usage_entry, 12],
        ['OAP                            ', clc$abbreviation_entry, clc$normal_usage_entry, 13],
        ['OPERATOR_ACTION_POSTED         ', clc$nominal_entry, clc$normal_usage_entry, 13],
        ['PAGE_FAULTS                    ', clc$nominal_entry, clc$normal_usage_entry, 14],
        ['PF                             ', clc$abbreviation_entry, clc$normal_usage_entry, 14],
        ['SERVER_MAINFRAME_IDENTIFIER    ', clc$nominal_entry, clc$hidden_entry, 19],
        ['SJN                            ', clc$abbreviation_entry, clc$normal_usage_entry, 15],
        ['SMI                            ', clc$abbreviation_entry, clc$hidden_entry, 19],
        ['SYSTEM_JOB_NAME                ', clc$nominal_entry, clc$normal_usage_entry, 15],
        ['UJN                            ', clc$abbreviation_entry, clc$normal_usage_entry, 16],
        ['USER_JOB_NAME                  ', clc$nominal_entry, clc$normal_usage_entry, 16]]
        ]
      ]
    ,
    'OSD$DISJS_DISPLAY_OPTIONS',
    '(cpu_time_used, display_message, job_state, page_faults, system_job_name)'],
{ PARAMETER 3
    [[1, 0, clc$file_type],
    '$output'],
{ PARAMETER 4
    [[1, 0, clc$status_type]]];

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

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

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

    VAR
      get_attribute: jmt$attribute_keys,
      get_keys: jmt$attribute_keys_set,
      display_option_list: ^clt$data_value;

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


    get_keys := $jmt$attribute_keys_set [];

    IF pvt [p$display_option].value^.kind = clc$keyword THEN { the only keyword allowed is ALL. }
      get_keys := $jmt$attribute_keys_set [jmc$control_family, jmc$control_user, jmc$cpu_time_used,
            jmc$display_message, jmc$job_class, jmc$job_class_position, jmc$job_destination_usage,
            jmc$job_initiation_time, jmc$job_mode, jmc$job_state, jmc$login_family, jmc$login_user,
            jmc$operator_action_posted, jmc$page_faults, jmc$system_job_name, jmc$user_job_name];
    ELSE

      display_option_list := pvt [p$display_option].value;
      WHILE display_option_list <> NIL DO
        jmp$get_attribute_index (display_option_list^.element_value^.keyword_value, get_attribute);
        IF NOT (get_attribute IN get_keys) THEN
          get_keys := get_keys + $jmt$attribute_keys_set [get_attribute];
        IFEND;
        display_option_list := display_option_list^.link;
      WHILEND;
    IFEND;

    jmp$display_job_status (pvt [p$output].value^.file_value^, get_keys, pvt [p$name].value^, status);

  PROCEND jmp$_display_job_status;
?? TITLE := '[XDCL] jmp$_display_output_attribute', EJECT ??

  PROCEDURE [XDCL] jmp$_display_output_attribute
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{   PROCEDURE (osm$disoa) display_output_attribute, display_output_attributes..
{ , ..
{   disoa (
{     name, names, n: list of name = $required
{     display_option, display_options, do: any of
{         key
{           all
{         keyend
{         list of key
{           (comment_banner, cb)
{           (control_family, cf)
{           (control_user, cu)
{           (copies, c)
{           (copies_printed, cp)
{           (data_mode, dm)
{           (device, d)
{           (device_type, dt)
{           (earliest_print_time, ept)
{           (external_characteristics, ec)
{           (file_position, fp)
{           (file_size, fs)
{           (forms_code, fc)
{           (latest_print_time, lpt)
{           (login_account, la)
{           (login_family, lf)
{           (login_project, lp)
{           (login_user, lu)
{           (operator_family, of)
{           (operator_user, ou)
{           (originating_application_name, oan)
{           (output_class, oc)
{           (output_deferred_by_operator, odbo)
{           (output_deferred_by_user, odbu)
{           (output_destination, ode)
{           (output_destination_usage, odu)
{           (output_priority, op)
{           (output_submission_time, ost)
{           (purge_delay, pd)
{           (remote_host_directive, rhd)
{           (routing_banner, rb)
{           (site_information, si)
{           (station, s)
{           (system_file_name, sfn)
{           (system_job_name, sjn)
{           (user_file_name, ufn)
{           (user_information, ui)
{           (user_job_name, ujn)
{           (vertical_print_density, vpd)
{           (vfu_load_procedure, vlp)
{         hidden_key
{           (destination_family, df)
{           (station_operator, so)
{           (destination_usage, du)
{           (qt, queued_time)
{           (dual_state_route_parameters, dsrp)
{         keyend
{       anyend = osd$disoa_display_options, all
{     output, o: file = $OUTPUT
{     status)

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

  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$list_type_qualifier_v2,
        element_type_spec: 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 .. 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_v2,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 90] of clt$keyword_specification,
          recend,
        recend,
        default_name: string (25),
        default_value: string (3),
      recend,
      type3: record
        header: clt$type_specification_header,
        default_value: string (7),
      recend,
      type4: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [93, 5, 18, 11, 24, 0, 903],
    clc$command, 9, 4, 1, 0, 0, 0, 4, 'OSM$DISOA'], [
    ['DISPLAY_OPTION                 ',clc$nominal_entry, 2],
    ['DISPLAY_OPTIONS                ',clc$alias_entry, 2],
    ['DO                             ',clc$abbreviation_entry, 2],
    ['N                              ',clc$abbreviation_entry, 1],
    ['NAME                           ',clc$nominal_entry, 1],
    ['NAMES                          ',clc$alias_entry, 1],
    ['O                              ',clc$abbreviation_entry, 3],
    ['OUTPUT                         ',clc$nominal_entry, 3],
    ['STATUS                         ',clc$nominal_entry, 4]],
    [
{ 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, 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, 3417, clc$optional_default_parameter, 25, 3
  ],
{ PARAMETER 3
    [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 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$list_type], [5, 1, clc$max_list_size, 0, FALSE, FALSE],
      [[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],
    44, [[1, 0, clc$keyword_type], [1], [
      ['ALL                            ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    3353, [[1, 0, clc$list_type], [3337, 1, clc$max_list_size, 0, FALSE, FALSE]
  ,
        [[1, 0, clc$keyword_type], [90], [
        ['C                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 4],
        ['CB                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 1],
        ['CF                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 2],
        ['COMMENT_BANNER                 ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
        ['CONTROL_FAMILY                 ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
        ['CONTROL_USER                   ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
        ['COPIES                         ', clc$nominal_entry,
  clc$normal_usage_entry, 4],
        ['COPIES_PRINTED                 ', clc$nominal_entry,
  clc$normal_usage_entry, 5],
        ['CP                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 5],
        ['CU                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 3],
        ['D                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 7],
        ['DATA_MODE                      ', clc$nominal_entry,
  clc$normal_usage_entry, 6],
        ['DESTINATION_FAMILY             ', clc$nominal_entry,
  clc$hidden_entry, 41],
        ['DESTINATION_USAGE              ', clc$nominal_entry,
  clc$hidden_entry, 43],
        ['DEVICE                         ', clc$nominal_entry,
  clc$normal_usage_entry, 7],
        ['DEVICE_TYPE                    ', clc$nominal_entry,
  clc$normal_usage_entry, 8],
        ['DF                             ', clc$abbreviation_entry,
  clc$hidden_entry, 41],
        ['DM                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 6],
        ['DSRP                           ', clc$abbreviation_entry,
  clc$hidden_entry, 45],
        ['DT                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 8],
        ['DU                             ', clc$abbreviation_entry,
  clc$hidden_entry, 43],
        ['DUAL_STATE_ROUTE_PARAMETERS    ', clc$nominal_entry,
  clc$hidden_entry, 45],
        ['EARLIEST_PRINT_TIME            ', clc$nominal_entry,
  clc$normal_usage_entry, 9],
        ['EC                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 10],
        ['EPT                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 9],
        ['EXTERNAL_CHARACTERISTICS       ', clc$nominal_entry,
  clc$normal_usage_entry, 10],
        ['FC                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 13],
        ['FILE_POSITION                  ', clc$nominal_entry,
  clc$normal_usage_entry, 11],
        ['FILE_SIZE                      ', clc$nominal_entry,
  clc$normal_usage_entry, 12],
        ['FORMS_CODE                     ', clc$nominal_entry,
  clc$normal_usage_entry, 13],
        ['FP                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 11],
        ['FS                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 12],
        ['LA                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 15],
        ['LATEST_PRINT_TIME              ', clc$nominal_entry,
  clc$normal_usage_entry, 14],
        ['LF                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 16],
        ['LOGIN_ACCOUNT                  ', clc$nominal_entry,
  clc$normal_usage_entry, 15],
        ['LOGIN_FAMILY                   ', clc$nominal_entry,
  clc$normal_usage_entry, 16],
        ['LOGIN_PROJECT                  ', clc$nominal_entry,
  clc$normal_usage_entry, 17],
        ['LOGIN_USER                     ', clc$nominal_entry,
  clc$normal_usage_entry, 18],
        ['LP                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 17],
        ['LPT                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 14],
        ['LU                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 18],
        ['OAN                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 21],
        ['OC                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 22],
        ['ODBO                           ', clc$abbreviation_entry,
  clc$normal_usage_entry, 23],
        ['ODBU                           ', clc$abbreviation_entry,
  clc$normal_usage_entry, 24],
        ['ODE                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 25],
        ['ODU                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 26],
        ['OF                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 19],
        ['OP                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 27],
        ['OPERATOR_FAMILY                ', clc$nominal_entry,
  clc$normal_usage_entry, 19],
        ['OPERATOR_USER                  ', clc$nominal_entry,
  clc$normal_usage_entry, 20],
        ['ORIGINATING_APPLICATION_NAME   ', clc$nominal_entry,
  clc$normal_usage_entry, 21],
        ['OST                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 28],
        ['OU                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 20],
        ['OUTPUT_CLASS                   ', clc$nominal_entry,
  clc$normal_usage_entry, 22],
        ['OUTPUT_DEFERRED_BY_OPERATOR    ', clc$nominal_entry,
  clc$normal_usage_entry, 23],
        ['OUTPUT_DEFERRED_BY_USER        ', clc$nominal_entry,
  clc$normal_usage_entry, 24],
        ['OUTPUT_DESTINATION             ', clc$nominal_entry,
  clc$normal_usage_entry, 25],
        ['OUTPUT_DESTINATION_USAGE       ', clc$nominal_entry,
  clc$normal_usage_entry, 26],
        ['OUTPUT_PRIORITY                ', clc$nominal_entry,
  clc$normal_usage_entry, 27],
        ['OUTPUT_SUBMISSION_TIME         ', clc$nominal_entry,
  clc$normal_usage_entry, 28],
        ['PD                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 29],
        ['PURGE_DELAY                    ', clc$nominal_entry,
  clc$normal_usage_entry, 29],
        ['QT                             ', clc$nominal_entry,
  clc$hidden_entry, 44],
        ['QUEUED_TIME                    ', clc$abbreviation_entry,
  clc$hidden_entry, 44],
        ['RB                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 31],
        ['REMOTE_HOST_DIRECTIVE          ', clc$nominal_entry,
  clc$normal_usage_entry, 30],
        ['RHD                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 30],
        ['ROUTING_BANNER                 ', clc$nominal_entry,
  clc$normal_usage_entry, 31],
        ['S                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 33],
        ['SFN                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 34],
        ['SI                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 32],
        ['SITE_INFORMATION               ', clc$nominal_entry,
  clc$normal_usage_entry, 32],
        ['SJN                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 35],
        ['SO                             ', clc$abbreviation_entry,
  clc$hidden_entry, 42],
        ['STATION                        ', clc$nominal_entry,
  clc$normal_usage_entry, 33],
        ['STATION_OPERATOR               ', clc$nominal_entry,
  clc$hidden_entry, 42],
        ['SYSTEM_FILE_NAME               ', clc$nominal_entry,
  clc$normal_usage_entry, 34],
        ['SYSTEM_JOB_NAME                ', clc$nominal_entry,
  clc$normal_usage_entry, 35],
        ['UFN                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 36],
        ['UI                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 37],
        ['UJN                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 38],
        ['USER_FILE_NAME                 ', clc$nominal_entry,
  clc$normal_usage_entry, 36],
        ['USER_INFORMATION               ', clc$nominal_entry,
  clc$normal_usage_entry, 37],
        ['USER_JOB_NAME                  ', clc$nominal_entry,
  clc$normal_usage_entry, 38],
        ['VERTICAL_PRINT_DENSITY         ', clc$nominal_entry,
  clc$normal_usage_entry, 39],
        ['VFU_LOAD_PROCEDURE             ', clc$nominal_entry,
  clc$normal_usage_entry, 40],
        ['VLP                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 40],
        ['VPD                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 39]]
        ]
      ]
    ,
    'OSD$DISOA_DISPLAY_OPTIONS',
    'all'],
{ PARAMETER 3
    [[1, 0, clc$file_type],
    '$OUTPUT'],
{ PARAMETER 4
    [[1, 0, clc$status_type]]];

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

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

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

{ This constant represents the maximum number of parameters specified on the
{ command.

    CONST
      max_get_key_count = 40;

    VAR
      display_option_list: ^clt$data_value,
      get_attribute_count: integer,
      get_attribute_key: jmt$attribute_keys,
      get_attribute_number: integer,
      get_keys: jmt$attribute_keys_set,
      name_count: 0 .. clc$max_list_size,
      name_list: ^clt$data_value,
      name_number: 1 .. clc$max_list_size,
      number_of_outputs_found: jmt$output_status_count,
      output_attribute_options_p: ^jmt$output_attribute_options,
      output_attribute_results_keys_p: ^jmt$results_keys,
      output_attribute_results_p: ^jmt$output_attribute_results,
      output_attribute_results_seq: ^SEQ ( * ),
      result_size: ost$segment_length,
      work_area_p: ^jmt$work_area;

?? NEWTITLE := 'add_to_attributes', EJECT ??

    PROCEDURE [INLINE] add_to_attributes
      (    get_attribute_key: jmt$attribute_keys);

      IF get_attribute_key IN get_keys THEN
        get_attribute_number := get_attribute_number + 1;
        output_attribute_results_keys_p^ [get_attribute_number] := get_attribute_key;
      IFEND;

    PROCEND add_to_attributes;
?? OLDTITLE, EJECT ??

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

{  Process NAME parameter.

    name_count := clp$count_list_elements (pvt [p$name].value);
    name_list := pvt [p$name].value;

    PUSH output_attribute_options_p: [1 .. 2];
    output_attribute_options_p^ [1].key := jmc$name_list;
    PUSH output_attribute_options_p^ [1].name_list: [1 .. name_count];
    output_attribute_options_p^ [2].key := jmc$continue_request_to_servers;
    output_attribute_options_p^ [2].continue_request_to_servers := TRUE;

    FOR name_number := 1 TO name_count DO
      jmp$determine_name_kind (name_list^.element_value^.name_value, output_attribute_options_p^ [1].
            name_list^ [name_number], status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      name_list := name_list^.link;
    FOREND;

    get_keys := $jmt$attribute_keys_set [];
    get_attribute_count := 0;
    get_attribute_number := 0;

{  Process DISPLAY_OPTION parameter.

    IF pvt [p$display_option].value^.kind = clc$keyword THEN { the only keyword allowed is ALL. }
      get_attribute_count := max_get_key_count;
      get_keys := $jmt$attribute_keys_set [jmc$comment_banner, jmc$control_family, jmc$control_user,
            jmc$copies, jmc$copies_printed, jmc$data_mode, jmc$device, jmc$device_type,
            jmc$earliest_print_time, jmc$external_characteristics, jmc$file_position, jmc$file_size,
            jmc$forms_code, jmc$latest_print_time, jmc$login_account, jmc$login_family, jmc$login_project,
            jmc$login_user, jmc$origin_application_name, jmc$output_class, jmc$output_deferred_by_operator,
            jmc$output_deferred_by_user, jmc$output_destination, jmc$output_destination_family,
            jmc$output_destination_usage, jmc$output_priority, jmc$output_submission_time, jmc$purge_delay,
            jmc$remote_host_directive, jmc$routing_banner, jmc$site_information, jmc$station,
            jmc$station_operator, jmc$system_file_name, jmc$system_job_name, jmc$user_file_name,
            jmc$user_information, jmc$user_job_name, jmc$vertical_print_density, jmc$vfu_load_procedure];

    ELSE {process the display option list.

      display_option_list := pvt [p$display_option].value;
      WHILE display_option_list <> NIL DO
        jmp$get_attribute_index (display_option_list^.element_value^.keyword_value, get_attribute_key);
        IF NOT (get_attribute_key IN get_keys) THEN
          get_keys := get_keys + $jmt$attribute_keys_set [get_attribute_key];
          get_attribute_count := get_attribute_count + 1;
        IFEND;
        display_option_list := display_option_list^.link;
      WHILEND;
    IFEND;

    PUSH output_attribute_results_keys_p: [1 .. get_attribute_count];
    add_to_attributes (jmc$comment_banner);
    add_to_attributes (jmc$control_family);
    add_to_attributes (jmc$control_user);
    add_to_attributes (jmc$copies);
    add_to_attributes (jmc$copies_printed);
    add_to_attributes (jmc$data_mode);
    add_to_attributes (jmc$device);
    add_to_attributes (jmc$device_type);
    add_to_attributes (jmc$earliest_print_time);
    add_to_attributes (jmc$external_characteristics);
    add_to_attributes (jmc$file_position);
    add_to_attributes (jmc$file_size);
    add_to_attributes (jmc$forms_code);
    add_to_attributes (jmc$latest_print_time);
    add_to_attributes (jmc$login_account);
    add_to_attributes (jmc$login_family);
    add_to_attributes (jmc$login_project);
    add_to_attributes (jmc$login_user);
    add_to_attributes (jmc$output_destination_family); { operator_family
    add_to_attributes (jmc$station_operator); { operator_user
    add_to_attributes (jmc$origin_application_name);
    add_to_attributes (jmc$output_class);
    add_to_attributes (jmc$output_deferred_by_operator);
    add_to_attributes (jmc$output_deferred_by_user);
    add_to_attributes (jmc$output_destination);
    add_to_attributes (jmc$output_destination_usage);
    add_to_attributes (jmc$output_priority);
    add_to_attributes (jmc$output_submission_time);
    add_to_attributes (jmc$purge_delay);
    add_to_attributes (jmc$remote_host_directive);
    add_to_attributes (jmc$routing_banner);
    add_to_attributes (jmc$site_information);
    add_to_attributes (jmc$station);
    add_to_attributes (jmc$system_file_name);
    add_to_attributes (jmc$system_job_name);
    add_to_attributes (jmc$user_file_name);
    add_to_attributes (jmc$user_information);
    add_to_attributes (jmc$user_job_name);
    add_to_attributes (jmc$vertical_print_density);
    add_to_attributes (jmc$vfu_load_procedure);

    jmp$get_result_size (name_count + 1, #SEQ (output_attribute_results_keys_p^), result_size);
    PUSH work_area_p: [[REP result_size OF cell]];
    RESET work_area_p;

    jmp$get_output_attributes (output_attribute_options_p, output_attribute_results_keys_p, work_area_p,
          output_attribute_results_p, number_of_outputs_found, status);

    WHILE (NOT status.normal) AND (status.condition = jme$work_area_too_small) DO
      status.normal := TRUE;

      jmp$get_result_size (number_of_outputs_found + 1, #SEQ (output_attribute_results_keys_p^), result_size);
      PUSH work_area_p: [[REP result_size OF cell]];
      RESET work_area_p;
      jmp$get_output_attributes (output_attribute_options_p, output_attribute_results_keys_p, work_area_p,
            output_attribute_results_p, number_of_outputs_found, status);
    WHILEND;

    IF NOT status.normal THEN
      IF status.condition = jme$no_outputs_were_found THEN
        status.normal := TRUE;
        number_of_outputs_found := 0;
      ELSE
        RETURN; {----->
      IFEND;
    IFEND;

    output_attribute_results_seq := #SEQ (output_attribute_results_p);

{  Process OUTPUT parameter.
    jmp$display_attributes (pvt [p$output].value^.file_value^, output_attribute_results_seq,
          number_of_outputs_found, NIL, NIL, 0, 'display_output_attributes', status);

  PROCEND jmp$_display_output_attribute;
?? TITLE := '[XDCL] jmp$_display_output_status', EJECT ??

  PROCEDURE [XDCL] jmp$_display_output_status
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{   PROCEDURE (osm$disos) display_output_status, disos (
{     name, names, n: any of
{         key
{           all
{         keyend
{         list of name
{       anyend = all
{     display_option, display_options, do: any of
{         key
{           all
{         keyend
{         list of key
{           (control_family, cf)
{           (control_user, cu)
{           (login_family, lf)
{           (login_user, lu)
{           (output_destination_usage, odu)
{           (output_state, os)
{           (system_file_name, sfn)
{           (system_job_name, sjn)
{           (user_file_name, ufn)
{         keyend
{       anyend = osd$disos_display_options, (output_state system_file_name us..
{ er_file_name)
{     output, o: file = $output
{     status)

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

  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_v2,
          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,
        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_v2,
          element_type_spec: record
            header: clt$type_specification_header,
            qualifier: clt$keyword_type_qualifier,
            keyword_specs: array [1 .. 18] of clt$keyword_specification,
          recend,
        recend,
        default_name: string (25),
        default_value: string (46),
      recend,
      type3: record
        header: clt$type_specification_header,
        default_value: string (7),
      recend,
      type4: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [93, 3, 26, 10, 58, 11, 963],
    clc$command, 9, 4, 0, 0, 0, 0, 4, 'OSM$DISOS'], [
    ['DISPLAY_OPTION                 ',clc$nominal_entry, 2],
    ['DISPLAY_OPTIONS                ',clc$alias_entry, 2],
    ['DO                             ',clc$abbreviation_entry, 2],
    ['N                              ',clc$abbreviation_entry, 1],
    ['NAME                           ',clc$nominal_entry, 1],
    ['NAMES                          ',clc$alias_entry, 1],
    ['O                              ',clc$abbreviation_entry, 3],
    ['OUTPUT                         ',clc$nominal_entry, 3],
    ['STATUS                         ',clc$nominal_entry, 4]],
    [
{ 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, 85, clc$optional_default_parameter, 0, 3],
{ 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, 753, clc$optional_default_parameter, 25, 46
  ],
{ PARAMETER 3
    [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 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, 0, FALSE, FALSE],
        [[1, 0, clc$name_type], [1, osc$max_name_size]]
      ]
    ,
    'all'],
{ PARAMETER 2
    [[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]]
      ],
    689, [[1, 0, clc$list_type], [673, 1, clc$max_list_size, 0, FALSE, FALSE],
        [[1, 0, clc$keyword_type], [18], [
        ['CF                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 1],
        ['CONTROL_FAMILY                 ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
        ['CONTROL_USER                   ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
        ['CU                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 2],
        ['LF                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 3],
        ['LOGIN_FAMILY                   ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
        ['LOGIN_USER                     ', clc$nominal_entry,
  clc$normal_usage_entry, 4],
        ['LU                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 4],
        ['ODU                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 5],
        ['OS                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 6],
        ['OUTPUT_DESTINATION_USAGE       ', clc$nominal_entry,
  clc$normal_usage_entry, 5],
        ['OUTPUT_STATE                   ', clc$nominal_entry,
  clc$normal_usage_entry, 6],
        ['SFN                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 7],
        ['SJN                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 8],
        ['SYSTEM_FILE_NAME               ', clc$nominal_entry,
  clc$normal_usage_entry, 7],
        ['SYSTEM_JOB_NAME                ', clc$nominal_entry,
  clc$normal_usage_entry, 8],
        ['UFN                            ', clc$abbreviation_entry,
  clc$normal_usage_entry, 9],
        ['USER_FILE_NAME                 ', clc$nominal_entry,
  clc$normal_usage_entry, 9]]
        ]
      ]
    ,
    'OSD$DISOS_DISPLAY_OPTIONS',
    '(output_state system_file_name user_file_name)'],
{ PARAMETER 3
    [[1, 0, clc$file_type],
    '$output'],
{ PARAMETER 4
    [[1, 0, clc$status_type]]];

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

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

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

{ This constant represents the maximum number of parameters specified on the
{ command.

    CONST
      maximum_get_keys = 9;

    TYPE
      file_names = record
        system_file_name: jmt$system_supplied_name,
        user_file_name: jmt$user_supplied_name,
      recend;

    VAR
      display_all_outputs: boolean,
      display_option_list: ^clt$data_value,
      files_found: ^array [1 .. * ] of file_names,
      file_index: jmt$output_status_count,
      get_attribute: jmt$attribute_keys,
      get_keys: jmt$attribute_keys_set,
      get_key_count: 0 .. maximum_get_keys,
      get_key_number: 0 .. maximum_get_keys,
      inserted_system_file_name: boolean,
      inserted_user_file_name: boolean,
      key_number: 0 .. maximum_get_keys,
      name_count: 0 .. clc$max_list_size,
      name_found: boolean,
      name_list: ^clt$data_value,
      name_number: 1 .. clc$max_list_size,
      not_found_list_p: ^jmt$name_list,
      not_found_list_size: jmt$output_status_count,
      number_of_outputs_found: jmt$output_status_count,
      result_size: ost$segment_length,
      status_options_p: ^jmt$output_status_options,
      status_results_keys_p: ^jmt$results_keys,
      status_results_p: ^jmt$output_status_results,
      status_results_seq: ^SEQ ( * ),
      status_work_area_p: ^SEQ ( * );

?? NEWTITLE := 'add_to_attributes', EJECT ??

    PROCEDURE [INLINE] add_to_attributes
      (    get_attribute_key: jmt$attribute_keys);

      IF get_attribute_key IN get_keys THEN
        get_key_number := get_key_number + 1;
        status_results_keys_p^ [get_key_number] := get_attribute_key;
      IFEND;
    PROCEND add_to_attributes;
?? OLDTITLE, EJECT ??

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

{  Process NAME parameter.

    display_all_outputs := FALSE;
    PUSH status_options_p: [1 .. 2];
    status_options_p^ [1].key := jmc$name_list;
    status_options_p^ [1].name_list := NIL;
    status_options_p^ [2].key := jmc$continue_request_to_servers;
    status_options_p^ [2].continue_request_to_servers := TRUE;

    IF pvt [p$name].value^.kind = clc$keyword THEN { the only keyword allowed is ALL. }
      display_all_outputs := TRUE;
      status_options_p^ [1].key := jmc$null_attribute;

{ Make a guess at the number of names.  Calls to jmp$get_output_status (found below) will
{ ensure getting 'ALL' jobs.

      name_count := 5;
    ELSE

      name_count := clp$count_list_elements (pvt [p$name].value);
      name_list := pvt [p$name].value;
      PUSH status_options_p^ [1].name_list: [1 .. name_count];
      FOR name_number := 1 TO name_count DO
        jmp$determine_name_kind (name_list^.element_value^.name_value, status_options_p^ [1].
              name_list^ [name_number], status);
        IF NOT status.normal THEN
          RETURN; {----->
        IFEND;

        name_list := name_list^.link;
      FOREND;
    IFEND;

    get_keys := $jmt$attribute_keys_set [];
    get_key_number := 0;
    get_key_count := 0;

    IF pvt [p$display_option].value^.kind = clc$keyword THEN { the only keyword allowed is ALL. }
      get_keys := $jmt$attribute_keys_set [jmc$control_family, jmc$control_user, jmc$login_family,
            jmc$login_user, jmc$output_destination_usage, jmc$output_state, jmc$system_file_name,
            jmc$system_job_name, jmc$user_file_name];
      get_key_count := maximum_get_keys;
    ELSE

      display_option_list := pvt [p$display_option].value;
      WHILE display_option_list <> NIL DO
        jmp$get_attribute_index (display_option_list^.element_value^.keyword_value, get_attribute);
        IF NOT (get_attribute IN get_keys) THEN
          get_keys := get_keys + $jmt$attribute_keys_set [get_attribute];
          get_key_count := get_key_count + 1;
        IFEND;
        display_option_list := display_option_list^.link;
      WHILEND;
    IFEND;

    IF NOT display_all_outputs THEN
      inserted_system_file_name := NOT (jmc$system_file_name IN get_keys);
      IF inserted_system_file_name THEN
        get_keys := get_keys + $jmt$attribute_keys_set [jmc$system_file_name];
        get_key_count := get_key_count + 1;
      IFEND;
      inserted_user_file_name := NOT (jmc$user_file_name IN get_keys);
      IF inserted_user_file_name THEN
        get_keys := get_keys + $jmt$attribute_keys_set [jmc$user_file_name];
        get_key_count := get_key_count + 1;
      IFEND;
    IFEND;

    PUSH status_results_keys_p: [1 .. get_key_count];
    add_to_attributes (jmc$control_family);
    add_to_attributes (jmc$control_user);
    add_to_attributes (jmc$login_family);
    add_to_attributes (jmc$login_user);
    add_to_attributes (jmc$output_destination_usage);
    add_to_attributes (jmc$output_state);
    add_to_attributes (jmc$system_file_name);
    add_to_attributes (jmc$system_job_name);
    add_to_attributes (jmc$user_file_name);

    jmp$get_result_size (name_count * 2, #SEQ (status_results_keys_p^), result_size);
    PUSH status_work_area_p: [[REP result_size OF cell]];
    RESET status_work_area_p;
    jmp$get_output_status (status_options_p, status_results_keys_p, status_work_area_p, status_results_p,
          number_of_outputs_found, status);

    WHILE (NOT status.normal) AND (status.condition = jme$work_area_too_small) DO
      status.normal := TRUE;
      jmp$get_result_size (number_of_outputs_found + 10, #SEQ (status_results_keys_p^), result_size);
      PUSH status_work_area_p: [[REP result_size OF cell]];
      RESET status_work_area_p;
      jmp$get_output_status (status_options_p, status_results_keys_p, status_work_area_p, status_results_p,
            number_of_outputs_found, status);

    WHILEND;
    IF NOT status.normal THEN
      IF status.condition = jme$no_outputs_were_found THEN
        status.normal := TRUE;
        number_of_outputs_found := 0;
      ELSE
        RETURN; {----->
      IFEND;
    IFEND;

{ Build a list of the output names that were not found.

    not_found_list_size := 0;

    IF NOT display_all_outputs THEN
      PUSH not_found_list_p: [1 .. name_count];

      IF number_of_outputs_found > 0 THEN
        PUSH files_found: [1 .. number_of_outputs_found];
        FOR file_index := 1 TO number_of_outputs_found DO
          FOR key_number := 1 TO UPPERBOUND (status_results_p^ [file_index]^) DO
            IF status_results_p^ [file_index]^ [key_number].key = jmc$system_file_name THEN
              files_found^ [file_index].system_file_name := status_results_p^ [file_index]^ [key_number].
                    system_file_name;
              IF inserted_system_file_name THEN
                status_results_p^ [file_index]^ [key_number].key := jmc$null_attribute;
              IFEND;
            ELSEIF status_results_p^ [file_index]^ [key_number].key = jmc$user_file_name THEN
              files_found^ [file_index].user_file_name := status_results_p^ [file_index]^ [key_number].
                    user_file_name;
              IF inserted_user_file_name THEN
                status_results_p^ [file_index]^ [key_number].key := jmc$null_attribute;
              IFEND;
            IFEND;
          FOREND;
        FOREND;
      IFEND;

      FOR name_number := 1 TO name_count DO
        name_found := FALSE;
        IF status_options_p^ [1].name_list^ [name_number].kind = jmc$system_supplied_name THEN
          file_index := 1;
          WHILE NOT name_found AND (file_index <= number_of_outputs_found) DO
            name_found := (status_options_p^ [1].name_list^ [name_number].system_supplied_name =
                  files_found^ [file_index].system_file_name);
            file_index := file_index + 1;
          WHILEND;
        ELSE
          file_index := 1;
          WHILE NOT name_found AND (file_index <= number_of_outputs_found) DO
            name_found := (status_options_p^ [1].name_list^ [name_number].
                  user_supplied_name = files_found^ [file_index].user_file_name);
            file_index := file_index + 1;
          WHILEND;
        IFEND;
        IF NOT name_found THEN
          not_found_list_size := not_found_list_size + 1;
          not_found_list_p^ [not_found_list_size] := status_options_p^ [1].name_list^ [name_number];
        IFEND;
      FOREND;
    IFEND;

    IF not_found_list_size = 0 THEN
      not_found_list_p := NIL;
    IFEND;

    status_results_seq := #SEQ (status_results_p);

{  Process OUTPUT parameter.
    jmp$display_attributes (pvt [p$output].value^.file_value^, status_results_seq, number_of_outputs_found,
          NIL, not_found_list_p, not_found_list_size, 'display_output_status', status);

  PROCEND jmp$_display_output_status;
?? TITLE := '[XDCL] jmp$_job', EJECT ??

  PROCEDURE [XDCL] jmp$_job
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$job) job (
{   user_job_name, jn, job_name, ujn: name = $job(login_user)
{   cpu_time_limit, ctl: any of
{       key
{         system_default, unlimited
{       keyend
{       integer jmc$lowest_cpu_time_limit..jmc$highest_cpu_time_limit
{     anyend = $optional
{   earliest_run_time, ert: date_time = $optional
{   job_abort_disposition, jad: key
{       (restart, r)
{       (terminate, t)
{     keyend = $optional
{   job_class, jc: name = $optional
{   job_deferred_by_user, jdbu: boolean = false
{   job_destination_usage, jdu: key
{       ve, ve_family, ve_local
{     keyend = $optional
{   job_execution_ring, jer: integer osc$sj_ring_1..osc$user_ring_2 = $optional
{   job_qualifier, job_qualifiers, jq: any of
{       key
{         none, system_default
{       keyend
{       list 1..jmc$maximum_job_qualifiers of name
{     anyend = $optional
{   job_recovery_disposition, jrd: key
{       (continue, c)
{       (restart, r)
{       (terminate, t)
{     keyend = $optional
{   latest_run_time, lrt: date_time = $optional
{   login_account, la: name = $job(login_account)
{   login_project, lp: name = $job(login_project)
{   magnetic_tape_limit, mtl: any of
{       key
{         system_default, unlimited, unspecified
{       keyend
{       integer jmc$lowest_magnetic_tape_limit..jmc$highest_magnetic_tape_limit
{     anyend = $optional
{   maximum_working_set, maxws: any of
{       key
{         system_default, unlimited
{       keyend
{       integer jmc$lowest_working_set_size..jmc$highest_working_set_size
{     anyend = $optional
{   operator_family, of: name = $job(operator_family)
{   operator_user, ou: name = $job(operator_user)
{   output_disposition, odi: any of
{       key
{         (discard_all_output, dao)
{         (discard_standard_output, dso)
{         (printer, p)
{         (wait_queue, wt, wq)
{       keyend
{       file
{     anyend = printer
{   sru_limit, sl: any of
{       key
{         system_default, unlimited
{       keyend
{       integer jmc$lowest_sru_limit..jmc$highest_sru_limit
{     anyend = $optional
{   station, s: any of
{       key
{         automatic
{       keyend
{       name
{     anyend = $job(station)
{   substitution_mark, sm: any of
{       key
{         none
{       keyend
{       string 1
{     anyend = none
{   user_information, ui: string 0..jmc$user_information_size = $job(user_information)
{   system_job_name, sjn: (VAR) any of
{       string
{       name
{     anyend = $optional
{   status)

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

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 50] of clt$pdt_parameter_name,
      parameters: array [1 .. 24] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (16),
      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$date_time_type_qualifier,
      recend,
      type4: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 4] of clt$keyword_specification,
      recend,
      type5: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type6: record
        header: clt$type_specification_header,
        default_value: string (5),
      recend,
      type7: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 3] of clt$keyword_specification,
      recend,
      type8: record
        header: clt$type_specification_header,
        qualifier: clt$integer_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 .. 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_v2,
          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$keyword_type_qualifier,
        keyword_specs: array [1 .. 6] of clt$keyword_specification,
      recend,
      type11: record
        header: clt$type_specification_header,
        qualifier: clt$date_time_type_qualifier,
      recend,
      type12: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (19),
      recend,
      type13: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (19),
      recend,
      type14: 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$integer_type_qualifier,
        recend,
      recend,
      type15: 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,
      type16: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (21),
      recend,
      type17: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (19),
      recend,
      type18: 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 .. 9] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
        recend,
        default_value: string (7),
      recend,
      type19: 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,
      type20: 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 (13),
      recend,
      type21: 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,
        default_value: string (4),
      recend,
      type22: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
        default_value: string (22),
      recend,
      type23: 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$string_type_qualifier,
        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,
      type24: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [92, 1, 9, 14, 49, 8, 215],
    clc$command, 50, 24, 0, 0, 0, 1, 24, 'OSM$JOB'], [
    ['CPU_TIME_LIMIT                 ',clc$nominal_entry, 2],
    ['CTL                            ',clc$abbreviation_entry, 2],
    ['EARLIEST_RUN_TIME              ',clc$nominal_entry, 3],
    ['ERT                            ',clc$abbreviation_entry, 3],
    ['JAD                            ',clc$abbreviation_entry, 4],
    ['JC                             ',clc$abbreviation_entry, 5],
    ['JDBU                           ',clc$abbreviation_entry, 6],
    ['JDU                            ',clc$abbreviation_entry, 7],
    ['JER                            ',clc$abbreviation_entry, 8],
    ['JN                             ',clc$alias_entry, 1],
    ['JOB_ABORT_DISPOSITION          ',clc$nominal_entry, 4],
    ['JOB_CLASS                      ',clc$nominal_entry, 5],
    ['JOB_DEFERRED_BY_USER           ',clc$nominal_entry, 6],
    ['JOB_DESTINATION_USAGE          ',clc$nominal_entry, 7],
    ['JOB_EXECUTION_RING             ',clc$nominal_entry, 8],
    ['JOB_NAME                       ',clc$alias_entry, 1],
    ['JOB_QUALIFIER                  ',clc$nominal_entry, 9],
    ['JOB_QUALIFIERS                 ',clc$alias_entry, 9],
    ['JOB_RECOVERY_DISPOSITION       ',clc$nominal_entry, 10],
    ['JQ                             ',clc$abbreviation_entry, 9],
    ['JRD                            ',clc$abbreviation_entry, 10],
    ['LA                             ',clc$abbreviation_entry, 12],
    ['LATEST_RUN_TIME                ',clc$nominal_entry, 11],
    ['LOGIN_ACCOUNT                  ',clc$nominal_entry, 12],
    ['LOGIN_PROJECT                  ',clc$nominal_entry, 13],
    ['LP                             ',clc$abbreviation_entry, 13],
    ['LRT                            ',clc$abbreviation_entry, 11],
    ['MAGNETIC_TAPE_LIMIT            ',clc$nominal_entry, 14],
    ['MAXIMUM_WORKING_SET            ',clc$nominal_entry, 15],
    ['MAXWS                          ',clc$abbreviation_entry, 15],
    ['MTL                            ',clc$abbreviation_entry, 14],
    ['ODI                            ',clc$abbreviation_entry, 18],
    ['OF                             ',clc$abbreviation_entry, 16],
    ['OPERATOR_FAMILY                ',clc$nominal_entry, 16],
    ['OPERATOR_USER                  ',clc$nominal_entry, 17],
    ['OU                             ',clc$abbreviation_entry, 17],
    ['OUTPUT_DISPOSITION             ',clc$nominal_entry, 18],
    ['S                              ',clc$abbreviation_entry, 20],
    ['SJN                            ',clc$abbreviation_entry, 23],
    ['SL                             ',clc$abbreviation_entry, 19],
    ['SM                             ',clc$abbreviation_entry, 21],
    ['SRU_LIMIT                      ',clc$nominal_entry, 19],
    ['STATION                        ',clc$nominal_entry, 20],
    ['STATUS                         ',clc$nominal_entry, 24],
    ['SUBSTITUTION_MARK              ',clc$nominal_entry, 21],
    ['SYSTEM_JOB_NAME                ',clc$nominal_entry, 23],
    ['UI                             ',clc$abbreviation_entry, 22],
    ['UJN                            ',clc$abbreviation_entry, 1],
    ['USER_INFORMATION               ',clc$nominal_entry, 22],
    ['USER_JOB_NAME                  ',clc$nominal_entry, 1]],
    [
{ PARAMETER 1
    [50, 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, 16],
{ 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, 121,
  clc$optional_parameter, 0, 0],
{ PARAMETER 3
    [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_parameter, 0
  , 0],
{ PARAMETER 4
    [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, 155,
  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$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 5, clc$optional_parameter, 0
  , 0],
{ PARAMETER 6
    [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, 3,
  clc$optional_default_parameter, 0, 5],
{ PARAMETER 7
    [14, 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, 118,
  clc$optional_parameter, 0, 0],
{ PARAMETER 8
    [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, 20, 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$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 122,
  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$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 229,
  clc$optional_parameter, 0, 0],
{ PARAMETER 11
    [23, 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_parameter, 0
  , 0],
{ PARAMETER 12
    [24, 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, 19],
{ PARAMETER 13
    [25, 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, 19],
{ PARAMETER 14
    [28, 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, 158,
  clc$optional_parameter, 0, 0],
{ PARAMETER 15
    [29, 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 16
    [34, 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, 21],
{ PARAMETER 17
    [35, 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, 19],
{ PARAMETER 18
    [37, 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, 363,
  clc$optional_default_parameter, 0, 7],
{ PARAMETER 19
    [42, 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 20
    [43, 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, 13],
{ PARAMETER 21
    [45, 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_default_parameter, 0, 4],
{ PARAMETER 22
    [49, 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, 8,
  clc$optional_default_parameter, 0, 22],
{ PARAMETER 23
    [46, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 33,
  clc$optional_parameter, 0, 0],
{ PARAMETER 24
    [44, 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],
    '$job(login_user)'],
{ PARAMETER 2
    [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type],
    FALSE, 2],
    81, [[1, 0, clc$keyword_type], [2], [
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry, clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry, clc$normal_usage_entry, 2]]
      ],
    20, [[1, 0, clc$integer_type], [jmc$lowest_cpu_time_limit, jmc$highest_cpu_time_limit, 10]]
    ],
{ PARAMETER 3
    [[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$keyword_type], [4], [
    ['R                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['RESTART                        ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['T                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['TERMINATE                      ', clc$nominal_entry, clc$normal_usage_entry, 2]]
    ],
{ PARAMETER 5
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 6
    [[1, 0, clc$boolean_type],
    'false'],
{ PARAMETER 7
    [[1, 0, clc$keyword_type], [3], [
    ['VE                             ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['VE_FAMILY                      ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['VE_LOCAL                       ', clc$nominal_entry, clc$normal_usage_entry, 3]]
    ],
{ PARAMETER 8
    [[1, 0, clc$integer_type], [osc$sj_ring_1, osc$user_ring_2, 10]],
{ PARAMETER 9
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type],
    FALSE, 2],
    81, [[1, 0, clc$keyword_type], [2], [
      ['NONE                           ', clc$nominal_entry, clc$normal_usage_entry, 1],
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry, clc$normal_usage_entry, 2]]
      ],
    21, [[1, 0, clc$list_type], [5, 1, jmc$maximum_job_qualifiers, 0, FALSE, FALSE],
        [[1, 0, clc$name_type], [1, osc$max_name_size]]
      ]
    ],
{ PARAMETER 10
    [[1, 0, clc$keyword_type], [6], [
    ['C                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['CONTINUE                       ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['R                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['RESTART                        ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['T                              ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['TERMINATE                      ', clc$nominal_entry, clc$normal_usage_entry, 3]]
    ],
{ PARAMETER 11
    [[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 12
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    '$job(login_account)'],
{ PARAMETER 13
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    '$job(login_project)'],
{ PARAMETER 14
    [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type],
    FALSE, 2],
    118, [[1, 0, clc$keyword_type], [3], [
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry, clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry, clc$normal_usage_entry, 2],
      ['UNSPECIFIED                    ', clc$nominal_entry, clc$normal_usage_entry, 3]]
      ],
    20, [[1, 0, clc$integer_type], [jmc$lowest_magnetic_tape_limit, jmc$highest_magnetic_tape_limit, 10]]
    ],
{ PARAMETER 15
    [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type],
    FALSE, 2],
    81, [[1, 0, clc$keyword_type], [2], [
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry, clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry, clc$normal_usage_entry, 2]]
      ],
    20, [[1, 0, clc$integer_type], [jmc$lowest_working_set_size, jmc$highest_working_set_size, 10]]
    ],
{ PARAMETER 16
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    '$job(operator_family)'],
{ PARAMETER 17
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    '$job(operator_user)'],
{ PARAMETER 18
    [[1, 0, clc$union_type], [[clc$file_type, clc$keyword_type],
    FALSE, 2],
    340, [[1, 0, clc$keyword_type], [9], [
      ['DAO                            ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
      ['DISCARD_ALL_OUTPUT             ', clc$nominal_entry, clc$normal_usage_entry, 1],
      ['DISCARD_STANDARD_OUTPUT        ', clc$nominal_entry, clc$normal_usage_entry, 2],
      ['DSO                            ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
      ['P                              ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
      ['PRINTER                        ', clc$nominal_entry, clc$normal_usage_entry, 3],
      ['WAIT_QUEUE                     ', clc$nominal_entry, clc$normal_usage_entry, 4],
      ['WQ                             ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
      ['WT                             ', clc$alias_entry, clc$normal_usage_entry, 4]]
      ],
    3, [[1, 0, clc$file_type]]
    ,
    'printer'],
{ PARAMETER 19
    [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type],
    FALSE, 2],
    81, [[1, 0, clc$keyword_type], [2], [
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry, clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry, clc$normal_usage_entry, 2]]
      ],
    20, [[1, 0, clc$integer_type], [jmc$lowest_sru_limit, jmc$highest_sru_limit, 10]]
    ],
{ PARAMETER 20
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['AUTOMATIC                      ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ,
    '$job(station)'],
{ PARAMETER 21
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$string_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['NONE                           ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    8, [[1, 0, clc$string_type], [1, 1, FALSE]]
    ,
    'none'],
{ PARAMETER 22
    [[1, 0, clc$string_type], [0, jmc$user_information_size, FALSE],
    '$job(user_information)'],
{ PARAMETER 23
    [[1, 0, clc$union_type], [[clc$name_type, clc$string_type],
    TRUE, 2],
    8, [[1, 0, clc$string_type], [0, clc$max_string_size, FALSE]],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 24
    [[1, 0, clc$status_type]]];

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

    CONST
      p$user_job_name = 1,
      p$cpu_time_limit = 2,
      p$earliest_run_time = 3,
      p$job_abort_disposition = 4,
      p$job_class = 5,
      p$job_deferred_by_user = 6,
      p$job_destination_usage = 7,
      p$job_execution_ring = 8,
      p$job_qualifier = 9,
      p$job_recovery_disposition = 10,
      p$latest_run_time = 11,
      p$login_account = 12,
      p$login_project = 13,
      p$magnetic_tape_limit = 14,
      p$maximum_working_set = 15,
      p$operator_family = 16,
      p$operator_user = 17,
      p$output_disposition = 18,
      p$sru_limit = 19,
      p$station = 20,
      p$substitution_mark = 21,
      p$user_information = 22,
      p$system_job_name = 23,
      p$status = 24;

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

?? NEWTITLE := 'abort_handler', EJECT ??

    PROCEDURE abort_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;

      fsp$close_file (file_id, ignore_status);
      IF return_file THEN
        amp$return (unique_file_name, ignore_status);
        return_file := FALSE;
      IFEND;

    PROCEND abort_handler;
?? OLDTITLE, EJECT ??

    CONST
      max_submission_options = p$user_information,
      max_submission_option_index = max_submission_options + submission_option_offset,
      submission_option_offset = 3;

    VAR
      access_mode: clt$data_access_mode,
      block: ^clt$block,
      class: clt$variable_class,
      default_job_attributes_p: ^jmt$default_attribute_results,
      evaluation_method: clt$expression_eval_method,
      file_attachment: array [1 .. 2] of fst$attachment_option,
      file_id: amt$file_identifier,
      ignore_byte_address: amt$file_byte_address,
      ignore_can_be_echoed: boolean,
      ignore_ready_index: integer,
      index: p$user_job_name .. p$user_information,
      interpreter_mode: clt$interpreter_modes,
      job_qualifier_count: 0 .. clc$max_list_size,
      job_qualifier_index: 1 .. clc$max_list_size,
      job_qualifier_options: ^clt$data_value,
      job_submission_options: ^jmt$job_submission_options,
      line_header: ^clt$input_data_line_header,
      line_text: ^clt$command_line,
      local_status: ost$status,
      number_of_submission_options: 0 .. max_submission_options,
      return_file: boolean,
      search_mode: clt$command_search_modes,
      statement_area: ^clt$collect_statement_area,
      submission_option_index: submission_option_offset .. max_submission_option_index,
      substitution_mark: clt$substitution_mark,
      system_job_name: clt$data_value,
      system_supplied_job_name: jmt$system_supplied_name,
      type_information: clt$type_information,
      type_specification: ^clt$type_specification,
      unique_file_name: ost$name,
      user_id: ost$user_identification,
      value: ^clt$data_value,
      wait_list_p: ^ost$i_wait_list,
      work_area_p: ^^clt$work_area;


    status.normal := TRUE;
    substitution_mark.specified := FALSE;
    clp$get_interpreter_mode (interpreter_mode);

    IF interpreter_mode <> clc$skip_mode THEN
      clp$find_current_block (block);
      clp$get_command_search_mode (search_mode);
      IF (search_mode = clc$exclusive_command_search) AND block^.use_command_search_mode THEN
        osp$set_status_abnormal ('CL', cle$not_allowed_in_exclusive, 'JOB/JOBEND', status);
        RETURN; {----->
      IFEND;

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

      pmp$get_user_identification (user_id, status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

{  Initialize submission_option_index to account for the first three elements of the
{  job_submission_options array.  These elements are always required to define the user
{  information regarding the job.

      submission_option_index := submission_option_offset;
      number_of_submission_options := 0;

      FOR index := p$user_job_name TO p$user_information DO
        IF (index <> p$substitution_mark) THEN
          CASE pvt [index].passing_method OF
          = clc$pass_by_value =
            IF pvt [index].value <> NIL THEN
              number_of_submission_options := number_of_submission_options + 1;
            IFEND;
          = clc$pass_by_reference =
            IF pvt [index].variable <> NIL THEN
              number_of_submission_options := number_of_submission_options + 1;
            IFEND;
          CASEND;
        IFEND;
      FOREND;

      PUSH job_submission_options: [1 .. submission_option_index + number_of_submission_options];
      job_submission_options^ [1].key := jmc$login_command_supplied;
      job_submission_options^ [1].login_command_supplied := FALSE;
      job_submission_options^ [2].key := jmc$login_user;
      job_submission_options^ [2].login_user := user_id.user;
      job_submission_options^ [3].key := jmc$login_family;
      job_submission_options^ [3].login_family := user_id.family;

{  Process LOGIN_ACCOUNT parameter.

      submission_option_index := submission_option_index + 1;
      job_submission_options^ [submission_option_index].key := jmc$login_account;
      job_submission_options^ [submission_option_index].login_account :=
            pvt [p$login_account].value^.name_value;

{  Process LOGIN_PROJECT parameter.

      submission_option_index := submission_option_index + 1;
      job_submission_options^ [submission_option_index].key := jmc$login_project;
      job_submission_options^ [submission_option_index].login_project :=
            pvt [p$login_project].value^.name_value;

{  Process CPU_TIME_LIMIT parameter.

      IF pvt [p$cpu_time_limit].specified THEN
        submission_option_index := submission_option_index + 1;
        job_submission_options^ [submission_option_index].key := jmc$cpu_time_limit;
        IF pvt [p$cpu_time_limit].value^.kind = clc$integer THEN
          job_submission_options^ [submission_option_index].cpu_time_limit :=
                pvt [p$cpu_time_limit].value^.integer_value.value;
        ELSE { clc$keyword.
          IF pvt [p$cpu_time_limit].value^.keyword_value = 'SYSTEM_DEFAULT' THEN
            job_submission_options^ [submission_option_index].cpu_time_limit :=
                  jmc$system_default_cpu_time_lim;
          ELSE { IF value.name.value = 'UNLIMITED' THEN
            job_submission_options^ [submission_option_index].cpu_time_limit := jmc$unlimited_cpu_time_limit;
          IFEND;
        IFEND;
      IFEND;

{  Process EARLIEST_RUN_TIME parameter.

      IF pvt [p$earliest_run_time].specified THEN
        submission_option_index := submission_option_index + 1;
        job_submission_options^ [submission_option_index].key := jmc$earliest_run_time;
        job_submission_options^ [submission_option_index].earliest_run_time.specified := TRUE;
        job_submission_options^ [submission_option_index].earliest_run_time.date_time :=
              pvt [p$earliest_run_time].value^.date_time_value.value;
      IFEND;

{  Process JOB_ABORT_DISPOSITION parameter.

      IF pvt [p$job_abort_disposition].specified THEN
        submission_option_index := submission_option_index + 1;
        job_submission_options^ [submission_option_index].key := jmc$job_abort_disposition;
        IF pvt [p$job_abort_disposition].value^.keyword_value = 'RESTART' THEN
          job_submission_options^ [submission_option_index].job_abort_disposition := jmc$restart_on_abort;
        ELSE { TERMINATE is the only other choice. }
          job_submission_options^ [submission_option_index].job_abort_disposition := jmc$terminate_on_abort;
        IFEND;
      IFEND;

{ Process JOB_CLASS parameter.

      IF pvt [p$job_class].specified THEN
        submission_option_index := submission_option_index + 1;
        job_submission_options^ [submission_option_index].key := jmc$job_class;
        job_submission_options^ [submission_option_index].job_class := pvt [p$job_class].value^.name_value;
      IFEND;

{  Process JOB_DEFERRED_BY_USER parameter.

      submission_option_index := submission_option_index + 1;
      job_submission_options^ [submission_option_index].key := jmc$job_deferred_by_user;
      job_submission_options^ [submission_option_index].job_deferred_by_user :=
            pvt [p$job_deferred_by_user].value^.boolean_value.value;

{ Process JOB_DESTINATION_USAGE parameter.

      IF pvt [p$job_destination_usage].specified THEN
        submission_option_index := submission_option_index + 1;
        job_submission_options^ [submission_option_index].key := jmc$job_destination_usage;
        job_submission_options^ [submission_option_index].job_destination_usage :=
              pvt [p$job_destination_usage].value^.keyword_value;
      IFEND;

{  Process JOB_EXECUTION_RING parameter.

      IF pvt [p$job_execution_ring].specified THEN
        submission_option_index := submission_option_index + 1;
        job_submission_options^ [submission_option_index].key := jmc$job_execution_ring;
        job_submission_options^ [submission_option_index].job_execution_ring :=
              pvt [p$job_execution_ring].value^.integer_value.value;
      IFEND;

{  Process JOB_QUALIFIER parameter.

      IF pvt [p$job_qualifier].specified THEN
        submission_option_index := submission_option_index + 1;
        job_submission_options^ [submission_option_index].key := jmc$job_qualifier_list;
        IF pvt [p$job_qualifier].value^.kind = clc$keyword THEN
          IF pvt [p$job_qualifier].value^.keyword_value = 'NONE' THEN
            PUSH job_submission_options^ [submission_option_index].job_qualifier_list: [1 .. 1];
            job_submission_options^ [submission_option_index].job_qualifier_list^ [1] := osc$null_name;
          ELSE { keyword_value = 'SYSTEM_DEFAULT'}
            PUSH default_job_attributes_p: [1 .. 1];
            default_job_attributes_p^ [1].key := jmc$job_qualifier_list;
            PUSH job_submission_options^ [submission_option_index].job_qualifier_list:
                  [1 .. jmc$maximum_job_qualifiers];
            default_job_attributes_p^ [1].job_qualifier_list :=
                  job_submission_options^ [submission_option_index].job_qualifier_list;
            jmp$get_attribute_defaults (jmc$batch, default_job_attributes_p, status);
            IF NOT status.normal THEN
              RETURN; {----->
            IFEND;
          IFEND;
        ELSE
          job_qualifier_count := clp$count_list_elements (pvt [p$job_qualifier].value);
          PUSH job_submission_options^ [submission_option_index].job_qualifier_list:
                [1 .. job_qualifier_count];
          job_qualifier_options := pvt [p$job_qualifier].value;
          FOR job_qualifier_index := 1 TO job_qualifier_count DO
            job_submission_options^ [submission_option_index].job_qualifier_list^ [job_qualifier_index] :=
                  job_qualifier_options^.element_value^.name_value;
            job_qualifier_options := job_qualifier_options^.link;
          FOREND;
        IFEND;
      IFEND;

{  Process JOB_RECOVERY_DISPOSITION parameter.

      IF pvt [p$job_recovery_disposition].specified THEN
        submission_option_index := submission_option_index + 1;
        job_submission_options^ [submission_option_index].key := jmc$job_recovery_disposition;
        IF pvt [p$job_recovery_disposition].value^.keyword_value = 'RESTART' THEN
          job_submission_options^ [submission_option_index].job_recovery_disposition :=
                jmc$restart_on_recovery;
        ELSEIF pvt [p$job_recovery_disposition].value^.keyword_value = 'CONTINUE' THEN
          job_submission_options^ [submission_option_index].job_recovery_disposition :=
                jmc$continue_on_recovery;
        ELSE { pvt [p$job_recovery_disposition].value^.keyword_value = 'TERMINATE'.
          job_submission_options^ [submission_option_index].job_recovery_disposition :=
                jmc$terminate_on_recovery;
        IFEND;
      IFEND;

{  Process LATEST_RUN_TIME parameter.

      IF pvt [p$latest_run_time].specified THEN
        submission_option_index := submission_option_index + 1;
        job_submission_options^ [submission_option_index].key := jmc$latest_run_time;
        job_submission_options^ [submission_option_index].latest_run_time.specified := TRUE;
        job_submission_options^ [submission_option_index].latest_run_time.date_time :=
              pvt [p$latest_run_time].value^.date_time_value.value;
      IFEND;

{  Process MAGNETIC_TAPE_LIMIT parameter.

      IF pvt [p$magnetic_tape_limit].specified THEN
        submission_option_index := submission_option_index + 1;
        job_submission_options^ [submission_option_index].key := jmc$magnetic_tape_limit;
        IF pvt [p$magnetic_tape_limit].value^.kind = clc$integer THEN
          job_submission_options^ [submission_option_index].magnetic_tape_limit :=
                pvt [p$magnetic_tape_limit].value^.integer_value.value;
        ELSE
          IF pvt [p$magnetic_tape_limit].value^.keyword_value = 'UNSPECIFIED' THEN
            job_submission_options^ [submission_option_index].magnetic_tape_limit :=
                  jmc$unspecified_mag_tape_limit;
          ELSEIF pvt [p$magnetic_tape_limit].value^.keyword_value = 'SYSTEM_DEFAULT' THEN
            job_submission_options^ [submission_option_index].magnetic_tape_limit :=
                  jmc$system_default_mag_tape_lim;
          ELSE { pvt [p$magnetic_tape_limit].value^.keyword_value = 'UNLIMITED'.
            job_submission_options^ [submission_option_index].magnetic_tape_limit :=
                  jmc$unlimited_mag_tape_limit;
          IFEND;
        IFEND;
      IFEND;

{  Process MAXIMUM_WORKING_SET parameter.

      IF pvt [p$maximum_working_set].specified THEN
        submission_option_index := submission_option_index + 1;
        job_submission_options^ [submission_option_index].key := jmc$maximum_working_set;
        IF pvt [p$maximum_working_set].value^.kind = clc$integer THEN
          job_submission_options^ [submission_option_index].maximum_working_set :=
                pvt [p$maximum_working_set].value^.integer_value.value;
        ELSE
          IF pvt [p$maximum_working_set].value^.keyword_value = 'SYSTEM_DEFAULT' THEN
            job_submission_options^ [submission_option_index].maximum_working_set :=
                  jmc$system_default_work_set_siz;
          ELSE { pvt [p$maximum_working_set].value^.keyword_value = 'UNLIMITED'.
            job_submission_options^ [submission_option_index].maximum_working_set :=
                  jmc$unlimited_working_set_size;
          IFEND;
        IFEND;
      IFEND;

{  Process OPERATOR_FAMILY parameter.

      submission_option_index := submission_option_index + 1;
      job_submission_options^ [submission_option_index].key := jmc$output_destination_family;
      job_submission_options^ [submission_option_index].output_destination_family :=
            pvt [p$operator_family].value^.name_value;

{  Process OPERATOR_USER parameter.

      submission_option_index := submission_option_index + 1;
      job_submission_options^ [submission_option_index].key := jmc$station_operator;
      job_submission_options^ [submission_option_index].station_operator :=
            pvt [p$operator_user].value^.name_value;

{  Process OUTPUT_DISPOSITION parameter.

      submission_option_index := submission_option_index + 1;
      job_submission_options^ [submission_option_index].key := jmc$output_disposition;
      IF pvt [p$output_disposition].value^.kind = clc$file THEN
        job_submission_options^ [submission_option_index].output_disposition.key := jmc$standard_output_path;
        PUSH job_submission_options^ [submission_option_index].output_disposition.standard_output_path;
        job_submission_options^ [submission_option_index].output_disposition.standard_output_path^ :=
              pvt [p$output_disposition].value^.file_value^;
      ELSE
        IF pvt [p$output_disposition].value^.keyword_value = 'PRINTER' THEN
          job_submission_options^ [submission_option_index].output_disposition.key :=
                jmc$normal_output_disposition;
        ELSEIF pvt [p$output_disposition].value^.keyword_value = 'DISCARD_ALL_OUTPUT' THEN
          job_submission_options^ [submission_option_index].output_disposition.key := jmc$discard_all_output;
        ELSEIF pvt [p$output_disposition].value^.keyword_value = 'DISCARD_STANDARD_OUTPUT' THEN
          job_submission_options^ [submission_option_index].output_disposition.key :=
                jmc$discard_standard_output;
        ELSE { pvt [p$output_disposition].value^.keyword_value = 'WAIT_QUEUE'.
          job_submission_options^ [submission_option_index].output_disposition.key := jmc$wait_queue_path;
          job_submission_options^ [submission_option_index].output_disposition.wait_queue_path := NIL;
        IFEND;
      IFEND;

{  Process SRU_LIMIT parameter.

      IF pvt [p$sru_limit].specified THEN
        submission_option_index := submission_option_index + 1;
        job_submission_options^ [submission_option_index].key := jmc$sru_limit;
        IF pvt [p$sru_limit].value^.kind = clc$integer THEN
          job_submission_options^ [submission_option_index].sru_limit :=
                pvt [p$sru_limit].value^.integer_value.value;
        ELSE
          IF pvt [p$sru_limit].value^.keyword_value = 'SYSTEM_DEFAULT' THEN
            job_submission_options^ [submission_option_index].sru_limit := jmc$system_default_sru_limit;
          ELSE { pvt [p$sru_limit].value^.keyword_value = 'UNLIMITED'.
            job_submission_options^ [submission_option_index].sru_limit := jmc$unlimited_sru_limit;
          IFEND;
        IFEND;
      IFEND;

{  Process STATION parameter.

      submission_option_index := submission_option_index + 1;
      job_submission_options^ [submission_option_index].key := jmc$station;
      IF pvt [p$station].value^.kind = clc$keyword THEN
        job_submission_options^ [submission_option_index].station := pvt [p$station].value^.keyword_value;
      ELSE
        job_submission_options^ [submission_option_index].station := pvt [p$station].value^.name_value;
      IFEND;

{  Process SUBSTITUTION_MARK parameter.

      IF pvt [p$substitution_mark].value^.kind = clc$string THEN
        IF clv$non_substitution_mark [pvt [p$substitution_mark].value^.string_value^ (1)] THEN
          osp$set_status_abnormal ('CL', cle$improper_substitution_mark,
                pvt [p$substitution_mark].value^.string_value^ (1), status);
          RETURN; {----->
        ELSE
          substitution_mark.specified := TRUE;
          substitution_mark.value := pvt [p$substitution_mark].value^.string_value^ (1);
        IFEND;
      IFEND;

{  Process USER_INFORMATION parameter.

      submission_option_index := submission_option_index + 1;
      job_submission_options^ [submission_option_index].key := jmc$user_information;
      PUSH job_submission_options^ [submission_option_index].user_information;
      job_submission_options^ [submission_option_index].user_information^ :=
            pvt [p$user_information].value^.string_value^;

{  Process USER_JOB_NAME parameter.

      submission_option_index := submission_option_index + 1;
      job_submission_options^ [submission_option_index].key := jmc$user_job_name;
      job_submission_options^ [submission_option_index].user_job_name :=
            pvt [p$user_job_name].value^.name_value;
    IFEND;

    clp$prepare_delayed_block (interpreter_mode, 'JOB', 'JOBEND', 'job', '', substitution_mark,
          statement_area, ignore_can_be_echoed, status);
    IF (NOT status.normal) OR (interpreter_mode <> clc$interpret_mode) THEN
      RETURN; {----->
    IFEND;

    IF statement_area = NIL THEN
      osp$set_status_abnormal ('CL', cle$unexpected_call_to, 'JOB statement', status);
      RETURN; {----->
    IFEND;
    pmp$get_unique_name (unique_file_name, status);
    IF NOT status.normal THEN
      RETURN; {----->
    IFEND;

  /write_job_file/
    BEGIN
      file_id := amv$nil_file_identifier;
      #SPOIL (file_id);
      return_file := FALSE;
      #SPOIL (return_file);
      osp$establish_block_exit_hndlr (^abort_handler);

      file_attachment [1].selector := fsc$access_and_share_modes;
      file_attachment [1].access_modes.selector := fsc$specific_access_modes;
      file_attachment [1].access_modes.value := $fst$file_access_options [fsc$append, fsc$shorten];
      file_attachment [1].share_modes.selector := fsc$specific_share_modes;
      file_attachment [1].share_modes.value := $fst$file_access_options [];
      file_attachment [2].selector := fsc$open_share_modes;
      file_attachment [2].open_share_modes := $fst$file_access_options [];

      fsp$open_file (unique_file_name, amc$record, ^file_attachment, NIL, NIL, NIL, NIL, file_id, status);
      IF NOT status.normal THEN
        EXIT /write_job_file/; {----->
      IFEND;
      return_file := TRUE;
      #SPOIL (return_file);

      RESET statement_area;
      NEXT line_header IN statement_area;

    /write_lines/
      WHILE line_header <> NIL DO
        NEXT line_text: [line_header^.line_size] IN statement_area;
        IF line_text = NIL THEN
          osp$set_status_abnormal ('CL', cle$unexpected_call_to, 'jmp$_job', status);
          EXIT /write_lines/; {----->
        IFEND;
        amp$put_next (file_id, line_text, line_header^.line_size, ignore_byte_address, status);
        IF NOT status.normal THEN
          EXIT /write_lines/; {----->
        IFEND;
        NEXT line_header IN statement_area;
      WHILEND /write_lines/;

      fsp$close_file (file_id, local_status);

{ If status is not normal from /write_lines/ block, report that status rather
{ than the status
{ from fsp$close_file.

      IF (NOT local_status.normal) AND status.normal THEN
        status := local_status;
      IFEND;
      IF NOT status.normal THEN
        EXIT /write_job_file/; {----->
      IFEND;

      REPEAT
        jmp$submit_job (unique_file_name, job_submission_options, system_supplied_job_name, status);
        IF (NOT status.normal) AND (status.condition = jme$no_space_for_file) THEN
          jmp$update_display_message (status);

{ Wait for a while before retrying to give the system a chance to get some space back.

          PUSH wait_list_p: [1 .. 1];
          wait_list_p^ [1].activity := osc$i_await_time;
          wait_list_p^ [1].milliseconds := no_queue_space_wait_time;
          osp$i_await_activity_completion (wait_list_p^, ignore_ready_index, {ignore} local_status);
          local_status.normal := TRUE;
        IFEND;
      UNTIL status.normal OR (status.condition <> jme$no_space_for_file);
      IF NOT status.normal THEN
        EXIT /write_job_file/; {----->
      IFEND;

{  Process SYSTEM_JOB_NAME parameter.

      IF pvt [p$system_job_name].specified THEN
        clp$get_work_area (#RING (^work_area_p), work_area_p, status);
        IF NOT status.normal THEN
          EXIT /write_job_file/; {----->
        IFEND;

        clp$get_variable (pvt [p$system_job_name].variable^, work_area_p^, class, access_mode,
              evaluation_method, type_specification, value, status);
        IF NOT status.normal THEN
          EXIT /write_job_file/; {----->
        IFEND;

        clp$get_type_information (type_specification, work_area_p^, type_information, status);
        IF NOT status.normal THEN
          EXIT /write_job_file/; {----->
        IFEND;

        CASE type_information.kind OF
        = clc$name_type =
          system_job_name.kind := clc$name;
          system_job_name.name_value := system_supplied_job_name;
        ELSE { = clc$string_type =
          system_job_name.kind := clc$string;
          PUSH system_job_name.string_value: [jmc$system_supplied_name_size];
          system_job_name.string_value^ := system_supplied_job_name;
        CASEND;

        clp$change_variable (pvt [p$system_job_name].variable^, ^system_job_name, status);

      IFEND;

    END /write_job_file/;

    IF return_file THEN
      amp$return (unique_file_name, local_status);
      return_file := FALSE;
      #SPOIL (return_file);
    IFEND;
    osp$disestablish_cond_handler;

  PROCEND jmp$_job;
?? TITLE := '[XDCL] jmp$_print_file', EJECT ??

  PROCEDURE [XDCL] jmp$_print_file
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{  PROCEDURE (osm$prif) print_file, print_files, prif (
{    file, files, f: list of file = $required
{    comment_banner, cb: string 0..jmc$output_comment_banner_size = $job(comm..
{ ent_banner)
{    copies, c: integer 1..jmc$output_copy_count_max = $job(copies)
{    data_mode, dm: key
{        (coded, c)
{        (transparent, t)
{      keyend = coded
{    device, d: any of
{        key
{          automatic
{        keyend
{        name
{      anyend = $job(device)
{    device_type, dt: key
{       printer, plotter, punch
{      keyend = $optional
{    earliest_print_time, ept: any of
{        key
{          none
{        keyend
{        date_time
{      anyend = $job(earliest_print_time)
{    external_characteristics, ec: any of
{        key
{          normal
{        keyend
{        string 0..jmc$ext_characteristics_size
{      anyend = $job(external_characteristics)
{    forms_code, fc: any of
{        key
{          normal
{        keyend
{        string 0..jmc$forms_code_size
{      anyend = $job(forms_code)
{    latest_print_time, lpt: any of
{        key
{          none
{        keyend
{        date_time
{      anyend = $job(latest_print_time)
{    operator_family, destination_family, df, of: name = $job(operator_family)
{    operator_user, so, station_operator, ou: name = $job(operator_user)
{    output_class, oc: key
{        normal
{      keyend = $job(output_class)
{    output_deferred_by_user, odbu: boolean = $job(output_deferred_by_user)
{    output_destination, ode: any of
{        string 0..osc$max_name_size
{        name
{      anyend = $job(output_destination)
{    output_destination_usage, destination_usage, du, odu: any of
{        key
{          dual_state, ntf, private, public, qtf
{        keyend
{        name
{      anyend = $optional
{    output_disposition, odi: key
{        (local, l)
{        (printer, p)
{        (wait_queue, wq)
{      keyend = $optional
{    output_priority, op: key
{        low, medium, high
{      keyend = $job(output_priority)
{    purge_delay, pd: any of
{        key
{          none
{        keyend
{        time_increment
{      anyend = $optional
{    remote_host_directive, dsrp, dual_state_route_parameters, rhd: string 0..
{ ..jmc$remote_host_directive_size =
{      $job(remote_host_directive)
{    routing_banner, rb: string 0..jmc$output_routing_banner_size = $job(rout..
{ ing_banner)
{    station, s: any of
{        key
{          automatic
{        keyend
{        name
{      anyend = $job(station)
{    user_file_name, user_file_names, ufn: list of name = $optional
{    user_information, ui: string 0..jmc$user_information_size = $job(user_in..
{ formation)
{    vertical_print_density, vpd: key
{        six, eight, none, file
{      keyend = $job(vertical_print_density)
{    vfu_load_procedure, vlp: any of
{        key
{          none
{        keyend
{        name
{      anyend = $job(vfu_load_procedure)
{    system_file_name, sfn: (VAR) any of
{        name
{        list of name
{      anyend = $optional
{    status)

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

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 65] of clt$pdt_parameter_name,
      parameters: array [1 .. 28] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$list_type_qualifier_v2,
        element_type_spec: record
          header: clt$type_specification_header,
        recend,
      recend,
      type2: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
        default_value: string (20),
      recend,
      type3: record
        header: clt$type_specification_header,
        qualifier: clt$integer_type_qualifier,
        default_value: string (12),
      recend,
      type4: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 4] of clt$keyword_specification,
        default_value: string (5),
      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$name_type_qualifier,
        recend,
        default_value: string (12),
      recend,
      type6: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 3] 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$date_time_type_qualifier,
        recend,
        default_value: string (25),
      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$string_type_qualifier,
        recend,
        default_value: string (30),
      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$string_type_qualifier,
        recend,
        default_value: string (16),
      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$date_time_type_qualifier,
        recend,
        default_value: string (23),
      recend,
      type11: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (21),
      recend,
      type12: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (19),
      recend,
      type13: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 1] of clt$keyword_specification,
        default_value: string (18),
      recend,
      type14: record
        header: clt$type_specification_header,
        default_value: string (29),
      recend,
      type15: 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$string_type_qualifier,
        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 (24),
      recend,
      type16: 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 .. 5] 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,
      type17: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 6] of clt$keyword_specification,
      recend,
      type18: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 3] of clt$keyword_specification,
        default_value: string (21),
      recend,
      type19: 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,
      recend,
      type20: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
        default_value: string (27),
      recend,
      type21: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
        default_value: string (20),
      recend,
      type22: 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 (13),
      recend,
      type23: 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,
      type24: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
        default_value: string (22),
      recend,
      type25: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 4] of clt$keyword_specification,
        default_value: string (28),
      recend,
      type26: 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 (24),
      recend,
      type27: 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$name_type_qualifier,
        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,
      recend,
      type28: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [91, 3, 22, 9, 17, 32, 887],
    clc$command, 65, 28, 1, 0, 0, 1, 28, 'OSM$PRIF'], [
    ['C                              ',clc$abbreviation_entry, 3],
    ['CB                             ',clc$abbreviation_entry, 2],
    ['COMMENT_BANNER                 ',clc$nominal_entry, 2],
    ['COPIES                         ',clc$nominal_entry, 3],
    ['D                              ',clc$abbreviation_entry, 5],
    ['DATA_MODE                      ',clc$nominal_entry, 4],
    ['DESTINATION_FAMILY             ',clc$alias_entry, 11],
    ['DESTINATION_USAGE              ',clc$alias_entry, 16],
    ['DEVICE                         ',clc$nominal_entry, 5],
    ['DEVICE_TYPE                    ',clc$nominal_entry, 6],
    ['DF                             ',clc$alias_entry, 11],
    ['DM                             ',clc$abbreviation_entry, 4],
    ['DSRP                           ',clc$alias_entry, 20],
    ['DT                             ',clc$abbreviation_entry, 6],
    ['DU                             ',clc$alias_entry, 16],
    ['DUAL_STATE_ROUTE_PARAMETERS    ',clc$alias_entry, 20],
    ['EARLIEST_PRINT_TIME            ',clc$nominal_entry, 7],
    ['EC                             ',clc$abbreviation_entry, 8],
    ['EPT                            ',clc$abbreviation_entry, 7],
    ['EXTERNAL_CHARACTERISTICS       ',clc$nominal_entry, 8],
    ['F                              ',clc$abbreviation_entry, 1],
    ['FC                             ',clc$abbreviation_entry, 9],
    ['FILE                           ',clc$nominal_entry, 1],
    ['FILES                          ',clc$alias_entry, 1],
    ['FORMS_CODE                     ',clc$nominal_entry, 9],
    ['LATEST_PRINT_TIME              ',clc$nominal_entry, 10],
    ['LPT                            ',clc$abbreviation_entry, 10],
    ['OC                             ',clc$abbreviation_entry, 13],
    ['ODBU                           ',clc$abbreviation_entry, 14],
    ['ODE                            ',clc$abbreviation_entry, 15],
    ['ODI                            ',clc$abbreviation_entry, 17],
    ['ODU                            ',clc$abbreviation_entry, 16],
    ['OF                             ',clc$abbreviation_entry, 11],
    ['OP                             ',clc$abbreviation_entry, 18],
    ['OPERATOR_FAMILY                ',clc$nominal_entry, 11],
    ['OPERATOR_USER                  ',clc$nominal_entry, 12],
    ['OU                             ',clc$abbreviation_entry, 12],
    ['OUTPUT_CLASS                   ',clc$nominal_entry, 13],
    ['OUTPUT_DEFERRED_BY_USER        ',clc$nominal_entry, 14],
    ['OUTPUT_DESTINATION             ',clc$nominal_entry, 15],
    ['OUTPUT_DESTINATION_USAGE       ',clc$nominal_entry, 16],
    ['OUTPUT_DISPOSITION             ',clc$nominal_entry, 17],
    ['OUTPUT_PRIORITY                ',clc$nominal_entry, 18],
    ['PD                             ',clc$abbreviation_entry, 19],
    ['PURGE_DELAY                    ',clc$nominal_entry, 19],
    ['RB                             ',clc$abbreviation_entry, 21],
    ['REMOTE_HOST_DIRECTIVE          ',clc$nominal_entry, 20],
    ['RHD                            ',clc$abbreviation_entry, 20],
    ['ROUTING_BANNER                 ',clc$nominal_entry, 21],
    ['S                              ',clc$abbreviation_entry, 22],
    ['SFN                            ',clc$abbreviation_entry, 27],
    ['SO                             ',clc$alias_entry, 12],
    ['STATION                        ',clc$nominal_entry, 22],
    ['STATION_OPERATOR               ',clc$alias_entry, 12],
    ['STATUS                         ',clc$nominal_entry, 28],
    ['SYSTEM_FILE_NAME               ',clc$nominal_entry, 27],
    ['UFN                            ',clc$abbreviation_entry, 23],
    ['UI                             ',clc$abbreviation_entry, 24],
    ['USER_FILE_NAME                 ',clc$nominal_entry, 23],
    ['USER_FILE_NAMES                ',clc$alias_entry, 23],
    ['USER_INFORMATION               ',clc$nominal_entry, 24],
    ['VERTICAL_PRINT_DENSITY         ',clc$nominal_entry, 25],
    ['VFU_LOAD_PROCEDURE             ',clc$nominal_entry, 26],
    ['VLP                            ',clc$abbreviation_entry, 26],
    ['VPD                            ',clc$abbreviation_entry, 25]],
    [
{ PARAMETER 1
    [23, 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, 19, 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$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation,
  clc$standard_parameter_checking, 8, clc$optional_default_parameter, 0, 20],
{ 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, 20, clc$optional_default_parameter, 0, 12],
{ PARAMETER 4
    [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, 155, clc$optional_default_parameter, 0, 5],
{ PARAMETER 5
    [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, 69, clc$optional_default_parameter, 0, 12],
{ PARAMETER 6
    [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$standard_parameter_checking, 118, clc$optional_parameter, 0, 0],
{ PARAMETER 7
    [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, 69, clc$optional_default_parameter, 0, 25],
{ PARAMETER 8
    [20, 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_default_parameter, 0, 30],
{ PARAMETER 9
    [25, 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_default_parameter, 0, 16],
{ PARAMETER 10
    [26, 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, 23],
{ PARAMETER 11
    [35, 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, 21],
{ PARAMETER 12
    [36, 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, 19],
{ PARAMETER 13
    [38, 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, 44, clc$optional_default_parameter, 0, 18],
{ PARAMETER 14
    [39, 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, 29],
{ PARAMETER 15
    [40, 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, 33, clc$optional_default_parameter, 0, 24],
{ PARAMETER 16
    [41, 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, 217, clc$optional_parameter, 0, 0],
{ PARAMETER 17
    [42, 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_parameter, 0, 0],
{ PARAMETER 18
    [43, 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, 118, clc$optional_default_parameter, 0, 21],
{ PARAMETER 19
    [45, 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, 67, clc$optional_parameter, 0, 0],
{ PARAMETER 20
    [47, 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, 8, clc$optional_default_parameter, 0, 27],
{ PARAMETER 21
    [49, 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, 8, clc$optional_default_parameter, 0, 20],
{ PARAMETER 22
    [53, 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, 13],
{ PARAMETER 23
    [59, 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, 21, clc$optional_parameter, 0, 0],
{ PARAMETER 24
    [61, 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, 8, clc$optional_default_parameter, 0, 22],
{ PARAMETER 25
    [62, 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, 155, clc$optional_default_parameter, 0, 28],
{ PARAMETER 26
    [63, 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, 24],
{ PARAMETER 27
    [56, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_reference, clc$immediate_evaluation,
  clc$standard_parameter_checking, 46, clc$optional_parameter, 0, 0],
{ PARAMETER 28
    [55, 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], [3, 1, clc$max_list_size, 0, FALSE, FALSE],
      [[1, 0, clc$file_type]]
    ],
{ PARAMETER 2
    [[1, 0, clc$string_type], [0, jmc$output_comment_banner_size, FALSE],
    '$job(comment_banner)'],
{ PARAMETER 3
    [[1, 0, clc$integer_type], [1, jmc$output_copy_count_max, 10],
    '$job(copies)'],
{ PARAMETER 4
    [[1, 0, clc$keyword_type], [4], [
    ['C                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 1],
    ['CODED                          ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
    ['T                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 2],
    ['TRANSPARENT                    ', clc$nominal_entry,
  clc$normal_usage_entry, 2]]
    ,
    'coded'],
{ PARAMETER 5
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['AUTOMATIC                      ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ,
    '$job(device)'],
{ PARAMETER 6
    [[1, 0, clc$keyword_type], [3], [
    ['PLOTTER                        ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
    ['PRINTER                        ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
    ['PUNCH                          ', clc$nominal_entry,
  clc$normal_usage_entry, 3]]
    ],
{ PARAMETER 7
    [[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]]]
    ,
    '$job(earliest_print_time)'],
{ PARAMETER 8
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$string_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['NORMAL                         ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    8, [[1, 0, clc$string_type], [0, jmc$ext_characteristics_size, FALSE]]
    ,
    '$job(external_characteristics)'],
{ PARAMETER 9
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$string_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['NORMAL                         ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    8, [[1, 0, clc$string_type], [0, jmc$forms_code_size, FALSE]]
    ,
    '$job(forms_code)'],
{ PARAMETER 10
    [[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]]]
    ,
    '$job(latest_print_time)'],
{ PARAMETER 11
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    '$job(operator_family)'],
{ PARAMETER 12
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    '$job(operator_user)'],
{ PARAMETER 13
    [[1, 0, clc$keyword_type], [1], [
    ['NORMAL                         ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
    ,
    '$job(output_class)'],
{ PARAMETER 14
    [[1, 0, clc$boolean_type],
    '$job(output_deferred_by_user)'],
{ PARAMETER 15
    [[1, 0, clc$union_type], [[clc$name_type, clc$string_type],
    TRUE, 2],
    8, [[1, 0, clc$string_type], [0, osc$max_name_size, FALSE]],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ,
    '$job(output_destination)'],
{ PARAMETER 16
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    192, [[1, 0, clc$keyword_type], [5], [
      ['DUAL_STATE                     ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
      ['NTF                            ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
      ['PRIVATE                        ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
      ['PUBLIC                         ', clc$nominal_entry,
  clc$normal_usage_entry, 4],
      ['QTF                            ', clc$nominal_entry,
  clc$normal_usage_entry, 5]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 17
    [[1, 0, clc$keyword_type], [6], [
    ['L                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 1],
    ['LOCAL                          ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
    ['P                              ', clc$abbreviation_entry,
  clc$normal_usage_entry, 2],
    ['PRINTER                        ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
    ['WAIT_QUEUE                     ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
    ['WQ                             ', clc$abbreviation_entry,
  clc$normal_usage_entry, 3]]
    ],
{ PARAMETER 18
    [[1, 0, clc$keyword_type], [3], [
    ['HIGH                           ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
    ['LOW                            ', clc$nominal_entry,
  clc$normal_usage_entry, 1],
    ['MEDIUM                         ', clc$nominal_entry,
  clc$normal_usage_entry, 2]]
    ,
    '$job(output_priority)'],
{ PARAMETER 19
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$time_increment_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['NONE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    3, [[1, 0, clc$time_increment_type]]
    ],
{ PARAMETER 20
    [[1, 0, clc$string_type], [0, jmc$remote_host_directive_size, FALSE],
    '$job(remote_host_directive)'],
{ PARAMETER 21
    [[1, 0, clc$string_type], [0, jmc$output_routing_banner_size, FALSE],
    '$job(routing_banner)'],
{ PARAMETER 22
    [[1, 0, clc$union_type], [[clc$keyword_type,
    clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['AUTOMATIC                      ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ,
    '$job(station)'],
{ PARAMETER 23
    [[1, 0, clc$list_type], [5, 1, clc$max_list_size, 0, FALSE, FALSE],
      [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 24
    [[1, 0, clc$string_type], [0, jmc$user_information_size, FALSE],
    '$job(user_information)'],
{ PARAMETER 25
    [[1, 0, clc$keyword_type], [4], [
    ['EIGHT                          ', clc$nominal_entry,
  clc$normal_usage_entry, 2],
    ['FILE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 4],
    ['NONE                           ', clc$nominal_entry,
  clc$normal_usage_entry, 3],
    ['SIX                            ', clc$nominal_entry,
  clc$normal_usage_entry, 1]]
    ,
    '$job(vertical_print_density)'],
{ PARAMETER 26
    [[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]]
    ,
    '$job(vfu_load_procedure)'],
{ PARAMETER 27
    [[1, 0, clc$union_type], [[clc$list_type, clc$name_type],
    FALSE, 2],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]],
    21, [[1, 0, clc$list_type], [5, 1, clc$max_list_size, 0, FALSE, FALSE],
        [[1, 0, clc$name_type], [1, osc$max_name_size]]
      ]
    ],
{ PARAMETER 28
    [[1, 0, clc$status_type]]];

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

    CONST
      p$file = 1,
      p$comment_banner = 2,
      p$copies = 3,
      p$data_mode = 4,
      p$device = 5,
      p$device_type = 6,
      p$earliest_print_time = 7,
      p$external_characteristics = 8,
      p$forms_code = 9,
      p$latest_print_time = 10,
      p$operator_family = 11,
      p$operator_user = 12,
      p$output_class = 13,
      p$output_deferred_by_user = 14,
      p$output_destination = 15,
      p$output_destination_usage = 16,
      p$output_disposition = 17,
      p$output_priority = 18,
      p$purge_delay = 19,
      p$remote_host_directive = 20,
      p$routing_banner = 21,
      p$station = 22,
      p$user_file_name = 23,
      p$user_information = 24,
      p$vertical_print_density = 25,
      p$vfu_load_procedure = 26,
      p$system_file_name = 27,
      p$status = 28;

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

    CONST
      max_output_options = p$vfu_load_procedure;

    VAR
      access_mode: clt$data_access_mode,
      class: clt$variable_class,
      evaluation_method: clt$expression_eval_method,
      file_count: 1 .. clc$max_list_size,
      file_list: ^clt$data_value,
      file_number: 1 .. clc$max_list_size,
      ignore_ready_index: integer,
      ignore_status: ost$status,
      index: 0 .. max_output_options,
      list_value: ^clt$data_value,
      number_of_output_options: 0 .. max_output_options,
      output_submission_index: 0 .. max_output_options,
      output_submission_options: ^jmt$output_submission_options,
      system_file_name: ^clt$data_value,
      system_supplied_name: jmt$system_supplied_name,
      system_supplied_name_is_blank: boolean,
      type_information: clt$type_information,
      type_specification: ^clt$type_specification,
      user_file_name_count: 0 .. clc$max_list_size,
      user_file_name_list: ^clt$data_value,
      value: ^clt$data_value,
      wait_list_p: ^ost$i_wait_list,
      work_area_p: ^^clt$work_area;

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

    output_submission_options := NIL;
    file_count := clp$count_list_elements (pvt [p$file].value);
    IF pvt [p$user_file_name].specified THEN
      user_file_name_count := clp$count_list_elements (pvt [p$user_file_name].value);
    ELSE
      user_file_name_count := 0;
    IFEND;

    IF user_file_name_count > file_count THEN
      osp$set_status_abnormal ('CL', cle$too_many_values, 'USER_FILE_NAME', status);
      RETURN; {----->
    IFEND;

    output_submission_index := 0;
    number_of_output_options := 0;

    FOR index := p$comment_banner TO p$vfu_load_procedure DO
      CASE pvt [index].passing_method OF
      = clc$pass_by_value =
        IF pvt [index].value <> NIL THEN
          number_of_output_options := number_of_output_options + 1;
        IFEND;
      = clc$pass_by_reference =
        IF pvt [index].variable <> NIL THEN
          number_of_output_options := number_of_output_options + 1;
        IFEND;
      CASEND;
    FOREND;

    IF number_of_output_options <> 0 THEN
      PUSH output_submission_options: [1 .. number_of_output_options];
    IFEND;

{  Process COMMENT_BANNER parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$comment_banner;
    output_submission_options^ [output_submission_index].comment_banner :=
          pvt [p$comment_banner].value^.string_value^;

{  Process COPIES parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$copies;
    output_submission_options^ [output_submission_index].copies := pvt [p$copies].value^.integer_value.value;

{  Process DATA_MODE parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$data_mode;
    IF pvt [p$data_mode].value^.keyword_value = 'CODED' THEN
      output_submission_options^ [output_submission_index].data_mode := jmc$coded_data;
    ELSE { pvt [p$data_mode].value^.keyword_value = 'TRANSPARENT'.
      output_submission_options^ [output_submission_index].data_mode := jmc$transparent_data;
    IFEND;

{  Process DEVICE parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$device;
    IF pvt [p$device].value^.kind = clc$name THEN
      output_submission_options^ [output_submission_index].device := pvt [p$device].value^.name_value;
    ELSE
      output_submission_options^ [output_submission_index].device := pvt [p$device].value^.keyword_value;
    IFEND;

{  Process DEVICE_TYPE parameter.

    IF pvt [p$device_type].specified THEN
      output_submission_index := output_submission_index + 1;
      output_submission_options^ [output_submission_index].key := jmc$device_type;
      IF pvt [p$device_type].value^.keyword_value = 'PRINTER' THEN
        output_submission_options^ [output_submission_index].device_type := jmc$output_device_printer;
      ELSEIF pvt [p$device_type].value^.keyword_value = 'PLOTTER' THEN
        output_submission_options^ [output_submission_index].device_type := jmc$output_device_plotter;
      ELSE { pvt [p$device_type].value^.keyword_value = 'PUNCH'.
        output_submission_options^ [output_submission_index].device_type := jmc$output_device_punch;
      IFEND;
    IFEND;

{  Process EARLIEST_PRINT_TIME parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$earliest_print_time;
    IF pvt [p$earliest_print_time].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
      output_submission_options^ [output_submission_index].earliest_print_time.specified := FALSE;
    ELSE
      output_submission_options^ [output_submission_index].earliest_print_time.specified := TRUE;
      output_submission_options^ [output_submission_index].
            earliest_print_time.date_time := pvt [p$earliest_print_time].value^.date_time_value.value;
    IFEND;

{  Process EXTERNAL_CHARACTERISTICS parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$external_characteristics;
    IF pvt [p$external_characteristics].value^.kind = clc$keyword THEN { the only keyword is NORMAL. }
      output_submission_options^ [output_submission_index].
            external_characteristics := pvt [p$external_characteristics].value^.keyword_value;
    ELSE
      output_submission_options^ [output_submission_index].
            external_characteristics := pvt [p$external_characteristics].value^.string_value^;
    IFEND;

{  Process FORMS_CODE parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$forms_code;
    IF pvt [p$forms_code].value^.kind = clc$keyword THEN { the only keyword allowed is NORMAL. }
      output_submission_options^ [output_submission_index].forms_code := pvt [p$forms_code].
            value^.keyword_value;
    ELSE
      output_submission_options^ [output_submission_index].forms_code := pvt [p$forms_code].
            value^.string_value^;
    IFEND;

{  Process LATEST_PRINT_TIME parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$latest_print_time;
    IF pvt [p$latest_print_time].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
      output_submission_options^ [output_submission_index].latest_print_time.specified := FALSE;
    ELSE
      output_submission_options^ [output_submission_index].latest_print_time.specified := TRUE;
      output_submission_options^ [output_submission_index].
            latest_print_time.date_time := pvt [p$latest_print_time].value^.date_time_value.value;
    IFEND;

{  Process OPERATOR_FAMILY parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$output_destination_family;
    output_submission_options^ [output_submission_index].output_destination_family :=
          pvt [p$operator_family].value^.name_value;

{  Process OPERATOR_USER parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$station_operator;
    output_submission_options^ [output_submission_index].station_operator :=
          pvt [p$operator_user].value^.name_value;

{  Process OUTPUT_CLASS parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$output_class;
    output_submission_options^ [output_submission_index].output_class :=
          pvt [p$output_class].value^.keyword_value;

{  Process OUTPUT_DEFERRED_BY_USER parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$output_deferred_by_user;
    output_submission_options^ [output_submission_index].output_deferred_by_user :=
          pvt [p$output_deferred_by_user].value^.boolean_value.value;

{  Process OUTPUT_DESTINATION parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$output_destination;
    IF pvt [p$output_destination].value^.kind = clc$name THEN
      output_submission_options^ [output_submission_index].output_destination :=
            pvt [p$output_destination].value^.name_value;
    ELSE
      output_submission_options^ [output_submission_index].output_destination :=
            pvt [p$output_destination].value^.string_value^;
    IFEND;

{  Process OUTPUT_DESTINATION_USAGE parameter.

    IF pvt [p$output_destination_usage].specified THEN
      output_submission_index := output_submission_index + 1;
      output_submission_options^ [output_submission_index].key := jmc$output_destination_usage;
      IF pvt [p$output_destination_usage].value^.kind = clc$name THEN
        output_submission_options^ [output_submission_index].
              output_destination_usage := pvt [p$output_destination_usage].value^.name_value;
      ELSE
        output_submission_options^ [output_submission_index].
              output_destination_usage := pvt [p$output_destination_usage].value^.keyword_value;
      IFEND;
    IFEND;

{  Process OUTPUT_DISPOSITION parameter.

    IF pvt [p$output_disposition].specified THEN
      output_submission_index := output_submission_index + 1;
      output_submission_options^ [output_submission_index].key := jmc$output_disposition;
      IF pvt [p$output_disposition].value^.keyword_value = 'PRINTER' THEN
        output_submission_options^ [output_submission_index].output_disposition.key :=
              jmc$normal_output_disposition;
      ELSEIF pvt [p$output_disposition].value^.keyword_value = 'LOCAL' THEN
        output_submission_options^ [output_submission_index].output_disposition.key :=
              jmc$local_output_disposition;
      ELSE { pvt [p$output_disposition].value^.keyword_value = 'WAIT_QUEUE'.
        output_submission_options^ [output_submission_index].output_disposition.key := jmc$wait_queue_path;
        output_submission_options^ [output_submission_index].output_disposition.wait_queue_path := NIL;
      IFEND;
    IFEND;

{  Process OUTPUT_PRIORITY parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$output_priority;
    output_submission_options^ [output_submission_index].output_priority :=
          pvt [p$output_priority].value^.keyword_value;

{  Process PURGE_DELAY parameter.

    IF pvt [p$purge_delay].specified THEN
      output_submission_index := output_submission_index + 1;
      output_submission_options^ [output_submission_index].key := jmc$purge_delay;
      PUSH output_submission_options^ [output_submission_index].purge_delay;
      IF pvt [p$purge_delay].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
        output_submission_options^ [output_submission_index].purge_delay^.specified := FALSE;
      ELSE
        output_submission_options^ [output_submission_index].purge_delay^.specified := TRUE;
        output_submission_options^ [output_submission_index].
              purge_delay^.time_increment := pvt [p$purge_delay].value^.time_increment_value^;
      IFEND;
    IFEND;

{  Process REMOTE_HOST_DIRECTIVE parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$remote_host_directive;
    PUSH output_submission_options^ [output_submission_index].remote_host_directive;
    output_submission_options^ [output_submission_index].remote_host_directive^.size :=
          STRLENGTH (pvt [p$remote_host_directive].value^.string_value^);
    output_submission_options^ [output_submission_index].remote_host_directive^.parameters :=
          pvt [p$remote_host_directive].value^.string_value^;

{  Process ROUTING_BANNER parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$routing_banner;
    output_submission_options^ [output_submission_index].routing_banner :=
          pvt [p$routing_banner].value^.string_value^;

{  Process STATION parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$station;
    IF pvt [p$station].value^.kind = clc$keyword THEN
      output_submission_options^ [output_submission_index].station := pvt [p$station].value^.keyword_value;
    ELSE
      output_submission_options^ [output_submission_index].station := pvt [p$station].value^.name_value;
    IFEND;

{  Process USER_INFORMATION parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$user_information;
    PUSH output_submission_options^ [output_submission_index].user_information;
    output_submission_options^ [output_submission_index].user_information^ :=
          pvt [p$user_information].value^.string_value^;

{  Process VERTICAL_PRINT_DENSITY parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$vertical_print_density;
    IF pvt [p$vertical_print_density].value^.keyword_value = 'FILE' THEN
      output_submission_options^ [output_submission_index].vertical_print_density :=
            jmc$vertical_print_density_file;
    ELSEIF pvt [p$vertical_print_density].value^.keyword_value = 'NONE' THEN
      output_submission_options^ [output_submission_index].vertical_print_density :=
            jmc$vertical_print_density_none;
    ELSEIF pvt [p$vertical_print_density].value^.keyword_value = 'SIX' THEN
      output_submission_options^ [output_submission_index].vertical_print_density :=
            jmc$vertical_print_density_6;
    ELSE { pvt [p$vertical_print_density].value^.keyword_value = 'EIGHT'
      output_submission_options^ [output_submission_index].vertical_print_density :=
            jmc$vertical_print_density_8;
    IFEND;

{  Process VFU_LOAD_PROCEDURE parameter.

    output_submission_index := output_submission_index + 1;
    output_submission_options^ [output_submission_index].key := jmc$vfu_load_procedure;
    IF pvt [p$vfu_load_procedure].value^.kind = clc$keyword THEN
      output_submission_options^ [output_submission_index].vfu_load_procedure := osc$null_name;
    ELSE
      output_submission_options^ [output_submission_index].vfu_load_procedure :=
            pvt [p$vfu_load_procedure].value^.name_value;
    IFEND;

{  Process FILE,  SYSTEM_FILE_NAME, and USER_FILE_NAME parameters.

    IF pvt [p$system_file_name].specified THEN
      clp$get_work_area (#RING (^work_area_p), work_area_p, status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      clp$get_variable (pvt [p$system_file_name].variable^, work_area_p^, class, access_mode,
            evaluation_method, type_specification, value, status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      clp$get_type_information (type_specification, work_area_p^, type_information, status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      CASE type_information.kind OF
      = clc$list_type =
        PUSH list_value;
        system_file_name := list_value;
        system_file_name^.kind := clc$list;
        system_file_name^.element_value := NIL;
        system_file_name^.link := NIL;
        system_file_name^.generated_via_list_rest := FALSE;
      ELSE { = clc$name_type =
        PUSH system_file_name;
        system_file_name^.kind := clc$name;
      CASEND;
    IFEND;

    file_list := pvt [p$file].value;
    IF user_file_name_count <> 0 THEN
      output_submission_index := output_submission_index + 1;
      user_file_name_list := pvt [p$user_file_name].value;
    ELSE
      user_file_name_list := NIL;
    IFEND;

    system_supplied_name_is_blank := FALSE;

    FOR file_number := 1 TO file_count DO
      IF (user_file_name_list = NIL) AND (user_file_name_count <> 0) THEN
        output_submission_options^ [output_submission_index].key := jmc$null_attribute;
      ELSEIF user_file_name_list <> NIL THEN
        output_submission_options^ [output_submission_index].key := jmc$user_file_name;
        output_submission_options^ [output_submission_index].user_file_name :=
              user_file_name_list^.element_value^.name_value;
        user_file_name_list := user_file_name_list^.link;
      IFEND;

      REPEAT
        jmp$print_file (file_list^.element_value^.file_value^, output_submission_options,
              system_supplied_name, status);
        IF (NOT status.normal) AND (status.condition = jme$no_space_for_file) THEN
          jmp$update_display_message (status);

{ Wait for a while before retrying to give the system a chance to get some space back.

          PUSH wait_list_p: [1 .. 1];
          wait_list_p^ [1].activity := osc$i_await_time;
          wait_list_p^ [1].milliseconds := no_queue_space_wait_time;
          osp$i_await_activity_completion (wait_list_p^, ignore_ready_index, ignore_status);
        IFEND;
      UNTIL status.normal OR (status.condition <> jme$no_space_for_file);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

{ Check for a blank system_supplied_name.  We do not want to write the system_file_name
{ variable if one or more are blank.

      IF system_supplied_name = jmc$blank_system_supplied_name THEN
        system_supplied_name_is_blank := TRUE;
      IFEND;

      IF pvt [p$system_file_name].specified AND (NOT system_supplied_name_is_blank) THEN
        IF system_file_name^.kind = clc$list THEN
          IF list_value^.element_value <> NIL THEN
            PUSH list_value^.link;
            list_value := list_value^.link;
            list_value^.kind := clc$list;
          IFEND;
          PUSH list_value^.element_value;
          list_value^.element_value^.kind := clc$name;
          list_value^.element_value^.name_value := system_supplied_name;
          list_value^.link := NIL;
          list_value^.generated_via_list_rest := FALSE;
        ELSE { clc$name.
          IF file_number = 1 THEN
            system_file_name^.name_value := system_supplied_name;
          IFEND;
        IFEND;
      IFEND;

      file_list := file_list^.link;
    FOREND;

    IF pvt [p$system_file_name].specified AND (NOT system_supplied_name_is_blank) THEN
      clp$change_variable (pvt [p$system_file_name].variable^, system_file_name, status);
    IFEND;

  PROCEND jmp$_print_file;
?? TITLE := '[XDCL] jmp$_set_sense_switch', EJECT ??

  PROCEDURE [XDCL] jmp$_set_sense_switch
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$setss) set_sense_switch, set_sense_switches, setss (
{   name, jn, job_name, n: name = $optional
{   on: list of range of integer 1..8 = $optional
{   off: list of range of integer 1..8 = $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$list_type_qualifier,
          element_type_spec: 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,
          recend,
        recend,
        type3: record
          header: clt$type_specification_header,
          qualifier: clt$list_type_qualifier,
          element_type_spec: 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,
          recend,
        recend,
        type4: record
          header: clt$type_specification_header,
        recend,
      recend := [[1, [88, 3, 9, 13, 46, 10, 506], clc$command, 7, 4, 0, 0, 0, 0, 4, 'OSM$SETSS'],
            [['JN                             ', clc$alias_entry, 1],
            ['JOB_NAME                       ', clc$alias_entry, 1],
            ['N                              ', clc$abbreviation_entry, 1],
            ['NAME                           ', clc$nominal_entry, 1],
            ['OFF                            ', clc$nominal_entry, 3],
            ['ON                             ', 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$standard_parameter_checking, 5, clc$optional_parameter, 0, 0],

{ PARAMETER 2

      [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, 43, 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$specify_positionally], clc$pass_by_value, clc$immediate_evaluation,
            clc$standard_parameter_checking, 43, clc$optional_parameter, 0, 0],

{ PARAMETER 4

      [7, 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], [27, 1, clc$max_list_size, FALSE],
            [[1, 0, clc$range_type], [20], [[1, 0, clc$integer_type], [1, 8, 10]]]],

{ PARAMETER 3

      [[1, 0, clc$list_type], [27, 1, clc$max_list_size, FALSE],
            [[1, 0, clc$range_type], [20], [[1, 0, clc$integer_type], [1, 8, 10]]]],

{ PARAMETER 4

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

?? POP ??

    CONST
      p$name = 1,
      p$on = 2,
      p$off = 3,
      p$status = 4;

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

    VAR
      off_list: ^clt$data_value,
      on_list: ^clt$data_value,
      switch_on: pmt$sense_switches,
      switch_off: pmt$sense_switches,
      ignore_resulting_switches: pmt$sense_switches,
      index: 1 .. clc$max_list_size,
      range: 1 .. 8,
      system_supplied_name: jmt$system_supplied_name;

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

    switch_on := $pmt$sense_switches [];
    switch_off := $pmt$sense_switches [];

{  Process ON parameter.

    on_list := pvt [p$on].value;

    WHILE on_list <> NIL DO
      FOR range := on_list^.element_value^.low_value^.integer_value.value TO on_list^.element_value^.
            high_value^.integer_value.value DO
        switch_on := switch_on + $pmt$sense_switches [range];
      FOREND;
      on_list := on_list^.link;
    WHILEND;

{  Process OFF parameter.

    off_list := pvt [p$off].value;

    WHILE off_list <> NIL DO
      FOR range := off_list^.element_value^.low_value^.integer_value.value TO off_list^.element_value^.
            high_value^.integer_value.value DO
        switch_off := switch_off + $pmt$sense_switches [range];
      FOREND;
      off_list := off_list^.link;
    WHILEND;

    IF (switch_on + switch_off) = $pmt$sense_switches [] THEN
      osp$set_status_abnormal ('CL', cle$required_parameter_omitted, 'ON or OFF', status);
      RETURN; {----->
    IFEND;

{  Process NAME parameter.

    IF pvt [p$name].specified THEN
      jmp$switch_command_r3 (pvt [p$name].value^.name_value, switch_on, switch_off, status);
    ELSE

{  If job name is not specified, sense switches are set for the job
{  executing command.

      pmp$manage_sense_switches (switch_on, switch_off, ignore_resulting_switches, status);
    IFEND;

  PROCEND jmp$_set_sense_switch;
?? TITLE := '[XDCL] jmp$_submit_detached', EJECT ??

  PROCEDURE [XDCL] jmp$_submit_detached
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{   PROCEDURE submit_detached_job, subdj (
{     user_information, ui: string 0..jmc$user_information_size = ''
{     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$string_type_qualifier,
        default_value: string (2),
      recend,
      type2: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [88, 11, 28, 14, 0, 49, 840],
    clc$command, 3, 2, 0, 0, 0, 0, 2, ''], [
    ['STATUS                         ',clc$nominal_entry, 2],
    ['UI                             ',clc$abbreviation_entry, 1],
    ['USER_INFORMATION               ',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, 8,
  clc$optional_default_parameter, 0, 2],
{ 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$string_type], [0, jmc$user_information_size, FALSE],
    ''''''],
{ PARAMETER 2
    [[1, 0, clc$status_type]]];

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

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

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

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

    jmp$submit_detached_job (pvt [p$user_information].value^.string_value^, status);

  PROCEND jmp$_submit_detached;
?? TITLE := '[XDCL] jmp$_submit_job', EJECT ??

  PROCEDURE [XDCL] jmp$_submit_job
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$subj) submit_job, submit_jobs, subj (
{   file, files, f: list of file = $required
{   cpu_time_limit, ctl: any of
{       key
{         system_default, unlimited, unspecified
{       keyend
{       integer jmc$lowest_cpu_time_limit..jmc$highest_cpu_time_limit
{     anyend = $optional
{   earliest_run_time, ert: any of
{       key
{         none
{       keyend
{       date_time
{     anyend = $optional
{   job_abort_disposition, jad: key
{       (restart, r)
{       (terminate, t)
{     keyend = $optional
{   job_class, jc: name = $optional
{   job_deferred_by_user, jdbu: boolean = $optional
{   job_destination, jd: any of
{       string 0..osc$max_name_size
{       name
{     anyend = $optional
{   job_destination_usage, jdu: any of
{       key
{         ntf, qtf, ve, ve_family, ve_local, ve_qtf
{       keyend
{       name
{     anyend = $optional
{   job_execution_ring, jer: integer osc$sj_ring_1..osc$user_ring_2 = $optional
{   job_qualifier, job_qualifiers, jq: any of
{       key
{         none, system_default
{       keyend
{       list 1..jmc$maximum_job_qualifiers of name
{     anyend = $optional
{   job_recovery_disposition, jrd: key
{       (continue, c)
{       (restart, r)
{       (terminate, t)
{     keyend = $optional
{   latest_run_time, lrt: any of
{       key
{         none
{       keyend
{       date_time
{     anyend = $optional
{   login_family, family_name, fn, lf: name = $optional
{   magnetic_tape_limit, mtl: any of
{       key
{         system_default, unlimited, unspecified
{       keyend
{       integer jmc$lowest_magnetic_tape_limit..jmc$highest_magnetic_tape_limit
{     anyend = $optional
{   maximum_working_set, maxws: any of
{       key
{         system_default, unlimited, unspecified
{       keyend
{       integer jmc$lowest_working_set_size..jmc$highest_working_set_size
{     anyend = $optional
{   operator_family, of: name = $job(operator_family)
{   operator_user, ou: name = $job(operator_user)
{   output_disposition, so, standard_output, odi: any of
{       key
{         (discard_all_output, dao)
{         (discard_standard_output, dso)
{         (local, l)
{         (printer, p)
{         (wait_queue, wt, wq)
{       keyend
{       file
{     anyend = printer
{   remote_host_directive, rhd: string 0..jmc$remote_host_directive_size = $optional
{   sru_limit, sl: any of
{       key
{         system_default, unlimited, unspecified
{       keyend
{       integer jmc$lowest_sru_limit..jmc$highest_sru_limit
{     anyend = $optional
{   station, s: any of
{       key
{         automatic
{       keyend
{       name
{     anyend = $job(station)
{   user_information, ui: string 0..jmc$user_information_size = $optional
{   user_job_name, jn, job_name, ujn: list of name = $optional
{   system_job_name, sjn: (VAR) any of
{       string
{       name
{       list of name
{     anyend = $optional
{   status)

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

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 57] of clt$pdt_parameter_name,
      parameters: array [1 .. 25] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$list_type_qualifier_v2,
        element_type_spec: record
          header: clt$type_specification_header,
        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$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 .. 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,
      type4: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 4] of clt$keyword_specification,
      recend,
      type5: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type6: record
        header: clt$type_specification_header,
      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$string_type_qualifier,
        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,
      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 .. 6] 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,
      type9: record
        header: clt$type_specification_header,
        qualifier: clt$integer_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 .. 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_v2,
          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 .. 6] of clt$keyword_specification,
      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$date_time_type_qualifier,
        recend,
      recend,
      type13: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
      recend,
      type14: 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$integer_type_qualifier,
        recend,
      recend,
      type15: 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$integer_type_qualifier,
        recend,
      recend,
      type16: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (21),
      recend,
      type17: record
        header: clt$type_specification_header,
        qualifier: clt$name_type_qualifier,
        default_value: string (19),
      recend,
      type18: 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 .. 11] of clt$keyword_specification,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
        recend,
        default_value: string (7),
      recend,
      type19: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type20: 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$integer_type_qualifier,
        recend,
      recend,
      type21: 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 (13),
      recend,
      type22: record
        header: clt$type_specification_header,
        qualifier: clt$string_type_qualifier,
      recend,
      type23: 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,
      type24: 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$string_type_qualifier,
        recend,
        type_size_2: clt$type_specification_size,
        element_type_spec_2: record
          header: clt$type_specification_header,
          qualifier: clt$name_type_qualifier,
        recend,
        type_size_3: clt$type_specification_size,
        element_type_spec_3: 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,
      recend,
      type25: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [91, 7, 8, 15, 12, 50, 553],
    clc$command, 57, 25, 1, 0, 0, 1, 25, 'OSM$SUBJ'], [
    ['CPU_TIME_LIMIT                 ',clc$nominal_entry, 2],
    ['CTL                            ',clc$abbreviation_entry, 2],
    ['EARLIEST_RUN_TIME              ',clc$nominal_entry, 3],
    ['ERT                            ',clc$abbreviation_entry, 3],
    ['F                              ',clc$abbreviation_entry, 1],
    ['FAMILY_NAME                    ',clc$alias_entry, 13],
    ['FILE                           ',clc$nominal_entry, 1],
    ['FILES                          ',clc$alias_entry, 1],
    ['FN                             ',clc$alias_entry, 13],
    ['JAD                            ',clc$abbreviation_entry, 4],
    ['JC                             ',clc$abbreviation_entry, 5],
    ['JD                             ',clc$abbreviation_entry, 7],
    ['JDBU                           ',clc$abbreviation_entry, 6],
    ['JDU                            ',clc$abbreviation_entry, 8],
    ['JER                            ',clc$abbreviation_entry, 9],
    ['JN                             ',clc$alias_entry, 23],
    ['JOB_ABORT_DISPOSITION          ',clc$nominal_entry, 4],
    ['JOB_CLASS                      ',clc$nominal_entry, 5],
    ['JOB_DEFERRED_BY_USER           ',clc$nominal_entry, 6],
    ['JOB_DESTINATION                ',clc$nominal_entry, 7],
    ['JOB_DESTINATION_USAGE          ',clc$nominal_entry, 8],
    ['JOB_EXECUTION_RING             ',clc$nominal_entry, 9],
    ['JOB_NAME                       ',clc$alias_entry, 23],
    ['JOB_QUALIFIER                  ',clc$nominal_entry, 10],
    ['JOB_QUALIFIERS                 ',clc$alias_entry, 10],
    ['JOB_RECOVERY_DISPOSITION       ',clc$nominal_entry, 11],
    ['JQ                             ',clc$abbreviation_entry, 10],
    ['JRD                            ',clc$abbreviation_entry, 11],
    ['LATEST_RUN_TIME                ',clc$nominal_entry, 12],
    ['LF                             ',clc$abbreviation_entry, 13],
    ['LOGIN_FAMILY                   ',clc$nominal_entry, 13],
    ['LRT                            ',clc$abbreviation_entry, 12],
    ['MAGNETIC_TAPE_LIMIT            ',clc$nominal_entry, 14],
    ['MAXIMUM_WORKING_SET            ',clc$nominal_entry, 15],
    ['MAXWS                          ',clc$abbreviation_entry, 15],
    ['MTL                            ',clc$abbreviation_entry, 14],
    ['ODI                            ',clc$abbreviation_entry, 18],
    ['OF                             ',clc$abbreviation_entry, 16],
    ['OPERATOR_FAMILY                ',clc$nominal_entry, 16],
    ['OPERATOR_USER                  ',clc$nominal_entry, 17],
    ['OU                             ',clc$abbreviation_entry, 17],
    ['OUTPUT_DISPOSITION             ',clc$nominal_entry, 18],
    ['REMOTE_HOST_DIRECTIVE          ',clc$nominal_entry, 19],
    ['RHD                            ',clc$abbreviation_entry, 19],
    ['S                              ',clc$abbreviation_entry, 21],
    ['SJN                            ',clc$abbreviation_entry, 24],
    ['SL                             ',clc$abbreviation_entry, 20],
    ['SO                             ',clc$alias_entry, 18],
    ['SRU_LIMIT                      ',clc$nominal_entry, 20],
    ['STANDARD_OUTPUT                ',clc$alias_entry, 18],
    ['STATION                        ',clc$nominal_entry, 21],
    ['STATUS                         ',clc$nominal_entry, 25],
    ['SYSTEM_JOB_NAME                ',clc$nominal_entry, 24],
    ['UI                             ',clc$abbreviation_entry, 22],
    ['UJN                            ',clc$abbreviation_entry, 23],
    ['USER_INFORMATION               ',clc$nominal_entry, 22],
    ['USER_JOB_NAME                  ',clc$nominal_entry, 23]],
    [
{ 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, 19, 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, 158,
  clc$optional_parameter, 0, 0],
{ PARAMETER 3
    [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 4
    [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, 155,
  clc$optional_parameter, 0, 0],
{ PARAMETER 5
    [18, 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_parameter, 0
  , 0],
{ PARAMETER 6
    [19, 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_parameter, 0
  , 0],
{ PARAMETER 7
    [20, 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, 33, clc$optional_parameter,
  0, 0],
{ PARAMETER 8
    [21, 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, 254,
  clc$optional_parameter, 0, 0],
{ PARAMETER 9
    [22, 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, 20, clc$optional_parameter,
  0, 0],
{ PARAMETER 10
    [24, 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, 122,
  clc$optional_parameter, 0, 0],
{ PARAMETER 11
    [26, 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_parameter, 0, 0],
{ PARAMETER 12
    [29, 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 13
    [31, 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_parameter, 0
  , 0],
{ PARAMETER 14
    [33, 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, 158,
  clc$optional_parameter, 0, 0],
{ PARAMETER 15
    [34, 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, 158,
  clc$optional_parameter, 0, 0],
{ PARAMETER 16
    [39, 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, 21],
{ PARAMETER 17
    [40, 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, 19],
{ PARAMETER 18
    [42, 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, 437,
  clc$optional_default_parameter, 0, 7],
{ PARAMETER 19
    [43, 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, 8, clc$optional_parameter, 0
  , 0],
{ PARAMETER 20
    [49, 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, 158,
  clc$optional_parameter, 0, 0],
{ PARAMETER 21
    [51, 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, 13],
{ PARAMETER 22
    [56, 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, 8, clc$optional_parameter, 0
  , 0],
{ PARAMETER 23
    [57, 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, 21, clc$optional_parameter,
  0, 0],
{ PARAMETER 24
    [53, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 58,
  clc$optional_parameter, 0, 0],
{ PARAMETER 25
    [52, 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], [3, 1, clc$max_list_size, 0, FALSE, FALSE],
      [[1, 0, clc$file_type]]
    ],
{ PARAMETER 2
    [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type],
    FALSE, 2],
    118, [[1, 0, clc$keyword_type], [3], [
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry, clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry, clc$normal_usage_entry, 2],
      ['UNSPECIFIED                    ', clc$nominal_entry, clc$normal_usage_entry, 3]]
      ],
    20, [[1, 0, clc$integer_type], [jmc$lowest_cpu_time_limit, jmc$highest_cpu_time_limit, 10]]
    ],
{ PARAMETER 3
    [[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 4
    [[1, 0, clc$keyword_type], [4], [
    ['R                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['RESTART                        ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['T                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['TERMINATE                      ', clc$nominal_entry, clc$normal_usage_entry, 2]]
    ],
{ PARAMETER 5
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 6
    [[1, 0, clc$boolean_type]],
{ PARAMETER 7
    [[1, 0, clc$union_type], [[clc$name_type, clc$string_type],
    TRUE, 2],
    8, [[1, 0, clc$string_type], [0, osc$max_name_size, FALSE]],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 8
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type],
    FALSE, 2],
    229, [[1, 0, clc$keyword_type], [6], [
      ['NTF                            ', clc$nominal_entry, clc$normal_usage_entry, 1],
      ['QTF                            ', clc$nominal_entry, clc$normal_usage_entry, 2],
      ['VE                             ', clc$nominal_entry, clc$normal_usage_entry, 3],
      ['VE_FAMILY                      ', clc$nominal_entry, clc$normal_usage_entry, 4],
      ['VE_LOCAL                       ', clc$nominal_entry, clc$normal_usage_entry, 5],
      ['VE_QTF                         ', clc$nominal_entry, clc$normal_usage_entry, 6]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 9
    [[1, 0, clc$integer_type], [osc$sj_ring_1, osc$user_ring_2, 10]],
{ PARAMETER 10
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$list_type],
    FALSE, 2],
    81, [[1, 0, clc$keyword_type], [2], [
      ['NONE                           ', clc$nominal_entry, clc$normal_usage_entry, 1],
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry, clc$normal_usage_entry, 2]]
      ],
    21, [[1, 0, clc$list_type], [5, 1, jmc$maximum_job_qualifiers, 0, FALSE, FALSE],
        [[1, 0, clc$name_type], [1, osc$max_name_size]]
      ]
    ],
{ PARAMETER 11
    [[1, 0, clc$keyword_type], [6], [
    ['C                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['CONTINUE                       ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['R                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['RESTART                        ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['T                              ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['TERMINATE                      ', clc$nominal_entry, clc$normal_usage_entry, 3]]
    ],
{ PARAMETER 12
    [[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 13
    [[1, 0, clc$name_type], [1, osc$max_name_size]],
{ PARAMETER 14
    [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type],
    FALSE, 2],
    118, [[1, 0, clc$keyword_type], [3], [
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry, clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry, clc$normal_usage_entry, 2],
      ['UNSPECIFIED                    ', clc$nominal_entry, clc$normal_usage_entry, 3]]
      ],
    20, [[1, 0, clc$integer_type], [jmc$lowest_magnetic_tape_limit, jmc$highest_magnetic_tape_limit, 10]]
    ],
{ PARAMETER 15
    [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type],
    FALSE, 2],
    118, [[1, 0, clc$keyword_type], [3], [
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry, clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry, clc$normal_usage_entry, 2],
      ['UNSPECIFIED                    ', clc$nominal_entry, clc$normal_usage_entry, 3]]
      ],
    20, [[1, 0, clc$integer_type], [jmc$lowest_working_set_size, jmc$highest_working_set_size, 10]]
    ],
{ PARAMETER 16
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    '$job(operator_family)'],
{ PARAMETER 17
    [[1, 0, clc$name_type], [1, osc$max_name_size],
    '$job(operator_user)'],
{ PARAMETER 18
    [[1, 0, clc$union_type], [[clc$file_type, clc$keyword_type],
    FALSE, 2],
    414, [[1, 0, clc$keyword_type], [11], [
      ['DAO                            ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
      ['DISCARD_ALL_OUTPUT             ', clc$nominal_entry, clc$normal_usage_entry, 1],
      ['DISCARD_STANDARD_OUTPUT        ', clc$nominal_entry, clc$normal_usage_entry, 2],
      ['DSO                            ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
      ['L                              ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
      ['LOCAL                          ', clc$nominal_entry, clc$normal_usage_entry, 3],
      ['P                              ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
      ['PRINTER                        ', clc$nominal_entry, clc$normal_usage_entry, 4],
      ['WAIT_QUEUE                     ', clc$nominal_entry, clc$normal_usage_entry, 5],
      ['WQ                             ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
      ['WT                             ', clc$alias_entry, clc$normal_usage_entry, 5]]
      ],
    3, [[1, 0, clc$file_type]]
    ,
    'printer'],
{ PARAMETER 19
    [[1, 0, clc$string_type], [0, jmc$remote_host_directive_size, FALSE]],
{ PARAMETER 20
    [[1, 0, clc$union_type], [[clc$integer_type, clc$keyword_type],
    FALSE, 2],
    118, [[1, 0, clc$keyword_type], [3], [
      ['SYSTEM_DEFAULT                 ', clc$nominal_entry, clc$normal_usage_entry, 1],
      ['UNLIMITED                      ', clc$nominal_entry, clc$normal_usage_entry, 2],
      ['UNSPECIFIED                    ', clc$nominal_entry, clc$normal_usage_entry, 3]]
      ],
    20, [[1, 0, clc$integer_type], [jmc$lowest_sru_limit, jmc$highest_sru_limit, 10]]
    ],
{ PARAMETER 21
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type],
    FALSE, 2],
    44, [[1, 0, clc$keyword_type], [1], [
      ['AUTOMATIC                      ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ,
    '$job(station)'],
{ PARAMETER 22
    [[1, 0, clc$string_type], [0, jmc$user_information_size, FALSE]],
{ PARAMETER 23
    [[1, 0, clc$list_type], [5, 1, clc$max_list_size, 0, FALSE, FALSE],
      [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ],
{ PARAMETER 24
    [[1, 0, clc$union_type], [[clc$list_type, clc$name_type, clc$string_type],
    FALSE, 3],
    8, [[1, 0, clc$string_type], [0, clc$max_string_size, FALSE]],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]],
    21, [[1, 0, clc$list_type], [5, 1, clc$max_list_size, 0, FALSE, FALSE],
        [[1, 0, clc$name_type], [1, osc$max_name_size]]
      ]
    ],
{ PARAMETER 25
    [[1, 0, clc$status_type]]];

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

    CONST
      p$file = 1,
      p$cpu_time_limit = 2,
      p$earliest_run_time = 3,
      p$job_abort_disposition = 4,
      p$job_class = 5,
      p$job_deferred_by_user = 6,
      p$job_destination = 7,
      p$job_destination_usage = 8,
      p$job_execution_ring = 9,
      p$job_qualifier = 10,
      p$job_recovery_disposition = 11,
      p$latest_run_time = 12,
      p$login_family = 13,
      p$magnetic_tape_limit = 14,
      p$maximum_working_set = 15,
      p$operator_family = 16,
      p$operator_user = 17,
      p$output_disposition = 18,
      p$remote_host_directive = 19,
      p$sru_limit = 20,
      p$station = 21,
      p$user_information = 22,
      p$user_job_name = 23,
      p$system_job_name = 24,
      p$status = 25;

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

    VAR
      access_mode: clt$data_access_mode,
      class: clt$variable_class,
      default_job_attributes_p: ^jmt$default_attribute_results,
      evaluation_method: clt$expression_eval_method,
      file_count: 0 .. clc$max_list_size,
      file_list: ^clt$data_value,
      file_number: 0 .. clc$max_list_size,
      ignore_ready_index: integer,
      ignore_status: ost$status,
      index: 0 .. p$user_job_name,
      job_qualifier_count: 0 .. clc$max_list_size,
      job_qualifier_index: 1 .. clc$max_list_size,
      job_qualifier_options: ^clt$data_value,
      job_submission_index: 0 .. p$user_job_name,
      job_submission_options: ^jmt$job_submission_options,
      list_value: ^clt$data_value,
      number_of_submission_options: 0 .. p$user_job_name,
      type_information: clt$type_information,
      type_specification: ^clt$type_specification,
      user_job_name_count: 0 .. clc$max_list_size,
      user_job_name_list: ^clt$data_value,
      system_job_name: ^clt$data_value,
      system_supplied_name: jmt$system_supplied_name,
      wait_list_p: ^ost$i_wait_list,
      work_area_p: ^^clt$work_area,
      value: ^clt$data_value;

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

    job_submission_options := NIL;
    file_count := clp$count_list_elements (pvt [p$file].value);
    IF pvt [p$user_job_name].specified THEN
      user_job_name_count := clp$count_list_elements (pvt [p$user_job_name].value);
    ELSE
      user_job_name_count := 0;
    IFEND;

    IF user_job_name_count > file_count THEN
      osp$set_status_abnormal ('CL', cle$too_many_values, 'USER_JOB_NAME', status);
      RETURN; {----->
    IFEND;

    job_submission_index := 0;
    number_of_submission_options := 0;

    FOR index := p$cpu_time_limit TO p$user_job_name DO
      CASE pvt [index].passing_method OF
      = clc$pass_by_value =
        IF pvt [index].value <> NIL THEN
          number_of_submission_options := number_of_submission_options + 1;
        IFEND;
      = clc$pass_by_reference =
        IF pvt [index].variable <> NIL THEN
          number_of_submission_options := number_of_submission_options + 1;
        IFEND;
      CASEND;
    FOREND;

    IF number_of_submission_options <> 0 THEN
      PUSH job_submission_options: [1 .. number_of_submission_options];
    IFEND;

{  Process CPU_TIME_LIMIT parameter.

    IF pvt [p$cpu_time_limit].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$cpu_time_limit;
      IF pvt [p$cpu_time_limit].value^.kind = clc$integer THEN
        job_submission_options^ [job_submission_index].cpu_time_limit :=
              pvt [p$cpu_time_limit].value^.integer_value.value;
      ELSE
        IF pvt [p$cpu_time_limit].value^.keyword_value = 'UNSPECIFIED' THEN
          job_submission_options^ [job_submission_index].cpu_time_limit := jmc$unspecified_cpu_time_limit;
        ELSEIF pvt [p$cpu_time_limit].value^.keyword_value = 'SYSTEM_DEFAULT' THEN
          job_submission_options^ [job_submission_index].cpu_time_limit := jmc$system_default_cpu_time_lim;
        ELSE { pvt [p$cpu_time_limit].value^.keyword_value = 'UNLIMITED'.
          job_submission_options^ [job_submission_index].cpu_time_limit := jmc$unlimited_cpu_time_limit;
        IFEND;
      IFEND;
    IFEND;

{  Process EARLIEST_RUN_TIME parameter.

    IF pvt [p$earliest_run_time].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$earliest_run_time;
      IF pvt [p$earliest_run_time].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
        job_submission_options^ [job_submission_index].earliest_run_time.specified := FALSE;
      ELSE
        job_submission_options^ [job_submission_index].earliest_run_time.specified := TRUE;
        job_submission_options^ [job_submission_index].earliest_run_time.date_time :=
              pvt [p$earliest_run_time].value^.date_time_value.value;
      IFEND;
    IFEND;

{  Process JOB_ABORT_DISPOSITION parameter.

    IF pvt [p$job_abort_disposition].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$job_abort_disposition;
      IF pvt [p$job_abort_disposition].value^.keyword_value = 'RESTART' THEN
        job_submission_options^ [job_submission_index].job_abort_disposition := jmc$restart_on_abort;
      ELSE { TERMINATE is the only other choice. }
        job_submission_options^ [job_submission_index].job_abort_disposition := jmc$terminate_on_abort;
      IFEND;
    IFEND;

{ Process JOB_CLASS parameter.

    IF pvt [p$job_class].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$job_class;
      job_submission_options^ [job_submission_index].job_class := pvt [p$job_class].value^.name_value;
    IFEND;

{  Process JOB_DEFERRED_BY_USER parameter.

    IF pvt [p$job_deferred_by_user].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$job_deferred_by_user;
      job_submission_options^ [job_submission_index].job_deferred_by_user :=
            pvt [p$job_deferred_by_user].value^.boolean_value.value;
    IFEND;

{  Process JOB_DESTINATION parameter.

    IF pvt [p$job_destination].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$job_destination_family;
      IF pvt [p$job_destination].value^.kind = clc$name THEN
        job_submission_options^ [job_submission_index].job_destination_family := pvt [p$job_destination].
              value^.name_value;
      ELSE
        job_submission_options^ [job_submission_index].job_destination_family := pvt [p$job_destination].
              value^.string_value^;
      IFEND;
    IFEND;

{  Process JOB_DESTINATION_USAGE parameter.

    IF pvt [p$job_destination_usage].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$job_destination_usage;
      IF pvt [p$job_destination_usage].value^.kind = clc$name THEN
        job_submission_options^ [job_submission_index].job_destination_usage :=
              pvt [p$job_destination_usage].value^.name_value;
      ELSE
        job_submission_options^ [job_submission_index].job_destination_usage :=
              pvt [p$job_destination_usage].value^.keyword_value;
      IFEND;
    IFEND;

{  Process JOB_EXECUTION_RING parameter.

    IF pvt [p$job_execution_ring].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$job_execution_ring;
      job_submission_options^ [job_submission_index].job_execution_ring :=
            pvt [p$job_execution_ring].value^.integer_value.value;
    IFEND;

{  Process JOB_QUALIFIER parameter.

    IF pvt [p$job_qualifier].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$job_qualifier_list;
      IF pvt [p$job_qualifier].value^.kind = clc$keyword THEN
        IF pvt [p$job_qualifier].value^.keyword_value = 'NONE' THEN
          PUSH job_submission_options^ [job_submission_index].job_qualifier_list: [1 .. 1];
          job_submission_options^ [job_submission_index].job_qualifier_list^ [1] := osc$null_name;
        ELSE { keyword_value = 'SYSTEM_DEFAULT'}
          PUSH default_job_attributes_p: [1 .. 1];
          default_job_attributes_p^ [1].key := jmc$job_qualifier_list;
          PUSH job_submission_options^ [job_submission_index].job_qualifier_list:
                [1 .. jmc$maximum_job_qualifiers];
          default_job_attributes_p^ [1].job_qualifier_list :=
                job_submission_options^ [job_submission_index].job_qualifier_list;
          jmp$get_attribute_defaults (jmc$batch, default_job_attributes_p, status);
          IF NOT status.normal THEN
            RETURN; {----->
          IFEND;
        IFEND;
      ELSE
        job_qualifier_count := clp$count_list_elements (pvt [p$job_qualifier].value);
        PUSH job_submission_options^ [job_submission_index].job_qualifier_list: [1 .. job_qualifier_count];
        job_qualifier_options := pvt [p$job_qualifier].value;
        FOR job_qualifier_index := 1 TO job_qualifier_count DO
          job_submission_options^ [job_submission_index].job_qualifier_list^ [job_qualifier_index] :=
                job_qualifier_options^.element_value^.name_value;
          job_qualifier_options := job_qualifier_options^.link;
        FOREND;
      IFEND;
    IFEND;

{  Process JOB_RECOVERY_DISPOSITION parameter.

    IF pvt [p$job_recovery_disposition].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$job_recovery_disposition;
      IF pvt [p$job_recovery_disposition].value^.keyword_value = 'RESTART' THEN
        job_submission_options^ [job_submission_index].job_recovery_disposition := jmc$restart_on_recovery;
      ELSEIF pvt [p$job_recovery_disposition].value^.keyword_value = 'CONTINUE' THEN
        job_submission_options^ [job_submission_index].job_recovery_disposition := jmc$continue_on_recovery;
      ELSE { pvt [p$job_recovery_disposition].value^.keyword_value = 'TERMINATE'.
        job_submission_options^ [job_submission_index].job_recovery_disposition := jmc$terminate_on_recovery;
      IFEND;
    IFEND;

{  Process LATEST_RUN_TIME parameter.

    IF pvt [p$latest_run_time].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$latest_run_time;
      IF pvt [p$latest_run_time].value^.kind = clc$keyword THEN { the only keyword allowed is NONE. }
        job_submission_options^ [job_submission_index].latest_run_time.specified := FALSE;
      ELSE
        job_submission_options^ [job_submission_index].latest_run_time.specified := TRUE;
        job_submission_options^ [job_submission_index].latest_run_time.date_time :=
              pvt [p$latest_run_time].value^.date_time_value.value;
      IFEND;
    IFEND;

{  Process LOGIN_FAMILY parameter.

    IF pvt [p$login_family].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$login_family;
      job_submission_options^ [job_submission_index].login_family := pvt [p$login_family].value^.name_value;
    IFEND;

{  Process MAGNETIC_TAPE_LIMIT parameter.

    IF pvt [p$magnetic_tape_limit].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$magnetic_tape_limit;
      IF pvt [p$magnetic_tape_limit].value^.kind = clc$integer THEN
        job_submission_options^ [job_submission_index].magnetic_tape_limit :=
              pvt [p$magnetic_tape_limit].value^.integer_value.value;
      ELSE
        IF pvt [p$magnetic_tape_limit].value^.keyword_value = 'UNSPECIFIED' THEN
          job_submission_options^ [job_submission_index].magnetic_tape_limit :=
                jmc$unspecified_mag_tape_limit;
        ELSEIF pvt [p$magnetic_tape_limit].value^.keyword_value = 'SYSTEM_DEFAULT' THEN
          job_submission_options^ [job_submission_index].magnetic_tape_limit :=
                jmc$system_default_mag_tape_lim;
        ELSE { pvt [p$magnetic_tape_limit].value^.keyword_value = 'UNLIMITED'.
          job_submission_options^ [job_submission_index].magnetic_tape_limit := jmc$unlimited_mag_tape_limit;
        IFEND;
      IFEND;
    IFEND;

{  Process MAXIMUM_WORKING_SET parameter.

    IF pvt [p$maximum_working_set].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$maximum_working_set;
      IF pvt [p$maximum_working_set].value^.kind = clc$integer THEN
        job_submission_options^ [job_submission_index].maximum_working_set :=
              pvt [p$maximum_working_set].value^.integer_value.value;
      ELSE
        IF pvt [p$maximum_working_set].value^.keyword_value = 'UNSPECIFIED' THEN
          job_submission_options^ [job_submission_index].maximum_working_set := jmc$unspecified_work_set_size;
        ELSEIF pvt [p$maximum_working_set].value^.keyword_value = 'SYSTEM_DEFAULT' THEN
          job_submission_options^ [job_submission_index].maximum_working_set :=
                jmc$system_default_work_set_siz;
        ELSE { pvt [p$maximum_working_set].value^.keyword_value = 'UNLIMITED'.
          job_submission_options^ [job_submission_index].maximum_working_set :=
                jmc$unlimited_working_set_size;
        IFEND;
      IFEND;
    IFEND;

{  Process OPERATOR_FAMILY parameter.

    job_submission_index := job_submission_index + 1;
    job_submission_options^ [job_submission_index].key := jmc$output_destination_family;
    job_submission_options^ [job_submission_index].output_destination_family := pvt [p$operator_family].
          value^.name_value;

{  Process OPERATOR_USER parameter.

    job_submission_index := job_submission_index + 1;
    job_submission_options^ [job_submission_index].key := jmc$station_operator;
    job_submission_options^ [job_submission_index].station_operator := pvt [p$operator_user].value^.
          name_value;

{  Process OUTPUT_DISPOSITION parameter.

    job_submission_index := job_submission_index + 1;
    job_submission_options^ [job_submission_index].key := jmc$output_disposition;
    IF pvt [p$output_disposition].value^.kind = clc$file THEN
      job_submission_options^ [job_submission_index].output_disposition.key := jmc$standard_output_path;
      PUSH job_submission_options^ [job_submission_index].output_disposition.standard_output_path;
      job_submission_options^ [job_submission_index].output_disposition.standard_output_path^ :=
            pvt [p$output_disposition].value^.file_value^;
    ELSE
      IF pvt [p$output_disposition].value^.keyword_value = 'PRINTER' THEN
        job_submission_options^ [job_submission_index].output_disposition.key :=
              jmc$normal_output_disposition;
      ELSEIF pvt [p$output_disposition].value^.keyword_value = 'DISCARD_ALL_OUTPUT' THEN
        job_submission_options^ [job_submission_index].output_disposition.key := jmc$discard_all_output;
      ELSEIF pvt [p$output_disposition].value^.keyword_value = 'DISCARD_STANDARD_OUTPUT' THEN
        job_submission_options^ [job_submission_index].output_disposition.key := jmc$discard_standard_output;
      ELSEIF pvt [p$output_disposition].value^.keyword_value = 'LOCAL' THEN
        job_submission_options^ [job_submission_index].output_disposition.key := jmc$local_output_disposition;
      ELSE { pvt [p$output_disposition].value^.keyword_value = 'WAIT_QUEUE'.
        job_submission_options^ [job_submission_index].output_disposition.key := jmc$wait_queue_path;
        job_submission_options^ [job_submission_index].output_disposition.wait_queue_path := NIL;
      IFEND;
    IFEND;

{  Process REMOTE_HOST_DIRECTIVE parameter.

    IF pvt [p$remote_host_directive].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$remote_host_directive;
      PUSH job_submission_options^ [job_submission_index].remote_host_directive;
      job_submission_options^ [job_submission_index].remote_host_directive^.size :=
            STRLENGTH (pvt [p$remote_host_directive].value^.string_value^);
      job_submission_options^ [job_submission_index].remote_host_directive^.parameters :=
            pvt [p$remote_host_directive].value^.string_value^;
    IFEND;

{  Process SRU_LIMIT parameter.

    IF pvt [p$sru_limit].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$sru_limit;
      IF pvt [p$sru_limit].value^.kind = clc$integer THEN
        job_submission_options^ [job_submission_index].sru_limit :=
              pvt [p$sru_limit].value^.integer_value.value;
      ELSE
        IF pvt [p$sru_limit].value^.keyword_value = 'UNSPECIFIED' THEN
          job_submission_options^ [job_submission_index].sru_limit := jmc$unspecified_sru_limit;
        ELSEIF pvt [p$sru_limit].value^.keyword_value = 'SYSTEM_DEFAULT' THEN
          job_submission_options^ [job_submission_index].sru_limit := jmc$system_default_sru_limit;
        ELSE { pvt [p$sru_limit].value^.keyword_value = 'UNLIMITED'.
          job_submission_options^ [job_submission_index].sru_limit := jmc$unlimited_sru_limit;
        IFEND;
      IFEND;
    IFEND;

{  Process STATION parameter.

    job_submission_index := job_submission_index + 1;
    job_submission_options^ [job_submission_index].key := jmc$station;
    IF pvt [p$station].value^.kind = clc$keyword THEN
      job_submission_options^ [job_submission_index].station := pvt [p$station].value^.keyword_value;
    ELSE
      job_submission_options^ [job_submission_index].station := pvt [p$station].value^.name_value;
    IFEND;

{  Process USER_INFORMATION parameter.

    IF pvt [p$user_information].specified THEN
      job_submission_index := job_submission_index + 1;
      job_submission_options^ [job_submission_index].key := jmc$user_information;
      PUSH job_submission_options^ [job_submission_index].user_information;
      job_submission_options^ [job_submission_index].user_information^ :=
            pvt [p$user_information].value^.string_value^;
    IFEND;

{  Process FILE,  SYSTEM_JOB_NAME, and USER_JOB_NAME parameters.

    IF pvt [p$system_job_name].specified THEN
      clp$get_work_area (#RING (^work_area_p), work_area_p, status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      clp$get_variable (pvt [p$system_job_name].variable^, work_area_p^, class, access_mode,
            evaluation_method, type_specification, value, status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      clp$get_type_information (type_specification, work_area_p^, type_information, status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      CASE type_information.kind OF
      = clc$list_type =
        PUSH list_value;
        system_job_name := list_value;
        system_job_name^.kind := clc$list;
        system_job_name^.element_value := NIL;
        system_job_name^.link := NIL;
        system_job_name^.generated_via_list_rest := FALSE;
      = clc$name_type =
        PUSH system_job_name;
        system_job_name^.kind := clc$name;
      ELSE { = clc$string_type =
        PUSH system_job_name;
        PUSH system_job_name^.string_value: [jmc$system_supplied_name_size];
        system_job_name^.kind := clc$string;
      CASEND;
    IFEND;

    file_list := pvt [p$file].value;
    IF user_job_name_count <> 0 THEN
      user_job_name_list := pvt [p$user_job_name].value;
      job_submission_index := job_submission_index + 1;
    ELSE
      user_job_name_list := NIL;
    IFEND;

    FOR file_number := 1 TO file_count DO
      IF (file_number <= user_job_name_count) AND (user_job_name_list <> NIL) THEN
        job_submission_options^ [job_submission_index].key := jmc$user_job_name;
        job_submission_options^ [job_submission_index].user_job_name :=
              user_job_name_list^.element_value^.name_value;
        user_job_name_list := user_job_name_list^.link;
      ELSEIF user_job_name_count <> 0 THEN
        job_submission_options^ [job_submission_index].key := jmc$null_attribute;
      IFEND;

      REPEAT
        jmp$submit_job (file_list^.element_value^.file_value^, job_submission_options, system_supplied_name,
              status);
        IF (NOT status.normal) AND (status.condition = jme$no_space_for_file) THEN
          jmp$update_display_message (status);

{ Wait for a while before retrying to give the system a chance to get some space back.

          PUSH wait_list_p: [1 .. 1];
          wait_list_p^ [1].activity := osc$i_await_time;
          wait_list_p^ [1].milliseconds := no_queue_space_wait_time;
          osp$i_await_activity_completion (wait_list_p^, ignore_ready_index, ignore_status);
        IFEND;
      UNTIL status.normal OR (status.condition <> jme$no_space_for_file);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      IF pvt [p$system_job_name].specified THEN
        IF system_job_name^.kind = clc$list THEN
          IF list_value^.element_value <> NIL THEN
            PUSH list_value^.link;
            list_value := list_value^.link;
            list_value^.kind := clc$list;
          IFEND;
          PUSH list_value^.element_value;
          list_value^.element_value^.kind := clc$name;
          list_value^.element_value^.name_value := system_supplied_name;
          list_value^.link := NIL;
          list_value^.generated_via_list_rest := FALSE;
        ELSEIF system_job_name^.kind = clc$name THEN
          IF file_number = 1 THEN
            system_job_name^.name_value := system_supplied_name;
          IFEND;
        ELSE { clc$string.
          IF file_number = 1 THEN
            system_job_name^.string_value^ := system_supplied_name;
          IFEND;
        IFEND;
      IFEND;

      file_list := file_list^.link;
    FOREND;

    IF pvt [p$system_job_name].specified THEN
      clp$change_variable (pvt [p$system_job_name].variable^, system_job_name, status);
    IFEND;

  PROCEND jmp$_submit_job;
?? TITLE := '[XDCL] jmp$_terminate_job', EJECT ??

  PROCEDURE [XDCL] jmp$_terminate_job
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$terj) terminate_job, terminate_jobs, terj (
{   name, jn, job_name, job_names, names, n: list of name = $required
{   job_state, s, state, js: any of
{       key
{         all
{       keyend
{       list of key
{         (deferred, d)
{         (queued, q)
{         (initiated, i)
{         (terminated, t)
{       keyend
{     anyend = all
{   output_disposition, odi: key
{       (discard_standard_output, dso)
{       (printer, p)
{       (wait_queue, wt, wq)
{     keyend = $optional
{   reason, r: (ADVANCED) any of
{       key
{         (operator_backup, ob)
{         (none, n)
{       keyend
{       name
{     anyend = none
{   status)

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

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 15] of clt$pdt_parameter_name,
      parameters: array [1 .. 5] 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,
        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$keyword_type_qualifier,
            keyword_specs: array [1 .. 8] of clt$keyword_specification,
          recend,
        recend,
        default_value: string (3),
      recend,
      type3: record
        header: clt$type_specification_header,
        qualifier: clt$keyword_type_qualifier,
        keyword_specs: array [1 .. 7] of clt$keyword_specification,
      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 .. 4] 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,
      type5: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [89, 9, 29, 11, 55, 45, 786],
    clc$command, 15, 5, 1, 1, 0, 0, 5, 'OSM$TERJ'], [
    ['JN                             ',clc$alias_entry, 1],
    ['JOB_NAME                       ',clc$alias_entry, 1],
    ['JOB_NAMES                      ',clc$alias_entry, 1],
    ['JOB_STATE                      ',clc$nominal_entry, 2],
    ['JS                             ',clc$abbreviation_entry, 2],
    ['N                              ',clc$abbreviation_entry, 1],
    ['NAME                           ',clc$nominal_entry, 1],
    ['NAMES                          ',clc$alias_entry, 1],
    ['ODI                            ',clc$abbreviation_entry, 3],
    ['OUTPUT_DISPOSITION             ',clc$nominal_entry, 3],
    ['R                              ',clc$abbreviation_entry, 4],
    ['REASON                         ',clc$nominal_entry, 4],
    ['S                              ',clc$alias_entry, 2],
    ['STATE                          ',clc$alias_entry, 2],
    ['STATUS                         ',clc$nominal_entry, 5]],
    [
{ 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, 21, 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$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 383,
  clc$optional_default_parameter, 0, 3],
{ PARAMETER 3
    [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$standard_parameter_checking, 266,
  clc$optional_parameter, 0, 0],
{ PARAMETER 4
    [12, clc$advanced_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, 180,
  clc$optional_default_parameter, 0, 4],
{ PARAMETER 5
    [15, 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$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]]
      ],
    319, [[1, 0, clc$list_type], [303, 1, clc$max_list_size, FALSE],
        [[1, 0, clc$keyword_type], [8], [
        ['D                              ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
        ['DEFERRED                       ', clc$nominal_entry, clc$normal_usage_entry, 1],
        ['I                              ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
        ['INITIATED                      ', clc$nominal_entry, clc$normal_usage_entry, 3],
        ['Q                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
        ['QUEUED                         ', clc$nominal_entry, clc$normal_usage_entry, 2],
        ['T                              ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
        ['TERMINATED                     ', clc$nominal_entry, clc$normal_usage_entry, 4]]
        ]
      ]
    ,
    'all'],
{ PARAMETER 3
    [[1, 0, clc$keyword_type], [7], [
    ['DISCARD_STANDARD_OUTPUT        ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['DSO                            ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
    ['P                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['PRINTER                        ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['WAIT_QUEUE                     ', clc$nominal_entry, clc$normal_usage_entry, 3],
    ['WQ                             ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['WT                             ', clc$alias_entry, clc$normal_usage_entry, 3]]
    ],
{ PARAMETER 4
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type],
    FALSE, 2],
    155, [[1, 0, clc$keyword_type], [4], [
      ['N                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
      ['NONE                           ', clc$nominal_entry, clc$normal_usage_entry, 2],
      ['OB                             ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
      ['OPERATOR_BACKUP                ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ,
    'none'],
{ PARAMETER 5
    [[1, 0, clc$status_type]]];

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

    CONST
      p$name = 1,
      p$job_state = 2,
      p$output_disposition = 3,
      p$reason = 4,
      p$status = 5;

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

{ This constant represents the maximum number of parameters specified on the
{ command plus one for forcing the request to go to server mainframes in a
{ cluster.

    CONST
      max_termination_options = 4;

    VAR
      value: clt$value,
      name_number: 1 .. clc$max_list_size,
      job_name: jmt$name,
      job_state_list: ^clt$data_value,
      job_state_list_index: 0 .. clc$max_list_size,
      name_list: ^clt$data_value,
      job_termination_options: ^jmt$job_termination_options,
      reason: ost$name;

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

    PUSH job_termination_options: [1 .. max_termination_options];

{  Process JOB_STATE parameter.

    job_termination_options^ [1].key := jmc$job_state_set;
    job_termination_options^ [1].job_state_set := $jmt$job_state_set [];
    IF pvt [p$job_state].value^.kind = clc$keyword THEN { option = ALL
      job_termination_options^ [1].job_state_set := -$jmt$job_state_set [jmc$completed_job];
    ELSE
      job_state_list := pvt [p$job_state].value;
      WHILE job_state_list <> NIL DO
        IF job_state_list^.element_value^.keyword_value = 'DEFERRED' THEN
          job_termination_options^ [1].job_state_set := job_termination_options^ [1].job_state_set +
                $jmt$job_state_set [jmc$deferred_job];
        ELSEIF job_state_list^.element_value^.keyword_value = 'QUEUED' THEN
          job_termination_options^ [1].job_state_set := job_termination_options^ [1].job_state_set +
                $jmt$job_state_set [jmc$queued_job];
        ELSEIF job_state_list^.element_value^.keyword_value = 'INITIATED' THEN
          job_termination_options^ [1].job_state_set := job_termination_options^ [1].job_state_set +
                $jmt$job_state_set [jmc$initiated_job];
        ELSE { 'TERMINATED'
          job_termination_options^ [1].job_state_set := job_termination_options^ [1].job_state_set +
                $jmt$job_state_set [jmc$terminating_job];
        IFEND;
        job_state_list := job_state_list^.link;
      WHILEND;
    IFEND;

{  Process OUTPUT_DISPOSITION parameter.

    IF pvt [p$output_disposition].specified THEN
      job_termination_options^ [2].key := jmc$output_disposition;
      IF pvt [p$output_disposition].value^.keyword_value = 'DISCARD_STANDARD_OUTPUT' THEN
        job_termination_options^ [2].output_disposition.key := jmc$discard_standard_output;
      ELSEIF pvt [p$output_disposition].value^.keyword_value = 'PRINTER' THEN
        job_termination_options^ [2].output_disposition.key := jmc$normal_output_disposition;
      ELSE { pvt [p$output_disposition].value^.keyword_value = 'WAIT_QUEUE'.
        job_termination_options^ [2].output_disposition.key := jmc$wait_queue_path;
        job_termination_options^ [2].output_disposition.wait_queue_path := NIL;
      IFEND;
    ELSE
      job_termination_options^ [2].key := jmc$null_attribute;
    IFEND;

    job_termination_options^ [3].key := jmc$continue_request_to_servers;
    job_termination_options^ [3].continue_request_to_servers := TRUE;

{Process REASON parameter.

    job_termination_options^ [4].key := jmc$termination_reason;
    job_termination_options^ [4].reason_p := ^reason;
    IF (NOT avp$system_administrator ()) AND (NOT avp$system_operator ()) THEN
      osp$get_status_condition_name (jme$job_deleted_via_command, reason, {ignore} status);
    ELSEIF pvt [p$reason].value^.kind = clc$keyword THEN
      IF pvt [p$reason].value^.keyword_value = 'NONE' THEN
        osp$get_status_condition_name (jme$job_deleted_via_command, reason, {ignore} status);
      ELSE
        osp$get_status_condition_name (jme$operator_queue_backup, reason, {ignore} status);
      IFEND;
    ELSE
      reason := pvt [p$reason].value^.name_value;
    IFEND;

{Process NAME parameter.

    name_list := pvt [p$name].value;

    WHILE name_list <> NIL DO
      jmp$determine_name_kind (name_list^.element_value^.name_value, job_name, status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      jmp$terminate_job (job_name, job_termination_options, status);
      IF NOT status.normal THEN
        RETURN; {----->
      IFEND;

      name_list := name_list^.link;
    WHILEND;

  PROCEND jmp$_terminate_job;
?? TITLE := '[XDCL] jmp$_terminate_output', EJECT ??

  PROCEDURE [XDCL] jmp$_terminate_output
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ PROCEDURE (osm$tero) terminate_output, tero (
{   name, names, n: any of
{       key output keyend
{       list of name
{     anyend = $required
{   output_state, os: key
{       all
{       (deferred, d)
{       (queued, q)
{       (initiated, i)
{       (completed, c)
{     keyend = all
{   reason, r: (ADVANCED) any of
{       key
{         (operator_backup, ob)
{         (none, n)
{       keyend
{       name
{     anyend = none
{   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,
        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$keyword_type_qualifier,
        keyword_specs: array [1 .. 9] of clt$keyword_specification,
        default_value: string (3),
      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 .. 4] 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,
      type4: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [89, 10, 4, 22, 29, 56, 675],
    clc$command, 8, 4, 1, 1, 0, 0, 4, 'OSM$TERO'], [
    ['N                              ',clc$abbreviation_entry, 1],
    ['NAME                           ',clc$nominal_entry, 1],
    ['NAMES                          ',clc$alias_entry, 1],
    ['OS                             ',clc$abbreviation_entry, 2],
    ['OUTPUT_STATE                   ',clc$nominal_entry, 2],
    ['R                              ',clc$abbreviation_entry, 3],
    ['REASON                         ',clc$nominal_entry, 3],
    ['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$standard_parameter_checking, 85, clc$required_parameter,
  0, 0],
{ 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, 340,
  clc$optional_default_parameter, 0, 3],
{ PARAMETER 3
    [7, clc$advanced_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, 180,
  clc$optional_default_parameter, 0, 4],
{ PARAMETER 4
    [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], [
      ['OUTPUT                         ', 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$keyword_type], [9], [
    ['ALL                            ', clc$nominal_entry, clc$normal_usage_entry, 1],
    ['C                              ', clc$abbreviation_entry, clc$normal_usage_entry, 5],
    ['COMPLETED                      ', clc$nominal_entry, clc$normal_usage_entry, 5],
    ['D                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
    ['DEFERRED                       ', clc$nominal_entry, clc$normal_usage_entry, 2],
    ['I                              ', clc$abbreviation_entry, clc$normal_usage_entry, 4],
    ['INITIATED                      ', clc$nominal_entry, clc$normal_usage_entry, 4],
    ['Q                              ', clc$abbreviation_entry, clc$normal_usage_entry, 3],
    ['QUEUED                         ', clc$nominal_entry, clc$normal_usage_entry, 3]]
    ,
    'all'],
{ PARAMETER 3
    [[1, 0, clc$union_type], [[clc$keyword_type, clc$name_type],
    FALSE, 2],
    155, [[1, 0, clc$keyword_type], [4], [
      ['N                              ', clc$abbreviation_entry, clc$normal_usage_entry, 2],
      ['NONE                           ', clc$nominal_entry, clc$normal_usage_entry, 2],
      ['OB                             ', clc$abbreviation_entry, clc$normal_usage_entry, 1],
      ['OPERATOR_BACKUP                ', clc$nominal_entry, clc$normal_usage_entry, 1]]
      ],
    5, [[1, 0, clc$name_type], [1, osc$max_name_size]]
    ,
    'none'],
{ PARAMETER 4
    [[1, 0, clc$status_type]]];

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

    CONST
      p$name = 1,
      p$output_state = 2,
      p$reason = 3,
      p$status = 4;

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

    VAR
      job_attribute_changes_p: ^jmt$job_attribute_changes,
      name_list: ^clt$data_value,
      name_number: 1 .. clc$max_list_size,
      output_name: jmt$name,
      output_termination_options: ^jmt$output_termination_options;

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

    PUSH output_termination_options: [1 .. 2];

{  Process OUTPUT_STATE parameter.

    output_termination_options^ [1].key := jmc$output_state_set;
    output_termination_options^ [1].output_state_set := $jmt$output_state_set [];
    IF pvt [p$output_state].value^.keyword_value = 'ALL' THEN
      output_termination_options^ [1].output_state_set := -$jmt$output_state_set [jmc$terminated_output];
    ELSEIF pvt [p$output_state].value^.keyword_value = 'DEFERRED' THEN
      output_termination_options^ [1].output_state_set := $jmt$output_state_set [jmc$deferred_output];
    ELSEIF pvt [p$output_state].value^.keyword_value = 'QUEUED' THEN
      output_termination_options^ [1].output_state_set := $jmt$output_state_set [jmc$queued_output];
    ELSEIF pvt [p$output_state].value^.keyword_value = 'INITIATED' THEN
      output_termination_options^ [1].output_state_set := $jmt$output_state_set [jmc$initiated_output];
    ELSE { keyword_value = 'COMPLETED'
      output_termination_options^ [1].output_state_set := $jmt$output_state_set [jmc$completed_output];
    IFEND;

{Process REASON parameter.

    output_termination_options^ [2].key := jmc$termination_reason;
    IF (NOT avp$system_administrator ()) AND (NOT avp$system_operator ()) THEN
      osp$get_status_condition_name (jme$output_deleted_via_command, output_termination_options^ [2].reason,
            {ignore} status);
    ELSEIF pvt [p$reason].value^.kind = clc$keyword THEN
      IF pvt [p$reason].value^.keyword_value = 'NONE' THEN
        osp$get_status_condition_name (jme$output_deleted_via_command, output_termination_options^ [2].reason,
              {ignore} status);
      ELSE
        osp$get_status_condition_name (jme$operator_queue_backup, output_termination_options^ [2].reason,
              {ignore} status);
      IFEND;
    ELSE
      output_termination_options^ [2].reason := pvt [p$reason].value^.name_value;
    IFEND;

{Process NAME parameter.

    name_list := pvt [p$name].value;

    IF name_list^.kind = clc$keyword THEN
      PUSH job_attribute_changes_p: [1 .. 1];
      job_attribute_changes_p^ [1].key := jmc$output_disposition;
      job_attribute_changes_p^ [1].output_disposition.key := jmc$discard_standard_output;
      jmp$change_job_attributes (job_attribute_changes_p, status);
      IF NOT status.normal THEN
        RETURN {----->
      IFEND;
    ELSE
      WHILE name_list <> NIL DO
        jmp$determine_name_kind (name_list^.element_value^.name_value, output_name, status);
        IF NOT status.normal THEN
          RETURN; {----->
        IFEND;

        jmp$terminate_output (output_name, output_termination_options, status);
        IF NOT status.normal THEN
          RETURN; {----->
        IFEND;

        name_list := name_list^.link;
      WHILEND;
    IFEND;

  PROCEND jmp$_terminate_output;
MODEND jmm$queue_file_commands;

