#ifdef RS6K
! compiler bug on RS6000
@PROCESS NOOPTIMIZE
#endif
SUBROUTINE CANALI
!****-------------------------------------------------------------------
!****  CANALI : Lecture et impression des NAMELIST utilisees dans
!****  ------   l'analyse par interpolation optimale CANARI
!****           (called by CAN1).
!****-------------------------------------------------------------------
! NAMELIST : NALORI - NACTEX - NAIMPO - NAMCOK - NADOCK
!-----------------------------------------------------------------------
! CAUTION :    modif. :  QC for snow excluded - temporary solution
!        R. El Khatib : 01-08-07 Pruning options
!        O.Spaniel    : 03-04-15 cleaning-syntax expression
!        E. Bazile    : 01-2007 Initialisation of RSNSA, RSNSB, RWPIA, RWPIB
!-----------------------------------------------------------------------

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

USE PARDIMO  , ONLY : JPNOTP
USE QAPAVU   , ONLY : JPPXZ    ,JPPXT    ,JPPXU    ,JPPXV    ,          &
 & JPPXDZ   ,JPPXHU   ,JPPXST   ,JPPXSN   ,JPPXT2   ,&
 & JPPXH2   ,JPPXU1   ,JPPXV1  
USE YOMDIM   , ONLY : NFLEVG
USE YOMLUN   , ONLY : NULOUT   ,NULNAM
USE YOMCOCTP , ONLY : NSYNOP   ,NAIREP   ,NSATOB   ,NDRIBU   ,          &
 & NTEMP    ,NPILOT   ,NSATEM  
USE YOMCT0   , ONLY : LELAM
USE SURFACE_FIELDS_MIX  , ONLY : YSP_CID
USE YEMGEO   , ONLY : ELON1    ,ELON2     ,ELAT1       ,ELAT2
USE YOMANCS  , ONLY : RDEGREES
USE QALORI   , ONLY : RCALPH   ,RCAPRP   ,NCAMNS   ,NCAPLS   ,LCORRF
USE QACTEX   , ONLY : LAEINC   ,LAEOMF   , &
 & LAEOMN   ,LAECHK   ,LAEPDS   ,LAEUVT   ,LAEHUM   ,&
 & LAET2M   ,LAEH2M   ,LAEV1M   ,LAESNM   ,LAESST   ,&
 & LAEICS   ,LAECDS   ,LAESTU   ,LAESTA   ,LAEWIO   ,&
 & LAERFO   ,LVERAL   ,LAEUPFLG ,&
 & NAEINC   ,RCLIMCA  ,RCLISST  ,NSSTLIS  ,NSEAICE  ,&
 & RSNSA    ,RSNSB    ,RWPIA    ,RWPIB
USE QACTAN   , ONLY : NCANLI   ,NCANLS   ,LANMASK  ,ALATNB   ,ALATSB   ,&
 & ALONWB   ,ALONEB  
USE QACOBS   , ONLY : OROLIM   ,ORODIF
USE QAIMPO   , ONLY : LAVISO   ,LAVOLO   ,LAVORO   ,LAVOCQ   ,LAVOAN   ,&
 & NBSYVO   ,NBAIVO   ,NBSBVO   ,NBDRVO   ,NBTPVO   ,&
 & NBPLVO   ,NBSTVO  
USE QAMCOK   , ONLY : RCOEFK
USE QAPREX   , ONLY :    NAPS     ,NATT     ,NAUV     ,NAHU     ,&
 & NAT2     ,NAH2     ,NAV1     ,NASN     ,NAST  
USE QADOCK   , ONLY : NMXGBA   ,NMXGQA   ,QDSTRA   ,QDSTVA   ,          &
 & MINMA    ,QCORMIN  ,QDELPI  
USE QAPABO   , ONLY : JPBLAN   ,JPBLAS   ,JPBLOE   ,JPBLOW   ,NBODLA   ,&
 & NBODLO   ,NBONLA   ,NBONLO   ,NBONBT   ,NBONLB   ,&
 & NBONLP   ,NBONBU  
