31 REAL FUNCTION DTTIME (INTTIM)
119 INTEGER idymon(12), iyear, iyrm1, idnow, i, ii
124 LOGICAL leapyr, logref
144 DATA idymon /31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31/
145 DATA logref /.false./
149 leapyr=(mod(iyear,4) == 0 .AND. mod(iyear,100) /= 0) .OR. &
152 IF(inttim(2) > 12)
THEN 153 WRITE (
printf, 8) inttim(2), (inttim(ii), ii=1,6)
154 8
FORMAT (
' erroneous month ', i2,
' in date/time ', 6i4)
155 ELSE IF(inttim(2) > 1)
THEN 156 DO 10 i = 1,inttim(2)-1
157 idnow=idnow+idymon(i)
160 idnow=idnow+inttim(3)
161 IF(leapyr .AND. inttim(2) > 2) idnow=idnow+1
162 idnow = idnow + iyear*365 + iyrm1/4 - iyrm1/100 + iyrm1/1000 + 1
163 IF(iyear == 0) idnow=idnow-1
171 dttime =
dttime + 3600.*real(inttim(4)) + 60.*real(inttim(5)) +
177 SUBROUTINE inar2d (ARR, MGA, &
284 INTEGER IDFM, IDLA, MGA, NDSD, NDSL, NHED, NHEDF
309 INTEGER IERR, IENT, IOERR, IH, IX, IY, NUMFIL
332 CALL STRACE (IENT,
'INAR2D')
334 999
IF(ndsd < 0)
RETURN 347 11
IF (nhed.GT.0)
THEN 350 WRITE (
printf,
'(I3,A)') nhed,
' Heading lines' 356 READ (ndsd,
'(A80)', end=910) hedlin
357 IF (ih.EQ.1)
WRITE (
printf,
'(A)')
' ** Heading lines **' 358 WRITE (
printf,
'(A4,A80)')
' -> ', hedlin
366 arr(ig) = arr(ig) / vfac
371 READ(ndsd, end=910, err=920, iostat=ierr) (arr(ig), ig=1,mga)
380 IF (numfil .GE. 2)
GO TO 911
382 READ (ndsl,
'(A)', end=930)
filenm 395 2
IF (nhedf.GT.0)
THEN 397 IF (
itest.GE.30)
WRITE (
printf,
'(I3,A,A)') nhedf, &
398 ' Heading lines at begin of file ', trim(
filenm)
403 WRITE (
printf,
'(A,A,A)')
' ** Heading lines file ', &
406 READ (ndsd,
'(A80)') hedlin
407 WRITE (
printf,
'(A4,A80)')
' -> ', hedlin
424 INQUIRE (unit=ndsd, name=
filenm)
425 CALL msgerr (2,
'Unexpected end of file while reading '// &
435 INQUIRE (unit=ndsd, name=
filenm)
436 CALL msgerr (2,
'Error while reading file '//trim(
filenm))
438 922
FORMAT (
' i/o status ', i6)
445 arr(ig) = arr(ig) * vfac
448 990
IF (
itest.GE.100 .OR. idla.LT.0)
THEN 459 INQUIRE (unit=ndsl, name=
filenm)
460 CALL msgerr (2,
'Series of input files ended in '//trim(
filenm))
467 SUBROUTINE strace (IENT, SUBNAM)
542 CHARACTER SUBNAM *(*)
575 10
FORMAT (
' ++ trace subr: ',a)
581 SUBROUTINE msgerr (LEV,STRING)
668 INTEGER,
SAVE :: IERR=0, ierrf=0
673 CHARACTER (LEN=17) :: ERRM
677 CHARACTER (LEN=LENFNM),
SAVE :: ERRFNM =
'Errfile' 697 ELSE IF(lev == 1)
THEN 699 ELSE IF(lev == 2)
THEN 701 ELSE IF(lev == 3)
THEN 702 errm =
'Severe error ' 704 errm =
'Terminating error' 706 WRITE (
printf,12) errm, string
707 12
FORMAT (
' ** ', a,
': ',a)
716 ilpos = index( errfnm,
' ' )-1
717 WRITE(errfnm(ilpos+1:ilpos+4),13)
inode 722 OPEN (unit=ierrf, file=errfnm, form=
'FORMATTED')
724 WRITE (ierrf,14) errm, string
725 14
FORMAT (a,
': ',a)
820 CALL strace (ient,
'STPNOW')
834 SUBROUTINE for (IUNIT, DDNAME, SF, IOSTAT)
923 INTEGER IUNIT, IOSTAT
924 CHARACTER DDNAME*(LENFNM), SF*2
942 INTEGER IESUCC, IENUNF, IEUNBD, IENODD, &
943 IEDDNM, IEEXST, IEOPEN, IESTAT, IENSCR
944 PARAMETER (IESUCC= 0,ienunf= -1,ieunbd= -2,ienodd= -3, &
945 ieddnm= -4,ieexst= -5,ieopen= -6,iestat= -7, &
951 PARAMETER (EMPTY=
' ')
963 INTEGER IENT, IFO, IFUN, II, IOSTTM, IS, IUTTM
968 LOGICAL EXIST, OPENED
977 CHARACTER S, F, FILTTM *(LENFNM), DDNAME_L *(LENFNM)
978 CHARACTER *11 FISTAT(4),FORM(2)
1023 DATA fistat(1),fistat(2) /
'OLD',
'NEW'/ &
1024 fistat(3),fistat(4) /
'SCRATCH',
'UNKNOWN'/ &
1025 form(1),form(2) /
'FORMATTED',
'UNFORMATTED'/
1027 DATA ient /0/, ifun /0/
1028 CALL strace (ient,
'FOR')
1030 IF(
itest >= 80)
WRITE (
prtest, 2) iunit, ddname, sf, iostat
1031 2
FORMAT (
' Entry FOR: ', i3, 1x, a36, a2, i7)
1036 IF((iunit /= 0) .AND. ((iunit <
iunmin) .OR. (iunit >
iunmax)))
THEN 1037 IF(iostat > -2)
CALL msgerr (3,
'Unit number out of range')
1044 is = index(
'ONSU',s)
1046 IF((is == 0) .OR. (ifo == 0))
THEN 1047 IF(iostat > -2)
CALL msgerr (3,
'Error in file qualifiers')
1052 IF((s ==
'S') .AND. (ddname /= empty))
THEN 1053 IF(iostat > -2)
CALL msgerr (3,
'Named scratch file')
1058 IF(ddname /= empty)
THEN 1060 DO ii = 1, len(ddname)
1066 IF(ddname == empty)
THEN 1067 IF(iostat > -1)
CALL msgerr (3,
'No filename given')
1072 INQUIRE (file=ddname, iostat=iosttm, exist=exist, &
1073 opened=opened, number=iuttm)
1074 IF(iosttm /= iesucc)
THEN 1076 CALL msgerr (2,
'Inquire failed, filename: '//ddname_l)
1081 IF(is == 1 .AND. .NOT. exist)
THEN 1082 CALL msgerr (4,
'File cannot be opened/does not exist: '//ddname_l
1087 CALL msgerr (2,
'File is already opened: '//ddname_l)
1099 IF(iunit >
funhi)
THEN 1100 IF(iostat > -2)
CALL msgerr (3,
'All free units used')
1104 OPEN (unit=iunit,err=999,iostat=iosttm,file=ddname, &
1108 status=fistat(is),access=
'SEQUENTIAL',form=form(ifo))
1110 INQUIRE (unit=iunit, name=filttm, iostat=iosttm, &
1111 exist=exist, opened=opened)
1112 IF(iosttm /= iesucc)
THEN 1114 CALL msgerr (2,
'Inquire failed, filename: '//filttm)
1120 CALL msgerr (1,
'File is already opened, filename: '//filttm)
1122 IF(filttm /= ddname .AND. filttm /= empty)
THEN 1124 WRITE (
printf,
'(A, I4, 6A)')
' unit', iunit, &
1125 ' filenames: ', filttm,
' and: ', ddname
1126 CALL msgerr (2,
'filename and unit number inconsistent')
1131 OPEN (unit=iunit,err=999,iostat=iosttm,status=fistat(is), &
1135 file=ddname,access=
'SEQUENTIAL',form=form(ifo))
1136 IF(iosttm /= iesucc) iostat = iosttm
1142 IF(ddname /= empty)
THEN 1143 OPEN (unit=iunit,err=999,iostat=iosttm,status=fistat(is), &
1147 file=ddname,access=
'SEQUENTIAL',form=form(ifo))
1149 OPEN (unit=iunit,err=999,iostat=iosttm,status=fistat(is), &
1153 access=
'SEQUENTIAL',form=form(ifo))
1157 80
IF(
itest >= 30)
WRITE (
printf, 82) iunit, ddname, sf
1158 82
FORMAT (
' File opened: ', i6, 2x, a36, 2x, a2)
1163 999
IF(iostat > -2)
THEN 1164 CALL msgerr (3,
'File open failed, filename: '//ddname_l)
1165 WRITE (
printf,15) ddname, iosttm, sf
1166 15
FORMAT (
' File -> ', a36, 2x,
' IOSTAT=', i6, 4x, a2)
1176 LOGICAL FUNCTION eqreal (REAL1, REAL2 )
1291 CALL strace(ient,
'EQREAL')
1294 eps = epsilon(real1)*abs(real1-real2)
1295 IF (eps ==0) eps = tiny(real1)
1296 IF (abs(real1-real2) .GT. tiny(real1))
THEN 1297 IF (abs(real1-real2) .LT. eps)
eqreal = .true.
1305 SUBROUTINE dtreti (TSTRNG, IOPT, TIMESC)
1364 CHARACTER TSTRNG *(*)
1393 CALL dtstti (iopt, tstrng, itime)
1394 timesc = dttime(itime)
character(len=lenfnm) filenm
subroutine strace(IENT, SUBNAM)
real function dttime(INTTIM)
logical function eqreal(REAL1, REAL2)
logical function stpnow()
subroutine msgerr(LEV, STRING)
subroutine for(IUNIT, DDNAME, SF, IOSTAT)
subroutine dtstti(IOPT, TIMSTR, DTTIME)
subroutine dtreti(TSTRNG, IOPT, TIMESC)
subroutine inar2d(ARR, MGA, NDSL, NDSD, IDFM, RFORM, IDLA, VFAC, NHED, NHEDF)