Index: LMDZ6/trunk/libf/dyn3dmem/dynetat0_loc.F90
===================================================================
--- LMDZ6/trunk/libf/dyn3dmem/dynetat0_loc.F90	(revision 4270)
+++ LMDZ6/trunk/libf/dyn3dmem/dynetat0_loc.F90	(revision 4301)
@@ -8,8 +8,8 @@
   USE parallel_lmdz
   USE infotrac,    ONLY: nqtot, tracers, niso, iqIsoPha, tnat, alpha_ideal, iH2O
-  USE strings_mod, ONLY: maxlen, msg, strStack, real2str
+  USE strings_mod, ONLY: maxlen, msg, strStack, real2str, int2str
   USE netcdf,      ONLY: NF90_OPEN,  NF90_NOWRITE, NF90_INQUIRE_DIMENSION, NF90_INQ_VARID, &
                          NF90_CLOSE, NF90_GET_VAR, NF90_INQUIRE_VARIABLE,  NF90_NoErr
-  USE readTracFiles_mod, ONLY: new2oldName
+  USE readTracFiles_mod, ONLY: new2oldH2O, newHNO3, oldHNO3
   USE control_mod, ONLY: planet_type
   USE assert_eq_m, ONLY: assert_eq
@@ -41,10 +41,10 @@
   CHARACTER(LEN=maxlen) :: mesg, var, modname, oldVar
   INTEGER, PARAMETER :: length=100
-  INTEGER :: iq, fID, vID, idecal, ierr, iqParent, iName, iZone, iPhase
+  INTEGER :: iq, fID, vID, idecal, ierr, iqParent, iName, iZone, iPhase, ix
   REAL    :: time, tab_cntrl(length)               !--- RUN PARAMS TABLE
   REAL,             ALLOCATABLE :: vcov_glo(:,:),masse_glo(:,:),   ps_glo(:)
   REAL,             ALLOCATABLE :: ucov_glo(:,:),    q_glo(:,:), phis_glo(:)
   REAL,             ALLOCATABLE :: teta_glo(:,:)
-  LOGICAL :: lOldHNO3, ll
+  LOGICAL :: lSkip, ll
 !-------------------------------------------------------------------------------
   modname="dynetat0_loc"
@@ -152,34 +152,25 @@
 !--- Tracers
   ALLOCATE(q_glo(ip1jmp1,llm))
-  ll=.FALSE.
+  ll = .FALSE.
 #ifdef REPROBUS
-  !--- .TRUE. for old convention: HNO3 = g+l and HNO3_g = g (new convention: HNO3tot = g+l and HNO3 = g)
-  ll = NF90_INQ_VARID(fID, 'HNO3tot', vID) /= NF90_NoErr
+  ll = NF90_INQ_VARID(fID, 'HNO3tot', vID) /= NF90_NoErr                                 !--- DETECT OLD REPRO start.nc FILE
 #endif
   DO iq=1,nqtot
     var = tracers(iq)%name
-    oldVar = new2oldName(var)
-    lOldHNO3 = ll .AND. (var == 'HNO3' .OR. var == 'HNO3_g')
-    !--------------------------------------------------------------------------------------------------------------------------
-    IF(NF90_INQ_VARID(fID, var, vID) == NF90_NoErr .AND. .NOT.lOldHNO3) THEN             !=== REGULAR CASE
+    oldVar = new2oldH2O(var)
+    lSkip = ll .AND. var == 'HNO3'                                                       !--- FORCE "HNO3_g" READING FOR "HNO3"
+#ifdef REPROBUS
+    ix = strIdx(newHNO3, var); IF(ix /= 0) oldVar = oldHNO3(ix)                          !--- REPROBUS HNO3 exceptions
+#endif
+#ifdef INCA
+    IF(var == 'O3') oldVar = 'OX'                                                        !--- DEAL WITH INCA OZONE EXCEPTION
+#endif
+    !--------------------------------------------------------------------------------------------------------------------------
+    IF(NF90_INQ_VARID(fID, var, vID) == NF90_NoErr .AND. .NOT.lSkip) THEN                !=== REGULAR CASE: AVAILABLE VARIABLE
       CALL get_var2(var,q_glo); q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:)
     !--------------------------------------------------------------------------------------------------------------------------
-    ELSE IF(NF90_INQ_VARID(fID, oldVar, vID) == NF90_NoErr) THEN                         !=== OLD NAME
+    ELSE IF(NF90_INQ_VARID(fID, oldVar, vID) == NF90_NoErr) THEN                         !=== TRY WITH ALTERNATE NAME
       CALL msg('Tracer <'//TRIM(var)//'> is missing => initialized to <'//TRIM(oldVar)//'>', modname)
       CALL get_var2(oldVar, q_glo); q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:)
-    !--------------------------------------------------------------------------------------------------------------------------
-#ifdef REPROBUS
-    ELSE IF(lOldHNO3 .AND. var == 'HNO3') THEN                                           !=== REPROBUS: HNO3_g INSTEAD OF HNO3
-      CALL msg('Tracer <HNO3_g> is used for <HNO3> (old convention)', modname)
-      CALL get_var2( 'HNO3_g', q_glo); q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:)
-    ELSE IF(lOldHNO3 .AND. var == 'HNO3tot') THEN                                        !=== REPROBUS: HNO3 INSTEAD OF HNO3tot
-      CALL msg('Tracer <HNO3> is used for <HNO3tot> (old convention)', modname)
-      CALL get_var2( 'HNO3', q_glo); q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:)
-#endif
-#ifdef INCA
-    ELSE IF(NF90_INQ_VARID(fID, 'OX',   vID) == NF90_NoErr .AND. var == 'O3') THEN       !=== INCA: OX INSTEAD OF O3
-      CALL msg('Tracer <O3> is missing => initialized to <OX>', modname)
-      CALL get_var2( 'OX' , q_glo); q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:)
-#endif
     !--------------------------------------------------------------------------------------------------------------------------
     ELSE IF(tracers(iq)%iso_iGroup == iH2O .AND. niso > 0) THEN                          !=== WATER ISOTOPES
@@ -214,10 +205,6 @@
   CHARACTER(LEN=*), INTENT(IN) :: str1, str2
   CHARACTER(LEN=maxlen) :: s1, s2
-  IF(n1/=n2) THEN
-    s1='value of '//TRIM(str1)//' ='
-    s2=' read in starting file differs from parametrized '//TRIM(str2)//' ='
-    WRITE(mesg,'(10x,a,i4,2x,a,i4)')TRIM(ADJUSTL(s1)),n1,TRIM(ADJUSTL(s2)),n2
-    CALL ABORT_gcm(TRIM(modname),TRIM(mesg),1)
-  END IF
+  IF(n1/=n2) CALL abort_gcm(TRIM(modname), 'value of "'//TRIM(str1)//'" = '//TRIM(int2str(n1))// &
+   ' read in starting file differs from gcm value of "'//TRIM(str2)//'" = '//TRIM(int2str(n2)), 1)
 END SUBROUTINE check_dim
 
