/[MITgcm]/MITgcm/eesupp/src/utils.F
ViewVC logotype

Contents of /MITgcm/eesupp/src/utils.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.12 - (show annotations) (download)
Mon Jul 14 21:34:23 2003 UTC (20 years, 9 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint51k_post, checkpoint51o_pre, checkpoint51l_post, checkpoint52, checkpoint51f_post, checkpoint51d_post, checkpoint51t_post, checkpoint51n_post, checkpoint51s_post, checkpoint51j_post, checkpoint51n_pre, checkpoint51l_pre, checkpoint51q_post, checkpoint51h_pre, branchpoint-genmake2, checkpoint51r_post, checkpoint51i_post, checkpoint51i_pre, checkpoint51e_post, checkpoint51o_post, checkpoint51f_pre, checkpoint51g_post, ecco_c52_e35, checkpoint51m_post, checkpoint51p_post, checkpoint51u_post
Branch point for: branch-genmake2, branch-nonh, tg2-branch, checkpoint51n_branch
Changes since 1.11: +3 -2 lines
change the function ILNBLNK (=> last non-blank char.) to return zero
  (instead of the string length) when the string. char is empty

1 C $Header: /u/gcmpack/MITgcm/eesupp/src/utils.F,v 1.11 2001/09/21 03:54:35 cnh Exp $
2 C $Name: $
3
4 #include "CPP_EEOPTIONS.h"
5
6 C-- File utils.F: General purpose support routines
7 C-- Contents
8 C-- U DATE - Returns date and time.
9 C-- IFNBLNK - Returns index of first non-blank string character.
10 C-- ILNBLNK - Returns index of last non-blank string character.
11 C-- IO_ERRCOUNT - Reads IO error counter.
12 C-- LCASE - Translates to lower case.
13 C--UM MACHINE - Returns character string identifying computer.
14 C-- UCASE - Translates to upper case.
15 C-- Routines marked "M" contain specific machine dependent code.
16 C-- Routines marked "U" contain UNIX OS calls.
17
18 CBOP
19 C !ROUTINE: DATE
20
21 C !INTERFACE:
22 SUBROUTINE DATE ( string , myThreadId )
23 IMPLICIT NONE
24
25 C !DESCRIPTION:
26 C *==========================================================*
27 C | SUBROUTINE DATE |
28 C | o Return current date |
29 C *==========================================================*
30
31 C !USES:
32 #include "SIZE.h"
33 #include "EEPARAMS.h"
34
35 C !INPUT/OUTPUT PARAMETERS:
36 C string :: Date returned in string
37 C myThreadId :: My thread number
38 CHARACTER*(*) string
39 INTEGER myThreadId
40 C
41 C !LOCAL VARIABLES:
42 C lDate :: Length of date string
43 C msgBuffer :: Temp. for building error messages
44 INTEGER lDate
45 CHARACTER*(MAX_LEN_MBUF) msgBuffer
46 CEOP
47 C
48 lDate = 24
49 IF ( LEN(string) .LT. lDate ) GOTO 901
50 string = ' '
51 #ifndef TARGET_T3E
52 #ifndef TARGET_CRAY_VECTOR
53 CALL FDATE( string )
54 #endif
55 #endif
56 C
57 1000 CONTINUE
58 RETURN
59 901 CONTINUE
60 WRITE(msgBuffer,'(A)')
61 &' '
62 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,
63 &SQUEEZE_RIGHT,myThreadId)
64 WRITE(msgBuffer,'(A)')
65 &'*** WARNING WARNING WARNING WARNING WARNING WARNING ***'
66 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,
67 &SQUEEZE_RIGHT,myThreadId)
68 WRITE(msgBuffer,'(A)')
69 &'procedure: "DATE".'
70 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,
71 &SQUEEZE_RIGHT,myThreadId)
72 WRITE(msgBuffer,'(A)')
73 &'Variable passed to S/R DATE is too small.'
74 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,
75 &SQUEEZE_RIGHT,myThreadId)
76 WRITE(msgBuffer,'(A)')
77 &' Argument must be at least',lDate,'characters long.'
78 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,
79 &SQUEEZE_RIGHT,myThreadId)
80 WRITE(msgBuffer,'(A)')
81 &'*******************************************************'
82 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,
83 &SQUEEZE_RIGHT,myThreadId)
84 GOTO 1000
85 END
86
87 CBOP
88 C !ROUTINE: IFNBLNK
89
90 C !INTERFACE:
91 INTEGER FUNCTION IFNBLNK( string )
92 IMPLICIT NONE
93
94 C !DESCRIPTION:
95 C *==========================================================*
96 C | FUNCTION IFNBLNK |
97 C | o Find first non-blank in character string. |
98 C *==========================================================*
99 C
100 C !INPUT PARAMETERS:
101 C string :: String to find first non-blank in.
102 CHARACTER*(*) string
103
104 C !LOCAL VARIABLES:
105 C L, LS :: Temps for string locations
106 INTEGER L, LS
107 CEOP
108 C
109 LS = LEN(string)
110 IFNBLNK = 0
111 DO 10 L = 1, LS
112 IF ( string(L:L) .EQ. ' ' ) GOTO 10
113 IFNBLNK = L
114 GOTO 11
115 10 CONTINUE
116 11 CONTINUE
117 C
118 RETURN
119 END
120
121 CBOP
122 C !ROUTINE: ILNBLNK
123
124 C !INTERFACE:
125 INTEGER FUNCTION ILNBLNK( string )
126 IMPLICIT NONE
127
128 C !DESCRIPTION:
129 C *==========================================================*
130 C | FUNCTION ILNBLNK |
131 C | o Find last non-blank in character string. |
132 C *==========================================================*
133
134 C !INPUT PARAMETERS:
135 C string :: string to scan
136 CHARACTER*(*) string
137
138 C !LOCAL VARIABLES:
139 C L, LS :: Temps. used in scanning string
140 INTEGER L, LS
141 CEOP
142 C
143 LS = LEN(string)
144 c ILNBLNK = LS
145 ILNBLNK = 0
146 DO 10 L = LS, 1, -1
147 IF ( string(L:L) .EQ. ' ' ) GOTO 10
148 ILNBLNK = L
149 GOTO 11
150 10 CONTINUE
151 11 CONTINUE
152 C
153 RETURN
154 END
155
156 CBOP
157 C !ROUTINE: IO_ERRCOUNT
158
159 C !INTERFACE:
160 INTEGER FUNCTION IO_ERRCOUNT(myThid)
161 IMPLICIT NONE
162
163 C !DESCRIPTION:
164 C *==========================================================*
165 C | FUNCTION IO_ERRCOUNT |
166 C | o Reads IO error counter. |
167 C *==========================================================*
168
169 C !USES:
170 C == Global variables ==
171 #include "SIZE.h"
172 #include "EEPARAMS.h"
173
174 C !INPUT PARAMETERS:
175 C == Routine arguments ==
176 C myThid :: My thread number
177 INTEGER myThid
178
179 CEOP
180
181 IO_ERRCOUNT = ioErrorCount(myThid)
182
183 RETURN
184 END
185
186 CBOP
187
188 C !ROUTINE: LCASE
189
190 C !INTERFACE:
191 SUBROUTINE LCASE ( string )
192 IMPLICIT NONE
193
194 C !DESCRIPTION:
195 C *==========================================================*
196 C | SUBROUTINE LCASE |
197 C | o Convert character string to all lower case. |
198 C *==========================================================*
199
200 C !INPUT/OUTPUT PARAMETERS:
201 CHARACTER*(*) string
202
203 C !LOCALVARIABLES:
204 CHARACTER*26 LOWER
205 DATA LOWER /'abcdefghijklmnopqrstuvwxyz'/
206 SAVE LOWER
207 CHARACTER*26 UPPER
208 DATA UPPER /'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
209 SAVE UPPER
210 INTEGER I, L
211 CEOP
212
213 C
214 DO 10 I = 1, LEN(string)
215 L = INDEX(UPPER,string(I:I))
216 IF ( L .EQ. 0 ) GOTO 10
217 string(I:I) = LOWER(L:L)
218 10 CONTINUE
219 C
220 RETURN
221 END
222
223 CBOP
224 C !ROUTINE: MACHINE
225
226 C !INTERFACE:
227 SUBROUTINE MACHINE ( string )
228 IMPLICIT NONE
229
230 C !DESCRIPTION:
231 C *==========================================================*
232 C | SUBROUTINE MACHINE |
233 C | o Return computer identifier in string. |
234 C *==========================================================*
235
236 C !USES:
237 #include "SIZE.h"
238 #include "EEPARAMS.h"
239 INTEGER IFNBLNK
240 INTEGER ILNBLNK
241 EXTERNAL IFNBLNK
242 EXTERNAL ILNBLNK
243
244 C !OUTPUT PARAMETERS:
245 C string :: Machine identifier
246 CHARACTER*(*) string
247
248 C !LOCAL VARIABLES:
249 C iFirst, iLast, :: String indexing temps.
250 C iEnd, iFree, idSize
251 C strTmp, idString :: Temps. for strings.
252 INTEGER iFirst
253 INTEGER iLast
254 INTEGER iEnd
255 INTEGER iFree
256 INTEGER idSize
257 CHARACTER*1024 strTmp
258 CHARACTER*1024 idString
259 CEOP
260
261 strTmp = 'UNKNOWN'
262 iFree = 1
263 idSize = LEN(string)
264 #if (defined (TARGET_T3E) || defined (TARGET_CRAY_VECTOR))
265 IFirst = 0
266 CALL PXFGETENV('USER',iFirst,strTmp,ILast,Iend )
267 #else
268 CALL GETENV('USER',strTmp )
269 #endif
270 IF ( strTmp .NE. ' ' ) THEN
271 iFirst = IFNBLNK(strTmp)
272 iLast = ILNBLNK(strTmp)
273 iEnd = iLast-iFirst+1
274 IF (iEnd .GE. 0 ) THEN
275 idString(iFree:) = strTmp(iFirst:iFirst+iEnd)
276 ENDIF
277 iFree = iFree+iEnd+1
278 IF ( iFree .LE. idSize ) THEN
279 idString(iFree:iFree) = '@'
280 iFree = iFree+1
281 ENDIF
282 ENDIF
283 strTmp = 'UNKNOWN'
284 #if (defined (TARGET_T3E) || defined (TARGET_CRAY_VECTOR))
285 IFirst = 0
286 CALL PXFGETENV('HOST',iFirst,strTmp,ILast,Iend )
287 #else
288 CALL GETENV('HOST',strTmp )
289 #endif
290 IF ( strTmp .NE. ' ' ) THEN
291 iFirst = IFNBLNK(strTmp)
292 iLast = ILNBLNK(strTmp)
293 iEnd = iLast-iFirst+1
294 iEnd = MIN(iEnd,idSize-iFree)
295 iEnd = iEnd-1
296 IF (iEnd .GE. 0 ) THEN
297 idString(iFree:) = strTmp(iFirst:iFirst+iEnd)
298 ENDIF
299 iFree = iFree+iEnd+1
300 ENDIF
301 C
302 string = idString
303 C
304 1000 CONTINUE
305 RETURN
306 END
307
308 CBOP
309 C !ROUTINE: UCASE
310
311 C !INTERFACE:
312 SUBROUTINE UCASE ( string )
313 IMPLICIT NONE
314
315 C !DESCRIPTION:
316 C Translate string to upper case.
317
318 C !INPUT/OUTPUT PARAMETERS:
319 CHARACTER*(*) string
320
321 C !LOCAL VARIABLES:
322 CHARACTER*26 LOWER
323 DATA LOWER /'abcdefghijklmnopqrstuvwxyz'/
324 SAVE LOWER
325 CHARACTER*26 UPPER
326 DATA UPPER /'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
327 SAVE UPPER
328 INTEGER I, L
329 CEOP
330
331 C
332 DO 10 I = 1, LEN(string)
333 L = INDEX(LOWER,string(I:I))
334 IF ( L .EQ. 0 ) GOTO 10
335 string(I:I) = UPPER(L:L)
336 10 CONTINUE
337 C
338 RETURN
339 END
340 C************************************************************************

  ViewVC Help
Powered by ViewVC 1.1.22