PROCEDURE display_unreconciled_files, disuf (
  catalog, c: any of
      key
        all
      keyend
      file
    anyend = $optional
  set_name, sn: name = $optional
  display_options, display_option, do: key
      all
      (missing, m)
      (unavailable, u)
    keyend = all
  output, o: file = $output
  missing_count, mc: (VAR) integer = $optional
  unavailable_count, uc: (VAR) integer = $optional
  status)

  "$FORMAT=OFF
  VAR
    backup_listing: file = $fname('$local.'//$unique)
    count: integer
    display_missing: boolean =(display_option=all) or (display_option=missing)
    display_unavailable: boolean =(display_option=all) or (display_option= ..
       unavailable)
    error_listing: file = $fname('$local.'//$unique)
    file_paths: list of file
    ignore_status: status
    lines: list 0..$max_list of string
    mc:integer = 0
    mc_text: string = $status_code_string(pfe$catalog_volume_not_online)//'--'
    mf:integer = 0
    mf_text: string = $status_code_string(pfe$volume_not_online)//'--'
    output_file_open: boolean
    output_file_path: file
    uc:integer  = 0
    uc_text: string = $status_code_string(pfe$catalog_volume_unavailable)//'--'
    uf:integer  = 0
    uf_text: string = $status_code_string(pfe$volume_unavailable)//'--'
  VAREND

  "$FORMAT=ON"

  WHEN ANY_FAULT DO
    detach_file backup_listing status=ignore_status
    detach_file error_listing status=ignore_status
  WHENEND

  $source.pup$generate_backup_listing catalog=catalog set_name=set_name ..
        backup_listing=backup_listing
  execute_task library=$system.osf$builtin_library starting_procedure=pup$extract_errors_from_listing ..
        parameters='backup_listing=backup_listing,output=error_listing'
  get_line variable=lines input=error_listing

  lines=$select(lines $size(x)>18)

  IF display_missing THEN
    mc=$size($select(lines x(11, 8)=mc_text))
    mf=$size($select(lines x(11, 9)=mf_text))
  IFEND

  IF display_unavailable THEN
    uc=$size($select(lines x(11, 8)=uc_text))
    uf=$size($select(lines x(11, 9)=uf_text))
  IFEND

  output_file_path = output
  output_file_open = FALSE

  IF (mc+mf+uc+uf)> 0 THEN
    count=$size(lines)
    i=1
    REPEAT
      IF lines(i)(3, 7) = '--ERROR' THEN
        IF (((lines(i)(11, 9)=mf_text) OR (lines(i)(11, 8)=mc_text)) AND ..
              display_missing) OR (((lines(i)(11, 9)=uf_text) OR ..
              (lines(i)(11, 8)=uc_text)) AND display_unavailable) THEN
          REPEAT
            put_line lines(i) o=output_file_path.$eoi
            IF NOT output_file_open THEN
              file_paths = $file_cycles(output_file_path, paths)
              output_file_path = file_paths(1)
              output_file_open = TRUE
            IFEND
            i=i+1
          UNTIL (i>count) OR ($scan_any(' ' lines(i)(2))<> 0)
        ELSE
          i=i+1
        IFEND
      ELSE
        i=i+1
      IFEND
    UNTIL i>count
  IFEND

COLLECT_TEXT output_file_path.$eoi

 *************************Summary******************************
**

  IF NOT output_file_open THEN
    file_paths = $file_cycles(output_file_path, paths)
    output_file_path = file_paths(1)
  IFEND

  IF display_missing THEN
COLLECT_TEXT output_file_path.$eoi sm='?'

 Number of missing catalogs: ?mc?
 Number of missing files   : ?mf?
**
  IFEND

  IF display_unavailable THEN
COLLECT_TEXT output_file_path.$eoi sm='?'

 Number of unavailable catalogs: ?uc?
 Number of unavailable files   : ?uf?
**
  IFEND

  IF $specified(unavailable_count) THEN
    unavailable_count=uc + uf
  IFEND

  IF $specified(missing_count) THEN
    missing_count=mc + mf
  IFEND

  detach_file backup_listing status=ignore_status
  detach_file error_listing status=ignore_status

PROCEND display_unreconciled_files
