/[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.4 - (show annotations) (download)
Wed Jun 10 21:38:29 1998 UTC (25 years, 10 months ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint11, checkpoint10, checkpoint13, checkpoint15, checkpoint14, checkpoint7, checkpoint9, checkpoint8, checkpoint12, branch-point-rdot
Branch point for: checkpoint7-4degree-ref, branch-rdot
Changes since 1.3: +1 -402 lines
 o Split the timer_*() out of utils.F to be a pain. 8-)
 o A minor change in a call to TIMER_INDEX() made.

1 C $Header: /u/gcmpack/models/MITgcmUV/eesupp/src/utils.F,v 1.3 1998/05/21 18:30:08 cnh Exp $
2
3 #include "CPP_EEOPTIONS.h"
4
5 C-- File utils.F: General purpose support routines
6 C-- Contents
7 C-- U DATE - Returns date and time.
8 C-- IFNBLNK - Returns index of first non-blank string character.
9 C-- ILNBLNK - Returns index of last non-blank string character.
10 C-- IO_ERRCOUNT - Reads IO error counter.
11 C-- LCASE - Translates to lower case.
12 C--UM MACHINE - Returns character string identifying computer.
13 C-- UCASE - Translates to upper case.
14 C-- Routines marked "M" contain specific machine dependent code.
15 C-- Routines marked "U" contain UNIX OS calls.
16
17 CStartOfInterface
18 SUBROUTINE DATE ( string , myThreadId )
19 C /==========================================================\
20 C | SUBROUTINE DATE |
21 C | o Return current date |
22 C \==========================================================/
23 #include "SIZE.h"
24 #include "EEPARAMS.h"
25 C
26 CHARACTER*(*) string
27 INTEGER myThreadId
28 CEndOfInterface
29 C
30 INTEGER lDate
31 CHARACTER*(MAX_LEN_MBUF) msgBuffer
32 C
33 lDate = 24
34 IF ( LEN(string) .LT. lDate ) GOTO 901
35 string = ' '
36 CALL FDATE( string )
37 C
38 1000 CONTINUE
39 RETURN
40 901 CONTINUE
41 WRITE(msgBuffer,'(A)')
42 &' '
43 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,SQUEEZE_RIGHT,myThreadId)
44 WRITE(msgBuffer,'(A)')
45 &'*** WARNING WARNING WARNING WARNING WARNING WARNING ***'
46 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,SQUEEZE_RIGHT,myThreadId)
47 WRITE(msgBuffer,'(A)')
48 &'procedure: "DATE".'
49 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,SQUEEZE_RIGHT,myThreadId)
50 WRITE(msgBuffer,'(A)')
51 &'Variable passed to S/R DATE is too small.'
52 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,SQUEEZE_RIGHT,myThreadId)
53 WRITE(msgBuffer,'(A)')
54 &' Argument must be at least',lDate,'characters long.'
55 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,SQUEEZE_RIGHT,myThreadId)
56 WRITE(msgBuffer,'(A)')
57 &'*******************************************************'
58 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,SQUEEZE_RIGHT,myThreadId)
59 GOTO 1000
60 END
61
62 CStartOfInterface
63 INTEGER FUNCTION IFNBLNK( string )
64 C /==========================================================\
65 C | FUNCTION IFNBLNK |
66 C | o Find first non-blank in character string. |
67 C \==========================================================/
68 C
69 CHARACTER*(*) string
70 CEndOfInterface
71 C
72 INTEGER L, LS
73 C
74 LS = LEN(string)
75 IFNBLNK = 0
76 DO 10 L = 1, LS
77 IF ( string(L:L) .EQ. ' ' ) GOTO 10
78 IFNBLNK = L
79 GOTO 11
80 10 CONTINUE
81 11 CONTINUE
82 C
83 RETURN
84 END
85
86 CStartOfInterface
87 INTEGER FUNCTION ILNBLNK( string )
88 C /==========================================================\
89 C | FUNCTION ILNBLNK |
90 C | o Find last non-blank in character string. |
91 C \==========================================================/
92 CHARACTER*(*) string
93 CEndOfInterface
94 INTEGER L, LS
95 C
96 LS = LEN(string)
97 ILNBLNK = LS
98 DO 10 L = LS, 1, -1
99 IF ( string(L:L) .EQ. ' ' ) GOTO 10
100 ILNBLNK = L
101 GOTO 11
102 10 CONTINUE
103 11 CONTINUE
104 C
105 RETURN
106 END
107
108 CStartofinterface
109 INTEGER FUNCTION IO_ERRCOUNT(myThid)
110 C /==========================================================\
111 C | FUNCTION IO_ERRCOUNT |
112 C | o Reads IO error counter. |
113 C \==========================================================/
114
115 C == Global variables ==
116 #include "SIZE.h"
117 #include "EEPARAMS.h"
118 #include "DFILE.h"
119
120 C == Routine arguments ==
121 INTEGER myThid
122 CEndofinterface
123
124 IO_ERRCOUNT = ioErrorCount(myThid)
125
126 RETURN
127 END
128
129 CStartOfInterface
130 SUBROUTINE LCASE ( string )
131 C /==========================================================\
132 C | SUBROUTINE LCASE |
133 C | o Convert character string to all lower case. |
134 C \==========================================================/
135 CHARACTER*(*) string
136 CEndOfInterface
137 CHARACTER*26 LOWER
138 DATA LOWER /'abcdefghijklmnopqrstuvwxyz'/
139 SAVE LOWER
140 CHARACTER*26 UPPER
141 DATA UPPER /'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
142 SAVE UPPER
143 INTEGER I, L
144 C
145 DO 10 I = 1, LEN(string)
146 L = INDEX(UPPER,string(I:I))
147 IF ( L .EQ. 0 ) GOTO 10
148 string(I:I) = LOWER(L:L)
149 10 CONTINUE
150 C
151 RETURN
152 END
153
154 CStartOfInterface
155 SUBROUTINE MACHINE ( string )
156 C /==========================================================\
157 C | SUBROUTINE MACHINE |
158 C | o Return computer identifier in string. |
159 C \==========================================================/
160 #include "SIZE.h"
161 #include "EEPARAMS.h"
162 CHARACTER*(*) string
163 CEndOfInterface
164 C
165 INTEGER IFNBLNK
166 INTEGER ILNBLNK
167 EXTERNAL IFNBLNK
168 EXTERNAL ILNBLNK
169 C
170 INTEGER iFirst
171 INTEGER iLast
172 INTEGER iEnd
173 INTEGER iFree
174 INTEGER idSize
175 CHARACTER*1024 strTmp
176 CHARACTER*1024 idString
177
178 strTmp = 'UNKNOWN'
179 iFree = 1
180 idSize = LEN(string)
181 CALL GETENV('USER',strTmp )
182 IF ( strTmp .NE. ' ' ) THEN
183 iFirst = IFNBLNK(strTmp)
184 iLast = ILNBLNK(strTmp)
185 iEnd = iLast-iFirst+1
186 IF (iEnd .GE. 0 ) THEN
187 idString(iFree:) = strTmp(iFirst:iFirst+iEnd)
188 ENDIF
189 iFree = iFree+iEnd+1
190 IF ( iFree .LE. idSize ) THEN
191 idString(iFree:iFree) = '@'
192 iFree = iFree+1
193 ENDIF
194 ENDIF
195 strTmp = 'UNKNOWN'
196 CALL GETENV('HOST',strtmp )
197 IF ( strTmp .NE. ' ' ) THEN
198 iFirst = IFNBLNK(strTmp)
199 iLast = ILNBLNK(strTmp)
200 iEnd = iLast-iFirst+1
201 iEnd = MIN(iEnd,idSize-iFree)
202 iEnd = iEnd-1
203 IF (iEnd .GE. 0 ) THEN
204 idString(iFree:) = strTmp(iFirst:iFirst+iEnd)
205 ENDIF
206 iFree = iFree+iEnd+1
207 ENDIF
208 C
209 string = idString
210 C
211 1000 CONTINUE
212 RETURN
213 END
214 C***********************************************************************
215 SUBROUTINE UCASE ( string )
216 C Translate string to upper case.
217 CHARACTER*(*) string
218 CHARACTER*26 LOWER
219 DATA LOWER /'abcdefghijklmnopqrstuvwxyz'/
220 SAVE LOWER
221 CHARACTER*26 UPPER
222 DATA UPPER /'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
223 SAVE UPPER
224 INTEGER I, L
225 C
226 DO 10 I = 1, LEN(string)
227 L = INDEX(LOWER,string(I:I))
228 IF ( L .EQ. 0 ) GOTO 10
229 string(I:I) = UPPER(L:L)
230 10 CONTINUE
231 C
232 RETURN
233 END
234 C************************************************************************

  ViewVC Help
Powered by ViewVC 1.1.22