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)
subroutine strace(IENT, SUBNAM)
real(sp), dimension(:,:), allocatable, target s
subroutine msgerr(LEV, STRING)