USE QABOIT   , ONLY : MPROBO   ,MNBOBO
USE QALOLA   , ONLY : RLAB     ,RLOB

IMPLICIT NONE

REAL(KIND=JPRB) :: ZLIM1, ZLIM2
REAL(KIND=JPRB) :: ZHOOK_HANDLE

#include "abor1.intfb.h"
#include "posnam.intfb.h"
#include "nalori.h"
#include "nactex.h"
#include "naimpo.h"
#include "namcok.h"
#include "nadock.h"
#include "nacobs.h"
#include "nactan.h"

IF (LHOOK) CALL DR_HOOK('CANALI',0,ZHOOK_HANDLE)
WRITE (NULOUT,801)

!--------------------------------------------------------------------
!  - 1 - Initialisation de NALORI (ex-CASNOI) et QALORI.
!        ----------------------------------------------

!  - 1.1 -  initialisation de NALORI et QALORI

RCALPH=0.0_JPRB
RCAPRP=0.0_JPRB
NCAMNS=0
NCAPLS=0
LCORRF=.FALSE.

!  - 1.2 -  lecture de NALORI

CALL POSNAM(NULNAM,'NALORI')
READ (NULNAM,NALORI,ERR=701,END=713)

!  - 1.3 -  impression de NALORI

WRITE (NULOUT,811) RCALPH, LCORRF

!--------------------------------------------------------------------
!  - 2 -  Initialisation et impression de NACTEX.
!         --------------------------------------

!  - 2.1 -  initialisation de NACTEX

LAEINC  = .FALSE.
LAEOMF  = .FALSE.
LAEOMN  = .FALSE.
LAECHK  = .FALSE.
LAEPDS  = .FALSE.
LAEUVT  = .FALSE.
LAEHUM  = .FALSE.
LAET2M  = .FALSE.
LAEH2M  = .FALSE.
LAEV1M  = .FALSE.
LAESNM  = .FALSE.
LAESST  = .FALSE.
LAEICS  = .FALSE.
LAECDS  = .FALSE.
LAESTU  = .FALSE.
LAESTA  = .FALSE.
LAEWIO  = .FALSE.
LAERFO  = .FALSE.
LAEUPFLG= .FALSE.
LVERAL  = .FALSE.
NAEINC  = 0
NSSTLIS = 0
NSEAICE = 0
RCLIMCA = 0.0_JPRB
RCLISST = 0.0_JPRB
RSNSA = 0.025_JPRB
RSNSB = 1.0_JPRB
RWPIA = 0.025_JPRB
RWPIB = 1.0_JPRB

!  - 2.2 -  lecture de NACTEX

CALL POSNAM(NULNAM,'NACTEX')
READ (NULNAM,NACTEX,ERR=703,END=715)

! --> temporary solution for QC of snow
IF (LAECHK .AND. LAESNM) THEN
  WRITE(NULOUT,*) ' --> NO CQ FOR SNOW '
  CALL ABOR1(' ** ROUTINE CANALI - TEMPORARY NO QC FOR SNOW ** ')
ENDIF  

!  - 2.3 -  impression de NACTEX

WRITE (NULOUT,802) LAEINC , LAEOMF , LAEOMN , LAECHK , LAEPDS ,&
 & LAEUVT , LAEHUM , LAET2M , LAEH2M , LAEV1M ,&
 & LAESNM  
WRITE (NULOUT,803) LAESST , LAEICS , LAECDS , LAESTU , LAESTA ,&
 & LAEWIO , LAERFO , LVERAL , NAEINC , RCLIMCA,&
 & RCLISST, NSSTLIS, NSEAICE , RSNSA, RSNSB, RWPIA, RWPIB 

!--------------------------------------------------------------------
!  - 3 -  Initialisation et impression de QACOBS et QAPABO.
!         ------------------------------------------------

OROLIM=10000._JPRB
ORODIF=10000._JPRB

IF (LELAM) THEN
  NBODLA=5
  NBODLO=5
