/[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.6 - (show annotations) (download)
Tue May 18 17:39:22 1999 UTC (25 years ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint22, checkpoint23, checkpoint24
Changes since 1.5: +8 -2 lines
Added IMPLICIT NONE where missing and changed formatting from 'I' to 'I5'.

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

  ViewVC Help
Powered by ViewVC 1.1.22