/[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.6 - (hide 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 adcroft 1.6 C $Header: /u/gcmpack/models/MITgcmUV/eesupp/src/utils.F,v 1.5 1998/10/28 03:11:35 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 adcroft 1.6 IMPLICIT NONE
24 cnh 1.1 #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 cnh 1.5 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,
45     &SQUEEZE_RIGHT,myThreadId)
46 cnh 1.1 WRITE(msgBuffer,'(A)')
47     &'*** WARNING WARNING WARNING WARNING WARNING WARNING ***'
48 cnh 1.5 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,
49     &SQUEEZE_RIGHT,myThreadId)
50 cnh 1.1 WRITE(msgBuffer,'(A)')
51     &'procedure: "DATE".'
52 cnh 1.5 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,
53     &SQUEEZE_RIGHT,myThreadId)
54 cnh 1.1 WRITE(msgBuffer,'(A)')
55     &'Variable passed to S/R DATE is too small.'
56 cnh 1.5 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,
57     &SQUEEZE_RIGHT,myThreadId)
58 cnh 1.1 WRITE(msgBuffer,'(A)')
59     &' Argument must be at least',lDate,'characters long.'
60 cnh 1.5 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,
61     &SQUEEZE_RIGHT,myThreadId)
62 cnh 1.1 WRITE(msgBuffer,'(A)')
63     &'*******************************************************'
64 cnh 1.5 CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit,
65     &SQUEEZE_RIGHT,myThreadId)
66 cnh 1.1 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 adcroft 1.6 IMPLICIT NONE
76 cnh 1.1 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 adcroft 1.6 IMPLICIT NONE
101 cnh 1.1 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 cnh 1.3 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 adcroft 1.6 IMPLICIT NONE
124 cnh 1.3 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 cnh 1.1 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 adcroft 1.6 IMPLICIT NONE
145 cnh 1.1 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 adcroft 1.6 IMPLICIT NONE
171 cnh 1.1 #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 adcroft 1.6 IMPLICIT NONE
228 cnh 1.1 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