
 PROCEDURE dum$display_server_image_file, display_server_image_file, dissif (
   address, a: integer 0..$max_integer = $required
   display_pages, dp: boolean = false
   ignore_header_eoi, ihe: boolean = false
   output, o: file = $output
   status)

  current = $default_module
  crev local_status status
  set_file_attributes output fc=legible pf=continuous pw=80
  chadm dfm$manage_image
  IF $file(output open_position) = '$BOI' THEN
    rewind_file output status=local_status
  IFEND
  out = output.$eoi
  dispv ?address.dft$image_header o=out
  current_nexted = 0
  page_size = $pv(?address.dft$image_header.page_size)
  IF ($pv(?address.dft$image_header.current_eoi) > page_size) ..
     OR ignore_header_eoi THEN
     p_block_header = address + page_size
     p_current_block_seq = p_block_header
     current_nexted = $pv(#size(0.dft$image_block_header))
     block_advanced = FALSE
     WHILE $offset(p_block_header) <> 0 DO
       IF NOT block_advanced THEN
         dispv ?p_block_header.dft$image_block_header o=out
       IFEND
       block_advanced = FALSE
       FOR file_count = 1 to $pv(?p_block_header.dft$image_block_header.file_count) DO
         p_file_header = p_current_block_seq + current_nexted
         dispv ?p_file_header.dft$image_file_header o=out
         current_nexted = current_nexted + $pv(#size(0.dft$image_file_header))
         FOR page_count = 1 to $pv(?p_file_header.dft$image_file_header.page_count) DO
           IF current_nexted + $pv(#size(0.dft$image_page_header)) > page_size THEN
             p_current_block_seq = address + $pv(?p_block_header.dft$image_block_header.next_block_header_offset)
             p_block_header  = p_current_block_seq
             putl ' --- Block advanced in middle of pages ----- ' o=out
             dispv ?p_block_header.dft$image_block_header o=out
             block_advanced = TRUE
             current_nexted = $pv(#size(0.dft$image_block_header))
          IFEND
          p_page_header = p_current_block_seq + current_nexted
          current_nexted = current_nexted + $pv(#size(0.dft$image_page_header))
          dispv ?p_page_header.dft$image_page_header o=out
          IF display_pages THEN
            data_address = $pv(?p_page_header.dft$image_page_header.image_offset) + address
            dism data_address page_size o=out
          IFEND
         FOREND
       FOREND
      IF NOT block_advanced THEN
        p_current_block_seq = address + $pv(?p_block_header.dft$image_block_header.next_block_header_offset)
        p_block_header  = p_current_block_seq
        current_nexted = $pv(#size(0.dft$image_block_header))
      IFEND
     WHILEND
  IFEND
 chadm current
PROCEND dum$display_server_image_file
