From a04af203b631930c873b6b300da77da27f806c26 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Tue, 22 Nov 2016 14:13:17 +0100
Subject: [PATCH] Philippe 22/11/2016: lfiz: use F2003 calls to get argument
 lists + modified LFI integers to support LFI_INT=8

(cherry picked from commit 5fd86cd509ffefe231cd009da8f94b92d2dbb246)
---
 LIBTOOLS/tools/lfiz/src/lfiz.f90   | 44 ++++++++++++++++++------------
 LIBTOOLS/tools/lfiz/src/unlfiz.f90 | 43 +++++++++++++++++------------
 2 files changed, 53 insertions(+), 34 deletions(-)

diff --git a/LIBTOOLS/tools/lfiz/src/lfiz.f90 b/LIBTOOLS/tools/lfiz/src/lfiz.f90
index de9b42b53..3eef5b35b 100644
--- a/LIBTOOLS/tools/lfiz/src/lfiz.f90
+++ b/LIBTOOLS/tools/lfiz/src/lfiz.f90
@@ -16,23 +16,23 @@ CHARACTER(LEN=50) :: yexe
 
 
 INTEGER, PARAMETER :: FM_FIELD_SIZE = 16
-INTEGER, PARAMETER :: ISRCLU  = 11
-INTEGER, PARAMETER :: IDESTLU = 12
+INTEGER(KIND=LFI_INT), PARAMETER :: ISRCLU  = 11
+INTEGER(KIND=LFI_INT), PARAMETER :: IDESTLU = 12
 INTEGER :: JPHEXT
-INTEGER :: iverb
-INTEGER :: inap ! nb d'articles prevus (utile a la creation)
-INTEGER :: inaf ! nb d'articles presents dans un fichier existant
-INTEGER :: inafdest
+INTEGER(KIND=LFI_INT) :: iverb
+INTEGER(KIND=LFI_INT) :: inap ! nb d'articles prevus (utile a la creation)
+INTEGER(KIND=LFI_INT) :: inaf ! nb d'articles presents dans un fichier existant
+INTEGER(KIND=LFI_INT) :: inafdest
 
 CHARACTER(LEN=128) :: filename,DESTFNAME
 INTEGER :: JI,JJ
-INTEGER :: IRESP
+INTEGER(KIND=LFI_INT) :: IRESP
 CHARACTER(LEN=FM_FIELD_SIZE),DIMENSION(:),ALLOCATABLE :: yrecfm
-INTEGER,                     DIMENSION(:),ALLOCATABLE :: ileng
+INTEGER(KIND=LFI_INT),       DIMENSION(:),ALLOCATABLE :: ileng
 INTEGER(KIND=8),             DIMENSION(:),ALLOCATABLE :: iwork
 
-INTEGER :: ilengs
-INTEGER :: ipos
+INTEGER(KIND=LFI_INT) :: ilengs
+INTEGER(KIND=LFI_INT) :: ipos
 INTEGER :: sizemax
 
 INTEGER            :: IGRID
@@ -46,7 +46,9 @@ INTEGER :: LFICOMP
 INTEGER :: NEWSIZE
 INTEGER :: searchndx
 INTEGER :: INDDATIM
-INARG = IARGC()
+
+!OLD: INARG = IARGC()
+INARG = COMMAND_ARGUMENT_COUNT()
 
 #if defined(F90HP)
 #define HPINCR 1
@@ -54,6 +56,9 @@ INARG = IARGC()
 #define HPINCR 0
 #endif
 
+  CALL GET_COMMAND_ARGUMENT(0,yexe)
+#if 0
+!OLD:
 #if defined(FUJI) || defined(NAGf95) || defined(NEC) || defined(HP) || defined(pgf) || defined(G95) || defined(GFORTRAN)
   CALL GETARG(0+HPINCR,yexe)
   IF (LEN_TRIM(yexe) == 0) THEN
