PROC dum$display_queued_catalogs, display_queued_catalogs, display_queued_catalog_table, disqct (
  address, a: integer 0 ..$max_integer
  array_size, as: integer 0 ..$max_integer
  element_size, es: integer 0 ..$max_integer
  output, o : file = $output
  status    : var of status = $optional
  )

" This incomplete procedure displays all catalogs queued within the job.
" If address, table_size, and element_size are NOT specified this
" displays the jobs queued catalog table.  These values are provided as
" parameters for use in displaying the file server client mainframe file.

  crev local_status status
  crev page_status status
  IF $file($value(output) open_position) = '$BOI' THEN
    rewind_file $value(output) status=local_status
  IFEND
  output_file = $string($value(output)) // '.$eoi'


  IF $specified(address) THEN
    array_size = $value(array_size)
    element_size = $value(element_size)
    lower_bound = 1
    IF $nil_pva($value(address)) THEN
       disv ' Nil queued catalog table ' o=$fname(output_file)
       EXIT_PROC
    IFEND
    pfv$p_queued_catalog_table = $value(address)
  ELSE
    IF $nil_pva($mem($sa(pfv$p_queued_catalog_table))) THEN
      disv ' Nil queued catalog table ' o=$fname(output_file)
      EXIT_PROC
    IFEND
    pfv$p_queued_catalog_table = $mem($sa(pfv$p_p_queued_catalog_table))
    array_size = $mem(pfv$p_queued_catalog_table+6, 4)
    lower_bound = $mem(pfv$p_queued_catalog_table+10, 4)
    element_size = $mem(pfv$p_queued_catalog_table+14, 4)
    pfv$p_queued_catalog_table = $mem($mem($sa(pfv$p_p_queued_catalog_table)))
  IFEND
  putl ' QUEUED CATALOG TABLE ' o=$fname(output_file)
  putl ' entry size '//$strrep(element_size) o=$fname(output_file)
  upper_bound = lower_bound + (array_size / element_size) - 1
  putl ' pfv$p_queued_catalog_table '//$strrep(pfv$p_queued_catalog_table, 16)//'(16)' o=$fname(output_file)
  FOR index = lower_bound TO upper_bound DO
    putl ' ----------- qct entry '//$strrep(index) o=$fname(output_file)
    entry_start = pfv$p_queued_catalog_table + ((index - lower_bound) * element_size)
    putl ' Entry start '//$strrep(entry_start, 16)//'(16)' o=$fname(output_file)
    incl ' putl $memory_string(entry_start+43,31) o=$fname(output_file)' status=page_status
    IF page_status.normal THEN
      putl ' SFID '//$strrep($memory(entry_start+97, 4), 16)//'(16)  index (2) residence(1) hash(1)' ..
            o=$fname(output_file)
    ELSE
      putl ' Page not in memory - entry '//$strrep(index) o=$fname(output_file)
      disv page_status o=$fname(output_file)
    IFEND
  FOREND

PROCEND dum$display_queued_catalogs
