?? RIGHT := 110 ??
?? NEWTITLE := 'NOS/VE:  Object Library Generator' ??
MODULE ocm$display_module;

{ PURPOSE:                              }
{   To display information about all or }
{   part of the contents of a module.   }

?? PUSH (LISTEXT := ON) ??
*copyc llt$command_description
*copyc llt$function_description
*copyc llt$program_description
*copyc occ$retain
*copyc oce$library_generator_errors
*copyc oct$changed_info
*copyc oct$display_toggles
*copyc oct$external_declaration_list
*copyc oct$external_reference_list
*copyc oct$header
*copyc oct$module_description
*copyc oct$name_list
?? POP ??
*copyc ocp$output
*copyc ocp$output_time
*copyc ocp$output_date
*copyc ocp$output_module_kind
*copyc ocp$output_library_member_kind
*copyc ocp$output_module_generator
*copyc ocp$output_scl_parameters
*copyc ocp$obtain_xdcl_list
*copyc ocp$obtain_xref_list
*copyc ocp$obtain_component_info
*copyc ocp$obtain_header
*copyc ocp$obtain_library_list


*copyc clp$get_message_module_info

*copyc osp$get_status_condition_string
*copyc osp$set_status_abnormal

?? NEWTITLE := '  DISPLAY_IDENTIFICATION' ??
?? EJECT ??

  PROCEDURE display_identification (header: oct$header;
        kind: string ( * );
        display_toggles: oct$display_toggles);


    VAR
      identification: llt$identification,
      ignore: boolean;


    identification := header.identification;

    IF display_toggles = $oct$display_toggles [] THEN
      ocp$output (occ$single_space, identification.name, #SIZE (identification.name), occ$end_of_line);

    ELSE
      IF display_toggles - $oct$display_toggles [occ$display_time_date] <> $oct$display_toggles [] THEN
        ocp$output (occ$double_space, ' ', 1, occ$end_of_line);
      IFEND;
      ocp$output (occ$single_space, identification.name, #SIZE (identification.name), occ$continue);
      ocp$output (' - ', kind, #SIZE (kind), occ$continue);

      IF (occ$display_time_date IN display_toggles) OR (occ$display_module_header IN display_toggles) THEN
        ocp$output ('', ' -', 2, occ$continue);
        ocp$output_time (^identification.time_created, occ$continue, ignore);
        ocp$output_date (^identification.date_created, occ$end_of_line, ignore);
      ELSE
        ocp$output ('', ' ', 1, occ$end_of_line);
      IFEND;


      IF occ$display_module_header IN display_toggles THEN
        ocp$output (' ', 'kind:', 5, occ$continue);
        ocp$output_module_kind (^identification.kind, occ$continue, ignore);

        ocp$output ('  ', 'generator:', 10, occ$continue);
        ocp$output_module_generator (^identification.generator_id, occ$end_of_line, ignore);

        ocp$output (' ', 'generator name version:', 23, occ$continue);
        ocp$output (' ', identification.generator_name_vers, STRLENGTH (identification.generator_name_vers),
              occ$end_of_line);

        IF identification.commentary <> osc$null_name THEN
          ocp$output (' ', 'commentary:', 11, occ$continue);
          ocp$output (' ', identification.commentary, STRLENGTH (identification.commentary), occ$end_of_line);
        IFEND;

        IF header.application_identifier.name <> osc$null_name THEN
          ocp$output (' ', 'application identifier:', 23, occ$continue);
          ocp$output (' ', header.application_identifier.name, STRLENGTH (header.application_identifier.name),
                occ$end_of_line);
        IFEND;
      IFEND;
    IFEND;



  PROCEND display_identification;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_LIBRARY_MEMBER_HEADER' ??
?? EJECT ??

  PROCEDURE display_library_member_header (header: llt$library_member_header;
        kind: string ( * );
        display_toggles: oct$display_toggles);


    VAR
      availability_kinds: [STATIC, READ] llt$library_member_kinds := [llc$command_procedure,
        llc$program_description, llc$function_procedure, llc$applic_command_procedure,
        llc$applic_program_description, llc$applic_command_description, llc$command_description,
        llc$function_description],
      scope_kinds: [STATIC, READ] llt$library_member_kinds := [llc$command_procedure, llc$program_description,
        llc$function_procedure, llc$applic_command_procedure, llc$applic_program_description,
        llc$applic_command_description, llc$command_description, llc$function_description],
      log_option_kinds: [STATIC, READ] llt$library_member_kinds := [llc$command_procedure,
        llc$program_description, llc$applic_command_procedure, llc$applic_program_description,
        llc$applic_command_description, llc$command_description],
      ignore: boolean;


    IF display_toggles = $oct$display_toggles [] THEN
      ocp$output (occ$single_space, header.name, STRLENGTH (header.name), occ$end_of_line);

    ELSE
      IF display_toggles - $oct$display_toggles [occ$display_time_date] <> $oct$display_toggles [] THEN
        ocp$output (occ$double_space, ' ', 1, occ$end_of_line);
      IFEND;
      ocp$output (occ$single_space, header.name, STRLENGTH (header.name), occ$continue);
      ocp$output (' - ', kind, STRLENGTH (kind), occ$continue);

      IF (occ$display_time_date IN display_toggles) OR (occ$display_module_header IN display_toggles) THEN
        ocp$output ('', ' -', 2, occ$continue);
        ocp$output_time (^header.time_created, occ$continue, ignore);
        ocp$output_date (^header.date_created, occ$end_of_line, ignore);
      ELSE
        ocp$output ('', ' ', 1, occ$end_of_line);
      IFEND;


      IF occ$display_module_header IN display_toggles THEN
        ocp$output (' ', 'kind:', 5, occ$continue);
        ocp$output_library_member_kind (^header.kind, occ$continue, ignore);

        ocp$output ('  ', 'generator:', 10, occ$continue);
        ocp$output_module_generator (^header.generator_id, occ$end_of_line, ignore);

        ocp$output (' ', 'generator name version:', 23, occ$continue);
        ocp$output (' ', header.generator_name_vers, STRLENGTH (header.generator_name_vers), occ$end_of_line);

        IF header.commentary <> osc$null_name THEN
          ocp$output (' ', 'commentary:', 11, occ$continue);
          ocp$output (' ', header.commentary, STRLENGTH (header.commentary), occ$end_of_line);
        IFEND;

        IF header.kind IN availability_kinds THEN
          ocp$output (' ', 'availability:', 13, occ$continue);
          CASE header.command_function_availability OF
          = clc$normal_usage_entry =
            ocp$output (' ', 'NORMAL USAGE', 12, occ$end_of_line);
          = clc$advanced_usage_entry =
            ocp$output (' ', 'ADVANCED USAGE', 14, occ$end_of_line);
          = clc$hidden_entry =
            ocp$output (' ', 'HIDDEN', 6, occ$end_of_line);
          ELSE
          CASEND;
        IFEND;

        IF header.kind IN scope_kinds THEN
          ocp$output (' ', 'scope:', 6, occ$continue);
          CASE header.command_function_kind OF
          = llc$entry_point =
            ocp$output (' ', 'XDCL', 4, occ$end_of_line);
          = llc$gate =
            ocp$output (' ', 'GATE', 4, occ$end_of_line);
          = llc$local_to_library =
            ocp$output (' ', 'LOCAL', 5, occ$end_of_line);
          ELSE
          CASEND;
        IFEND;

        IF header.kind IN log_option_kinds THEN
          ocp$output (' ', 'log option:', 11, occ$continue);
          CASE header.command_log_option OF
          = clc$automatically_log =
            ocp$output (' ', 'AUTOMATIC', 9, occ$end_of_line);
          = clc$manually_log =
            ocp$output (' ', 'MANUAL', 6, occ$end_of_line);
          ELSE
          CASEND;
        IFEND;

      IFEND;
    IFEND;



  PROCEND display_library_member_header;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_LIBRARY_LIST' ??
?? EJECT ??

  PROCEDURE display_library_list (library_list: oct$name_list);


    VAR
      library: ^oct$name_list;


    library := library_list.link;

    IF library <> NIL THEN
      ocp$output ('0', 'libraries', 9, occ$end_of_line);
      ocp$output (' ', '~~~~~~~~~', 9, occ$end_of_line);

      REPEAT
        ocp$output ('   ', library^.name, STRLENGTH (library^.name), occ$continue);
        library := library^.link;

        IF library <> NIL THEN
          ocp$output ('  ', library^.name, STRLENGTH (library^.name), occ$continue);
          library := library^.link;
        IFEND;

        ocp$output ('', ' ', 1, occ$end_of_line);
      UNTIL library = NIL;
    IFEND;


  PROCEND display_library_list;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_ALIASES' ??
?? EJECT ??

  PROCEDURE display_aliases (aliases: oct$external_declaration_list);


    VAR
      next_alias: ^oct$external_declaration_list;


    next_alias := aliases.link;

    IF next_alias <> NIL THEN
      ocp$output ('0', 'aliases', 7, occ$end_of_line);
      ocp$output (' ', '~~~~~~~', 7, occ$end_of_line);

      REPEAT
        IF next_alias^.name <> osc$null_name THEN
          ocp$output ('   ', next_alias^.name, STRLENGTH (next_alias^.name), occ$end_of_line);
        IFEND;

        next_alias := next_alias^.link;
      UNTIL next_alias = NIL;
    IFEND;



  PROCEND display_aliases;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_XDCL_LIST' ??
?? EJECT ??

  PROCEDURE display_xdcl_list (xdcl_list: oct$external_declaration_list;
        starting_procedure: pmt$program_name;
        deferred_entry_point_list: oct$external_declaration_list);

    VAR
      deferred_entry_point: ^oct$external_declaration_list,
      x_dcl: ^oct$external_declaration_list;


    deferred_entry_point := deferred_entry_point_list.link;
    x_dcl := xdcl_list.link;

    IF (x_dcl <> NIL) OR (deferred_entry_point <> NIL) THEN
      ocp$output ('0', 'entry points', 12, occ$end_of_line);
      ocp$output (' ', '~~~~~~~~~~~~', 12, occ$end_of_line);

      IF x_dcl <> NIL THEN
        REPEAT
          IF x_dcl^.name <> osc$null_name THEN
            ocp$output ('   ', x_dcl^.name, STRLENGTH (x_dcl^.name), occ$continue);

            IF llc$gated_entry_point IN x_dcl^.attributes THEN
              ocp$output (' ', 'GATED', 5, occ$continue);
            ELSE
              ocp$output (' ', '     ', 5, occ$continue);
            IFEND;
            IF llc$retain_entry_point IN x_dcl^.attributes THEN
              ocp$output ('  ', 'RETAINED', 8, occ$continue);
            IFEND;
            ocp$output ('  ', ' ', 1, occ$end_of_line);
          IFEND;
          x_dcl := x_dcl^.link;
        UNTIL x_dcl = NIL;
      IFEND;

      IF deferred_entry_point <> NIL THEN
        REPEAT
          IF deferred_entry_point^.name <> osc$null_name THEN
            ocp$output ('   ', deferred_entry_point^.name, STRLENGTH (deferred_entry_point^.name),
                  occ$continue);

            IF llc$gated_entry_point IN deferred_entry_point^.attributes THEN
              ocp$output (' ', 'GATED', 5, occ$continue);
            ELSE
              ocp$output (' ', '     ', 5, occ$continue);
            IFEND;
            IF llc$retain_entry_point IN deferred_entry_point^.attributes THEN
              ocp$output ('  ', 'RETAINED', 8, occ$continue);
            ELSE
              ocp$output ('  ', '        ', 8, occ$continue);
            IFEND;
            ocp$output ('  ', 'DEFERRED', 8, occ$end_of_line);
          IFEND;
          deferred_entry_point := deferred_entry_point^.link;
        UNTIL deferred_entry_point = NIL;
      IFEND;
    IFEND;

    IF starting_procedure <> osc$null_name THEN
      ocp$output ('0', 'starting procedure:', 19, occ$continue);
      ocp$output (' ', starting_procedure, STRLENGTH (starting_procedure), occ$end_of_line);
    IFEND;


  PROCEND display_xdcl_list;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_XREF_LIST' ??
?? EJECT ??

  PROCEDURE display_xref_list (xref_list: oct$external_reference_list);


    VAR
      x_ref: ^oct$external_reference_list;


    x_ref := xref_list.link;

    IF x_ref <> NIL THEN
      ocp$output ('0', 'external references', 19, occ$end_of_line);
      ocp$output (' ', '~~~~~~~~~~~~~~~~~~~', 19, occ$end_of_line);

      REPEAT
        ocp$output ('   ', x_ref^.name, STRLENGTH (x_ref^.name), occ$continue);
        x_ref := x_ref^.link;

        IF x_ref <> NIL THEN
          ocp$output ('  ', x_ref^.name, STRLENGTH (x_ref^.name), occ$continue);
          x_ref := x_ref^.link;
        IFEND;

        ocp$output ('', ' ', 1, occ$end_of_line);
      UNTIL x_ref = NIL;
    IFEND;


  PROCEND display_xref_list;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_COMPONENT_DESCRIPTION' ??
?? EJECT ??

  PROCEDURE display_component_information (component: ^llt$component_information);


    VAR
      ignore: boolean,
      i: integer;


    ocp$output ('0', 'components', 10, occ$end_of_line);
    ocp$output (' ', '~~~~~~~~~~', 10, occ$end_of_line);

    FOR i := 1 TO UPPERBOUND (component^) DO
      ocp$output ('   ', 'component:', 10, occ$continue);
      ocp$output (' ', component^ [i].name, STRLENGTH (component^ [i].name), occ$end_of_line);

      ocp$output ('   ', 'created:  ', 10, occ$continue);
      ocp$output_time (^component^ [i].time_created, occ$continue, ignore);
      ocp$output_date (^component^ [i].date_created, occ$end_of_line, ignore);

      ocp$output ('   ', 'generator:', 10, occ$continue);
      ocp$output_module_generator (^component^ [i].generator_id, occ$end_of_line, ignore);

      ocp$output ('   ', 'generator name version:', 23, occ$continue);
      ocp$output (' ', component^ [i].generator_name_vers, STRLENGTH (component^ [i].generator_name_vers),
            occ$end_of_line);

      IF component^ [i].commentary <> osc$null_name THEN
        ocp$output ('   ', 'commentary:', 11, occ$continue);
        ocp$output (' ', component^ [i].commentary, STRLENGTH (component^ [i].commentary), occ$end_of_line);
      IFEND;

      IF i <> UPPERBOUND (component^) THEN
        ocp$output (' ', '  ', 2, occ$end_of_line);
      IFEND;
    FOREND;



  PROCEND display_component_information;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_PROGRAM_ATTRIBUTES' ??
?? EJECT ??

  PROCEDURE display_program_attributes (VAR module_description: oct$module_description;
        library_member_header: llt$library_member_header;
    VAR status: ost$status);


    VAR
      strng: string (120),
      l: integer,
      i: integer,

      member: ^llt$program_description,
      aliases: ^pmt$module_list,
      program_attributes: ^llt$program_attributes,
      conditions: ^pmt$enable_inhibit_conditions,
      object_file_list: ^llt$object_file_list,
      library_list: ^llt$object_library_list,
      module_list: ^pmt$module_list;


    IF library_member_header.number_of_aliases <> 0 THEN
      aliases := #PTR (library_member_header.aliases, module_description.file^);
      IF aliases = NIL THEN
        osp$set_status_abnormal ('OC', oce$e_premature_eof_in_module, library_member_header.name, status);
        RETURN;
      IFEND;
    IFEND;

    member := #PTR (library_member_header.member, module_description.file^);
    IF member = NIL THEN
      osp$set_status_abnormal ('OC', oce$e_premature_eof_in_module, library_member_header.name, status);
      RETURN;
    IFEND;

    RESET member;
    NEXT program_attributes IN member;
    IF program_attributes = NIL THEN
      osp$set_status_abnormal ('OC', oce$e_premature_eof_in_module, library_member_header.name, status);
      RETURN;
    IFEND;

    IF (pmc$object_file_list_specified IN program_attributes^.contents) AND (program_attributes^.
          number_of_object_files <> 0) THEN
      NEXT object_file_list: [1 .. program_attributes^.number_of_object_files] IN member;
      IF object_file_list = NIL THEN
        osp$set_status_abnormal ('OC', oce$e_premature_eof_in_module, library_member_header.name, status);
        RETURN;
      IFEND;

      ocp$output ('0', 'object file list', 16, occ$end_of_line);
      ocp$output (' ', '~~~~~~~~~~~~~~~~', 16, occ$end_of_line);
      FOR i := 1 TO program_attributes^.number_of_object_files DO
        ocp$output ('   ', object_file_list^ [i], STRLENGTH (object_file_list^ [i]), occ$end_of_line);
      FOREND;
    IFEND;
?? EJECT ??


    IF (pmc$module_list_specified IN program_attributes^.contents) AND (program_attributes^.number_of_modules
          <> 0) THEN
      NEXT module_list: [1 .. program_attributes^.number_of_modules] IN member;
      IF module_list = NIL THEN
        osp$set_status_abnormal ('OC', oce$e_premature_eof_in_module, library_member_header.name, status);
        RETURN;
      IFEND;

      ocp$output ('0', 'module list', 11, occ$end_of_line);
      ocp$output (' ', '~~~~~~~~~~~', 11, occ$end_of_line);

      i := 1;
      FOR i := 1 TO program_attributes^.number_of_modules DO
        ocp$output ('   ', module_list^ [i], STRLENGTH (module_list^ [i]), occ$end_of_line);
      FOREND;
    IFEND;


    IF (pmc$library_list_specified IN program_attributes^.contents) AND (program_attributes^.
          number_of_libraries <> 0) THEN
      NEXT library_list: [1 .. program_attributes^.number_of_libraries] IN member;
      IF library_list = NIL THEN
        osp$set_status_abnormal ('OC', oce$e_premature_eof_in_module, library_member_header.name, status);
        RETURN;
      IFEND;

      ocp$output ('0', 'library list', 12, occ$end_of_line);
      ocp$output (' ', '~~~~~~~~~~~~', 12, occ$end_of_line);

      FOR i := 1 TO program_attributes^.number_of_libraries DO
        ocp$output ('   ', library_list^ [i], STRLENGTH (library_list^ [i]), occ$end_of_line);
      FOREND;
    IFEND;

    ocp$output (' ', '  ', 2, occ$end_of_line);

?? EJECT ??

    IF (pmc$condition_specified IN program_attributes^.contents) THEN
      NEXT conditions IN member;
      IF conditions = NIL THEN
        osp$set_status_abnormal ('OC', oce$e_premature_eof_in_module, library_member_header.name, status);
        RETURN;
      IFEND;

      ocp$output ('0', 'conditions', 10, occ$end_of_line);
      ocp$output (' ', '~~~~~~~~~~', 10, occ$end_of_line);

      IF pmc$arithmetic_overflow IN conditions^.enable_system_conditions THEN
        ocp$output ('   ', 'arithmetic overflow             :  ON', 37, occ$end_of_line);
      ELSEIF pmc$arithmetic_overflow IN conditions^.inhibit_system_conditions THEN
        ocp$output ('   ', 'arithmetic overflow             : OFF', 37, occ$end_of_line);
      IFEND;

      IF pmc$arithmetic_significance IN conditions^.enable_system_conditions THEN
        ocp$output ('   ', 'arithmetic loss of significance :  ON', 37, occ$end_of_line);
      ELSEIF pmc$arithmetic_significance IN conditions^.inhibit_system_conditions THEN
        ocp$output ('   ', 'arithmetic loss of significance : OFF', 37, occ$end_of_line);
      IFEND;

      IF pmc$divide_fault IN conditions^.enable_system_conditions THEN
        ocp$output ('   ', 'divide fault                    :  ON', 37, occ$end_of_line);
      ELSEIF pmc$divide_fault IN conditions^.inhibit_system_conditions THEN
        ocp$output ('   ', 'divide fault                    : OFF', 37, occ$end_of_line);
      IFEND;

      IF pmc$exponent_overflow IN conditions^.enable_system_conditions THEN
        ocp$output ('   ', 'exponent overflow               :  ON', 37, occ$end_of_line);
      ELSEIF pmc$exponent_overflow IN conditions^.inhibit_system_conditions THEN
        ocp$output ('   ', 'exponent overflow               : OFF', 37, occ$end_of_line);
      IFEND;

      IF pmc$exponent_underflow IN conditions^.enable_system_conditions THEN
        ocp$output ('   ', 'exponent underflow              :  ON', 37, occ$end_of_line);
      ELSEIF pmc$exponent_underflow IN conditions^.inhibit_system_conditions THEN
        ocp$output ('   ', 'exponent underflow              : OFF', 37, occ$end_of_line);
      IFEND;

      IF pmc$fp_indefinite IN conditions^.enable_system_conditions THEN
        ocp$output ('   ', 'fp indefinite                   :  ON', 37, occ$end_of_line);
      ELSEIF pmc$fp_indefinite IN conditions^.inhibit_system_conditions THEN
        ocp$output ('   ', 'fp indefinite                   : OFF', 37, occ$end_of_line);
      IFEND;

      IF pmc$fp_significance_loss IN conditions^.enable_system_conditions THEN
        ocp$output ('   ', 'fp loss of significnace         :  ON', 37, occ$end_of_line);
      ELSEIF pmc$fp_significance_loss IN conditions^.inhibit_system_conditions THEN
        ocp$output ('   ', 'fp loss of significance         : OFF', 37, occ$end_of_line);
      IFEND;

      IF pmc$invalid_bdp_data IN conditions^.enable_system_conditions THEN
        ocp$output ('   ', 'invalid BDP data                :  ON', 37, occ$end_of_line);
      ELSEIF pmc$invalid_bdp_data IN conditions^.inhibit_system_conditions THEN
        ocp$output ('   ', 'invalid BDP data                : OFF', 37, occ$end_of_line);
      IFEND;
    IFEND;

    ocp$output (' ', '  ', 2, occ$end_of_line);


    IF pmc$starting_proc_specified IN program_attributes^.contents THEN
      ocp$output (' ', 'starting procedure:', 19, occ$continue);
      ocp$output (' ', program_attributes^.starting_procedure, STRLENGTH (program_attributes^.
            starting_procedure), occ$end_of_line);
    IFEND;

?? EJECT ??
    IF pmc$load_map_file_specified IN program_attributes^.contents THEN
      ocp$output (' ', 'load map file:', 14, occ$continue);
      ocp$output (' ', program_attributes^.load_map_file, STRLENGTH (program_attributes^.load_map_file),
            occ$end_of_line);
    IFEND;

    IF pmc$load_map_options_specified IN program_attributes^.contents THEN
      ocp$output (' ', 'load map options: [', 19, occ$continue);

      IF pmc$no_load_map IN program_attributes^.load_map_options THEN
        ocp$output (' ', 'NONE', 4, occ$continue);
      IFEND;
      IF pmc$segment_map IN program_attributes^.load_map_options THEN
        ocp$output (' ', 'SEGMENT', 7, occ$continue);
      IFEND;
      IF pmc$block_map IN program_attributes^.load_map_options THEN
        ocp$output (' ', 'BLOCK', 5, occ$continue);
      IFEND;
      IF pmc$entry_point_map IN program_attributes^.load_map_options THEN
        ocp$output (' ', 'ENTRY_POINT', 11, occ$continue);
      IFEND;
      IF pmc$entry_point_xref IN program_attributes^.load_map_options THEN
        ocp$output (' ', 'XREF', 4, occ$continue);
      IFEND;

      ocp$output (' ', ']', 1, occ$end_of_line);
    IFEND;

    IF pmc$term_error_level_specified IN program_attributes^.contents THEN
      ocp$output (' ', 'termination error level:', 24, occ$continue);

      CASE program_attributes^.termination_error_level OF
      = pmc$warning_load_errors =
        ocp$output (' ', 'WARNING', 7, occ$end_of_line);
      = pmc$error_load_errors =
        ocp$output (' ', 'ERROR', 5, occ$end_of_line);
      = pmc$fatal_load_errors =
        ocp$output (' ', 'FATAL', 5, occ$end_of_line);
      ELSE
        ocp$output (' ', '*******', 7, occ$end_of_line);
      CASEND;
    IFEND;

?? EJECT ??
    IF pmc$preset_specified IN program_attributes^.contents THEN
      ocp$output (' ', 'preset value:', 13, occ$continue);

      CASE program_attributes^.preset OF
      = pmc$initialize_to_zero =
        ocp$output (' ', 'ZERO', 4, occ$end_of_line);
      = pmc$initialize_to_alt_ones =
        ocp$output (' ', 'ALTERNATE ONES', 14, occ$end_of_line);
      = pmc$initialize_to_indefinite =
        ocp$output (' ', 'FLOATING POINT INDEFINITE', 25, occ$end_of_line);
      = pmc$initialize_to_infinity =
        ocp$output (' ', 'INFINITY', 8, occ$end_of_line);
      ELSE
        ocp$output (' ', '******', 6, occ$end_of_line);
      CASEND;
    IFEND;

    IF pmc$max_stack_size_specified IN program_attributes^.contents THEN
      STRINGREP (strng, l, program_attributes^.maximum_stack_size);

      ocp$output (' ', 'stack size:', 11, occ$continue);
      ocp$output ('', strng, l, occ$end_of_line);
    IFEND;

    IF pmc$abort_file_specified IN program_attributes^.contents THEN
      ocp$output (' ', 'abort file:', 11, occ$continue);
      ocp$output (' ', program_attributes^.abort_file, STRLENGTH (program_attributes^.abort_file),
            occ$end_of_line);
    IFEND;

    IF pmc$debug_input_specified IN program_attributes^.contents THEN
      ocp$output (' ', 'debug input:', 12, occ$continue);
      ocp$output (' ', program_attributes^.debug_input, STRLENGTH (program_attributes^.debug_input),
            occ$end_of_line);
    IFEND;

    IF pmc$debug_output_specified IN program_attributes^.contents THEN
      ocp$output (' ', 'debug output:', 13, occ$continue);
      ocp$output (' ', program_attributes^.debug_output, STRLENGTH (program_attributes^.debug_output),
            occ$end_of_line);
    IFEND;

    IF pmc$debug_mode_specified IN program_attributes^.contents THEN
      IF program_attributes^.debug_mode THEN
        ocp$output (' ', 'debug mode: ON', 14, occ$end_of_line);
      ELSE
        ocp$output (' ', 'debug mode: OFF', 15, occ$end_of_line);
      IFEND;
    IFEND;


  PROCEND display_program_attributes;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_COMMAND_ATTRIBUTES' ??
?? EJECT ??

  PROCEDURE display_command_attributes
    (VAR module_description: oct$module_description;
         library_member_header: llt$library_member_header;
     VAR status: ost$status);

    VAR
      member: ^llt$command_description,
      aliases: ^pmt$module_list,
      command_attributes: ^llt$command_desc_contents,
      library_path: ^fst$file_reference;


    status.normal := TRUE;

    member := #PTR (library_member_header.member, module_description.file^);
    IF member = NIL THEN
      osp$set_status_abnormal ('OC', oce$e_premature_eof_in_module, library_member_header.name, status);
      RETURN;
    IFEND;

    RESET member;
    NEXT command_attributes IN member;
    IF command_attributes = NIL THEN
      osp$set_status_abnormal ('OC', oce$e_premature_eof_in_module, library_member_header.name, status);
      RETURN;
    IFEND;

    IF command_attributes^.system_command THEN
      ocp$output ('0', 'system command name:', 20, occ$continue);
      ocp$output (' ', command_attributes^.system_command_name, STRLENGTH (command_attributes^.
            system_command_name), occ$end_of_line);

    ELSE
      ocp$output ('0', 'starting procedure:', 19, occ$continue);
      ocp$output (' ', command_attributes^.starting_procedure, STRLENGTH (command_attributes^.
            starting_procedure), occ$end_of_line);

      IF command_attributes^.library_path_size > 0 THEN
        NEXT library_path: [command_attributes^.library_path_size] IN member;
        IF library_path = NIL THEN
          osp$set_status_abnormal ('OC', oce$e_premature_eof_in_module, library_member_header.name, status);
          RETURN;
        IFEND;

        ocp$output ('0', 'library', 7, occ$end_of_line);
        ocp$output (' ', '~~~~~~~', 7, occ$end_of_line);

        ocp$output ('   ', library_path^, STRLENGTH (library_path^), occ$end_of_line);
      IFEND;
    IFEND;

  PROCEND display_command_attributes;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_FUNCTION_ATTRIBUTES' ??
?? EJECT ??

  PROCEDURE display_function_attributes
    (VAR module_description: oct$module_description;
         library_member_header: llt$library_member_header;
     VAR status: ost$status);

    VAR
      member: ^llt$function_description,
      aliases: ^pmt$module_list,
      function_attributes: ^llt$function_desc_contents,
      library_path: ^fst$file_reference;


    status.normal := TRUE;

    member := #PTR (library_member_header.member, module_description.file^);
    IF member = NIL THEN
      osp$set_status_abnormal ('OC', oce$e_premature_eof_in_module, library_member_header.name, status);
      RETURN;
    IFEND;

    RESET member;
    NEXT function_attributes IN member;
    IF function_attributes = NIL THEN
      osp$set_status_abnormal ('OC', oce$e_premature_eof_in_module, library_member_header.name, status);
      RETURN;
    IFEND;

    ocp$output ('0', 'starting procedure:', 19, occ$continue);
    ocp$output (' ', function_attributes^.starting_procedure, STRLENGTH (function_attributes^.
          starting_procedure), occ$end_of_line);

    IF function_attributes^.library_path_size > 0 THEN
      NEXT library_path: [function_attributes^.library_path_size] IN member;
      IF library_path = NIL THEN
        osp$set_status_abnormal ('OC', oce$e_premature_eof_in_module, library_member_header.name, status);
        RETURN;
      IFEND;

      ocp$output ('0', 'library', 7, occ$end_of_line);
      ocp$output (' ', '~~~~~~~', 7, occ$end_of_line);

      ocp$output ('   ', library_path^, STRLENGTH (library_path^), occ$end_of_line);
    IFEND;

  PROCEND display_function_attributes;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_MSG_MODULE_ATTRIBUTES' ??
?? EJECT ??

  PROCEDURE display_msg_module_attributes (message_template_module: ^ost$message_template_module;
    VAR status: ost$status);

    VAR
      strng: string (255),
      length: integer,
      natural_language: ost$natural_language,
      online_manual: ost$online_manual_name,
      help_module: boolean,
      message_module: boolean,
      lowest_condition_code: ost$status_condition_code,
      highest_condition_code: ost$status_condition_code,
      condition_string: ost$string;


    clp$get_message_module_info (message_template_module, natural_language, online_manual, help_module,
          message_module, lowest_condition_code, highest_condition_code, status);

    IF NOT status.normal THEN
      RETURN;
    IFEND;

    ocp$output ('0', 'module type:', 12, occ$continue);
    IF message_module AND help_module THEN
      ocp$output (' ', 'MESSAGE AND HELP MODULE', 23, occ$end_of_line);
    ELSEIF message_module THEN
      ocp$output (' ', 'MESSAGE MODULE', 14, occ$end_of_line);
    ELSEIF help_module THEN
      ocp$output (' ', 'HELP MODULE', 11, occ$end_of_line);
    IFEND;

    ocp$output (' ', 'natural language:', 17, occ$continue);
    ocp$output (' ', natural_language, STRLENGTH (natural_language), occ$end_of_line);

    ocp$output (' ', 'online manual:', 14, occ$continue);
    ocp$output (' ', online_manual, STRLENGTH (online_manual), occ$end_of_line);

    IF message_module THEN
      osp$get_status_condition_string (lowest_condition_code, condition_string, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
      ocp$output (' ', 'lowest condition code:', 22, occ$continue);
      ocp$output (' ', condition_string.value, condition_string.size, occ$end_of_line);
      osp$get_status_condition_string (highest_condition_code, condition_string, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
      ocp$output (' ', 'highest condition code:', 22, occ$continue);
      ocp$output (' ', condition_string.value, condition_string.size, occ$end_of_line);
    IFEND;

  PROCEND display_msg_module_attributes;
?? OLDTITLE ??

?? NEWTITLE := '  DISPLAY_CPU_OBJECT_MODULE' ??
?? EJECT ??

  PROCEDURE display_cpu_object_module (display_toggles: oct$display_toggles;
    VAR module_description: oct$module_description;
        changed_info: ^oct$changed_info;
    VAR status: ost$status);


    VAR
      deferred_entry_point_list: oct$external_declaration_list,
      header: oct$header,
      xdcl_list: oct$external_declaration_list,
      starting_procedure: pmt$program_name,
      xref_list: oct$external_reference_list,
      library_list: oct$name_list;


    ocp$obtain_header (module_description, changed_info, header, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    display_identification (header, 'object module      ', display_toggles);

    IF occ$display_libraries IN display_toggles THEN
      ocp$obtain_library_list (module_description, changed_info, library_list, occ$no_retain, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      display_library_list (library_list);
    IFEND;

    IF occ$display_xdcls IN display_toggles THEN
      ocp$obtain_xdcl_list (changed_info, occ$no_retain, {obtain_deferred_entry_points} TRUE,
            module_description, xdcl_list, starting_procedure, deferred_entry_point_list, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      display_xdcl_list (xdcl_list, starting_procedure, deferred_entry_point_list);
    IFEND;

    IF occ$display_xrefs IN display_toggles THEN
      ocp$obtain_xref_list (module_description, xref_list, occ$no_retain, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      display_xref_list (xref_list);
    IFEND;


  PROCEND display_cpu_object_module;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_LOAD_MODULE' ??
?? EJECT ??

  PROCEDURE display_load_module (display_toggles: oct$display_toggles;
    VAR module_description: oct$module_description;
        changed_info: ^oct$changed_info;
    VAR status: ost$status);


    VAR
      deferred_entry_point_list: oct$external_declaration_list,
      header: oct$header,
      xdcl_list: oct$external_declaration_list,
      starting_procedure: pmt$program_name,
      xref_list: oct$external_reference_list,
      library_list: oct$name_list,
      component_info: ^llt$component_information;


    ocp$obtain_header (module_description, changed_info, header, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    display_identification (header, 'load module        ', display_toggles);

    IF occ$display_libraries IN display_toggles THEN
      ocp$obtain_library_list (module_description, changed_info, library_list, occ$no_retain, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      display_library_list (library_list);
    IFEND;

    IF occ$display_xdcls IN display_toggles THEN
      ocp$obtain_xdcl_list (changed_info, occ$no_retain, {obtain_deferred_entry_points} TRUE,
            module_description, xdcl_list, starting_procedure, deferred_entry_point_list, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      display_xdcl_list (xdcl_list, starting_procedure, deferred_entry_point_list);
    IFEND;

    IF occ$display_xrefs IN display_toggles THEN
      ocp$obtain_xref_list (module_description, xref_list, occ$no_retain, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      display_xref_list (xref_list);
    IFEND;
?? EJECT ??
    IF occ$display_component_info IN display_toggles THEN
      ocp$obtain_component_info (module_description, component_info, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      IF component_info <> NIL THEN
        display_component_information (component_info);
      IFEND;
    IFEND;


  PROCEND display_load_module;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_PPU_OBJECT_MODULE' ??
?? EJECT ??

  PROCEDURE display_ppu_object_module (display_toggles: oct$display_toggles;
    VAR module_description: oct$module_description;
        changed_info: ^oct$changed_info;
    VAR status: ost$status);


    VAR
      header: oct$header;


    ocp$obtain_header (module_description, changed_info, header, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    display_identification (header, 'ppu module         ', display_toggles);


  PROCEND display_ppu_object_module;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_PROGRAM_DESCRIPTION' ??
?? EJECT ??

  PROCEDURE display_program_description (display_toggles: oct$display_toggles;
    VAR module_description: oct$module_description;
        changed_info: ^oct$changed_info;
    VAR status: ost$status);


    VAR
      deferred_entry_point_list: oct$external_declaration_list,
      header: oct$header,
      alias_list: oct$external_declaration_list,
      starting_procedure: pmt$program_name;


    ocp$obtain_header (module_description, changed_info, header, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    display_library_member_header (header.library_member_header, 'program description', display_toggles);

    IF occ$display_xdcls IN display_toggles THEN
      ocp$obtain_xdcl_list (changed_info, occ$no_retain, {obtain_deferred_entry_points} FALSE,
            module_description, alias_list, starting_procedure, deferred_entry_point_list, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      display_aliases (alias_list);
    IFEND;

    IF occ$display_module_header IN display_toggles THEN
      display_program_attributes (module_description, header.library_member_header, status);
    IFEND;


  PROCEND display_program_description;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_COMMAND_PROCEDURE' ??
?? EJECT ??

  PROCEDURE display_command_procedure (display_toggles: oct$display_toggles;
    VAR module_description: oct$module_description;
        changed_info: ^oct$changed_info;
    VAR status: ost$status);


    VAR
      deferred_entry_point_list: oct$external_declaration_list,
      header: oct$header,
      alias_list: oct$external_declaration_list,
      starting_procedure: pmt$program_name,
      command_procedure: ^SEQ ( * );


    ocp$obtain_header (module_description, changed_info, header, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    display_library_member_header (header.library_member_header, 'command procedure  ', display_toggles);

    IF occ$display_module_header IN display_toggles THEN
      ocp$output ('0', 'parameters', 10, occ$end_of_line);
      ocp$output (' ', '~~~~~~~~~~', 10, occ$end_of_line);
      command_procedure := #PTR (module_description.command_procedure_header^.member, module_description.
            file^);
      ocp$output_scl_parameters (command_procedure, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
    IFEND;

    IF occ$display_xdcls IN display_toggles THEN
      ocp$obtain_xdcl_list (changed_info, occ$no_retain, {obtain_deferred_entry_points} FALSE,
            module_description, alias_list, starting_procedure, deferred_entry_point_list, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      display_aliases (alias_list);
    IFEND;


  PROCEND display_command_procedure;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_COMMAND_DESCRIPTION' ??
?? EJECT ??

  PROCEDURE display_command_description (display_toggles: oct$display_toggles;
    VAR module_description: oct$module_description;
        changed_info: ^oct$changed_info;
    VAR status: ost$status);


    VAR
      deferred_entry_point_list: oct$external_declaration_list,
      header: oct$header,
      alias_list: oct$external_declaration_list,
      starting_procedure: pmt$program_name;


    ocp$obtain_header (module_description, changed_info, header, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    display_library_member_header (header.library_member_header, 'command description', display_toggles);

    IF occ$display_xdcls IN display_toggles THEN
      ocp$obtain_xdcl_list (changed_info, occ$no_retain, {obtain_deferred_entry_points} FALSE,
            module_description, alias_list, starting_procedure, deferred_entry_point_list, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      display_aliases (alias_list);
    IFEND;

    IF occ$display_module_header IN display_toggles THEN
      display_command_attributes (module_description, header.library_member_header, status);
    IFEND;

  PROCEND display_command_description;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_FUNCTION_PROCEDURE' ??
?? EJECT ??

  PROCEDURE display_function_procedure (display_toggles: oct$display_toggles;
    VAR module_description: oct$module_description;
        changed_info: ^oct$changed_info;
    VAR status: ost$status);


    VAR
      deferred_entry_point_list: oct$external_declaration_list,
      header: oct$header,
      alias_list: oct$external_declaration_list,
      starting_procedure: pmt$program_name,
      function_procedure: ^SEQ ( * );


    ocp$obtain_header (module_description, changed_info, header, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    display_library_member_header (header.library_member_header, 'function procedure ', display_toggles);

    IF occ$display_module_header IN display_toggles THEN
      ocp$output ('0', 'parameters', 10, occ$end_of_line);
      ocp$output (' ', '~~~~~~~~~~', 10, occ$end_of_line);
      function_procedure := #PTR (module_description.function_procedure_header^.member, module_description.
            file^);
      ocp$output_scl_parameters (function_procedure, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
    IFEND;

    IF occ$display_xdcls IN display_toggles THEN
      ocp$obtain_xdcl_list (changed_info, occ$no_retain, {obtain_deferred_entry_points} FALSE,
            module_description, alias_list, starting_procedure, deferred_entry_point_list, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      display_aliases (alias_list);
    IFEND;


  PROCEND display_function_procedure;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_FUNCTION_DESCRIPTION' ??
?? EJECT ??

  PROCEDURE display_function_description (display_toggles: oct$display_toggles;
    VAR module_description: oct$module_description;
        changed_info: ^oct$changed_info;
    VAR status: ost$status);


    VAR
      deferred_entry_point_list: oct$external_declaration_list,
      header: oct$header,
      alias_list: oct$external_declaration_list,
      starting_procedure: pmt$program_name;


    ocp$obtain_header (module_description, changed_info, header, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    display_library_member_header (header.library_member_header, 'function desc      ', display_toggles);

    IF occ$display_xdcls IN display_toggles THEN
      ocp$obtain_xdcl_list (changed_info, occ$no_retain, {obtain_deferred_entry_points} FALSE,
            module_description, alias_list, starting_procedure, deferred_entry_point_list, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      display_aliases (alias_list);
    IFEND;

    IF occ$display_module_header IN display_toggles THEN
      display_function_attributes (module_description, header.library_member_header, status);
    IFEND;

  PROCEND display_function_description;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_MESSAGE_MODULE' ??
?? EJECT ??

  PROCEDURE display_message_module (display_toggles: oct$display_toggles;
    VAR module_description: oct$module_description;
        changed_info: ^oct$changed_info;
    VAR status: ost$status);


    VAR
      message_template_module: ^ost$message_template_module,
      header: oct$header;


    ocp$obtain_header (module_description, changed_info, header, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    display_library_member_header (header.library_member_header, 'message module     ', display_toggles);

    IF occ$display_module_header IN display_toggles THEN
      ocp$output ('0', 'message module attributes', 25, occ$end_of_line);
      ocp$output (' ', '~~~~~~~~~~~~~~~~~~~~~~~~~', 25, occ$end_of_line);
      message_template_module := #PTR (module_description.message_module_header^.member, module_description.
            file^);
      IF message_template_module = NIL THEN
        osp$set_status_abnormal ('OC', oce$e_premature_eof_in_module, header.library_member_header.name,
              status);
        RETURN;
      IFEND;
      display_msg_module_attributes (message_template_module, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
    IFEND;


  PROCEND display_message_module;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_PANEL_MODULE' ??
?? EJECT ??

  PROCEDURE display_panel_module (display_toggles: oct$display_toggles;
    VAR module_description: oct$module_description;
        changed_info: ^oct$changed_info;
    VAR status: ost$status);


    VAR
      header: oct$header;


    ocp$obtain_header (module_description, changed_info, header, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    display_library_member_header (header.library_member_header, 'form module        ', display_toggles);


  PROCEND display_panel_module;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_APPLIC_PROGRAM_DESCRIP' ??
?? EJECT ??

  PROCEDURE display_applic_program_descrip (display_toggles: oct$display_toggles;
        changed_info: ^oct$changed_info;
    VAR module_description: oct$module_description;
    VAR status: ost$status);

    VAR
      alias_list: oct$external_declaration_list,
      deferred_entry_point_list: oct$external_declaration_list,
      header: oct$header,
      starting_procedure: pmt$program_name;

    ocp$obtain_header (module_description, changed_info, header, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    display_library_member_header (header.application_member_header.library_member_header,
      'applic program desc', display_toggles);

    IF occ$display_xdcls IN display_toggles THEN
      ocp$obtain_xdcl_list (changed_info, occ$no_retain, {obtain_deferred_entry_points} FALSE,
            module_description, alias_list, starting_procedure, deferred_entry_point_list, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      display_aliases (alias_list);
    IFEND;

    IF occ$display_module_header IN display_toggles THEN
      display_program_attributes (module_description, header.application_member_header.
            library_member_header, status);

      ocp$output (' ', 'application identifier:', 23, occ$continue);
      ocp$output (' ', header.application_member_header.application_identifier.name, STRLENGTH (
            header.application_member_header.application_identifier.name), occ$end_of_line);
    IFEND;

  PROCEND display_applic_program_descrip;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_APPLIC_COMMAND_PROC' ??
?? EJECT ??

  PROCEDURE display_applic_command_proc (display_toggles: oct$display_toggles;
        changed_info: ^oct$changed_info;
    VAR module_description: oct$module_description;
    VAR status: ost$status);

    VAR
      deferred_entry_point_list: oct$external_declaration_list,
      alias_list: oct$external_declaration_list,
      command_procedure: ^SEQ ( * ),
      header: oct$header,
      starting_procedure: pmt$program_name;

    ocp$obtain_header (module_description, changed_info, header, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    display_library_member_header (header.application_member_header.library_member_header,
      'applic command proc', display_toggles);

    IF occ$display_module_header IN display_toggles THEN
      ocp$output ('0', 'parameters', 10, occ$end_of_line);
      ocp$output (' ', '~~~~~~~~~~', 10, occ$end_of_line);
      command_procedure := #PTR (module_description.applic_command_procedure_header^.library_member_header.
            member, module_description.file^);
      ocp$output_scl_parameters (command_procedure, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;
    IFEND;

    IF occ$display_xdcls IN display_toggles THEN
      ocp$obtain_xdcl_list (changed_info, occ$no_retain, {obtain_deferred_entry_points} FALSE,
            module_description, alias_list, starting_procedure, deferred_entry_point_list, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      display_aliases (alias_list);
    IFEND;

    IF occ$display_module_header IN display_toggles THEN
      ocp$output ('0', 'application identifier:', 23, occ$continue);
      ocp$output (' ', header.application_member_header.application_identifier.name, STRLENGTH (
            header.application_member_header.application_identifier.name), occ$end_of_line);
    IFEND;

  PROCEND display_applic_command_proc;
?? OLDTITLE ??
?? NEWTITLE := '  DISPLAY_APPLIC_COMMAND_DESCRIP' ??
?? EJECT ??

  PROCEDURE display_applic_command_descrip (display_toggles: oct$display_toggles;
        changed_info: ^oct$changed_info;
    VAR module_description: oct$module_description;
    VAR status: ost$status);

    VAR
      alias_list: oct$external_declaration_list,
      deferred_entry_point_list: oct$external_declaration_list,
      header: oct$header,
      starting_procedure: pmt$program_name;

    ocp$obtain_header (module_description, changed_info, header, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    display_library_member_header (header.application_member_header.library_member_header,
      'applic command desc', display_toggles);

    IF occ$display_xdcls IN display_toggles THEN
      ocp$obtain_xdcl_list (changed_info, occ$no_retain, {obtain_deferred_entry_points} FALSE,
            module_description, alias_list, starting_procedure, deferred_entry_point_list, status);
      IF NOT status.normal THEN
        RETURN;
      IFEND;

      display_aliases (alias_list);
    IFEND;

    IF occ$display_module_header IN display_toggles THEN
      display_command_attributes (module_description, header.application_member_header.
            library_member_header, status);

      ocp$output (' ', 'application identifier:', 23, occ$continue);
      ocp$output (' ', header.application_member_header.application_identifier.name, STRLENGTH (
            header.application_member_header.application_identifier.name), occ$end_of_line);
    IFEND;

  PROCEND display_applic_command_descrip;
?? OLDTITLE ??
?? NEWTITLE := '  OCP$DISPLAY_MODULE', EJECT ??

  PROCEDURE [XDCL] ocp$display_module (display_toggles: oct$display_toggles;
    VAR module_description: oct$module_description;
        changed_info: ^oct$changed_info;
    VAR status: ost$status);


    CASE module_description.kind OF
    = occ$cpu_object_module =
      display_cpu_object_module (display_toggles, module_description, changed_info, status);
    = occ$ppu_object_module =
      display_ppu_object_module (display_toggles, module_description, changed_info, status);
    = occ$load_module, occ$bound_module =
      display_load_module (display_toggles, module_description, changed_info, status);
    = occ$program_description =
      IF (changed_info <> NIL) AND (changed_info^.application_identifier <> NIL) AND (changed_info^.
            application_identifier^.name <> osc$null_name) THEN
        display_applic_program_descrip (display_toggles, changed_info, module_description, status);
      ELSE
        display_program_description (display_toggles, module_description, changed_info, status);
      IFEND;
    = occ$command_procedure =
      IF (changed_info <> NIL) AND (changed_info^.application_identifier <> NIL) AND (changed_info^.
            application_identifier^.name <> osc$null_name) THEN
        display_applic_command_proc (display_toggles, changed_info, module_description, status);
      ELSE
        display_command_procedure (display_toggles, module_description, changed_info, status);
      IFEND;
    = occ$command_description =
      IF (changed_info <> NIL) AND (changed_info^.application_identifier <> NIL) AND (changed_info^.
            application_identifier^.name <> osc$null_name) THEN
        display_applic_command_descrip (display_toggles, changed_info, module_description, status);
      ELSE
        display_command_description (display_toggles, module_description, changed_info, status);
      IFEND;
    = occ$function_procedure =
      display_function_procedure (display_toggles, module_description, changed_info, status);
    = occ$function_description =
      display_function_description (display_toggles, module_description, changed_info, status);
    = occ$message_module =
      display_message_module (display_toggles, module_description, changed_info, status);
    = occ$panel_module =
      display_panel_module (display_toggles, module_description, changed_info, status);
    = occ$applic_program_description =
      IF (changed_info <> NIL) AND (changed_info^.application_identifier <> NIL) AND (changed_info^.
            application_identifier^.name = osc$null_name) THEN
        display_program_description (display_toggles, module_description, changed_info, status);
      ELSE
        display_applic_program_descrip (display_toggles, changed_info, module_description, status);
      IFEND;
    = occ$applic_command_procedure =
      IF (changed_info <> NIL) AND (changed_info^.application_identifier <> NIL) AND (changed_info^.
            application_identifier^.name = osc$null_name) THEN
        display_command_procedure (display_toggles, module_description, changed_info, status);
      ELSE
        display_applic_command_proc (display_toggles, changed_info, module_description, status);
      IFEND;
    = occ$applic_command_description =
      IF (changed_info <> NIL) AND (changed_info^.application_identifier <> NIL) AND (changed_info^.
            application_identifier^.name = osc$null_name) THEN
        display_command_description (display_toggles, module_description, changed_info, status);
      ELSE
        display_applic_command_descrip (display_toggles, changed_info, module_description, status);
      IFEND;
    CASEND;

  PROCEND ocp$display_module;

MODEND ocm$display_module;