@@ -63,12 +68,17 @@ INARG = IARGC()
 #else
   CALL PXFGETARG(0,yexe,arglen,iresp)
 #endif
+#endif
 !  PRINT *,yexe, ' avec ',INARG,' arguments.'
   IF (INARG == 1) THEN 
+     CALL GET_COMMAND_ARGUMENT(1,filename)
+#if 0
+!OLD:
 #if defined(FUJI) || defined(NAGf95) || defined(NEC) || defined(HP) || defined(pgf) || defined(G95)|| defined(GFORTRAN)
      CALL GETARG(1+HPINCR,filename)
 #else
      CALL PXFGETARG(1,filename,arglen,iresp)
+#endif
 #endif
   ELSE 
      PRINT *,'Usage : ', TRIM(yexe), ' [fichier lfi]'
@@ -218,13 +228,13 @@ CALL LFIFER(IRESP,IDESTLU,'KEEP')
 CONTAINS 
 
 SUBROUTINE FMREADLFIN1(klu,hrecfm,kval,kresp)
-INTEGER, INTENT(IN)         :: klu ! logical fortran unit au lfi file
-CHARACTER(LEN=*),INTENT(IN) :: hrecfm ! article name to be read
-INTEGER, INTENT(OUT)        :: kval ! integer value for hrecfm article
-INTEGER, INTENT(OUT)        :: kresp! return code null if OK
+INTEGER(KIND=LFI_INT), INTENT(IN)  :: klu ! logical fortran unit au lfi file
+CHARACTER(LEN=*),      INTENT(IN)  :: hrecfm ! article name to be read
+INTEGER,               INTENT(OUT) :: kval ! integer value for hrecfm article
+INTEGER(KIND=LFI_INT), INTENT(OUT) :: kresp! return code null if OK
 !
-INTEGER(KIND=8),DIMENSION(:),ALLOCATABLE::iwork
-INTEGER :: iresp,ilenga,iposex,icomlen
+INTEGER(KIND=8),DIMENSION(:),ALLOCATABLE :: iwork
+INTEGER(KIND=LFI_INT)                    :: iresp,ilenga,iposex,icomlen
 !
 CALL LFINFO(iresp,klu,hrecfm,ilenga,iposex)
 IF (iresp /=0 .OR. ilenga == 0) THEN
diff --git a/LIBTOOLS/tools/lfiz/src/unlfiz.f90 b/LIBTOOLS/tools/lfiz/src/unlfiz.f90
index bd5a3008f..73e0de641 100644
--- a/LIBTOOLS/tools/lfiz/src/unlfiz.f90
+++ b/LIBTOOLS/tools/lfiz/src/unlfiz.f90
@@ -16,22 +16,22 @@ CHARACTER(LEN=50) :: yexe
 
 
 INTEGER, PARAMETER :: FM_FIELD_SIZE = 16
-INTEGER, PARAMETER :: ISRCLU  = 11
-INTEGER, PARAMETER :: IDESTLU = 12
-INTEGER :: iverb
-INTEGER :: inap ! nb d'articles prevus (utile a la creation)
-INTEGER :: inaf ! nb d'articles presents dans un fichier existant
-INTEGER :: inafdest
+INTEGER(KIND=LFI_INT), PARAMETER :: ISRCLU  = 11
+INTEGER(KIND=LFI_INT), PARAMETER :: IDESTLU = 12
+INTEGER(KIND=LFI_INT) :: iverb
+INTEGER(KIND=LFI_INT) :: inap ! nb d'articles prevus (utile a la creation)
+INTEGER(KIND=LFI_INT) :: inaf ! nb d'articles presents dans un fichier existant
+INTEGER(KIND=LFI_INT) :: inafdest
 
 CHARACTER(LEN=128) :: filename,DESTFNAME
 INTEGER :: JI,JJ