ELSE
  NBODLA=10
  NBODLO=10
ENDIF

CALL POSNAM(NULNAM,'NACOBS')
READ(NULNAM,NACOBS)

WRITE (NULOUT,814) OROLIM,ORODIF

NBONLA=(JPBLAN-JPBLAS)/NBODLA
NBONLO=(JPBLOE-JPBLOW)/NBODLO
NBONBT=(NBONLA-2)*NBONLO+2
NBONLB=NBONLA+1
NBONLP=NBONLO+1
NBONBU=NBONBT+1

ALLOCATE(MPROBO(NBONBT,JPNOTP))
ALLOCATE(MNBOBO(NBONBT,JPNOTP))
ALLOCATE(RLAB(NBONLB))
ALLOCATE(RLOB(NBONLP))

WRITE (NULOUT,807) NBODLA,NBODLO

!-----------------------------------------------------------------------
!  - 4 -  Initialisation et impression de QACTAN.
!         --------------------------------------

!  - 4.1 -  initialisation limites sur la verticale (force)

NCANLI=1
NCANLS=NFLEVG

!  - 4.2 -  initialisation domaine geographique

IF (LELAM) THEN
  ALONEB=ELON2*RDEGREES
  ALONWB=ELON1*RDEGREES
  ALATSB=ELAT1*RDEGREES
  ALATNB=ELAT2*RDEGREES
ELSE
  ALONEB=360._JPRB
  ALONWB=0._JPRB
  ALATNB=90._JPRB
  ALATSB=-90._JPRB
ENDIF

LANMASK=.FALSE.

!  - 4.3 -  lecture namelist NACTAN

CALL POSNAM(NULNAM,'NACTAN')
READ (NULNAM,NACTAN,ERR=707,END=719)

!  - 4.4 -  controle valeurs

ZLIM1=0.0_JPRB
ZLIM2=360._JPRB

IF (ALONWB < ZLIM1) ALONWB=ALONWB+ZLIM2
IF (ALONEB < ZLIM1) ALONEB=ALONEB+ZLIM2

IF (ALONWB < ZLIM1 .OR. ALONEB < ZLIM1 .OR. ALONWB > ZLIM2 .OR. ALONEB > ZLIM2) &
 & CALL ABOR1(' ** Pb dans CANALI - Longitudes NACTAN indefinissables ** ')  

ZLIM1=90._JPRB
ZLIM2=-90._JPRB

IF (ALATNB > ZLIM1 .OR. ALATSB < ZLIM2 .OR. ALATNB <= ALATSB) &
 & CALL ABOR1(' ** Pb dans CANALI - Latitudes NACTAN indefinissables ** ')  

IF (LELAM) THEN
  IF (ALATNB > ELAT2*RDEGREES) CALL ABOR1(' ** Pb dans CANALI - ALATNB > ELAT2 ** ')
  IF (ALATSB < ELAT1*RDEGREES) CALL ABOR1(' ** Pb dans CANALI - ALATSB < ELAT1 ** ')
  IF (ALONWB < ELON1*RDEGREES) CALL ABOR1(' ** Pb dans CANALI - ALONWB < ELON1 ** ')
  IF (ALONEB > ELON2*RDEGREES) CALL ABOR1(' ** Pb dans CANALI - ALONEB > ELON2 ** ')
ENDIF

!  - 4.5 -  impression QACTAN

WRITE (NULOUT,813) LANMASK,ALATNB,ALATSB,ALONWB,ALONEB

!  - 4.6 -  verification de la taille du buffer des champs points de
!        grille speciaux pour CANARI

IF (YSP_CID%NUMFLDS < 8) THEN
  WRITE (NULOUT,*) ' --> probleme sur YSP_CID%NUMFLDS = ',YSP_CID%NUMFLDS
  CALL ABOR1(' ** Pb dans CANALI : YSP_CID%NUMFLDS trop petit ** ')
ENDIF

!-----------------------------------------------------------------------
!  - 5 -  Initialisation et impression de NAIMPO.
!         --------------------------------------

