/[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.16 - (show annotations) (download)
Sun Jan 19 14:33:43 2014 UTC (10 years, 4 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint65, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65o, checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, HEAD
Changes since 1.15: +22 -20 lines
remove unused labels

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

  ViewVC Help
Powered by ViewVC 1.1.22