-INTEGER :: IRESP
+INTEGER(KIND=LFI_INT) :: IRESP
 CHARACTER(LEN=FM_FIELD_SIZE),DIMENSION(:),ALLOCATABLE :: yrecfm
-INTEGER,                     DIMENSION(:),ALLOCATABLE :: ileng
+INTEGER(KIND=LFI_INT),                     DIMENSION(:),ALLOCATABLE :: ileng
 INTEGER(KIND=8),             DIMENSION(:),ALLOCATABLE :: iwork,iworknew
 
-INTEGER :: ilengs
-INTEGER :: ipos
+INTEGER(KIND=LFI_INT) :: ilengs
+INTEGER(KIND=LFI_INT) :: ipos
 INTEGER :: sizemax
 
 INTEGER            :: ICOMLEN
@@ -45,7 +45,8 @@ INTEGER :: searchndx
 INTEGER :: ITYPCOD
 INTEGER :: ITOTAL,ITOTALMAX
 
-INARG = IARGC()
+!OLD: INARG = IARGC()
+INARG = COMMAND_ARGUMENT_COUNT()
 
 #if defined(F90HP)
 #define HPINCR 1
@@ -53,6 +54,9 @@ INARG = IARGC()
 #define HPINCR 0
 #endif
 
+  CALL GET_COMMAND_ARGUMENT(0,yexe)
+#if 0
+!OLD:
 #if defined(FUJI) || defined(NAGf95) || defined(NEC) || defined(HP) || defined(pgf) || defined(G95) || defined(GFORTRAN)
   CALL GETARG(0+HPINCR,yexe)
   IF (LEN_TRIM(yexe) == 0) THEN
@@ -62,12 +66,17 @@ INARG = IARGC()
 #else
   CALL PXFGETARG(0,yexe,arglen,iresp)
 #endif
+#endif
 !  PRINT *,yexe, ' avec ',INARG,' arguments.'
   IF (INARG == 1) THEN 
+     CALL GET_COMMAND_ARGUMENT(1,filename)
+#if 0
+!OLD:
 #if defined(FUJI) || defined(NAGf95) || defined(NEC) || defined(HP) || defined(pgf) || defined(G95) || defined(GFORTRAN)
      CALL GETARG(1+HPINCR,filename)
 #else
      CALL PXFGETARG(1,filename,arglen,iresp)
+#endif
 #endif
   ELSE 
      PRINT *,'Usage : ', TRIM(yexe), ' [fichier lfi]'
@@ -173,13 +182,13 @@ CALL LFIFER(IRESP,IDESTLU,'KEEP')
 CONTAINS 
 
 SUBROUTINE FMREADLFIN1(klu,hrecfm,kval,kresp)
-INTEGER, INTENT(IN)         :: klu ! logical fortran unit au lfi file
-CHARACTER(LEN=*),INTENT(IN) :: hrecfm ! article name to be read
-INTEGER, INTENT(OUT)        :: kval ! integer value for hrecfm article
-INTEGER, INTENT(OUT)        :: kresp! return code null if OK
+INTEGER(KIND=LFI_INT), INTENT(IN)  :: klu ! logical fortran unit au lfi file
+CHARACTER(LEN=*),      INTENT(IN)  :: hrecfm ! article name to be read
+INTEGER,               INTENT(OUT) :: kval ! integer value for hrecfm article
+INTEGER(KIND=LFI_INT), INTENT(OUT) :: kresp! return code null if OK
 !
-INTEGER(KIND=8),DIMENSION(:),ALLOCATABLE::iwork
-INTEGER :: iresp,ilenga,iposex,icomlen
+INTEGER(KIND=8),DIMENSION(:),ALLOCATABLE :: iwork
+INTEGER(KIND=LFI_INT)                    :: iresp,ilenga,iposex,icomlen
 !
 CALL LFINFO(iresp,klu,hrecfm,ilenga,iposex)
 IF (iresp /=0 .OR. ilenga == 0) THEN
-- 
GitLab