PROCEDURE  dum$display_queue_summary, display_queue_summary, disqs (
  output, o: file = $output
  status)

 " This procedure displays a summary of the file server state.
 " This proc uses RJTs new dump analyzer.
 " This proc assumes that dfm$monitor_process has been added.

  set_file_attributes f=output fc=legible pf=continuous
  out = output.$eoi
  current = $default_module
  change_default_module m=dfm$monitor_process

  IF $nil_pva($program_value(dfv$p_queue_interface_directory))
    put_line l=' Not using the server ' o=out
  ELSE
    FOR queue_directory_entry = $program_value(LOWERBOUND(dfv$p_queue_interface_directory^)) TO ..
          $program_value(UPPERBOUND(dfv$p_queue_interface_directory^)) DO
      address = $program_value(^dfv$p_queue_interface_directory^[?queue_directory_entry])
      p_queue_interface_table = ..
            $program_value(?address.dft$q_interface_directory_entry.p_queue_interface_table)
      display_value v='- Queue Interface '//$strrep(queue_directory_entry)//..
' -- p_queue_interface_table '//$strrep(p_queue_interface_table,16)//'(16)' o=out
      FOR queue_index = 1 to 16 DO
        p_cpu_queue = $program_value(?p_queue_interface_table.dft$queue_interface_table..
.queue_directory.cpu_queue_pva_directory[?queue_index].p_cpu_queue)
        IF NOT $nil_pva(p_cpu_queue) THEN
          p_driver_queue = $program_value(?p_queue_interface_table.dft$queue_interface_table..
.queue_directory.driver_queue_pva_directory[?queue_index].p_driver_queue)
          qi_string = $strrep(queue_index)
          IF queue_index < 10 THEN
            qi_string = ' '//qi_string
          IFEND
          state_line = ' Queue Index '//qi_string//'    '// ..
$program_value(?p_cpu_queue.dft$cpu_queue.queue_header.destination_mainframe_name)//'   '// ..
$program_value(?p_cpu_queue.dft$cpu_queue.queue_header.partner_status.server_state)
          IF queue_index <= 8 THEN
            state_line = state_line//'   CLIENT'
          ELSE
            state_line = state_line//'   SERVER '
          IFEND
          put_line l=state_line  o=out
        IFEND
      FOREND
    FOREND
  IFEND
  put_line l=' ' o=out
  change_default_module m=dfm$mtr_served_family_manager
  IF $program_value(dfv$served_family_table_root.valid) THEN
    FOR pnter = 1 TO $program_value(dfv$served_family_table_root.number_of_active_pointers) DO
      FOR family = 1 TO $program_value(dfv$served_family_table_root..
.p_family_list_pointer_array^[?pnter].highest_valid_entry) DO
        display_value v='Family '//$strrep(family)//'   '//..
$program_value(dfv$served_family_table_root.p_family_list_pointer_array^[?..
pnter].p_served_family_list^[?family].family_name)//'   '//..
$program_value(dfv$served_family_table_root.p_family_list_pointer_array^[?..
pnter].p_served_family_list^[?family].server_state) o=out
      FOREND
    FOREND
  ELSE
    display_value v=' No served families' o=out
  IFEND

  change_default_module m=current

PROCEND dum$display_queue_summary
