anchor.diff:    end function
   
   
  +  function VTK_FLD_XML_R8_READ(fname,fld,cf) result(E_IO)
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  !< Function for reading field data (global auxiliary data, e.g. time, step number, data set name...) (R8P).
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  implicit none
  +  character(*),           intent(IN)  :: fname    !< Field data name.
  +  real(R8P),              intent(OUT) :: fld      !< Field data value.
  +  integer(I4P), optional, intent(IN)  :: cf       !< Current file index (for concurrent files IO).
  +  integer(I4P)                        :: E_IO     !< Input/Output inquiring flag: $0$ if IO is done, $> 0$ if IO is not done.
  +  character(len=:), allocatable       :: s_buffer !< Buffer string.
  +  character(len=:), allocatable       :: type     !< VTK data type
  +  character(len=:), allocatable       :: fmt      !< VTK data format
  +  character(len=:), allocatable       :: data     !< String.
  +  integer(I4P)                        :: offs     !< Data offset.
  +  integer(I4P)                        :: nt       !< Number of tuples.
  +  integer(I4P)                        :: rf       !< Real file index.
  +  integer(I4P)                           :: N_Byte
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  E_IO = -1_I4P
  +  rf = f
  +  if (present(cf)) then
  +    rf = cf ; f = cf
  +  endif
  +  select case(vtk(rf)%f)
  +  case(ascii)
  +    rewind(unit=vtk(rf)%u, iostat=E_IO)
  +    E_IO = search(inside='FieldData', to_find='DataArray', with_attribute='Name', of_value=trim(fname), &
  +                  buffer=s_buffer,content=data)
  +    if(E_IO==0) then
  +      call get_int(buffer=s_buffer, attrib='NumberOfTuples', val=nt, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='type', val=type, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='format', val=fmt, E_IO=E_IO)
  +      if (trim(adjustlt(Upper_Case(fmt)))/='ASCII' .or. &
  +          trim(adjustlt(Upper_Case(type)))/='FLOAT64' .or. nt/=1) then        
  +          E_IO = -1_I4P
  +      else
  +        read(data, fmt=*, iostat=E_IO)  fld !get ascii data
  +      endif
  +      if(allocated(data)) deallocate(data)
  +    endif
  +  case(binary)
  +!Not implemented
  +
  +  case(raw)
  +    rewind(unit=vtk(rf)%u, iostat=E_IO)
  +    E_IO = search(inside='FieldData', to_find='DataArray', with_attribute='Name', of_value=trim(fname), &
  +                  buffer=s_buffer)
  +    if(E_IO==0) then
  +      call get_int(buffer=s_buffer, attrib='NumberOfTuples', val=nt, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='type', val=type, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='format', val=fmt, E_IO=E_IO)
  +      call get_int(buffer=s_buffer, attrib='offset', val=offs, E_IO=E_IO)
  +      if (trim(adjustlt(Upper_Case(fmt)))/='APPENDED' .or. &
  +          trim(adjustlt(Upper_Case(type)))/='FLOAT64' .or. nt/=1) then        
  +          E_IO = -1_I4P
  +      else
  +          read(unit=vtk(rf)%u, iostat=E_IO, pos=vtk(rf)%ioffset+offs) N_Byte, fld
  +      endif
  +    endif
  +  end select
  +
  +  return
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  end function VTK_FLD_XML_R8_READ
  +
  +
  +  function VTK_FLD_XML_R4_READ(fname,fld,cf) result(E_IO)
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  !< Function for reading field data (global auxiliary data, e.g. time, step number, data set name...) (R4P).
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  implicit none
  +  character(*),           intent(IN)  :: fname    !< Field data name.
  +  real(R4P),              intent(OUT) :: fld      !< Field data value.
  +  integer(I4P), optional, intent(IN)  :: cf       !< Current file index (for concurrent files IO).
  +  integer(I4P)                        :: E_IO     !< Input/Output inquiring flag: $0$ if IO is done, $> 0$ if IO is not done.
  +  character(len=:), allocatable       :: s_buffer !< Buffer string.
  +  character(len=:), allocatable       :: type     !< VTK data type
  +  character(len=:), allocatable       :: fmt      !< VTK data format
  +  character(len=:), allocatable       :: data     !< String.
  +  integer(I4P)                        :: offs     !< Data offset.
  +  integer(I4P)                        :: nt       !< Number of tuples.
  +  integer(I4P)                        :: rf       !< Real file index.
  +  integer(I4P)                           :: N_Byte
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  E_IO = -1_I4P
  +  rf = f
  +  if (present(cf)) then
  +    rf = cf ; f = cf
  +  endif
  +  select case(vtk(rf)%f)
  +  case(ascii)
  +    rewind(unit=vtk(rf)%u, iostat=E_IO)
  +    E_IO = search(inside='FieldData', to_find='DataArray', with_attribute='Name', of_value=trim(fname), &
  +                  buffer=s_buffer,content=data)
  +    if(E_IO==0) then
  +      call get_int(buffer=s_buffer, attrib='NumberOfTuples', val=nt, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='type', val=type, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='format', val=fmt, E_IO=E_IO)
  +      if (trim(adjustlt(Upper_Case(fmt)))/='ASCII' .or. &
  +          trim(adjustlt(Upper_Case(type)))/='FLOAT' .or. nt/=1) then        
  +          E_IO = -1_I4P
  +      else
  +        read(data, fmt=*, iostat=E_IO)  fld !get ascii data
  +      endif
  +      if(allocated(data)) deallocate(data)
  +    endif
  +
  +  case(binary)
  +!Not implemented
  +
  +  case(raw)
  +    rewind(unit=vtk(rf)%u, iostat=E_IO)
  +    E_IO = search(inside='FieldData', to_find='DataArray', with_attribute='Name', of_value=trim(fname), &
  +                  buffer=s_buffer)
  +    if(E_IO==0) then
  +      call get_int(buffer=s_buffer, attrib='NumberOfTuples', val=nt, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='type', val=type, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='format', val=fmt, E_IO=E_IO)
  +      call get_int(buffer=s_buffer, attrib='offset', val=offs, E_IO=E_IO)
  +      if (trim(adjustlt(Upper_Case(fmt)))/='APPENDED' .or. &
  +          trim(adjustlt(Upper_Case(type)))/='FLOAT32' .or. nt/=1) then        
  +          E_IO = -1_I4P
  +      else
  +          read(unit=vtk(rf)%u, iostat=E_IO, pos=vtk(rf)%ioffset+offs) N_Byte, fld
  +      endif
  +    endif
  +
  +  end select
  +
  +  return
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  end function VTK_FLD_XML_R4_READ
  +
  +
  +  function VTK_FLD_XML_I8_READ(fname,fld,cf) result(E_IO)
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  !< Function for reading field data (global auxiliary data, e.g. time, step number, data set name...) (I8P).
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  implicit none
  +  character(*),           intent(IN)  :: fname    !< Field data name.
  +  integer(I8P),           intent(OUT) :: fld      !< Field data value.
  +  integer(I4P), optional, intent(IN)  :: cf       !< Current file index (for concurrent files IO).
  +  integer(I4P)                        :: E_IO     !< Input/Output inquiring flag: $0$ if IO is done, $> 0$ if IO is not done.
  +  character(len=:), allocatable       :: s_buffer !< Buffer string.
  +  character(len=:), allocatable       :: type     !< VTK data type
  +  character(len=:), allocatable       :: fmt      !< VTK data format
  +  character(len=:), allocatable       :: data     !< String.
  +  integer(I4P)                        :: offs     !< Data offset.
  +  integer(I4P)                        :: nt       !< Number of tuples.
  +  integer(I4P)                        :: rf       !< Real file index.
  +  integer(I4P)                           :: N_Byte
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  E_IO = -1_I4P
  +  rf = f
  +  if (present(cf)) then
  +    rf = cf ; f = cf
  +  endif
  +  select case(vtk(rf)%f)
  +  case(ascii)
  +    rewind(unit=vtk(rf)%u, iostat=E_IO)
  +    E_IO = search(inside='FieldData', to_find='DataArray', with_attribute='Name', of_value=trim(fname), &
  +                  buffer=s_buffer,content=data)
  +    if(E_IO==0) then
  +      call get_int(buffer=s_buffer, attrib='NumberOfTuples', val=nt, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='type', val=type, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='format', val=fmt, E_IO=E_IO)
  +      if (trim(adjustlt(Upper_Case(fmt)))/='ASCII' .or. &
  +          trim(adjustlt(Upper_Case(type)))/='INT64' .or. nt/=1) then        
  +        E_IO = -1_I4P
  +      else
  +        read(data, fmt=*, iostat=E_IO)  fld !get ascii data
  +      endif
  +      if(allocated(data)) deallocate(data)
  +    endif
  +
  +  case(binary)
  +!Not implemented
  +
  +  case(raw)
  +    rewind(unit=vtk(rf)%u, iostat=E_IO)
  +    E_IO = search(inside='FieldData', to_find='DataArray', with_attribute='Name', of_value=trim(fname), &
  +                  buffer=s_buffer)
  +    if(E_IO==0) then
  +      call get_int(buffer=s_buffer, attrib='NumberOfTuples', val=nt, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='type', val=type, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='format', val=fmt, E_IO=E_IO)
  +      call get_int(buffer=s_buffer, attrib='offset', val=offs, E_IO=E_IO)
  +      if (trim(adjustlt(Upper_Case(fmt)))/='APPENDED' .or. &
  +          trim(adjustlt(Upper_Case(type)))/='INT64' .or. nt/=1) then        
  +        E_IO = -1_I4P
  +      else
  +        read(unit=vtk(rf)%u, iostat=E_IO, pos=vtk(rf)%ioffset+offs) N_Byte, fld
  +      endif
  +    endif
  +  end select
  +
  +  return
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  end function VTK_FLD_XML_I8_READ
  +
  +  function VTK_FLD_XML_I4_READ(fname,fld,cf) result(E_IO)
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  !< Function for reading field data (global auxiliary data, e.g. time, step number, data set name...) (I4P).
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  implicit none
  +  character(*),           intent(IN)  :: fname    !< Field data name.
  +  integer(I4P),           intent(OUT) :: fld      !< Field data value.
  +  integer(I4P), optional, intent(IN)  :: cf       !< Current file index (for concurrent files IO).
  +  integer(I4P)                        :: E_IO     !< Input/Output inquiring flag: $0$ if IO is done, $> 0$ if IO is not done.
  +  character(len=:), allocatable       :: s_buffer !< Buffer string.
  +  character(len=:), allocatable       :: type     !< VTK data type
  +  character(len=:), allocatable       :: fmt      !< VTK data format
  +  character(len=:), allocatable       :: data     !< String.
  +  integer(I4P)                        :: offs     !< Data offset.
  +  integer(I4P)                        :: nt       !< Number of tuples.
  +  integer(I4P)                        :: rf       !< Real file index.
  +  integer(I4P)                           :: N_Byte
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  E_IO = -1_I4P
  +  rf = f
  +  if (present(cf)) then
  +    rf = cf ; f = cf
  +  endif
  +  select case(vtk(rf)%f)
  +  case(ascii)
  +    rewind(unit=vtk(rf)%u, iostat=E_IO)
  +    E_IO = search(inside='FieldData', to_find='DataArray', with_attribute='Name', of_value=trim(fname), &
  +                  buffer=s_buffer,content=data)
  +    if(E_IO==0) then
  +      call get_int(buffer=s_buffer, attrib='NumberOfTuples', val=nt, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='type', val=type, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='format', val=fmt, E_IO=E_IO)
  +      if (trim(adjustlt(Upper_Case(fmt)))/='ASCII' .or. &
  +          trim(adjustlt(Upper_Case(type)))/='INT32' .or. nt/=1) then        
  +          E_IO = -1_I4P
  +      else
  +        read(data, fmt=*, iostat=E_IO)  fld !get ascii data
  +      endif
  +      if(allocated(data)) deallocate(data)
  +    endif
  +
  +  case(binary)
  +!Not implemented
  +
  +  case(raw)
  +    rewind(unit=vtk(rf)%u, iostat=E_IO)
  +    E_IO = search(inside='FieldData', to_find='DataArray', with_attribute='Name', of_value=trim(fname), &
  +                  buffer=s_buffer)
  +    if(E_IO==0) then
  +      call get_int(buffer=s_buffer, attrib='NumberOfTuples', val=nt, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='type', val=type, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='format', val=fmt, E_IO=E_IO)
  +      call get_int(buffer=s_buffer, attrib='offset', val=offs, E_IO=E_IO)
  +      if (trim(adjustlt(Upper_Case(fmt)))/='APPENDED' .or. &
  +          trim(adjustlt(Upper_Case(type)))/='INT32' .or. nt/=1) then        
  +          E_IO = -1_I4P
  +      else
  +          read(unit=vtk(rf)%u, iostat=E_IO, pos=vtk(rf)%ioffset+offs) N_Byte, fld
  +      endif
  +    endif
  +
  +  end select
  +
  +  return
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  end function VTK_FLD_XML_I4_READ
  +
  +
  +  function VTK_FLD_XML_I2_READ(fname,fld,cf) result(E_IO)
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  !< Function for reading field data (global auxiliary data, e.g. time, step number, data set name...) (I2P).
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  implicit none
  +  character(*),           intent(IN)  :: fname    !< Field data name.
  +  integer(I2P),           intent(OUT) :: fld      !< Field data value.
  +  integer(I4P), optional, intent(IN)  :: cf       !< Current file index (for concurrent files IO).
  +  integer(I4P)                        :: E_IO     !< Input/Output inquiring flag: $0$ if IO is done, $> 0$ if IO is not done.
  +  character(len=:), allocatable       :: s_buffer !< Buffer string.
  +  character(len=:), allocatable       :: type     !< VTK data type
  +  character(len=:), allocatable       :: fmt      !< VTK data format
  +  character(len=:), allocatable       :: data     !< String.
  +  integer(I4P)                        :: offs     !< Data offset.
  +  integer(I4P)                        :: nt       !< Number of tuples.
  +  integer(I4P)                        :: rf       !< Real file index.
  +  integer(I4P)                           :: N_Byte
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  E_IO = -1_I4P
  +  rf = f
  +  if (present(cf)) then
  +    rf = cf ; f = cf
  +  endif
  +  select case(vtk(rf)%f)
  +  case(ascii)
  +    rewind(unit=vtk(rf)%u, iostat=E_IO)
  +    E_IO = search(inside='FieldData', to_find='DataArray', with_attribute='Name', of_value=trim(fname), &
  +                  buffer=s_buffer,content=data)
  +    if(E_IO==0) then
  +      call get_int(buffer=s_buffer, attrib='NumberOfTuples', val=nt, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='type', val=type, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='format', val=fmt, E_IO=E_IO)
  +      if (trim(adjustlt(Upper_Case(fmt)))/='ASCII' .or. &
  +          trim(adjustlt(Upper_Case(type)))/='INT16' .or. nt/=1) then        
  +          E_IO = -1_I4P
  +      else
  +        read(data, fmt=*, iostat=E_IO)  fld !get ascii data
  +      endif
  +      if(allocated(data)) deallocate(data)
  +    endif
  +
  +  case(binary)
  +!Not implemented
  +
  +  case(raw)
  +    rewind(unit=vtk(rf)%u, iostat=E_IO)
  +    E_IO = search(inside='FieldData', to_find='DataArray', with_attribute='Name', of_value=trim(fname), &
  +                  buffer=s_buffer)
  +    if(E_IO==0) then
  +      call get_int(buffer=s_buffer, attrib='NumberOfTuples', val=nt, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='type', val=type, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='format', val=fmt, E_IO=E_IO)
  +      call get_int(buffer=s_buffer, attrib='offset', val=offs, E_IO=E_IO)
  +      if (trim(adjustlt(Upper_Case(fmt)))/='APPENDED' .or. &
  +          trim(adjustlt(Upper_Case(type)))/='INT16' .or. nt/=1) then        
  +          E_IO = -1_I4P
  +      else
  +          read(unit=vtk(rf)%u, iostat=E_IO, pos=vtk(rf)%ioffset+offs) N_Byte, fld
  +      endif
  +    endif
  +
  +  end select
  +
  +  return
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  end function VTK_FLD_XML_I2_READ
  +
  +
  +  function VTK_FLD_XML_I1_READ(fname,fld,cf) result(E_IO)
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  !< Function for reading field data (global auxiliary data, e.g. time, step number, data set name...) (I1P).
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  implicit none
  +  character(*),           intent(IN)  :: fname    !< Field data name.
  +  integer(I1P),              intent(OUT) :: fld      !< Field data value.
  +  integer(I4P), optional, intent(IN)  :: cf       !< Current file index (for concurrent files IO).
  +  integer(I4P)                        :: E_IO     !< Input/Output inquiring flag: $0$ if IO is done, $> 0$ if IO is not done.
  +  character(len=:), allocatable       :: s_buffer !< Buffer string.
  +  character(len=:), allocatable       :: type     !< VTK data type
  +  character(len=:), allocatable       :: fmt      !< VTK data format
  +  character(len=:), allocatable       :: data     !< String.
  +  integer(I4P)                        :: offs     !< Data offset.
  +  integer(I4P)                        :: nt       !< Number of tuples.
  +  integer(I4P)                        :: rf       !< Real file index.
  +  integer(I4P)                           :: N_Byte
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  E_IO = -1_I4P
  +  rf = f
  +  if (present(cf)) then
  +    rf = cf ; f = cf
  +  endif
  +  select case(vtk(rf)%f)
  +  case(ascii)
  +    rewind(unit=vtk(rf)%u, iostat=E_IO)
  +    E_IO = search(inside='FieldData', to_find='DataArray', with_attribute='Name', of_value=trim(fname), &
  +                  buffer=s_buffer,content=data)
  +    if(E_IO==0) then
  +      call get_int(buffer=s_buffer, attrib='NumberOfTuples', val=nt, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='type', val=type, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='format', val=fmt, E_IO=E_IO)
  +      if (trim(adjustlt(Upper_Case(fmt)))/='ASCII' .or. &
  +          trim(adjustlt(Upper_Case(type)))/='INT8' .or. nt/=1) then        
  +          E_IO = -1_I4P
  +      else
  +        read(data, fmt=*, iostat=E_IO)  fld !get ascii data
  +      endif
  +      if(allocated(data)) deallocate(data)
  +    endif
  +
  +  case(binary)
  +!Not implemented
  +
  +  case(raw)
  +    rewind(unit=vtk(rf)%u, iostat=E_IO)
  +    E_IO = search(inside='FieldData', to_find='DataArray', with_attribute='Name', of_value=trim(fname), &
  +                  buffer=s_buffer)
  +    if(E_IO==0) then
  +      call get_int(buffer=s_buffer, attrib='NumberOfTuples', val=nt, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='type', val=type, E_IO=E_IO)
  +      call get_char(buffer=s_buffer, attrib='format', val=fmt, E_IO=E_IO)
  +      call get_int(buffer=s_buffer, attrib='offset', val=offs, E_IO=E_IO)
  +      if (trim(adjustlt(Upper_Case(fmt)))/='APPENDED' .or. &
  +          trim(adjustlt(Upper_Case(type)))/='INT8' .or. nt/=1) then        
  +          E_IO = -1_I4P
  +      else
  +          read(unit=vtk(rf)%u, iostat=E_IO, pos=vtk(rf)%ioffset+offs) N_Byte, fld
  +      endif
  +    endif
  +  end select
  +
  +  return
  +  !---------------------------------------------------------------------------------------------------------------------------------
  +  end function VTK_FLD_XML_I1_READ
  +
   
   
     function VTK_END_XML_READ(cf) result(E_IO)
  
