MODULE STAT_POOL 
      IMPLICIT NONE

      CHARACTER                        :: DUMP*500, DUMP2*15 
      CHARACTER                        :: DUMP3*1
      CHARACTER(LEN=30), ALLOCATABLE   :: STATIONNAMES (:)
      CHARACTER(LEN=30), ALLOCATABLE   :: STATIONNAMES_O (:)
      CHARACTER(LEN=15), ALLOCATABLE   :: DATUM_SP     (:)
      CHARACTER(LEN=15), ALLOCATABLE   :: DATUM_O      (:,:)
      CHARACTER(LEN=15), ALLOCATABLE   :: FMT_O        (:)  
      CHARACTER(LEN=15), ALLOCATABLE   :: FMT_O_F      (:)
      CHARACTER(LEN=3)                 :: CHTMP 
      CHARACTER(LEN=4)                 :: YYYY         !YYYY MM DD hh
      CHARACTER(LEN=2)                 :: MM, DD, hh, MINUTE, SEC ! MIN(x,y) is a fortran function
      CHARACTER(LEN=30)                :: FMT_ERG_HEADER 
      CHARACTER(LEN=30)                :: FMT_NAM_HEADER
      CHARACTER(LEN=30)                :: FMT_ERG_RESULT 
      CHARACTER(LEN=30)                :: FMT_ERG_ALL_STAT
      CHARACTER(LEN=30),  ALLOCATABLE  :: BNAMES(:)
      CHARACTER(LEN=2)                 :: TMPCHAR

      REAL*8, PARAMETER                :: SMALL = 0.0000000001d0 
      
      LOGICAL                          :: FOUND
      
      INTEGER  , ALLOCATABLE           :: N_OBSRV_ERR(:), N_OUT_TIME(:), N_STAT(:)
      
      INTEGER                          :: MSC_O_MAX = 47
      
      REAL*8                           :: PI, DUMP_R
      INTEGER                          :: N_DT_O_MAX, DUMP_I
      INTEGER, ALLOCATABLE             :: N_DT_O (:)
      INTEGER, ALLOCATABLE             :: MSC_O(:), N_DT_ERR(:,:)

      INTEGER                          :: DATAEND, DUMP_INT, COUNTER
      INTEGER                          :: BUOYS, BUOYS_O, N_DT_SP, ERG, MSC, MDC, ISEMAX
      
      REAL*8                             :: M0, M1, M2, INCR_DT, INTER_DT, INTER, PI2, DDIR
      REAL*8                             :: TMP1, TMP2, TMP3, TMP4, CUT_OFF, DUMMY, DX, DIFF_DX
      REAL*8                             :: DT, DIFF_DT, YINTER, MINMAXFREQ_O, FRINTF, SGHIG, SGLOW
          
      REAL*8, ALLOCATABLE                :: FREQ_SP  (:)  , DFREQ_SP(:)
      REAL*8, ALLOCATABLE                :: SPSIG(:), SPDIR(:)
      REAL*8, ALLOCATABLE                :: E_SP     (:)  , NDIR  (:), DSPR  (:), COSTH(:), SINTH(:)
      REAL*8, ALLOCATABLE                :: EMAX_O(:,:), EMAX_SP(:,:)
      REAL*8, ALLOCATABLE                :: AUX_M0_SP(:)  , AUX_M1_SP(:), AUX_M2_SP(:), DS_INCR_SP(:)
      
      REAL*8, ALLOCATABLE                :: HS_SP (:,:), TM01_SP(:,:), TM02_SP(:,:), TP_SP(:,:), TP_O(:,:)
      REAL*8, ALLOCATABLE                :: HS_SP_CLEAN (:,:), TM01_SP_CLEAN(:,:), TM02_SP_CLEAN(:,:), TP_SP_CLEAN(:,:)

      REAL*8, ALLOCATABLE                :: DIFF_HS_SP(:,:), DIFF2_HS_SP(:,:), ABS_DIFF_HS_SP(:,:)
      REAL*8, ALLOCATABLE                :: DIFF_TM01_SP(:,:), DIFF2_TM01_SP(:,:), ABS_DIFF_TM01_SP(:,:)
      REAL*8, ALLOCATABLE                :: DIFF_TM02_SP(:,:), DIFF2_TM02_SP(:,:), ABS_DIFF_TM02_SP(:,:)
      REAL*8, ALLOCATABLE                :: DIFF_TP_SP(:,:), DIFF2_TP_SP(:,:), ABS_DIFF_TP_SP(:,:)


      REAL*8     , ALLOCATABLE           :: DIFF3_HS_SP(:,:), DIFF3_TM01_SP(:,:), DIFF3_TM02_SP(:,:), DIFF3_TP_SP(:,:)
      REAL*8     , ALLOCATABLE           :: DIFF4_HS_SP(:,:), DIFF4_TM01_SP(:,:), DIFF4_TM02_SP(:,:), DIFF4_TP_SP(:,:)
      
      REAL*8     , ALLOCATABLE           :: DIFF1_ESP(:,:), DIFF2_ESP(:,:), MEAN_OSP(:,:), MEAN_BSP(:,:), BIAS_SP(:,:)
      REAL*8     , ALLOCATABLE           :: DIFF1_K(:,:), DIFF2_K(:,:), DIFF3_K(:,:), DIFF4_K(:,:), KORR_SP(:,:)
      
      REAL*8     , ALLOCATABLE           :: MEAN_HS_O(:)  , BIAS_HS_SP(:)  , MAE_HS_SP(:)
      REAL*8     , ALLOCATABLE           :: RMS_HS_SP(:)  , SCI_HS_SP(:)   , MEAN_HS_SP (:)
      REAL*8     , ALLOCATABLE           :: MEAN_TM01_O(:), BIAS_TM01_SP(:), MAE_TM01_SP(:)
      REAL*8     , ALLOCATABLE           :: RMS_TM01_SP(:), SCI_TM01_SP(:) , MEAN_TM01_SP(:)
      REAL*8     , ALLOCATABLE           :: MEAN_TM02_O(:), BIAS_TM02_SP(:), MAE_TM02_SP(:)
      REAL*8     , ALLOCATABLE           :: RMS_TM02_SP(:), SCI_TM02_SP(:) , MEAN_TM02_SP(:)  
      REAL*8     , ALLOCATABLE           :: MEAN_TP_O(:)  , BIAS_TP_SP(:)  , MAE_TP_SP(:)
      REAL*8     , ALLOCATABLE           :: RMS_TP_SP(:)  , SCI_TP_SP(:)   , MEAN_TP_SP (:)
      REAL*8     , ALLOCATABLE           :: KORR_HS(:), KORR_TM01(:), KORR_TM02(:), KORR_TP(:)

      REAL*8                             :: MEAN_O_HS_ALL  , MEAN_SP_HS_ALL
      REAL*8                             :: MEAN_O_TM01_ALL, MEAN_SP_TM01_ALL
      REAL*8                             :: MEAN_O_TM02_ALL, MEAN_SP_TM02_ALL
      REAL*8                             :: MEAN_O_TP_ALL  , MEAN_SP_TP_ALL
      REAL*8                             :: BIAS_HS_ALL  
      REAL*8                             :: BIAS_TM01_ALL
      REAL*8                             :: BIAS_TM02_ALL
      REAL*8                             :: RMS_HS_ALL  
      REAL*8                             :: RMS_TM01_ALL
      REAL*8                             :: RMS_TM02_ALL
      REAL*8                             :: MAE_HS_ALL  
      REAL*8                             :: MAE_TM01_ALL
      REAL*8                             :: MAE_TM02_ALL  
      REAL*8                             :: SCI_HS_ALL  
      REAL*8                             :: SCI_TM01_ALL
      REAL*8                             :: SCI_TM02_ALL      
      REAL*8                             :: KORR_HS_ALL  
      REAL*8                             :: KORR_TM01_ALL
      REAL*8                             :: KORR_TM02_ALL
      REAL*8                             :: BIAS_TP_ALL
      REAL*8                             :: RMS_TP_ALL
      REAL*8                             :: MAE_TP_ALL
      REAL*8                             :: SCI_TP_ALL
      REAL*8                             :: KORR_TP_ALL
      
      LOGICAL, PARAMETER               :: LWRITEALL = .TRUE.
       
      REAL*8, ALLOCATABLE                ::  E_O (:), E_OS(:,:), E_B(:,:), NDIR_B(:,:), DSPR_B(:,:)
      REAL*8, ALLOCATABLE                ::  E_OSF(:,:), E_BT(:,:), RMS_B(:,:)
      REAL*8, ALLOCATABLE                ::  AUX_M0_O(:) , AUX_M1_O(:), AUX_M2_O(:)   
      REAL*8, ALLOCATABLE                ::  HS_O (:,:), TM01_O(:,:), TM02_O(:,:)
      REAL*8, ALLOCATABLE                ::  HS_O_CLEAN (:,:), TM01_O_CLEAN(:,:), TM02_O_CLEAN(:,:)
      REAL*8, ALLOCATABLE                ::  TP_O_CLEAN (:,:)
      
      REAL*8, ALLOCATABLE                ::  FREQ_O(:,:), DFREQ_O(:,:)
      DOUBLE PRECISION, ALLOCATABLE    ::  ZEIT_SP(:)
      DOUBLE PRECISION, ALLOCATABLE    ::  ZEIT_O(:,:) 
      DOUBLE PRECISION                 ::  XMJD

      END MODULE