!  - 5.1 -  initialisation de NAIMPO

LAVOLO = .FALSE.
LAVORO = .FALSE.
LAVOCQ = .FALSE.
LAVOAN = .FALSE.
LAVISO = .FALSE.
NBSYVO = 5
NBAIVO = 5
NBSBVO = 5
NBDRVO = 5
NBTPVO = 3
NBPLVO = 3
NBSTVO = 5

!  - 5.2 -  lecture de NAIMPO

CALL POSNAM(NULNAM,'NAIMPO')
READ (NULNAM,NAIMPO,ERR=709,END=721)

!  - 5.3 -  controle et impression de NAIMPO

NBSYVO = MAX( 0 , MIN( NBSYVO ,  7000 ) )
NBAIVO = MAX( 0 , MIN( NBAIVO ,  7000 ) )
NBSBVO = MAX( 0 , MIN( NBSBVO ,  7000 ) )
NBDRVO = MAX( 0 , MIN( NBDRVO ,  2000 ) )
NBTPVO = MAX( 0 , MIN( NBTPVO ,  1000 ) )
NBPLVO = MAX( 0 , MIN( NBPLVO ,  1000 ) )
NBSTVO = MAX( 0 , MIN( NBSTVO , 20000 ) )

WRITE (NULOUT,809) LAVOLO,LAVORO,LAVOCQ,LAVOAN,LAVISO
WRITE (NULOUT,810) NBSYVO,NBAIVO,NBSBVO,NBDRVO,NBTPVO,&
 & NBPLVO,NBSTVO  

!-----------------------------------------------------------------------
!  - 6 -  Initialisation et impression de NAMCOK et de NADOCK.
!         Initialisation de QAMCOK et de QADOCK.
!         ---------------------------------------------------

!  - 6.1 -  initialisation de NAMCOK

RCZSY  = 6.5_JPRB
RCZDR  = 6.5_JPRB
RCZTP  = 3.5_JPRB
RCZST  = 1.0_JPRB

RCT2SY = 5._JPRB
RCTAI  = 4._JPRB
RCT2DR = 5._JPRB
RCTTP  = 3._JPRB
RCT2TP = 2.5_JPRB

RCV1SY = 4.1_JPRB
RCVAI  = 2.7_JPRB
RCVSB  = 1.3_JPRB
RCV1DR = 4.1_JPRB
RCVTP  = 3.0_JPRB
RCV1TP = 3.5_JPRB
RCVPL  = 3.0_JPRB
RCV1PL = 3.5_JPRB

RCH2SY = 2.5_JPRB
RCHTP  = 2.2_JPRB
RCH2TP = 2.2_JPRB
RCHST  = 1.1_JPRB

RCSTSY = 1.9_JPRB
RCSTDR = 1.9_JPRB

RCSNSY = 2.5_JPRB

!  - 6.2 -  lecture de NAMCOK

CALL POSNAM(NULNAM,'NAMCOK')
READ (NULNAM,NAMCOK,ERR=711,END=723)

!  - 6.3 -  impression de NAMCOK

WRITE (NULOUT,812) RCZSY,RCZDR,RCZTP,RCZST,&
 & RCT2SY,RCTAI,RCT2DR,RCTTP,RCT2TP,&
 & RCV1SY,RCVAI,RCVSB,RCV1DR,&
 & RCVTP,RCV1TP,RCVPL,RCV1PL,&
 & RCH2SY,RCHTP,RCH2TP,RCHST,&
 & RCSTSY,RCSTDR,&
 & RCSNSY  

!  - 6.4 -  initialisation de QAMCOK

RCOEFK(:,:) = 4._JPRB

RCOEFK(NSYNOP, JPPXZ)  = RCZSY
RCOEFK(NDRIBU, JPPXZ)  = RCZDR
RCOEFK(NTEMP , JPPXZ)  = RCZTP
RCOEFK(NSATEM, JPPXDZ) = RCZST

