MODULE SCA$REPORT_HELP IDENT "T4.0-6" !************************************************************************* ! * ! © 2000 BY * ! COMPAQ COMPUTER CORPORATION * ! © 2000 BY * ! ELECTRONIC DATA SYSTEMS LIMITED * ! * ! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED * ! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE * ! INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER * ! COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY * ! OTHER PERSON. NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY * ! TRANSFERRED. * ! * ! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE * ! AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY COMPAQ COMPUTER * ! CORPORATION OR EDS. * ! * ! NEITHER COMPAQ NOR EDS ASSUME ANY RESPONSIBILITY FOR THE USE OR * ! RELIABILITY OF THIS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY * ! COMPAQ. * ! * !************************************************************************* !++ ! Facility: ! SCA - Source Code Analyzier ! REPORT - Report Tool Subfacility ! ! Abstract: ! This module produces the "HELP report". These are really help files (.HLP ! files) for input to the VMS Librarian for conversion into help libraries ! (.HLB files). !-- PROCEDURE sca$report_help !++ ! FUNCTIONAL DESCRIPTION: ! ! This is the Digital-specific routine for the HELP report. ! Customers who wish to modify this routine should first rename it. ! Options for this report are described in SCA$REPORT_CUSTOMIZATIONS.TPU. ! ! FORMAL PARAMETERS: ! ! None !-- ON_ERROR [OTHERWISE] : sca$report_common_error_cleanup('SCA$REPORT_HELP'); ENDON_ERROR; sca$report_portable_initialization; ! Build the report definition. ! sca$report_build_definition_help; ! Generate the report. ! ! We make help text for each compilation unit as follows: ! ! Each module gets its own level 1 help, with the module name used as the ! help text. ! ! All the non-module compilation units (routines, tasks) are included ! under a single level 1 help, using the source file name as the level 1 ! help text. ! sca$report_process_queries; ! Do common cleanup ! sca$report_post_process; sca$report_common_cleanup; RETURN ENDPROCEDURE PROCEDURE sca_report_define_options_help !++ ! FUNCTIONAL DESCRIPTION: ! ! Define the valid options for the HELP report. ! ! FORMAL PARAMETERS: ! ! None !-- ON_ERROR [OTHERWISE] : sca$report_common_error_cleanup('SCA_REPORT_DEFINE_OPTIONS_HELP'); ENDON_ERROR; ! Define valid options for the HELP report. ! sca$report_add_valid_option ('domain_query', '', 'sca$report_process_option_domain_query'); sca$report_add_valid_option ('fill', True, 'sca$report_process_option_boolean'); sca$report_add_valid_option ('output', '', 'sca$report_process_option_output'); sca$report_add_valid_option ('target', 'HLP', 'sca$report_process_option_help_target'); sca$report_add_valid_option ('routine_depth', '1', 'sca$report_process_option_number_or_all'); sca$report_add_valid_option ('sca_debug_messages', False, 'sca$report_process_option_boolean'); sca$report_add_valid_option ('status_messages', True, 'sca$report_process_option_boolean'); sca$report_add_valid_option ('traceback_flag', True, 'sca$report_process_option_boolean'); sca$report_add_valid_option ('trace_messages', False, 'sca$report_process_option_boolean'); sca$report_add_valid_option ('use_source_spelling', True, 'sca$report_process_option_boolean'); ENDPROCEDURE PROCEDURE sca$report_build_definition_help !++ ! FUNCTIONAL DESCRIPTION: ! ! Build the report definition array for the HELP report. ! ! FORMAL PARAMETERS: ! ! None !-- ON_ERROR [OTHERWISE] : sca$report_common_error_cleanup('SCA$REPORT_BUILD_DEFINITION_HELP'); ENDON_ERROR; ! Initialize subdefinition array. ! sca$report_subdefinition_array := CREATE_ARRAY(1); sca$report_subdefinition_index := 0; !========================================================================= ! Subdefinition for routine subqueries - it contains 5 entries. ! sca$report_create_subdefinition ('routine subqueries', 5); !------------------------------------------------------------------------- ! level +0 - functional description ! FUNCTIONAL DESCRIPTION query ! attribute - type TAG_NAME, location tag_name ! attribute - type TAG_TEXT, location tag_text ! sca$report_definition_add_entry (0, 1, 2, 0); sca$report_definition_add_label ('functional description entry'); sca$report_definition_add_query (sca$report_k_query_routine_description_tag); sca$report_definition_add_info (sca$report_k_info_type_tag_name, sca$report_location_tag_name); sca$report_definition_add_info (sca$report_k_info_type_tag_text, sca$report_location_tag_text); !------------------------------------------------------------------------- ! level +0 - return value tagged comment ! return value tag query ! attribute - type TAG_NAME, location tag_name ! attribute - type TAG_TEXT, location tag_text ! sca$report_definition_add_entry (0, 1, 2, 0); sca$report_definition_add_label ('return value entry'); sca$report_definition_add_query (sca$report_k_query_return_value); sca$report_definition_add_info (sca$report_k_info_type_tag_name, sca$report_location_tag_name); sca$report_definition_add_info (sca$report_k_info_type_tag_text, sca$report_location_tag_text); !------------------------------------------------------------------------- ! level +0 - parameters ! parameters_query ! attribute - type NAME, location parameter_name ! attribute - type VARIABLE_TYPE, location parameter_type ! attribute - type SOURCE_LOCATION, location source_location ! entity_query_name - SCA$REPORT_CURRENT_PARAMETER ! sca$report_definition_add_entry (0, 3, 4, 1); sca$report_definition_add_label ('parameter entry'); sca$report_definition_add_option (sca$report_k_option_order_lexical); ! These first 2 queries get parameter text from the routine header (for ! all parameters). They are used to get a query result that can be used ! for finding the subtag for each parameter, as a sublevel of the ! parameters query. sca$report_definition_add_query (sca$report_k_query_parameter_tag); sca$report_definition_add_query (sca$report_k_query_parameter_all_subtags); sca$report_definition_add_query (sca$report_k_query_parameters); sca$report_definition_add_info (sca$report_k_info_type_name, sca$report_location_parameter_name); sca$report_definition_add_info (sca$report_k_info_type_name_SCA, sca$report_location_parameter_name_SCA); sca$report_definition_add_info (sca$report_k_info_type_variable_type, sca$report_location_parameter_type); sca$report_definition_add_info (sca$report_k_info_type_source_location, sca$report_location_source_location); sca$report_definition_add_entity_name ('SCA$REPORT_CURRENT_PARAMETER'); !------------------------------------------------------------------------- ! level +1 - parameter $UNTAGGED text ! $UNTAGGED text for parameter ! attribute - type TAG_NAME, location tag_name ! attribute - type TAG_TEXT, location tag_text ! sca$report_definition_add_entry (1, 1, 2, 0); sca$report_definition_add_label ('parameter untagged entry'); sca$report_definition_add_query (sca$report_k_query_parameter_untagged_text); sca$report_definition_add_info (sca$report_k_info_type_tag_name, sca$report_location_tag_name); sca$report_definition_add_info (sca$report_k_info_type_tag_text, sca$report_location_tag_text); !------------------------------------------------------------------------- ! level +1 - parameter tagged text ! tagged text for parameter from FORMAL PARAMETERS section of header ! attribute - type TAG_NAME, location tag_name ! attribute - type TAG_TEXT, location tag_text ! sca$report_definition_add_entry (1, 1, 2, 1); sca$report_definition_add_label ('parameter subtag entry'); ! The query string is formed dynamically by the before_query action routine, ! and contains the name of the current parameter. An action routine is ! used, rather than ...add_query_dynamic, because no query is formed if the ! parameter name is null. ! sca$report_definition_add_query (0); sca$report_definition_add_info (sca$report_k_info_type_tag_name, sca$report_location_tag_name); sca$report_definition_add_info (sca$report_k_info_type_tag_text, sca$report_location_tag_text); ! Action routine for before parameter subtag query - form query string. ! sca$report_definition_add_action_routine ( 'sca$report_setup_parameter_subtag_query', sca$report_k_invoke_before_query); !------------------------------------------------------------------------- ! End of subdefinition ! sca$report_end_subdefinition; !========================================================================= !========================================================================= ! Now build the main definition for this report. It will have 5 direct ! entries, plus 10 from INCLUDEs, for a total of 15. ! sca$report_create_definition (15); !------------------------------------------------------------------------- ! files entry: ! level 1 ! files_query (2 possibilities, depending on sca$report_domain) ! attribute - type NAME, location file_name ! entity_query_name - SCA$REPORT_CURRENT_FILE ! sca$report_definition_add_entry (1, 1, 1, 4); sca$report_definition_add_label ('files entry'); ! The query to get all files for the report depends on the value of the ! /DOMAIN qualifier, and is set up by the before_query action routine. ! sca$report_definition_add_query (0); sca$report_definition_add_info (sca$report_k_info_type_name, sca$report_location_file_name); sca$report_definition_add_entity_name ('SCA$REPORT_CURRENT_FILE'); ! Action routine for before files query - set up file query expression. ! sca$report_definition_add_action_routine ( 'sca$report_setup_file_query', sca$report_k_invoke_before_query); ! Action routine for after files query - write output file header. ! sca$report_definition_add_action_routine ( 'sca$report_start_help_file', sca$report_k_invoke_after_query); ! Action routine for before each file is processed - set up query ! expresssions for finding modules and routines. ! sca$report_definition_add_action_routine ( 'sca$report_do_file_setup_help', sca$report_k_invoke_before_each_entity); ! Action routine for after each file is processed - close source files and ! dump output buffer. ! sca$report_definition_add_action_routine ( 'sca$report_cleanup_file', sca$report_k_invoke_after_each_entity); !------------------------------------------------------------------------- ! modules entry: ! level 2 ! modules_query (depends on language) ! attribute - type NAME, location module_name ! entity_query_name - SCA$REPORT_CURRENT_MODULE ! sca$report_definition_add_entry (2, 1, 1, 1); sca$report_definition_add_label ('modules entry'); ! The query string will be filled in by an action routine for the files ! query, depending on the source file language and source file name. ! sca$report_definition_add_query_dynamic ( sca$report_k_query_modules_1, 'sca$report_current_decl_class', sca$report_k_query_modules_2 + '"', 'sca$report_current_file', '"' ); sca$report_definition_add_option (sca$report_k_option_newitem); sca$report_definition_add_info (sca$report_k_info_type_name, sca$report_location_module_name); sca$report_definition_add_entity_name ('SCA$REPORT_CURRENT_MODULE'); ! Action routine for before each module is processed - generate level 1 ! help text. ! sca$report_definition_add_action_routine ( 'sca$report_start_help_module', sca$report_k_invoke_before_each_entity); !------------------------------------------------------------------------- ! level 3 - module description ! module_description_tag query ! attribute - type TAG_NAME, location tag_name ! attribute - type TAG_TEXT, location tag_text ! sca$report_definition_add_entry (3, 1, 2, 1); sca$report_definition_add_label ('module description'); sca$report_definition_add_query (sca$report_k_query_module_description_tag); sca$report_definition_add_info (sca$report_k_info_type_tag_name, sca$report_location_tag_name); sca$report_definition_add_info (sca$report_k_info_type_tag_text, sca$report_location_tag_text); ! Action routine for after the module description query is complete - ! add module description to output. ! sca$report_definition_add_action_routine ( 'sca$report_do_help_module_descr', sca$report_k_invoke_after_all_entities); !------------------------------------------------------------------------- ! routines entry: ! level 3 ! routines_query (depends on language) ! attribute - type NAME, location routine_name ! attribute - type RETURN_VALUE_TYPE, location routine_type ! entity_query_name - SCA$REPORT_CURRENT_ROUTINE ! sca$report_definition_add_entry (3, 1, 2, 2); sca$report_definition_add_label ('routines entry'); ! The query string will be filled in by an action routine for the files ! query, depending on the source file language and source file name. ! sca$report_definition_add_query_dynamic ( sca$report_k_query_routines_1, 'sca$report_current_decl_class', sca$report_k_query_routines_2, 'sca$report_option_routine_depth', sca$report_k_query_routines_3 ); sca$report_definition_add_option (sca$report_k_option_newitem); sca$report_definition_add_info (sca$report_k_info_type_name, sca$report_location_routine_name); sca$report_definition_add_info (sca$report_k_info_type_return_value_type, sca$report_location_routine_type); sca$report_definition_add_entity_name ('SCA$REPORT_CURRENT_ROUTINE'); ! Action routine for before each routine is processed - write status ! message. ! sca$report_definition_add_action_routine ( 'sca$report_do_routine_setup', sca$report_k_invoke_before_each_entity); ! Action routine for after each routine's subqueries are processed - ! generate level 2 and 3 help text (routine and parameter information). ! sca$report_definition_add_action_routine ( 'sca$report_do_help_routine', sca$report_k_invoke_after_each_entity); !------------------------------------------------------------------------- ! INCLUDE subdefinition for routine subqueries ! level 4 ! sca$report_definition_include_subdefinition (4, 'routine subqueries'); !------------------------------------------------------------------------- ! nonmodules entry: ! level 2 ! nonmodules_query (depends on language) ! sca$report_definition_add_entry (2, 1, 0, 1); sca$report_definition_add_label ('nonmodules entry'); ! The variables sca$report_current_decl_class and sca$report_current_file ! are filled in by an action routine for the files query, and contain the ! declaration class of the current compilation unit and the name of its ! source file. ! sca$report_definition_add_query_dynamic ( sca$report_k_query_nonmodules_1, 'sca$report_current_decl_class', sca$report_k_query_nonmodules_2 + '"', 'sca$report_current_file', '"' ); ! Action routine for after the nonmodules query is processed - generate ! level 1 help text for the nonmodule routines. ! sca$report_definition_add_action_routine ( 'sca$report_start_help_nonmodule', sca$report_k_invoke_after_query); !------------------------------------------------------------------------- ! level 3 - nonmodule module description ! attribute - type TAG_NAME, location tag_name ! attribute - type TAG_TEXT, location tag_text ! sca$report_definition_add_entry (3, 1, 2, 1); sca$report_definition_add_label ('nonmodule module description entry'); sca$report_definition_add_option (sca$report_k_option_once_only); sca$report_definition_add_query (sca$report_k_query_nonmodule_description); sca$report_definition_add_info (sca$report_k_info_type_tag_name, sca$report_location_tag_name); sca$report_definition_add_info (sca$report_k_info_type_tag_text, sca$report_location_tag_text); ! Action routine for after the module description query is complete - ! add module description to output. ! sca$report_definition_add_action_routine ( 'sca$report_do_help_module_descr', sca$report_k_invoke_after_all_entities); !------------------------------------------------------------------------- ! nonmodules routines entry: ! level 3 ! nonmodules routines query ! attribute - type NAME, location routine_name ! attribute - type RETURN_VALUE_TYPE, location routine_type ! entity_query_name - SCA$REPORT_CURRENT_ROUTINE ! sca$report_definition_add_entry (3, 1, 2, 2); sca$report_definition_add_label ('nonmodules routines entry'); sca$report_definition_add_option (sca$report_k_option_once_only); ! If routine_depth is 1, this is a dummy query, just to get us a copy of ! the set of routines, etc. that comprise the non-module compilation units ! for the current file. ! If routine_depth is ALL or some number > 1, this query gets all the ! nested routines as well. sca$report_definition_add_query_dynamic ( 'FIND @SCA$REPORT_CURRENT_MODULE', 'sca$report_nesting_part' ); sca$report_definition_add_option (sca$report_k_option_newitem); sca$report_definition_add_info (sca$report_k_info_type_name, sca$report_location_routine_name); sca$report_definition_add_info (sca$report_k_info_type_return_value_type, sca$report_location_routine_type); sca$report_definition_add_entity_name ('SCA$REPORT_CURRENT_ROUTINE'); ! Action routine for before the query is processed - set the variable ! sca$report_nesting_part to be the portion of the query expression needed ! to include routines to the specified depth. ! sca$report_definition_add_action_routine ( 'sca$report_setup_routine_nesting', sca$report_k_invoke_before_query); ! Action routine for before each routine is processed - write status ! message. ! sca$report_definition_add_action_routine ( 'sca$report_do_routine_setup', sca$report_k_invoke_before_each_entity); ! Action routine for after each routine's subqueries are processed - ! generate level 2 and 3 help text (routine and parameter information). ! sca$report_definition_add_action_routine ( 'sca$report_do_help_routine', sca$report_k_invoke_after_each_entity); !------------------------------------------------------------------------- ! INCLUDE subdefinition for routine subqueries ! level 4 ! sca$report_definition_include_subdefinition (4, 'routine subqueries'); !========================================================================= ENDPROCEDURE PROCEDURE sca$report_start_help_file !++ ! FUNCTIONAL DESCRIPTION: ! ! This action routine writes introductory formatting material for the HELP ! library file. This consists of a version number and timestamp. ! ! FORMAL PARAMETERS: ! ! None !-- ON_ERROR [OTHERWISE] : sca$report_common_error_cleanup('SCA$REPORT_START_HELP_FILE'); ENDON_ERROR; sca$report_append_text (FAO ('!! Generated by the SCA Report Tool, ' + sca$report_help_module_ident + ', !%D', 0), TRUE); ENDPROCEDURE PROCEDURE sca$report_do_file_setup_help !++ ! FUNCTIONAL DESCRIPTION: ! ! This action routine sets up global varibales that will be used in forming ! dynamic queries that depend on the current file name or language. ! ! FORMAL PARAMETERS: ! ! None !-- ON_ERROR [OTHERWISE] : sca$report_common_error_cleanup('SCA$REPORT_DO_FILE_SETUP_HELP'); ENDON_ERROR; ! Invoke the common action routine for file setup. ! sca$report_do_file_setup_specs; ENDPROCEDURE PROCEDURE sca$report_start_help_module !++ ! FUNCTIONAL DESCRIPTION: ! ! This action routine writes the level 1 HELP text (module name) for a module. ! ! FORMAL PARAMETERS: ! ! None !-- LOCAL module_name; ON_ERROR [OTHERWISE] : sca$report_common_error_cleanup('SCA$REPORT_START_HELP_MODULE'); ENDON_ERROR; ! Fetch the module name. The current occurrence array is for the module ! being processed. ! sca$report_fetch_result (sca$report_current_occurrence_result, sca$report_location_module_name, module_name); ! Invent a name if there is none for the module (this can happen for an Ada ! generic package). ! IF module_name = '' THEN module_name := 'Unnamed module'; ENDIF; ! Write status message. ! sca$report_status_message('--- Processing module ' + module_name + ' ---'); ! Write the level 1 help header line (module name). ! sca$report_blank_line; sca$report_append_text ("1 " + module_name, TRUE); RETURN; ENDPROCEDURE PROCEDURE sca$report_start_help_nonmodule !++ ! FUNCTIONAL DESCRIPTION: ! ! This action routine writes the level 1 HELP text (file name) for ! non-modules within a file. ! ! FORMAL PARAMETERS: ! ! None !-- LOCAL file_name, module_name; ON_ERROR [OTHERWISE] : sca$report_common_error_cleanup('SCA$REPORT_START_HELP_NONMODULE'); ENDON_ERROR; ! Fetch the file name. Its occurrence array is the current one. ! sca$report_fetch_result (sca$report_current_occurrence_result, sca$report_location_file_name, file_name); module_name := FILE_PARSE(file_name,'','',NAME); ! Write status message. ! sca$report_status_message('--- Processing nonmodules for file ' + module_name + ' ---'); ! Write the level 1 help header line (file name). ! sca$report_blank_line; sca$report_append_text ("1 " + module_name, TRUE); RETURN; ENDPROCEDURE PROCEDURE sca$report_do_help_module_descr !++ ! FUNCTIONAL DESCRIPTION: ! ! This action routine generates the module description text (if any) for ! the level 1 help entry. ! ! FORMAL PARAMETERS: ! ! None !-- ON_ERROR [OTHERWISE] : sca$report_common_error_cleanup('SCA$REPORT_DO_HELP_MODULE_DESCR'); ENDON_ERROR; ! Write text for the current module description. ! sca$report_write_tags (sca$report_current_entry_result, sca$report_k_write_as_is); RETURN; ENDPROCEDURE PROCEDURE sca$report_do_help_routine !++ ! FUNCTIONAL DESCRIPTION: ! ! Write level 2 and 3 help text for the current routine (routine and ! parameter information). ! ! FORMAL PARAMETERS: ! ! None !-- LOCAL comment_entry_result, i, parameter_entry_result, parameter_name, parameter_occurrence_result, parameter_type, routine_description_entry_result, routine_name, routine_type; ON_ERROR [OTHERWISE] : sca$report_common_error_cleanup('SCA$REPORT_DO_HELP_ROUTINE'); ENDON_ERROR; ! Fetch routine name. The current occurrence array is for the routine ! being processed. ! sca$report_fetch_result (sca$report_current_occurrence_result, sca$report_location_routine_name, routine_name); sca$report_append_text ("2 " + routine_name, TRUE); ! Fetch the routine description - its entry result is the first one in the ! sublevel immediately under the routine entry. ! routine_description_entry_result := sca$report_fetch_entry (sca$report_current_occurrence_result, 'functional description entry'); ! Write text for the current routine description. ! sca$report_write_tags (routine_description_entry_result, sca$report_k_write_as_is); ! Write return value type (if any). ! sca$report_fetch_result (sca$report_current_occurrence_result, sca$report_location_routine_type, routine_type); IF routine_type <> '' THEN sca$report_blank_line; sca$report_append_text ('Returns: ' + routine_type, TRUE); ENDIF; ! Fetch and write parameter information for each parameter. The entry for ! parameter names is the 3rd one in the sublevel immediately under the ! routine entry. ! parameter_entry_result := sca$report_fetch_entry (sca$report_current_occurrence_result, 'parameter entry'); IF parameter_entry_result{sca$report_k_entry_number_occurrences} <> 0 THEN ! Loop over all parameters for the current routine. ! i := 1; LOOP EXITIF i > parameter_entry_result{sca$report_k_entry_number_occurrences}; parameter_occurrence_result := sca$report_fetch_occurrence (parameter_entry_result, i); sca$report_fetch_result (parameter_occurrence_result, sca$report_location_parameter_name, parameter_name); ! If the current parameter name is null, skip it. It's probably ! the "..." part of an optional parameter list. ! IF parameter_name <> '' THEN ! Write the current parameter name. ! sca$report_append_text ("3 " + parameter_name, TRUE); ! Write parameter type information, if any. ! sca$report_fetch_result (parameter_occurrence_result, sca$report_location_parameter_type, parameter_type); IF parameter_type <> '' THEN sca$report_append_text ('Type: ' + parameter_type, TRUE); sca$report_blank_line; ENDIF; ! Write commment text for this parameter, untagged and ! then tagged. The comment text is in the 2 subentries of the ! parameter entry result. ! comment_entry_result := sca$report_fetch_entry (parameter_occurrence_result, 'parameter untagged entry'); sca$report_write_tags (comment_entry_result, sca$report_k_write_as_is); comment_entry_result := sca$report_fetch_entry (parameter_occurrence_result, 'parameter subtag entry'); sca$report_write_tags (comment_entry_result, sca$report_k_write_as_is); ENDIF; i := i + 1; ENDLOOP; ENDIF; RETURN; ENDPROCEDURE PROCEDURE sca$report_process_option_help_target (option_name, option_value, is_default) !++ ! FUNCTIONAL DESCRIPTION: ! ! Process the TARGET option for the HELP report. ! ! FORMAL PARAMETERS: ! ! See description of option processing procedures in ! SCA$REPORT_PORTABLE_SYNTAX.TPU. ! ! ROUTINE VALUE: ! ! TRUE if the option value is ok. FALSE if not. !-- LOCAL temp_value; ON_ERROR [OTHERWISE] : sca$report_temp_result := FALSE; sca$report_cmd_error_cleanup('SCA$REPORT_PROCESS_OPTION_HELP_TARGET'); RETURN; ENDON_ERROR; IF (option_value <> 'HLP') AND (option_value <> 'HELP') THEN sca$report_status_message ('Target must be HLP or HELP for HELP report'); sca$report_temp_result := FALSE; ELSE sca$report_target_index := sca$report_k_target_help; sca$report_file_type_default := 'HLP'; ENDIF; ENDPROCEDURE ENDMODULE