SURFEX v8.1
General documentation of Surfex
get_opt.F
Go to the documentation of this file.
1  FUNCTION get_opt(CLOPT,CLARG,LLMPOFF)
2 #ifdef SFX_MPI
3  USE mpl_arg_mod
4 #endif
5 !
6 ! CRAY function
7 !
8 ! The get_opt utility breaks up options in command lines for easy parsing
9 ! by shell procedures and checks for legal options.
10 ! CLOPT is a string of recognized option letters.
11 ! CLARG is the option-argument.
12 !
13 ! Author : Vijay Saravane *METEO-FRANCE*
14 !
15  USE parkind1, ONLY : jpim
16  IMPLICIT NONE
17  INTEGER(KIND=JPIM) :: GET_OPT
18  CHARACTER(LEN=*) :: CLOPT,CLARG
19  CHARACTER(LEN=LEN(CLARG)) :: COPT
20  CHARACTER(LEN=1) :: COPT1
21  LOGICAL :: LLMPOFF
22  INTEGER(KIND=JPIM) :: IARG, NBARGS
23  DATA iarg /1/
24  SAVE iarg
25 !
26 !-----------------------------------------------
27 !
28 #ifdef T3D
29  nbargs=ipxfargc()
30 #else
31  IF (llmpoff) THEN
32  nbargs=command_argument_count()
33  ELSE
34 #ifdef SFX_MPI
35  nbargs=mpl_iargc()
36 #endif
37  ENDIF
38 #endif
39 ! si on a lu tous les arguments on sort ...
40  IF (iarg.GT.nbargs) THEN
41  get_opt = 0
42  RETURN
43  ENDIF
44 ! sinon on prend l'option en cours ...
45 #ifdef T3D
46  CALL pxfgetarg(iarg,copt,ilen,ierr)
47 #else
48  IF (llmpoff) THEN
49  CALL getarg(iarg,copt)
50  ELSE
51 #ifdef SFX_MPI
52  CALL mpl_getarg(iarg,copt)
53 #endif
54  ENDIF
55 #endif
56  copt1=copt(2:2)
57 ! si c'est pas une bonne option on sort ...
58  IF (index(clopt,copt1).EQ.0) THEN
59  get_opt = 0
60  RETURN
61  ENDIF
62 ! sinon on prend l'argument de l'option
63 ! cet argument est utilise dans getvarg
64  IF (len_trim(copt).GE.3) THEN ! l argument est colle a l'option
65  clarg=copt(3:len_trim(copt))
66  iarg=iarg+1
67  ELSE ! l argument est separe par un blanc
68 #ifdef T3D
69  CALL pxfgetarg(iarg+1,clarg,ilen,ierr)
70 #else
71  IF (llmpoff) THEN
72  CALL getarg(iarg+1,clarg)
73  ELSE
74 #ifdef SFX_MPI
75  CALL mpl_getarg(iarg+1,clarg)
76 #endif
77  ENDIF
78 #endif
79  iarg=iarg+2
80  ENDIF
81 !
82 ! et on retourne la valeur du caractere de l'option
83  get_opt = iachar(copt1)
84 !
85  RETURN
86  ENDFUNCTION get_opt
87 !
88 !
89 #ifdef SV2
90  SUBROUTINE getarg(IARG, CLARG)
91  USE parkind1, ONLY : jpim
92  IMPLICIT NONE
93  INTEGER(KIND=JPIM), INTENT(IN) :: IARG
94  CHARACTER(LEN=*), INTENT(OUT) :: CLARG
95  INTEGER(KIND=JPIM) :: ILEN, IERR
96  CALL pxfgetarg(iarg,clarg,ilen,ierr)
97  ENDSUBROUTINE getarg
98 #endif
integer, parameter jpim
Definition: parkind1.F90:13
integer(kind=jpim) function, public mpl_iargc()
subroutine getarg(IARG, CLARG)
Definition: get_opt.F:91
integer(kind=jpim) function get_opt(CLOPT, CLARG, LLMPOFF)
Definition: get_opt.F:2
ERROR in index
Definition: ecsort_shared.h:90
subroutine, public mpl_getarg(KARG, CDARG)