@@ -7,7 +7,7 @@ MODULE XRD_GETOPTIONS
77! Philippe Marguinaud *METEO FRANCE*
88! Original : 11-09-2012
99
10- USE EC_PARKIND, ONLY: JPIM, JPRD
10+ USE EC_PARKIND, ONLY: JPIM, JPRD, JPRM
1111
1212USE XRD_UNIX_ENV, ONLY: XRD_IARGC, XRD_GETARG, &
1313 XRD_BASENAME, XRD_COUNTWORDS, XRD_GETENV, &
@@ -18,6 +18,7 @@ MODULE XRD_GETOPTIONS
1818INTERFACE GETOPTION
1919 MODULE PROCEDURE GETOPTIONS, GETOPTIONSL, &
2020 GETOPTIONI, GETOPTIONIL, &
21+ GETOPTIONR4 , GETOPTIONR4 L, &
2122 GETOPTIONR8 , GETOPTIONR8 L, &
2223 GETOPTIONB
2324
@@ -513,6 +514,41 @@ SUBROUTINE GETOPTIONI( KEY, VAL, MND, USE )
513514
514515END SUBROUTINE GETOPTIONI
515516
517+ SUBROUTINE GETOPTIONR4 ( KEY , VAL , MND , USE )
518+ !
519+ CHARACTER (LEN=* ), INTENT (IN ) :: KEY
520+ REAL (KIND= JPRM), INTENT (INOUT ) :: VAL
521+ LOGICAL (KIND= JPIM), OPTIONAL , INTENT (IN ) :: MND
522+ CHARACTER (LEN=* ), OPTIONAL , INTENT (IN ) :: USE
523+ !
524+ CHARACTER (LEN= ARGSIZEMAX) :: SVAL
525+ INTEGER :: ERR
526+ LOGICAL (KIND= JPIM) :: LSHELL1
527+
528+ LSHELL1 = LSHELL
529+
530+ IF ( LHELP ) THEN
531+ CALL ADDOPT( KEY, ' REAL' , USE )
532+ RETURN
533+ ELSE IF ( LSHELL ) THEN
534+ LSHELL = .FALSE.
535+ CALL ADDOPT_SHELL( KEY, ' REAL' , MND, USE )
536+ ENDIF
537+
538+ SVAL = " "
539+ CALL GETOPTIONS( KEY, SVAL, MND, USE )
540+ IF ( TRIM ( SVAL ) .NE. " " ) THEN
541+ READ ( SVAL, * , IOSTAT = ERR ) VAL
542+ IF ( ERR .NE. 0 ) THEN
543+ PRINT * , " ERROR WHILE PARSING OPTION " // TRIM (KEY)
544+ CALL XRD_EXIT(1_JPIM )
545+ ENDIF
546+ ENDIF
547+
548+ LSHELL = LSHELL1
549+
550+ END SUBROUTINE GETOPTIONR4
551+
516552SUBROUTINE GETOPTIONR8 ( KEY , VAL , MND , USE )
517553!
518554 CHARACTER (LEN=* ), INTENT (IN ) :: KEY
@@ -742,6 +778,51 @@ SUBROUTINE GETOPTIONIL( KEY, VAL, MND, USE )
742778
743779END SUBROUTINE GETOPTIONIL
744780
781+ SUBROUTINE GETOPTIONR4L ( KEY , VAL , MND , USE )
782+ !
783+ CHARACTER (LEN=* ), INTENT (IN ) :: KEY
784+ REAL (KIND= JPRM), POINTER :: VAL(:)
785+ LOGICAL (KIND= JPIM), OPTIONAL , INTENT (IN ) :: MND
786+ CHARACTER (LEN=* ), OPTIONAL , INTENT (IN ) :: USE
787+ !
788+ CHARACTER (LEN= ARGSIZEMAX), POINTER :: SVAL(:)
789+ INTEGER (KIND= JPIM) :: I, N
790+ INTEGER :: ERR
791+ LOGICAL (KIND= JPIM) :: LSHELL1
792+
793+ NULLIFY (SVAL)
794+
795+ LSHELL1 = LSHELL
796+
797+ IF ( LHELP ) THEN
798+ CALL ADDOPT( KEY, ' REAL-LIST' , USE )
799+ RETURN
800+ ELSE IF ( LSHELL ) THEN
801+ LSHELL = .FALSE.
802+ CALL ADDOPT_SHELL( KEY, ' REAL-LIST' , MND, USE )
803+ ENDIF
804+
805+ CALL GETOPTIONSL( KEY, SVAL, MND, USE )
806+
807+ IF ( .NOT. ASSOCIATED ( SVAL ) ) GOTO 999
808+
809+ N = SIZE ( SVAL )
810+ ALLOCATE ( VAL( N ) )
811+ DO I = 1 , N
812+ READ ( SVAL( I ), * , IOSTAT = ERR ) VAL( I )
813+ IF ( ERR .NE. 0 ) THEN
814+ PRINT * , " ERROR WHILE PARSING OPTION " // TRIM (KEY)
815+ CALL XRD_EXIT(1_JPIM )
816+ ENDIF
817+ ENDDO
818+
819+ DEALLOCATE ( SVAL )
820+
821+ 999 CONTINUE
822+ LSHELL = LSHELL1
823+
824+ END SUBROUTINE GETOPTIONR4L
825+
745826SUBROUTINE GETOPTIONR8L ( KEY , VAL , MND , USE )
746827!
747828 CHARACTER (LEN=* ), INTENT (IN ) :: KEY
0 commit comments