Use Netcdf
Real, Allocatable :: Xlon(:), Xlat(:), XTime(:), T2m(:,:,:)
Integer :: Nst, Ntime, ist, it
Real, Allocatable :: DatBL(:,:)
Real, Allocatable, Dimension (:,:) :: PDSI, WPLM, ZIND, scPDSI, scWPLM, scZIND
Real, Allocatable, Dimension (:,:) :: SPI01, SPI03, SPI06, SPI12
Real, Allocatable, Dimension (:) :: Reg
Character (Len=255) :: Fname

   Fname="/home/tanpv/SEACLID_New/RES/SPI_Res/SPEI_Stn.nc"
   Call Read_SPI_nc (FName)
   Fname="/home/tanpv/SEACLID_New/RES/PDSI_Res/PDSI_Stn.nc"
   Call Read_PDSI_nc(FName)

CONTAINS
!------------------------------------------------------------------------------
Subroutine Read_SPI_nc (FName)
Character (Len=*) :: FName
Real, Allocatable, Dimension (:) :: XStn, tmpTime
Integer ::  Nlon1, Nlat1, Nt

Call rd_ncdf_2d (trim(FName), XStn, tmpTime, Nst, Ntime, SPI01, "SPI_01")
Deallocate (XStn, tmpTime)
Call rd_ncdf_2d (trim(FName), XStn, tmpTime, Nst, Ntime, SPI03, "SPI_03")
Deallocate (XStn, tmpTime)
Call rd_ncdf_2d (trim(FName), XStn, tmpTime, Nst, Ntime, SPI06, "SPI_06")
Deallocate (XStn, tmpTime)
Call rd_ncdf_2d (trim(FName), XStn, tmpTime, Nst, Ntime, SPI12, "SPI_12")
Deallocate (XStn, tmpTime)
!print*,SPI12; pause
! rd_ncdf_1d (filenm, lon, nlon, var, var_nm)
Call rd_ncdf_1d (trim(FName), XStn, Nst, Xlon, "lon")
Deallocate (XStn)
Call rd_ncdf_1d (trim(FName), XStn, Nst, Xlat, "lat")
Deallocate (XStn)
Call rd_ncdf_1d (trim(FName), XStn, Nst, Reg,  "reg")
End Subroutine Read_SPI_nc
!------------------------------------------------------------------------------
Subroutine Read_PDSI_nc (FName)
Character (Len=*) :: FName
Real, Allocatable, Dimension (:) :: tmplon, tmplat, tmpTime, XStn
Integer :: Nlatmp, Nlotmp, Ntmp
Character (Len=50) :: VarName

!VarName="ori_pdsi"
!  wr_ncdf_2d (trim(Fname), XStn, t, Nst, Ntime, X1, "ori_pdsi", "ori_pdsi", "-", "Station", "Time", amssng)
Call rd_ncdf_2d (trim(FName), XStn, tmpTime, Nst, Ntime, PDSI, "ori_pdsi")
Deallocate (XStn, tmpTime)
Call rd_ncdf_2d (trim(FName), XStn, tmpTime, Nst, Ntime, WPLM, "ori_wplm")
Deallocate (XStn, tmpTime)
Call rd_ncdf_2d (trim(FName), XStn, tmpTime, Nst, Ntime, ZIND, "ori_zind")
Deallocate (XStn, tmpTime)
Call rd_ncdf_2d (trim(FName), XStn, tmpTime, Nst, Ntime, scPDSI, "sel_pdsi")
Deallocate (XStn, tmpTime)
Call rd_ncdf_2d (trim(FName), XStn, tmpTime, Nst, Ntime, scWPLM, "sel_wplm")
Deallocate (XStn, tmpTime)
Call rd_ncdf_2d (trim(FName), XStn, tmpTime, Nst, Ntime, scZIND, "sel_zind")
Deallocate (XStn, tmpTime)
!print*,PDSI; pause
End Subroutine Read_PDSI_nc
!------------------------------------------------------------------------------
!Include "../Libs/sub_wr_ncdf.F90"
!Include "../Libs/sub_rd_ncdf.F90"
Include "../Libs/sub_rd_ncdf_Tan.F90"
END
