SUBROUTINE READNML (CDNAME,KFLAG) 29 use modstag, only : lstagwinds #if defined (DOC) * ***s/r CHECNML - Check if namelist cdname is present on logical unit * . NULNAM and read it * * Author: P. Gauthier *ARMA/AES August 29, 1994 * (adapted from CHECNML by MICHEL DESGAGNE OCT 1993 (for MC2)) * *REVISION: * . P. Gauthier *ARMA/AES August 29, 1994 * . Adaptation to the 3Dvar environment * . S. Pellerin *ARMA/AES Sept. 97 * Introduction of NAMSTATE * . C. Charette *ARMA/AES Nov. 98 * Introduction of SU1OBS * . J. Halle *CMDA/AES Oct1999 * . Introduction of NAMTOV * . B. Brasnett *CMDA/MSC Jan 2000 * . Introduction of NAMVARQC * . S. Pellerin *ARMA/SMC May 2000 * Illimination of NAMBRN : CCARD use only from now on * for file name I/O * . J. Halle *CMDA/AES dec 2000 * adapt to TOVS level 1b. * . N. Wagneur *CMDA/MSC June 2001 * . Introduction of NAMGOES * . M. Buehner *ARMA/MSC Aug 2002 * Introduction of NAMSV * . P. Koclas *CMC/CMDA Apr 2006 * Introduction of NAMBGCHK * . A. Beaulne *CMC/CMDA Jul 2007 * Introduction of NAM1CHN * . J.M. Aparicio *ARMA/AES Apr 2008 * Introduction of NAMGPSRO * * . Y. Yang and Y.J. Rochon Feb 2006 * Added NAMVARSTD namelist (previously in ch_readnml.ftn) * *Arguments * i CDNAME : variable character string containing the name of * . the NAMELIST to be read * o KFLAG : flag for error * ** #endif IMPLICIT NONE *implicits #include "pardim.cdk"
#include "comlun.cdk"
C #include "comct0.cdk"
#include "namct0.cdk"
C #include "comdim.cdk"
#include "namdim.cdk"
C #include "comdimo.cdk"
#include "namdimo.cdk"
C #include "comcva.cdk"
#include "namcva.cdk"
C #include "comfilt.cdk"
#include "namfilt.cdk"
C #include "comgem.cdk"
#include "namgem.cdk"
C #include "comgdpar.cdk"
#include "namgdpar.cdk"
C #include "comode.cdk"
#include "namode.cdk"
C #include "comcse1.cdk"
#include "namcse1.cdk"
C #include "compost.cdk"
#include "nampost.cdk"
C #include "comtemp.cdk"
#include "namtemp.cdk"
C #include "compstat.cdk"
#include "nampstat.cdk"
C #include "combpost.cdk"
#include "nambpost.cdk"
C C #include "partov.cdk"
#include "comtov.cdk"
#include "namtov.cdk"
C #include "cparamgoes.cdk"
#include "comgoes.cdk"
#include "namgoes.cdk"
C #include "comgpsro.cdk"
#include "namgpsro.cdk"
C #include "comstate.cdk"
#include "namstate.cdk"
C #include "commulti.cdk"
#include "nammulti.cdk"
C #include "com1obs.cdk"
#include "nam1obs.cdk"
C #include "com1chn.cdk"
#include "nam1chn.cdk"
C #include "comvarqc.cdk"
#include "namvarqc.cdk"
C #include "combgchk.cdk"
#include "nambgchk.cdk"
C #include "cominterp.cdk"
#include "naminterp.cdk"
C #include "comsv.cdk"
#include "namsv.cdk"
C C see use mod4dv above #include "namstag.cdk"
C #include "comvarstd.cdk"
#include "namvarstd.cdk"
* CHARACTER*60 CLDUMMY * CHARACTER*(*) CDNAME INTEGER KFLAG * ** 1. Position the file to where the NAMELIST is located * REWIND(NULNAM) 100 CONTINUE READ (NULNAM,'(2X,A)',END=300,IOSTAT=KFLAG) CLDUMMY IF (CLDUMMY.EQ.CDNAME) THEN BACKSPACE (NULNAM) GOTO 200 ELSE GOTO 100 ENDIF * ** 2. Read the NAMELIST (if present) * 200 CONTINUE WRITE(NULOUT,9200)CDNAME 9200 FORMAT(//,5X,"READNML- reading Namelist ",A) C C* 2.1 C IF(CDNAME.EQ.'NAMCT0')THEN C #if defined (C910) READ(NULNAM,NML=NAMCT0) WRITE(NULOUT,NML=NAMCT0) #else READ(NULNAM,NAMCT0) WRITE(NULOUT,NAMCT0) #endif C ELSE IF(CDNAME.EQ.'NAMCVA')THEN C #if defined (C910) READ(NULNAM,NML=NAMCVA) WRITE(NULOUT,NML=NAMCVA) #else READ(NULNAM,NAMCVA) WRITE(NULOUT,NAMCVA) #endif C ELSE IF(CDNAME.EQ.'NAMDIM')THEN C #if defined (C910) READ(NULNAM,NML=NAMDIM) WRITE(NULOUT,NML=NAMDIM) #else READ(NULNAM,NAMDIM) WRITE(NULOUT,NAMDIM) #endif ELSE IF(CDNAME.EQ.'NAMDIMO')THEN C #if defined (C910) READ(NULNAM,NML=NAMDIMO) WRITE(NULOUT,NML=NAMDIMO) #else READ(NULNAM,NAMDIMO) WRITE(NULOUT,NAMDIMO) #endif C C ELSE IF(CDNAME.EQ.'NAMFILT')THEN C #if defined (C910) READ(NULNAM,NML=NAMFILT) WRITE(NULOUT,NML=NAMFILT) #else READ(NULNAM,NAMFILT) WRITE(NULOUT,NAMFILT) #endif C ELSE IF(CDNAME.EQ.'NAMGEM')THEN C #if defined (C910) READ(NULNAM,NML=NAMGEM) c WRITE(NULOUT,NML=NAMGEM) #else READ(NULNAM,NAMGEM) c WRITE(NULOUT,NAMGEM) #endif C ELSE IF(CDNAME.EQ.'NAMGDPAR')THEN C #if defined (C910) READ(NULNAM,NML=NAMGDPAR) WRITE(NULOUT,NML=NAMGDPAR) #else READ(NULNAM,NAMGDPAR) WRITE(NULOUT,NAMGDPAR) #endif C ELSE IF(CDNAME.EQ.'NAMODE')THEN C #if defined (C910) READ(NULNAM,NML=NAMODE) WRITE(NULOUT,NML=NAMODE) #else READ(NULNAM,NAMODE) WRITE(NULOUT,NAMODE) #endif C ELSE IF(CDNAME.EQ.'NAMPOST')THEN C #if defined (C910) READ(NULNAM,NML=NAMPOST) WRITE(NULOUT,NML=NAMPOST) #else READ(NULNAM,NAMPOST) WRITE(NULOUT,NAMPOST) #endif C ELSE IF(CDNAME.EQ.'NAMPSTAT')THEN C #if defined (C910) READ(NULNAM,NML=NAMPSTAT) WRITE(NULOUT,NML=NAMPSTAT) #else READ(NULNAM,NAMPSTAT) WRITE(NULOUT,NAMPSTAT) #endif C ELSE IF(CDNAME.EQ.'NAMSTATE')THEN C #if defined (C910) READ(NULNAM,NML=NAMSTATE) WRITE(NULOUT,NML=NAMSTATE) #else READ(NULNAM,NAMSTATE) WRITE(NULOUT,NAMSTATE) #endif C ELSE IF(CDNAME.EQ.'NAMTEMP')THEN C #if defined (C910) READ(NULNAM,NML=NAMTEMP) WRITE(NULOUT,NML=NAMTEMP) #else READ(NULNAM,NAMTEMP) WRITE(NULOUT,NAMTEMP) #endif C ELSE IF(CDNAME.EQ.'NAMCSE1')THEN C #if defined (C910) READ(NULNAM,NML=NAMCSE1) c WRITE(NULOUT,NML=NAMCSE1) #else READ(NULNAM,NAMCSE1) c WRITE(NULOUT,NAMCSE1) #endif ELSE IF(CDNAME.EQ.'NAMCVA')THEN C #if defined (C910) READ(NULNAM,NML=NAMCVA) WRITE(NULOUT,NML=NAMCVA) #else READ(NULNAM,NAMCVA) WRITE(NULOUT,NAMCVA) #endif C ELSE IF(CDNAME.EQ.'NAMBPOST')THEN C #if defined (C910) READ(NULNAM,NML=NAMBPOST) WRITE(NULOUT,NML=NAMBPOST) #else READ(NULNAM,NAMBPOST) WRITE(NULOUT,NAMBPOST) #endif C ELSE IF(CDNAME.EQ.'NAMTOV')THEN C #if defined (C910) READ(NULNAM,NML=NAMTOV) WRITE(NULOUT,NML=NAMTOV) #else READ(NULNAM,NAMTOV) WRITE(NULOUT,NAMTOV) #endif C ELSE IF(CDNAME.EQ.'NAMGOES')THEN C #if defined (C910) READ(NULNAM,NML=NAMGOES) WRITE(NULOUT,NML=NAMGOES) #else READ(NULNAM,NAMGOES) WRITE(NULOUT,NAMGOES) #endif ELSE IF(CDNAME.EQ.'NAMGPSRO')THEN C #if defined (C910) READ(NULNAM,NML=NAMGPSRO) WRITE(NULOUT,NML=NAMGPSRO) #else READ(NULNAM,NAMGPSRO) WRITE(NULOUT,NAMGPSRO) #endif C ELSE IF(CDNAME.EQ.'NAMMULTI')THEN C #if defined (C910) READ(NULNAM,NML=NAMMULTI) WRITE(NULOUT,NML=NAMMULTI) #else READ(NULNAM,NAMMULTI) WRITE(NULOUT,NAMMULTI) #endif ELSE IF(CDNAME.EQ.'NAM1OBS')THEN C #if defined (C910) READ(NULNAM,NML=NAM1OBS) WRITE(NULOUT,NML=NAM1OBS) #else READ(NULNAM,NAM1OBS) WRITE(NULOUT,NAM1OBS) #endif ELSE IF(CDNAME.EQ.'NAM1CHN')THEN C #if defined (C910) READ(NULNAM,NML=NAM1CHN) WRITE(NULOUT,NML=NAM1CHN) #else READ(NULNAM,NAM1CHN) WRITE(NULOUT,NML=NAM1CHN) #endif ELSE IF(CDNAME.EQ.'NAMBGCHK')THEN C #if defined (C910) READ(NULNAM,NML=NAMBGCHK) WRITE(NULOUT,NML=NAMBGCHK) #else READ(NULNAM,NAMBGCHK) WRITE(NULOUT,NAMBGCHK) #endif ELSE IF(CDNAME.EQ.'NAMVARQC')THEN C #if defined (C910) READ(NULNAM,NML=NAMVARQC) WRITE(NULOUT,NML=NAMVARQC) #else READ(NULNAM,NAMVARQC) WRITE(NULOUT,NAMVARQC) #endif ELSE IF(CDNAME.EQ.'NAMINTERP')THEN C #if defined (C910) READ(NULNAM,NML=NAMINTERP) WRITE(NULOUT,NML=NAMINTERP) #else READ(NULNAM,NAMINTERP) WRITE(NULOUT,NAMINTERP) #endif ELSE IF(CDNAME.EQ.'NAMSV')THEN C #if defined (C910) READ(NULNAM,NML=NAMSV) WRITE(NULOUT,NML=NAMSV) #else READ(NULNAM,NAMSV) WRITE(NULOUT,NAMSV) #endif ELSE IF(CDNAME.EQ.'NAMSTAG')THEN C #if defined (C910) READ(NULNAM,NML=NAMSTAG) WRITE(NULOUT,NML=NAMSTAG) #else READ(NULNAM,NAMSTAG) WRITE(NULOUT,NAMSTAG) #endif ELSE IF(CDNAME.EQ.'NAMVARSTD')THEN C #if defined (C910) READ(NULNAM,NML=NAMVARSTD) WRITE(NULOUT,NML=NAMVARSTD) #else READ(NULNAM,NAMVARSTD) WRITE(NULOUT,NAMVARSTD) #endif END IF C RETURN * ** 3. Abort the job if the NAMELIST is absent * 300 CONTINUE WRITE(NULOUT,9300)CDNAME 9300 FORMAT(//,10X,"-NAMELIST ",A," not found") IF (CDNAME.NE.'NAMVARSTD') CALL ABORT3D(NULOUT," READNML ") END