RCOEFK(NSYNOP, JPPXT2) = RCT2SY
RCOEFK(NAIREP, JPPXT)  = RCTAI
RCOEFK(NDRIBU, JPPXT2) = RCT2DR
RCOEFK(NTEMP , JPPXT)  = RCTTP
RCOEFK(NTEMP , JPPXT2) = RCT2TP

RCOEFK(NSYNOP, JPPXU1) = RCV1SY
RCOEFK(NAIREP, JPPXU)  = RCVAI
RCOEFK(NSATOB, JPPXU)  = RCVSB
RCOEFK(NDRIBU, JPPXU1) = RCV1DR
RCOEFK(NTEMP , JPPXU)  = RCVTP
RCOEFK(NTEMP,  JPPXU1) = RCV1TP
RCOEFK(NPILOT, JPPXU)  = RCVPL
RCOEFK(NTEMP,  JPPXU1) = RCV1PL

RCOEFK(NSYNOP, JPPXV1) = RCV1SY
RCOEFK(NAIREP, JPPXV)  = RCVAI
RCOEFK(NSATOB, JPPXV)  = RCVSB
RCOEFK(NDRIBU, JPPXV1) = RCV1DR
RCOEFK(NTEMP , JPPXV)  = RCVTP
RCOEFK(NTEMP , JPPXV1) = RCV1TP
RCOEFK(NPILOT, JPPXV)  = RCVPL
RCOEFK(NPILOT, JPPXV1) = RCV1PL

RCOEFK(NSYNOP, JPPXH2) = RCH2SY
RCOEFK(NTEMP , JPPXHU) = RCHTP
RCOEFK(NTEMP,  JPPXH2) = RCH2TP
RCOEFK(NSATEM, JPPXHU) = RCHST
 
RCOEFK(NSYNOP, JPPXST) = RCSTSY
RCOEFK(NDRIBU, JPPXST) = RCSTDR
 
RCOEFK(NSYNOP, JPPXSN) = RCSNSY

!  - 6.5 -  initialisation de QADOCK

NMXGBA(:)=0
NMXGQA(:)=0
QDSTRA(:)=0.0_JPRB
QDSTVA(:)=0.0_JPRB

NMXGBA(1)=2500
NMXGBA(2)=1000
NMXGBA(3)=800
NMXGBA(4)=800
NMXGBA(5)=800
NMXGBA(6)=800
NMXGBA(7)=800

NMXGQA(1)=10
NMXGQA(2)=30
NMXGQA(3)=10
NMXGQA(4)=10
NMXGQA(5)=6
NMXGQA(6)=6
NMXGQA(7)=5

QDSTRA(1)=1000000._JPRB
QDSTRA(2)=1000000._JPRB
QDSTRA(3)=1000000._JPRB
QDSTRA(4)=1000000._JPRB
QDSTRA(5)=1200000._JPRB
QDSTRA(6)=1200000._JPRB
QDSTRA(7)=1000000._JPRB

QDSTVA(1)=10000._JPRB
QDSTVA(2)=10000._JPRB
QDSTVA(3)=10000._JPRB
QDSTVA(4)=10000._JPRB
QDSTVA(5)=10000._JPRB
QDSTVA(6)=10000._JPRB
QDSTVA(7)=10000._JPRB

MINMA(NAPS) = 30
MINMA(NATT) =  5
MINMA(NAUV) =  5
MINMA(NAHU) = 15
MINMA(NAT2) = 15
MINMA(NAH2) = 15
MINMA(NAV1) = 15
MINMA(NASN) = 15
MINMA(NAST) = 40

QCORMIN(:) = 0.10_JPRB
QDELPI(:) = 0.0_JPRB

QDELPI(NAPS) = 3000._JPRB
QDELPI(NATT) = 3000._JPRB
QDELPI(NAUV) = 3000._JPRB
QDELPI(NAHU) = 1000._JPRB
QDELPI(NAT2) = 5000._JPRB
QDELPI(NAH2) = 5000._JPRB
QDELPI(NAV1) = 5000._JPRB
QDELPI(NASN) = 1500._JPRB
QDELPI(NAST) = 5000._JPRB

