anchor.diff:    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.
  -  integer(I4P)                        :: NN       !< number of nodes in the piece
     character(len=:),allocatable        :: aux      !< Auxiliary string.
     character(len=:), allocatable       :: fmt, fmtX, fmtY, fmtZ
     character(len=:), allocatable       :: type, typeX, typeY, typeZ
  
positive.code:       if(E_IO == 0) then      
          read(aux,*, iostat=E_IO) nx1,nx2,ny1,ny2,nz1,nz2
          if(E_IO == 0) then      
            NN = (nx2-nx1+1)*(ny2-ny1+1)*(nz2-nz1+1)        
            E_IO = search(from=pos, inside='Coordinates', to_find='DataArray', with_attribute='Name', of_value='X', buffer=s_buffer)
            call get_int(buffer=s_buffer,  attrib='offset', val=offsX, E_IO=E_IO)
            call get_char(buffer=s_buffer, attrib='format', val=fmtX,  E_IO=E_IO)
  
negative.code:               trim(adjustlt(Upper_Case(type)))/='FLOAT64') then
              E_IO = -1_I4P 
            else
              allocate(X(nx1:nx2), stat=E_IO)
              read(data, fmt=*, iostat=E_IO) (X(i), i=nx1,nx2) !get X ascii array
            endif
            E_IO = search(from=pos, inside='Coordinates', to_find='DataArray', with_attribute='Name', of_value='Y', &
                          buffer=s_buffer,content=data)
  