Skip to content
Snippets Groups Projects
Commit a04af203 authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 22/11/2016: lfiz: use F2003 calls to get argument lists + modified...

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)
parent 597fc65c
No related branches found
No related tags found
No related merge requests found
...@@ -16,23 +16,23 @@ CHARACTER(LEN=50) :: yexe ...@@ -16,23 +16,23 @@ CHARACTER(LEN=50) :: yexe
INTEGER, PARAMETER :: FM_FIELD_SIZE = 16 INTEGER, PARAMETER :: FM_FIELD_SIZE = 16
INTEGER, PARAMETER :: ISRCLU = 11 INTEGER(KIND=LFI_INT), PARAMETER :: ISRCLU = 11
INTEGER, PARAMETER :: IDESTLU = 12 INTEGER(KIND=LFI_INT), PARAMETER :: IDESTLU = 12
INTEGER :: JPHEXT INTEGER :: JPHEXT
INTEGER :: iverb INTEGER(KIND=LFI_INT) :: iverb
INTEGER :: inap ! nb d'articles prevus (utile a la creation) INTEGER(KIND=LFI_INT) :: inap ! nb d'articles prevus (utile a la creation)
INTEGER :: inaf ! nb d'articles presents dans un fichier existant INTEGER(KIND=LFI_INT) :: inaf ! nb d'articles presents dans un fichier existant
INTEGER :: inafdest INTEGER(KIND=LFI_INT) :: inafdest
CHARACTER(LEN=128) :: filename,DESTFNAME CHARACTER(LEN=128) :: filename,DESTFNAME
INTEGER :: JI,JJ INTEGER :: JI,JJ
INTEGER :: IRESP INTEGER(KIND=LFI_INT) :: IRESP
CHARACTER(LEN=FM_FIELD_SIZE),DIMENSION(:),ALLOCATABLE :: yrecfm 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(KIND=8), DIMENSION(:),ALLOCATABLE :: iwork
INTEGER :: ilengs INTEGER(KIND=LFI_INT) :: ilengs
INTEGER :: ipos INTEGER(KIND=LFI_INT) :: ipos
INTEGER :: sizemax INTEGER :: sizemax
INTEGER :: IGRID INTEGER :: IGRID
...@@ -46,7 +46,9 @@ INTEGER :: LFICOMP ...@@ -46,7 +46,9 @@ INTEGER :: LFICOMP
INTEGER :: NEWSIZE INTEGER :: NEWSIZE
INTEGER :: searchndx INTEGER :: searchndx
INTEGER :: INDDATIM INTEGER :: INDDATIM
INARG = IARGC()
!OLD: INARG = IARGC()
INARG = COMMAND_ARGUMENT_COUNT()
#if defined(F90HP) #if defined(F90HP)
#define HPINCR 1 #define HPINCR 1
...@@ -54,6 +56,9 @@ INARG = IARGC() ...@@ -54,6 +56,9 @@ INARG = IARGC()
#define HPINCR 0 #define HPINCR 0
#endif #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) #if defined(FUJI) || defined(NAGf95) || defined(NEC) || defined(HP) || defined(pgf) || defined(G95) || defined(GFORTRAN)
CALL GETARG(0+HPINCR,yexe) CALL GETARG(0+HPINCR,yexe)
IF (LEN_TRIM(yexe) == 0) THEN IF (LEN_TRIM(yexe) == 0) THEN
...@@ -63,12 +68,17 @@ INARG = IARGC() ...@@ -63,12 +68,17 @@ INARG = IARGC()
#else #else
CALL PXFGETARG(0,yexe,arglen,iresp) CALL PXFGETARG(0,yexe,arglen,iresp)
#endif #endif
#endif
! PRINT *,yexe, ' avec ',INARG,' arguments.' ! PRINT *,yexe, ' avec ',INARG,' arguments.'
IF (INARG == 1) THEN 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) #if defined(FUJI) || defined(NAGf95) || defined(NEC) || defined(HP) || defined(pgf) || defined(G95)|| defined(GFORTRAN)
CALL GETARG(1+HPINCR,filename) CALL GETARG(1+HPINCR,filename)
#else #else
CALL PXFGETARG(1,filename,arglen,iresp) CALL PXFGETARG(1,filename,arglen,iresp)
#endif
#endif #endif
ELSE ELSE
PRINT *,'Usage : ', TRIM(yexe), ' [fichier lfi]' PRINT *,'Usage : ', TRIM(yexe), ' [fichier lfi]'
...@@ -218,13 +228,13 @@ CALL LFIFER(IRESP,IDESTLU,'KEEP') ...@@ -218,13 +228,13 @@ CALL LFIFER(IRESP,IDESTLU,'KEEP')
CONTAINS CONTAINS
SUBROUTINE FMREADLFIN1(klu,hrecfm,kval,kresp) SUBROUTINE FMREADLFIN1(klu,hrecfm,kval,kresp)
INTEGER, INTENT(IN) :: klu ! logical fortran unit au lfi file INTEGER(KIND=LFI_INT), INTENT(IN) :: klu ! logical fortran unit au lfi file
CHARACTER(LEN=*),INTENT(IN) :: hrecfm ! article name to be read CHARACTER(LEN=*), INTENT(IN) :: hrecfm ! article name to be read
INTEGER, INTENT(OUT) :: kval ! integer value for hrecfm article INTEGER, INTENT(OUT) :: kval ! integer value for hrecfm article
INTEGER, INTENT(OUT) :: kresp! return code null if OK INTEGER(KIND=LFI_INT), INTENT(OUT) :: kresp! return code null if OK
! !
INTEGER(KIND=8),DIMENSION(:),ALLOCATABLE::iwork INTEGER(KIND=8),DIMENSION(:),ALLOCATABLE :: iwork
INTEGER :: iresp,ilenga,iposex,icomlen INTEGER(KIND=LFI_INT) :: iresp,ilenga,iposex,icomlen
! !
CALL LFINFO(iresp,klu,hrecfm,ilenga,iposex) CALL LFINFO(iresp,klu,hrecfm,ilenga,iposex)
IF (iresp /=0 .OR. ilenga == 0) THEN IF (iresp /=0 .OR. ilenga == 0) THEN
......
...@@ -16,22 +16,22 @@ CHARACTER(LEN=50) :: yexe ...@@ -16,22 +16,22 @@ CHARACTER(LEN=50) :: yexe
INTEGER, PARAMETER :: FM_FIELD_SIZE = 16 INTEGER, PARAMETER :: FM_FIELD_SIZE = 16
INTEGER, PARAMETER :: ISRCLU = 11 INTEGER(KIND=LFI_INT), PARAMETER :: ISRCLU = 11
INTEGER, PARAMETER :: IDESTLU = 12 INTEGER(KIND=LFI_INT), PARAMETER :: IDESTLU = 12
INTEGER :: iverb INTEGER(KIND=LFI_INT) :: iverb
INTEGER :: inap ! nb d'articles prevus (utile a la creation) INTEGER(KIND=LFI_INT) :: inap ! nb d'articles prevus (utile a la creation)
INTEGER :: inaf ! nb d'articles presents dans un fichier existant INTEGER(KIND=LFI_INT) :: inaf ! nb d'articles presents dans un fichier existant
INTEGER :: inafdest INTEGER(KIND=LFI_INT) :: inafdest
CHARACTER(LEN=128) :: filename,DESTFNAME CHARACTER(LEN=128) :: filename,DESTFNAME
INTEGER :: JI,JJ INTEGER :: JI,JJ
INTEGER :: IRESP INTEGER(KIND=LFI_INT) :: IRESP
CHARACTER(LEN=FM_FIELD_SIZE),DIMENSION(:),ALLOCATABLE :: yrecfm 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(KIND=8), DIMENSION(:),ALLOCATABLE :: iwork,iworknew
INTEGER :: ilengs INTEGER(KIND=LFI_INT) :: ilengs
INTEGER :: ipos INTEGER(KIND=LFI_INT) :: ipos
INTEGER :: sizemax INTEGER :: sizemax
INTEGER :: ICOMLEN INTEGER :: ICOMLEN
...@@ -45,7 +45,8 @@ INTEGER :: searchndx ...@@ -45,7 +45,8 @@ INTEGER :: searchndx
INTEGER :: ITYPCOD INTEGER :: ITYPCOD
INTEGER :: ITOTAL,ITOTALMAX INTEGER :: ITOTAL,ITOTALMAX
INARG = IARGC() !OLD: INARG = IARGC()
INARG = COMMAND_ARGUMENT_COUNT()
#if defined(F90HP) #if defined(F90HP)
#define HPINCR 1 #define HPINCR 1
...@@ -53,6 +54,9 @@ INARG = IARGC() ...@@ -53,6 +54,9 @@ INARG = IARGC()
#define HPINCR 0 #define HPINCR 0
#endif #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) #if defined(FUJI) || defined(NAGf95) || defined(NEC) || defined(HP) || defined(pgf) || defined(G95) || defined(GFORTRAN)
CALL GETARG(0+HPINCR,yexe) CALL GETARG(0+HPINCR,yexe)
IF (LEN_TRIM(yexe) == 0) THEN IF (LEN_TRIM(yexe) == 0) THEN
...@@ -62,12 +66,17 @@ INARG = IARGC() ...@@ -62,12 +66,17 @@ INARG = IARGC()
#else #else
CALL PXFGETARG(0,yexe,arglen,iresp) CALL PXFGETARG(0,yexe,arglen,iresp)
#endif #endif
#endif
! PRINT *,yexe, ' avec ',INARG,' arguments.' ! PRINT *,yexe, ' avec ',INARG,' arguments.'
IF (INARG == 1) THEN 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) #if defined(FUJI) || defined(NAGf95) || defined(NEC) || defined(HP) || defined(pgf) || defined(G95) || defined(GFORTRAN)
CALL GETARG(1+HPINCR,filename) CALL GETARG(1+HPINCR,filename)
#else #else
CALL PXFGETARG(1,filename,arglen,iresp) CALL PXFGETARG(1,filename,arglen,iresp)
#endif
#endif #endif
ELSE ELSE
PRINT *,'Usage : ', TRIM(yexe), ' [fichier lfi]' PRINT *,'Usage : ', TRIM(yexe), ' [fichier lfi]'
...@@ -173,13 +182,13 @@ CALL LFIFER(IRESP,IDESTLU,'KEEP') ...@@ -173,13 +182,13 @@ CALL LFIFER(IRESP,IDESTLU,'KEEP')
CONTAINS CONTAINS
SUBROUTINE FMREADLFIN1(klu,hrecfm,kval,kresp) SUBROUTINE FMREADLFIN1(klu,hrecfm,kval,kresp)
INTEGER, INTENT(IN) :: klu ! logical fortran unit au lfi file INTEGER(KIND=LFI_INT), INTENT(IN) :: klu ! logical fortran unit au lfi file
CHARACTER(LEN=*),INTENT(IN) :: hrecfm ! article name to be read CHARACTER(LEN=*), INTENT(IN) :: hrecfm ! article name to be read
INTEGER, INTENT(OUT) :: kval ! integer value for hrecfm article INTEGER, INTENT(OUT) :: kval ! integer value for hrecfm article
INTEGER, INTENT(OUT) :: kresp! return code null if OK INTEGER(KIND=LFI_INT), INTENT(OUT) :: kresp! return code null if OK
! !
INTEGER(KIND=8),DIMENSION(:),ALLOCATABLE::iwork INTEGER(KIND=8),DIMENSION(:),ALLOCATABLE :: iwork
INTEGER :: iresp,ilenga,iposex,icomlen INTEGER(KIND=LFI_INT) :: iresp,ilenga,iposex,icomlen
! !
CALL LFINFO(iresp,klu,hrecfm,ilenga,iposex) CALL LFINFO(iresp,klu,hrecfm,ilenga,iposex)
IF (iresp /=0 .OR. ilenga == 0) THEN IF (iresp /=0 .OR. ilenga == 0) THEN
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment