anchor.diff:    character(len=:), allocatable          :: fmt
     character(len=:), allocatable          :: type
     character(len=:), allocatable          :: data
  -  integer(I4P)                           :: np, offs, pos
  +  integer(I4P)                           :: np, offs
     integer(I4P)                           :: N_Byte
     !---------------------------------------------------------------------------------------------------------------------------------
   
  
positive.code:           trim(adjustlt(Upper_Case(type)))/='INT32') then
          E_IO = -1_I4P
        else
          read(data, fmt=*, iostat=E_IO) offset !get appended array connect
          ! get appended array cell_type
          allocate(cell_type(NC), stat=E_IO)
          E_IO = search(from=pos,inside='Cells', to_find='DataArray', with_attribute='Name', of_value='Types', &
  
negative.code: !                   VTK_VAR_XML_LIST_1DA_I2,VTK_VAR_XML_LIST_3DA_I2, & ! integer(I2P) list      1D/3D array
  !                   VTK_VAR_XML_LIST_1DA_I1,VTK_VAR_XML_LIST_3DA_I1    ! integer(I1P) list      1D/3D array
  !-----------------------------------------------------------------------------------------------------------------------------------
    function VTK_VAR_XML_HEADER_READ(var_location,varname,NC_NN,NCOMP,fmt,type,data,offs,npiece,cf) result(E_IO)
    !---------------------------------------------------------------------------------------------------------------------------------
    !< Function for reading field of scalar variable (R8P, 1D array).
    !---------------------------------------------------------------------------------------------------------------------------------
    implicit none
    character(*),                  intent(IN)  :: var_location !< location of variables: CELL for cell-centered, NODE for node-centered
    character(*),                  intent(IN)  :: varname      !< variable name
    integer(I4P),                  intent(OUT) :: NC_NN        !< number of cells or nodes
    integer(I4P),                  intent(OUT) :: NCOMP        !< number of components
    character(len=:), allocatable, intent(OUT) :: fmt          !< VTK data format
    character(len=:), allocatable, intent(OUT) :: type         !< VTK data type
    character(len=:), allocatable, intent(OUT), optional :: data !< VTK data type
    integer(I4P), optional,        intent(OUT) :: offs         !< Raw data offset.
    integer(I4P), optional,        intent(IN)  :: npiece       ! Number of the piece to read (by default: 1)
    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
    integer(I4P)                               :: rf           !< Real file index.
    character(len=:), allocatable              :: s_buffer     !< Buffer string.
    character(len=:), allocatable              :: aux
    integer(I4P)                               :: np, pos, of
    integer(I4P)                               :: nx1,nx2,ny1,ny2,nz1,nz2
    !---------------------------------------------------------------------------------------------------------------------------------
  
    !---------------------------------------------------------------------------------------------------------------------------------
    E_IO = -1_I4P
    rf = f
    if (present(cf)) then
      rf = cf ; f = cf
    endif
    np = 1_I4P; if (present(npiece)) np = npiece
  
    ! Read field headers
    rewind(unit=vtk(rf)%u, iostat=E_IO)
    E_IO = move(inside=trim(vtk(rf)%topology), to_find='Piece', repeat=np, buffer=s_buffer)
    inquire(unit=vtk(rf)%u, pos=pos)
  
    select case(trim(Upper_case(var_location)))
      case('NODE')
        select case(trim(vtk(rf)%topology))
          case('RectilinearGrid','StructuredGrid')
            call get_char(buffer=s_buffer, attrib='Extent', val=aux, E_IO=E_IO)
            if(E_IO == 0) then      
              read(aux,*, iostat=E_IO) nx1,nx2,ny1,ny2,nz1,nz2   
              NC_NN = (nx2-nx1+1)*(ny2-ny1+1)*(nz2-nz1+1)
            endif
          case('UnstructuredGrid')
            call get_int(buffer=s_buffer, attrib='NumberOfPoints', val=NC_NN, E_IO=E_IO)
        end select
        E_IO = search(from=pos, inside='PointData', to_find='DataArray', with_attribute='Name', of_value=varname, &
                      buffer=s_buffer, content=aux)
        if(present(data)) data=aux
  
      case('CELL')
        select case(trim(vtk(rf)%topology))
          case('RectilinearGrid','StructuredGrid')
            call get_char(buffer=s_buffer, attrib='Extent', val=aux, E_IO=E_IO)
            if(E_IO == 0) then      
              read(aux,*, iostat=E_IO) nx1,nx2,ny1,ny2,nz1,nz2
              NC_NN = (nx2-nx1+1)*(ny2-ny1+1)*(nz2-nz1+1)
            endif
          case('UnstructuredGrid')
            call get_int(buffer=s_buffer, attrib='NumberOfCells', val=NC_NN, E_IO=E_IO)
        end select
        E_IO = search(from=pos, inside='CellData', to_find='DataArray', with_attribute='Name', of_value=varname, &
                      buffer=s_buffer, content=aux)
        if(present(data)) data=aux
    end select
  
    if(E_IO == 0) then
      call get_int(buffer=s_buffer, attrib='NumberOfComponents', val=NCOMP, E_IO=E_IO)
      call get_int(buffer=s_buffer, attrib='offset', val=of, E_IO=E_IO)
      if(present(offs)) offs= of
      call get_char(buffer=s_buffer, attrib='format', val=fmt, E_IO=E_IO)
      call get_char(buffer=s_buffer, attrib='type', val=type, E_IO=E_IO)
    endif
    !---------------------------------------------------------------------------------------------------------------------------------
    end function
  
  
    function VTK_VAR_XML_SCAL_1DA_R8_READ(var_location,varname,NC_NN,NCOMP,var,npiece,cf) result(E_IO)
    !---------------------------------------------------------------------------------------------------------------------------------
    !< Function for reading field of scalar variable (R8P, 1D array).
  