99 |
ENDIF |
ENDIF |
100 |
ELSEIF ( pidIO .EQ. myProcId ) THEN |
ELSEIF ( pidIO .EQ. myProcId ) THEN |
101 |
C-- Write multi-process format |
C-- Write multi-process format |
102 |
|
C PRINT can be called by several threads simultaneously. |
103 |
|
C The write statement may need to ne marked as a critical section. |
104 |
#ifndef FMTFTN_IO_THREAD_SAFE |
#ifndef FMTFTN_IO_THREAD_SAFE |
105 |
|
# ifdef USE_OMP_THREADING |
106 |
|
C$OMP CRITICAL |
107 |
|
# else |
108 |
_BEGIN_CRIT(myThid) |
_BEGIN_CRIT(myThid) |
109 |
|
# endif |
110 |
#endif |
#endif |
111 |
WRITE(idString,'(I4.4,A,I4.4)') myProcId,'.',myThid |
WRITE(idString,'(I4.4,A,I4.4)') myProcId,'.',myThid |
|
#ifndef FMTFTN_IO_THREAD_SAFE |
|
|
_END_CRIT(myThid) |
|
|
#endif |
|
112 |
IF ( message .EQ. ' ' ) THEN |
IF ( message .EQ. ' ' ) THEN |
113 |
C PRINT can be called by several threads simultaneously. |
WRITE(unit,'(A,A,A,A,A,A)',ERR=999) |
|
C The write statement may need to ne marked as a critical section. |
|
|
#ifndef FMTFTN_IO_THREAD_SAFE |
|
|
_BEGIN_CRIT(myThid) |
|
|
#endif |
|
|
WRITE(unit,'(A,A,A,A,A,A)',ERR=999) |
|
114 |
& '(',PROCESS_HEADER,' ',idString,')',' ' |
& '(',PROCESS_HEADER,' ',idString,')',' ' |
|
#ifndef FMTFTN_IO_THREAD_SAFE |
|
|
_END_CRIT(myThid) |
|
|
#endif |
|
115 |
ELSE |
ELSE |
116 |
|
WRITE(unit,'(A,A,A,A,A,A,A)',ERR=999) |
117 |
|
& '(',PROCESS_HEADER,' ',idString,')',' ',message(iStart:iEnd) |
118 |
|
ENDIF |
119 |
|
GOTO 1000 |
120 |
|
999 CONTINUE |
121 |
|
ioErrorCount(myThid) = ioErrorCount(myThid)+1 |
122 |
|
1000 CONTINUE |
123 |
#ifndef FMTFTN_IO_THREAD_SAFE |
#ifndef FMTFTN_IO_THREAD_SAFE |
124 |
_BEGIN_CRIT(myThid) |
# ifdef USE_OMP_THREADING |
125 |
#endif |
C$OMP END CRITICAL |
126 |
WRITE(unit,'(A,A,A,A,A,A,A)',ERR=999) |
# else |
127 |
& '(',PROCESS_HEADER,' ',idString(1:ILNBLNK(idString)),')',' ', |
_END_CRIT(myThid) |
128 |
& message(iStart:iEnd) |
# endif |
|
#ifndef FMTFTN_IO_THREAD_SAFE |
|
|
_END_CRIT(myThid) |
|
129 |
#endif |
#endif |
|
ENDIF |
|
130 |
ENDIF |
ENDIF |
131 |
|
|
132 |
#ifndef DISABLE_WRITE_TO_UNIT_ZERO |
#ifndef DISABLE_WRITE_TO_UNIT_ZERO |
133 |
C-- if error message, also write directly to unit 0 : |
C-- if error message, also write directly to unit 0 : |
134 |
IF ( numberOfProcs .EQ. 1 .AND. nThreads .EQ. 1 |
IF ( numberOfProcs .EQ. 1 .AND. myThid .EQ. 1 |
135 |
& .AND. unit.EQ.errorMessageUnit ) THEN |
& .AND. unit.EQ.errorMessageUnit |
136 |
iEnd = ILNBLNK( message ) |
& .AND. message .NE. ' ' ) THEN |
137 |
IF (iEnd.NE.0) WRITE(0,'(A)') message(1:iEnd) |
IF ( nThreads.LE.1 ) THEN |
138 |
|
WRITE(0,'(A)') message(iStart:iEnd) |
139 |
|
ELSE |
140 |
|
WRITE(0,'(A,I4.4,A,A)') '(TID ', myThid, ') ', |
141 |
|
& message(iStart:iEnd) |
142 |
|
ENDIF |
143 |
ENDIF |
ENDIF |
144 |
#endif |
#endif |
|
C |
|
|
1000 CONTINUE |
|
|
RETURN |
|
|
999 CONTINUE |
|
|
ioErrorCount(myThid) = ioErrorCount(myThid)+1 |
|
|
GOTO 1000 |
|
145 |
|
|
146 |
|
RETURN |
147 |
END |
END |
148 |
|
|
149 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
229 |
WRITE(idString,'(I4.4,A,I4.4)') myProcId,'.',myThid |
WRITE(idString,'(I4.4,A,I4.4)') myProcId,'.',myThid |
230 |
|
|
231 |
IF ( iEnd.EQ.0 ) THEN |
IF ( iEnd.EQ.0 ) THEN |
232 |
c WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)',ERR=999) |
WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)',ERR=999) |
|
WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)') |
|
233 |
& '(',PROCESS_HEADER,idString,')',ERROR_HEADER,' ', |
& '(',PROCESS_HEADER,idString,')',ERROR_HEADER,' ', |
234 |
& ' ' |
& ' ' |
235 |
ELSE |
ELSE |
236 |
c WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)',ERR=999) |
WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)',ERR=999) |
|
WRITE(errorMessageUnit,'(A,A,1X,A,A,A,A,A)') |
|
237 |
& '(',PROCESS_HEADER,idString,')',ERROR_HEADER,' ', |
& '(',PROCESS_HEADER,idString,')',ERROR_HEADER,' ', |
238 |
& message(1:iEnd) |
& message(1:iEnd) |
239 |
c & message(iStart:iEnd) |
c & message(iStart:iEnd) |
240 |
ENDIF |
ENDIF |
241 |
ENDIF |
ENDIF |
242 |
|
GOTO 1000 |
243 |
|
999 CONTINUE |
244 |
|
ioErrorCount(myThid) = ioErrorCount(myThid)+1 |
245 |
|
1000 CONTINUE |
246 |
|
|
247 |
#ifndef DISABLE_WRITE_TO_UNIT_ZERO |
#ifndef DISABLE_WRITE_TO_UNIT_ZERO |
248 |
C-- also write directly to unit 0 : |
C-- also write directly to unit 0 : |
265 |
#endif |
#endif |
266 |
ENDIF |
ENDIF |
267 |
|
|
|
1000 CONTINUE |
|
268 |
RETURN |
RETURN |
|
|
|
|
c 999 CONTINUE |
|
|
c ioErrorCount(myThid) = ioErrorCount(myThid)+1 |
|
|
c GOTO 1000 |
|
269 |
END |
END |
270 |
|
|
271 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |