SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
modi_gltools_strsplit.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 !GLT_LIC The GELATO model is a seaice model used in stand-alone or embedded mode.
6 !GLT_LIC It has been developed by Meteo-France. The holder of GELATO is Meteo-France.
7 !GLT_LIC
8 !GLT_LIC This software is governed by the CeCILL-C license under French law and biding
9 !GLT_LIC by the rules of distribution of free software. See the CeCILL-C_V1-en.txt
10 !GLT_LIC (English) and CeCILL-C_V1-fr.txt (French) for details. The CeCILL is a free
11 !GLT_LIC software license, explicitly compatible with the GNU GPL
12 !GLT_LIC (see http://www.gnu.org/licenses/license-list.en.html#CeCILL)
13 !GLT_LIC
14 !GLT_LIC The CeCILL-C licence agreement grants users the right to modify and re-use the
15 !GLT_LIC software governed by this free software license. The exercising of this right
16 !GLT_LIC is conditional upon the obligation to make available to the community the
17 !GLT_LIC modifications made to the source code of the software so as to contribute to
18 !GLT_LIC its evolution.
19 !GLT_LIC
20 !GLT_LIC In consideration of access to the source code and the rights to copy, modify
21 !GLT_LIC and redistribute granted by the license, users are provided only with a limited
22 !GLT_LIC warranty and the software's author, the holder of the economic rights, and the
23 !GLT_LIC successive licensors only have limited liability. In this respect, the risks
24 !GLT_LIC associated with loading, using, modifying and/or developing or reproducing the
25 !GLT_LIC software by the user are brought to the user's attention, given its Free
26 !GLT_LIC Software status, which may make it complicated to use, with the result that its
27 !GLT_LIC use is reserved for developers and experienced professionals having in-depth
28 !GLT_LIC computer knowledge. Users are therefore encouraged to load and test the
29 !GLT_LIC suitability of the software as regards their requirements in conditions enabling
30 !GLT_LIC the security of their systems and/or data to be ensured and, more generally, to
31 !GLT_LIC use and operate it in the same conditions of security.
32 !GLT_LIC
33 !GLT_LIC The GELATO sofware is cureently distibuted with the SURFEX software, available at
34 !GLT_LIC http://www.cnrm.meteo.fr/surfex. The fact that you download the software deemed that
35 !GLT_LIC you had knowledge of the CeCILL-C license and that you accept its terms.
36 !GLT_LIC Attempts to use this software in a way not complying with CeCILL-C license
37 !GLT_LIC may lead to prosecution.
38 !GLT_LIC
39 ! =======================================================================
40 ! ===================== MODULE modi_gltools_strsplit ======================
41 ! =======================================================================
42 !
43 ! Input:
44 ! - a character string containing words and blanks as separators
45 ! - the number of words in this string (denoted as n)
46 ! This module returns a vector of n components, where every component
47 ! corresponds to a word included in the input string.
48 ! Note that n can be easily computed by modi_gltools_nwords, and that
49 ! the maximum length of a word is arbitrarily set to 80.
50 !
51 ! Created : 05/03/2008 (D. Salas)
52 ! Modified: no
53 !
54 ! ------------------ BEGIN MODULE modi_gltools_strsplit -------------------
55 !
56 !THXS_SFX!MODULE modi_gltools_strsplit
57 !THXS_SFX!INTERFACE
58 !THXS_SFX!!
59 !THXS_SFX!FUNCTION gltools_strsplit( hval,knword ) RESULT(hresult)
60 !THXS_SFX! CHARACTER(*), INTENT(in) :: &
61 !THXS_SFX! hval
62 !THXS_SFX! INTEGER, INTENT(in) :: &
63 !THXS_SFX! knword
64 !THXS_SFX! CHARACTER(80), DIMENSION(knword) :: &
65 !THXS_SFX! hresult
66 !THXS_SFX!END FUNCTION gltools_strsplit
67 !THXS_SFX!!
68 !THXS_SFX!END INTERFACE
69 !THXS_SFX!END MODULE modi_gltools_strsplit
70 !
71 ! --------------------- END MODULE TOOLS_STRSPLIT ------------------------
72 !
73 !
74 FUNCTION gltools_strsplit( hval,knword ) RESULT(hresult)
75 !
76 IMPLICIT NONE
77 !
78  CHARACTER(*), INTENT(in) :: &
79  hval
80 INTEGER, INTENT(in) :: &
81  knword
82  CHARACTER(80), DIMENSION(knword) :: &
83  hresult
84 !
85 INTEGER :: &
86  inum,inwords
87  CHARACTER(1), PARAMETER :: &
88  ysep=' '
89  CHARACTER(LEN=LEN(hval)) :: &
90  ystr
91 !
92 !
93 ystr=hval
94 inum=0
95 inwords=0
96 !
97 DO WHILE ( inum /= -1 )
98  inum=index(trim(ystr),ysep)
99  IF ( inum==0 ) THEN
100  inum=-1
101  IF ( len(trim(ystr)) /= 0 ) THEN
102  inwords=inwords+1
103  hresult(inwords)=adjustl( trim(ystr) )
104  ENDIF
105  ELSE
106  IF ( inum==1 ) THEN
107  ystr=ystr(2:len(ystr))
108  ELSE
109  inwords=inwords+1
110  hresult(inwords)=adjustl( ystr(1:inum-1) )
111  ystr=ystr(inum:len(ystr))
112  ENDIF
113  ENDIF
114  IF ( inwords==knword ) THEN
115  inum=-1
116  ENDIF
117 END DO
118 !
119 END FUNCTION gltools_strsplit
character(80) function, dimension(knword) gltools_strsplit(hval, knword)