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