PROCEDURE cmp$execute_prolog_commands (
  prolog_file, pf: name = $required
  prolog_procedure_name, ppn: name = $name($mainframe(identifier))
  continue_on_error, coe: boolean = true
  status)

  VAR
    ignore_status :status
    local_status :status
  VAREND
"$FORMAT=ON

" Execute the prolog to create the temporary files containing commands
  include_command $string(prolog_procedure_name) status=ignore_status

COLLECT_TEXT $local.prolog_procedure
PROCEDURE prolog_procedure (status)
"$FORMAT=OFF
 VAR
   key: name
   subcommand_status :status
 VAREND
"$FORMAT=ON
**
  IF continue_on_error THEN
COLLECT_TEXT $local.prolog_procedure.$eoi
  WHEN any_fault interrupt DO
    rap$display_message message_module=sysdp_messages ..
          message_name=report_when_fault message_parameters= ..
          osv$command_name to=$output
    display_value osv$status o=$output
    IF subcommand_status.normal THEN
      subcommand_status = osv$status
    IFEND
" Force the operator to acknowledge the error with a carriage return
    rap$press_next
    CONTINUE
  WHENEND

**
  IFEND
  copy_file $local//prolog_file $local.prolog_procedure.$eoi ..
        status=local_status

COLLECT_TEXT $local.prolog_procedure.$eoi
  EXIT_PROC with subcommand_status

PROCEND prolog_procedure
**

  IF local_status.normal THEN
    rap$display_message message_module=sysdp_messages ..
          message_name= executing_prolog message_parameters=($string(..
          prolog_file) $string(prolog_procedure_name)) to=$output
    include_line '$local.prolog_procedure' status=local_status
  ELSE
    rap$display_message message_module=sysdp_messages ..
          message_name= prolog_file_missing message_parameters=($string(..
          prolog_file) $string(prolog_procedure_name)) to=$output
" ignore the status if prolog does not exist "
    local_status.normal = TRUE
  IFEND

  delete_file $local.prolog_procedure status=ignore_status

  EXIT_PROC WITH local_status

PROCEND cmp$execute_prolog_commands
