
PROCEDURE dum$display_application_info, display_application_info, disai (
  queue_index, qi: integer 1..16 = 1
  display_option, display_options, do: key
      (remote, r)
      (task, t)
      (host, h)
      (all, a)
    keyend = all
  queue_interface_index, qii: integer = 1
  output, o: file = $output
  status)

  " This proc displays the application rpc info.
  " This proc requires RJTs most recent dump analyzer.
  " The proc assumes that dfm$monitor_process has been added.

  current_module = $default_module
  chadm dfm$monitor_process
  crev local_status status
  IF $file(output open_position) = '$BOI' THEN
    rewind_file output status=local_status
  IFEND
  set_file_attributes output fc=legible pf=continuous
  out = output.$eoi

  p_cpu_queue_header = $pv(^dfv$p_queue_interface_directory^[..
?queue_interface_index].p_queue_interface_table^..
.queue_directory.cpu_queue_pva_directory[?queue_index].p_cpu_queue^.queue_header)

  p_host_application_info = $program_value(?p_cpu_queue_header.dft$cpu_queue_header.p_host_application_info)

  IF (display_option = host) OR (display_option = all) THEN
    IF $nil_pva(p_host_application_info) THEN
      put_line ' No host application info defined.' o=out
    ELSE
      put_line ' Host application information' o=out
      WHILE NOT $nil_pva(p_host_application_info) DO
        put_line ' ' o=out
        dispv ?p_host_application_info.dft$host_application_info o=out
        p_host_application_info = $pv(..
              ?p_host_application_info.dft$host_application_info.next_p_application_info)
      WHILEND
    IFEND
  IFEND

  IF (display_option = remote) OR (display_option = all) THEN
    p_remote_application_info = $program_value(..
          ?p_cpu_queue_header.dft$cpu_queue_header.p_remote_application_info)

    put_line ' ' o=out

    IF $nil_pva(p_remote_application_info) THEN
      put_line ' No remote application info defined.' o=out
    ELSE
      put_line ' Remote application information' o=out
      WHILE NOT $nil_pva(p_remote_application_info) DO
        put_line ' ' o=out
        dispv ?p_remote_application_info.dft$remote_application_info o=out
        p_remote_application_info = $pv(..
              ?p_remote_application_info.dft$remote_application_info.next_p_application_info)
      WHILEND
    IFEND

    p_application_rpc_list = $program_value(?p_cpu_queue_header.dft$cpu_queue_header.p_application_rpc_list)
    put_line ' ' o=out

    IF $nil_pva(p_application_rpc_list) THEN
      put_line ' No remote application rpc list.' o=out
    ELSE
      put_line ' Remote application rpc list' o=out

      abc = $string(p_cpu_queue_header)
      rpc = abc//'.dft$cpu_queue_header.p_application_rpc_list'
      FOR i = 1 TO $pv(upperbound(?rpc^)) DO
        put_line ' ' o=out
        dispv ?rpc^[?i] o=out
      FOREND
    IFEND
  IFEND

" Task info
  IF (display_option = task) OR (display_option = all) THEN
    current_procedure =$default_procedure
    chadm dfm$clone_task_process
    chadp dfp$task_services_clone_task

    IF NOT $nil_pva(dfv$p_proc_addresses) THEN
      dispv dfv$p_proc_addresses^          o=out
    IFEND
    IF NOT $nil_pva(dfv$p_attached_file_pointers) THEN
      dispv dfv$p_attached_file_pointers^  o=out
    IFEND
    chadp current_procedure
  IFEND

  chadm current_module

PROCEND dum$display_application_info
