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

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

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


Revision 1.4 - (hide annotations) (download)
Wed Jun 10 21:38:29 1998 UTC (26 years 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 adcroft 1.4 C $Header: /u/gcmpack/models/MITgcmUV/eesupp/src/utils.F,v 1.3 1998/05/21 18:30:08 cnh Exp $
2 cnh 1.1
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 cnh 1.3 C-- IO_ERRCOUNT - Reads IO error counter.
11 cnh 1.1 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 cnh 1.3 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 cnh 1.1 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