SUBROUTINE CANIFE
!****-----------------------------------------------------------------------
!****   CANIFE : SAUVEGARDE SUR FICHIER DES ECART-TYPES D'ERREUR DU GUESS.
!****   --------
!****     Auteur :      F. TAILLEFER  14/01/93
!****-----------------------------------------------------------------------
!**    Modifications :
!**    -------------
!**         F. TAILLEFER : le fichier des statistiques assimilees est
!**            12/10/95    desormais en coordonnees spectrales (et non plus
!**                        en points de grille).
!**         D. Giard     : 97-12-15  call to EREESPE
!**         JF. Estrade  : 97-11     CANIFE --> CANIFESM et CANIFE
!**         F. Taillefer : 98-02     debugging pour le MP
!**         R. El Khatib : 98-02-13  DIWRSPE -> DIWRSPE+SPREORD
!**     S. Ivatek-Sahdan : 01-03-20  call DIWRSPE -> call DIWRSPE0
!**         F. Taillefer : 04-08-04  on repasse en fichier points de grille
!****-----------------------------------------------------------------------

USE PARKIND1  ,ONLY : JPIM     ,JPRB
USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK

USE YOMDIM   , ONLY : NFLEVG
USE YOMGEM   , ONLY : NGPTOT   ,NGPTOTG
USE YOMLUN   , ONLY : NULOUT   ,NULASS
USE YOMMP    , ONLY : MYPROC
USE YOMOP    , ONLY : NAGDIO
USE QAGPSF   , ONLY : RSGHUM   ,RSGPHI

IMPLICIT NONE

CHARACTER (LEN = 8) :: CLTYP(2*NFLEVG)
INTEGER(KIND=JPIM) :: ILEV(2*NFLEVG)
REAL(KIND=JPRB) :: ZCH(NGPTOT,2*NFLEVG),ZFIELD(NGPTOTG,2*NFLEVG)

INTEGER(KIND=JPIM) :: IND, IOPROC, IREP, JN, JPG
REAL(KIND=JPRB) :: ZHOOK_HANDLE

#include "diwrgrid.intfb.h"
#include "suarpio.intfb.h"

!**-------------------------------------------------------------------------
!**   1.    Initialisations.
!**         ---------------

IF (LHOOK) CALL DR_HOOK('CANIFE',0,ZHOOK_HANDLE)

WRITE(NULOUT,'(/,'' REMPLISSAGE FICHIER STATISTIQUE ANALYSE'')')
WRITE(NULOUT,'('' --> alimentation par ecart-types'',&
 & '' d erreur du guess'')')  

DO JN = 1,NFLEVG
  DO JPG = 1,NGPTOT
    ZCH(JPG,JN)=RSGPHI(JN,JPG)
    ZCH(JPG,JN+NFLEVG)=RSGHUM(JN,JPG)
  ENDDO
  CLTYP(JN)='ETPPHI'
  CLTYP(JN+NFLEVG)='ETPHU'
  ILEV(JN)=JN
  ILEV(JN+NFLEVG)=JN
ENDDO

IND=2*NFLEVG

CALL SUARPIO(2)

!**-------------------------------------------------------------------------
!**   2.    Regroupement champs et ecriture dans le fichier.
!**         -----------------------------------------------

DO JN = 1,IND
  IF (NAGDIO(1,JN) /= MYPROC) THEN
    IOPROC=NAGDIO(1,JN)
    CALL DIWRGRID(IOPROC,JN,0,NGPTOT,ZCH(1,JN))
  ELSE
    ZFIELD(1:NGPTOT,JN)=ZCH(1:NGPTOT,JN)
  ENDIF
ENDDO

DO JN = 1,IND
  IF (NAGDIO(1,JN) == MYPROC) THEN
    IOPROC=NAGDIO(1,JN)
    CALL DIWRGRID(IOPROC,JN,1,NGPTOTG,ZFIELD(1,JN))
    CALL FAIENC(IREP,NULASS,'S',ILEV(JN),CLTYP(JN),ZFIELD(1,JN),.FALSE.)
  ENDIF
ENDDO

!**-------------------------------------------------------------------------
IF (LHOOK) CALL DR_HOOK('CANIFE',1,ZHOOK_HANDLE)
END SUBROUTINE CANIFE