!  - 6.6 -  lecture namelist NADOCK

CALL POSNAM(NULNAM,'NADOCK')
READ (NULNAM,NADOCK,ERR=729,END=731)

!  - 6.7 -  impression partielle de QADOCK

WRITE (NULOUT,815) NMXGBA(1:7),NMXGQA(1:7),QDSTRA(1:7),QDSTVA(1:7),&
 & MINMA,QCORMIN,QDELPI

GOTO 800

!---------------------------------------------------------------------
!  - 7 -  Erreur de lecture des NAMELIST.
!         ------------------------------

701 CONTINUE
WRITE (NULOUT,702)
702 FORMAT(/,' ** Pb dans CANALI erreur de lecture NALORI ** ',/)
CALL ABOR1(' ** Pb dans CANALI erreur de lecture NALORI ** ')

703 CONTINUE
WRITE (NULOUT,704)
704 FORMAT(/,' ** Pb dans CANALI erreur de lecture NACTEX ** ',/)
CALL ABOR1(' ** Pb dans CANALI erreur de lecture NACTEX ** ')

707 CONTINUE
WRITE (NULOUT,708)
708 FORMAT(/,' ** Pb dans CANALI erreur de lecture NACTAN ** ',/)
CALL ABOR1(' ** Pb dans CANALI erreur de lecture NACTAN ** ')

709 CONTINUE
WRITE (NULOUT,710)
710 FORMAT(/,' ** Pb dans CANALI erreur de lecture NAIMPO ** ',/)
CALL ABOR1(' ** Pb dans CANALI erreur de lecture NAIMPO ** ')

711 CONTINUE
WRITE (NULOUT,712)
712 FORMAT(/,' ** Pb dans CANALI erreur de lecture NAMCOK ** ',/)
CALL ABOR1(' ** Pb dans CANALI erreur de lecture NAMCOK ** ')