positive.code: public:: VTK_END_XML
  ! functions for VTK XML READ
  public:: VTK_INI_XML_READ
  public:: VTK_GEO_XML_READ
  public:: VTK_CON_XML_READ
  public:: VTK_VAR_XML_READ
  
negative.code: 
    case('BINARY')
      vtk(rf)%f = binary
      select case(trim(vtk(rf)%topology))
        case('RectilinearGrid', 'StructuredGrid', 'UnstructuredGrid')
  
          open(unit=Get_Unit(vtk(rf)%u),file=trim(filename),status='old', &
               form='UNFORMATTED',access='STREAM',action='READ', &
               iostat=E_IO, position='REWIND')
  
          select case(trim(vtk(rf)%topology))
            case('RectilinearGrid', 'StructuredGrid')
              ! Get WholeExtent
              E_IO = move(inside='VTKFile', to_find=trim(vtk(rf)%topology), cf=rf,buffer=s_buffer)
              call get_char(buffer=s_buffer, attrib='WholeExtent', val=aux, E_IO=E_IO)
              if(E_IO == 0) then
                read(aux,*) rn
                if(present(nx1)) nx1 = rn(1); if(present(nx2)) nx2 = rn(2)
                if(present(ny1)) ny1 = rn(3); if(present(ny2)) ny2 = rn(4)
                if(present(nz1)) nz1 = rn(5); if(present(nz2)) nz2 = rn(6)
              endif
          end select
  
          ! count the pieces
          rewind(unit=vtk(rf)%u, iostat=E_IO)
          np = 0
          do
            E_IO = read_record(s_buffer, cf=rf); if(E_IO /= 0) exit
            s_buffer = trim(adjustl(Upper_Case(s_buffer)))
            if (index(s_buffer, '</'//trim(Upper_Case(vtk(rf)%topology))) > 0) exit !end of ASCII header section found
            if (index(s_buffer, '<PIECE') > 0) np = np + 1
          enddo
  
      end select
  
    case('RAW')
      vtk(rf)%f = raw
  