Skip to content

Commit fdcb622

Browse files
committed
add getoptionr4*
1 parent 39d3436 commit fdcb622

1 file changed

Lines changed: 82 additions & 1 deletion

File tree

src/fiat/util/xrd_getoptions.F90

Lines changed: 82 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

1212
USE XRD_UNIX_ENV, ONLY: XRD_IARGC, XRD_GETARG, &
1313
XRD_BASENAME, XRD_COUNTWORDS, XRD_GETENV, &
@@ -18,6 +18,7 @@ MODULE XRD_GETOPTIONS
1818
INTERFACE GETOPTION
1919
MODULE PROCEDURE GETOPTIONS, GETOPTIONSL, &
2020
GETOPTIONI, GETOPTIONIL, &
21+
GETOPTIONR4, GETOPTIONR4L, &
2122
GETOPTIONR8, GETOPTIONR8L, &
2223
GETOPTIONB
2324

@@ -513,6 +514,41 @@ SUBROUTINE GETOPTIONI( KEY, VAL, MND, USE )
513514

514515
END 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+
516552
SUBROUTINE GETOPTIONR8( KEY, VAL, MND, USE )
517553
!
518554
CHARACTER(LEN=*), INTENT(IN) :: KEY
@@ -742,6 +778,51 @@ SUBROUTINE GETOPTIONIL( KEY, VAL, MND, USE )
742778

743779
END 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+
745826
SUBROUTINE GETOPTIONR8L( KEY, VAL, MND, USE )
746827
!
747828
CHARACTER(LEN=*), INTENT(IN) :: KEY

0 commit comments

Comments
 (0)