713 CONTINUE
WRITE (NULOUT,714)
714 FORMAT(/,' ** Pb dans CANALI - fin du fich. sans NAMELIST ',' &
 & NALORI ** ',/)  
CALL ABOR1(' ** Pb dans CANALI - fin fich. sans NALORI **')

715 CONTINUE
WRITE (NULOUT,716)
716 FORMAT(/,' ** Pb dans CANALI - fin du fich. sans NAMELIST ',' &
 & NACTEX ** ',/)  
CALL ABOR1(' ** Pb dans CANALI - fin fich. sans NACTEX **')

719 CONTINUE
WRITE (NULOUT,720)
720 FORMAT(/,' ** Pb dans CANALI - fin du fich. sans NAMELIST ',' &
 & NACTAN ** ',/)  
CALL ABOR1(' ** Pb dans CANALI - fin fich. sans NACTAN **')

721 CONTINUE
WRITE (NULOUT,722)
722 FORMAT(/,' ** Pb dans CANALI - fin du fich. sans NAMELIST ',' &
 & NAIMPO ** ',/)  
CALL ABOR1(' ** Pb dans CANALI - fin fich. sans NAIMPO **')

723 CONTINUE
WRITE (NULOUT,724)
724 FORMAT(/,' ** Pb dans CANALI - fin du fich. sans NAMELIST ',' &
 & NAMCOK ** ',/)  
CALL ABOR1(' ** Pb dans CANALI - fin fich. sans NAMCOK **')

729 CONTINUE
WRITE (NULOUT,730)
730 FORMAT(/,' ** Pb dans CANALI erreur de lecture NADOCK ** ',/)
CALL ABOR1(' ** Pb dans CANALI erreur de lecture NADOCK ** ')

731 CONTINUE
WRITE (NULOUT,732)
732 FORMAT(/,' ** Pb dans CANALI - fin du fich. sans NAMELIST ',' &
 & NADOCK ** ',/)  
CALL ABOR1(' ** Pb dans CANALI - fin fich. sans NADOCK ** ')

!--------------------------------------------------------------------
!  - 8 -  Formats.
!         -------

800 CONTINUE

801 FORMAT(//,'  ************************************',&
 & '******************',/,'  *  Impression des diverses',&
 & ' NAMELIST  ( s/p CANALI )  *',/,'  ******',&
 & '************************************************')  

802 FORMAT(/,' Impression de QACTEX ',/,&
 & ' -------------------- ',/,&
 & ' LAEINC  = lecture 3 fichiers modele (incremental):   .',L1,'.',/,&
 & ' LAEOMF  = calcul des residus NCMFGE              :   .',L1,'.',/,&
 & ' LAEOMN  = calcul des residus NCMOMN              :   .',L1,'.',/,&
 & ' LAECHK  = controle qualite des observations      :   .',L1,'.',/,&
 & ' LAEPDS  = analyse pression de surface            :   .',L1,'.',/,&
 & ' LAEUVT  = analyse vent/temperature               :   .',L1,'.',/,&
 & ' LAEHUM  = analyse humidite                       :   .',L1,'.',/,&
 & ' LAET2M  = analyse temperature a 2 metres         :   .',L1,'.',/,&
 & ' LAEH2M  = analyse humidite a 2 metres            :   .',L1,'.',/,&
 & ' LAEV1M  = analyse vent a 10 metres               :   .',L1,'.',/,&
 & ' LAESNM  = analyse hauteur de neige               :   .',L1,'.')  

803 FORMAT(&
 & ' LAESST  = analyse temperature surface mer        :   .',L1,'.',/,&
 & ' LAEICS  = initialisation champs de surface       :   .',L1,'.',/,&
 & ' LAECDS  = calcul champs diagnostics surface      :   .',L1,'.',/,&
 & ' LAESTU  = utilisation de stat. assimilees        :   .',L1,'.',/,&
 & ' LAESTA  = assimilation des statistiques          :   .',L1,'.',/,&
 & ' LAEWIO  = ecriture du fichier resultat           :   .',L1,'.',/,&
 & ' LAERFO  = recopie du fichier CMAFOC              :   .',L1,'.',/,&
 & ' LVERAL  = aucune action sur flags de qualite     :   .',L1,'.',/,&
 & ' NAEINC  = 0-->OMF, 1-->OMF+FC1, 2-->OMN          :   ',I2,/,&
 & ' RCLIMCA = rappel clim. champs de surface         :   ',F7.5,/,&
 & ' RCLISST = rappel clim. pour la SST               :   ',F7.5,/,&
 & ' NSSTLIS = rappel vers la SST americaine          :   ',I2,/,&
 & ' NSEAICE = limite banquise actualisee (SSMICE)    :   ',I2,/,&
 & ' RSNSA   = coef. pour la correction de neige si T>0 : ',F8.4,/,&
 & ' RSNSB   = coef. pour la correction de neige si T>0 : ',F8.4,/,&
 & ' RWPIA   = coef. pour la correction de WPI si T>0 : ',F8.4,/,&
 & ' RWPIB   = coef. pour la correction de WPI si T>0 : ',F8.4)  

807 FORMAT(&
 & ' NBODLA = longueur d''une boite sur un meridien      :   ',I4,/,&
 & ' NBODLO = longueur d''une boite sur un parallele     :   ',I4)  

809 FORMAT(/,' Contenu de QAIMPO apres controle ',/,&
 & ' -------------------------------- ',/,&
 & ' LAVOLO = visualisation apres la lecture des obs.    :    .',L1,'.',/,&
 & ' LAVORO = visualisation apres les residus observes   :    .',L1,'.',/,&
 & ' LAVOCQ = visualisation apres le controle de qualite :    .',L1,'.',/,&
 & ' LAVOAN = visualisation apres analyses principales   :    .',L1,'.',/,&
 & ' LAVISO = visualisation a la fin de CANARI           :    .',L1,'.')  

810 FORMAT(&
 & ' NBSYVO = nombre de SYNOP a visualiser               :  ',I4,/,&
 & ' NBAIVO = nombre d''AIREP a visualiser                :  ',I4,/,&
 & ' NBSBVO = nombre de SATOB a visualiser               :  ',I4,/,&
 & ' NBDRVO = nombre de DRIBU a visualiser               :  ',I4,/,&
 & ' NBTPVO = nombre de TEMP a visualiser                :  ',I4,/,&
 & ' NBPLVO = nombre de PILOT a visualiser               :  ',I4,/,&
 & ' NBSTVO = nombre de SATEM a visualiser               :  ',I4)  

811 FORMAT(/,' Impression de QALORI ',/,&
 & ' -------------------- ',/,&
 & ' RCALPH = alpha                                   : ',F6.2,/,&
 & ' LCORRF = nouvelle fonction correlation pour T2m/H2m : .',L1,'.')  

812 FORMAT(/,' Impression de QAMCOK ',/,&
 & ' -------------------- ',/,&
 & ' geopotentiel SY ',F6.2,/,' geopotentiel DR ',F6.2,/,&
 & ' geopotentiel TP ',F6.2,/,' epaisseur    ST ',F6.2,//,&
 & ' temperature  SY ',F6.2,/,' temperature  AI ',F6.2,/,&
 & ' temperature  DR ',F6.2,/,' temperature  TP ',F6.2,/,&
 & ' tempe. a 2m  TP ',F6.2,//,' vent         SY ',F6.2,/,&
 & ' vent         AI ',F6.2,/,' vent         SB ',F6.2,/,&
 & ' vent         DR ',F6.2,/,' vent         TP ',F6.2,/,&
 & ' vent a 10m   TP ',F6.2,/,' vent         PL ',F6.2,/,&
 & ' vent a 10m   PL ',F6.2,//,' humidite     SY ',F6.2,/,&
 & ' humidite     TP ',F6.2,/,' humid. a 2m  TP ',F6.2,/,&
 & ' humidite     ST ',F6.2,//,&
 & ' SST          SY ',F6.2,/,' SST          DR ',F6.2,//,&
 & ' neige        SY ',F6.2)  

813 FORMAT(/,' Impression de QACTAN ',/,&
 & ' -------------------- ',/,&
 & ' reduction du domaine horizontal d''analyse   :',5X,'.',L1,'.',/,&
 & ' latitude nord du domaine d''analyse          :',2X,F8.2,/,&
 & ' latitude sud du domaine d''analyse           :',2X,F8.2,/,&
 & ' longitude ouest du domaine d''analyse        :',2X,F8.2,/,&
 & ' longitude est du domaine d''analyse          :',2X,F8.2)  

814 FORMAT(/,' Impression de QACOBS ',/,&
 & ' -------------------- ',/,&
 & ' altitude maximale d''utilisation des obs de surface :',4X,F8.2,/,&
 & ' difference maximale altitude obs/relief modele     :',4X,F8.2)  

815 FORMAT(/,' Impression partielle de QADOCK ',/,&
 & ' ------------------------------ ',/,&
 & ' nombre max. obs a extraire (type 1 a 7): tableau NMXGBA:',/,'   ',7I5,/,&
 & ' nombre max. obs par secteur (type 1 a 7): tableau NMXGQA:',/,'   ',7I4,/,&
 & ' rayon de recherche des obs (type 1 a 7): tableau QDSTRA:',/,'   ',7F9.0,/,&
 & ' distance max. de selection en pression (type 1 a 7): tableau QDSTVA:',/,&
 & '   ',7F8.0,/,' taille maximale du systeme lineaire pour chaque',&
 & ' predictant: tableau MINMA:',/,'   ',10I3,/,&
 & ' correlation minimale de selection (par predicteur): tableau QCORMIN:',/,&
 & '   ',10F6.2,/,&
 & ' interdistance min. entre 2 niveaux select. (par predicteur): tableau',&
 & ' QDELPI:',/,'   ',10F7.0,//)  

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