|
|
1.1 ! root 1: program taptst ! 2: C ! 3: C Test the tape I/O routines ! 4: C ! 5: C ierr = topen (tlu, name, labelled) ! 6: C ierr = tclose (tlu) ! 7: C nbytes = tread (tlu, buffer) ! 8: C nbytes = twrite (tlu, buffer) ! 9: C ierr = trewin (tlu) ! 10: C ierr = tskipf (tlu, nfiles, nrecs) ! 11: C ierr = tstate (tlu, fileno, recno, err, eof, eot, tcsr) ! 12: C ! 13: character*20 devnam ! 14: integer topen, tclose, twrite, trewin, tskipf, tstate ! 15: logical labled, errf, eoff, eotf ! 16: integer tlu, file, rec, tcsr ! 17: character*256 outbuf ! 18: ! 19: if (iargc() .ge. 1) then ! 20: do 100 i = 1, iargc() ! 21: call getarg (i, outbuf) ! 22: if (outbuf(:5) .eq. '/dev/') devnam = outbuf ! 23: if (outbuf(:3) .eq. 'lab') labled = .true. ! 24: 100 continue ! 25: else ! 26: devnam = '/dev/rnmt0.1600' ! 27: labled = .false. ! 28: endif ! 29: ! 30: tlu = 3 ! 31: ! 32: write(*,*) 'tstate before open ...' ! 33: ierr = tstate(tlu, file, rec, errf, eoff, eotf, tcsr) ! 34: if (ierr .ge. 0) then ! 35: write(*,*) 'tstate: file', file, 'rec', rec, ! 36: + 'err', errf, 'eof', eoff, 'eot', eotf ! 37: write(*,'("tcsr: ", 8ri6.6)') tcsr ! 38: else ! 39: call perror('tstate') ! 40: endif ! 41: ! 42: write(*,*) '\ntopen', devnam, ' labelled =', labled ! 43: ierr = topen(tlu, devnam, labled) ! 44: if (ierr .lt. 0) then ! 45: call perror('topen') ! 46: stop ! 47: endif ! 48: ! 49: write(*,*) '\ntwrite 4 records of 256 bytes each ...' ! 50: do 120 i = 1, 4 ! 51: do 110 j = 1, 256 ! 52: outbuf(j:j) = char(i + 16) ! 53: 110 continue ! 54: ! 55: ierr = twrite(tlu, outbuf) ! 56: if (ierr .ne. 256) then ! 57: call perror('twrite') ! 58: endif ! 59: 120 continue ! 60: ! 61: write(*,*) '\nrewinding ...' ! 62: ierr = trewin(tlu) ! 63: if (ierr .lt. 0) then ! 64: call perror('trewin') ! 65: ierr = tclose(tlu) ! 66: ierr = topen(tlu, devnam, labled) ! 67: endif ! 68: ! 69: write(*,*) '\ntread and dump ...' ! 70: call scanf(tlu) ! 71: ! 72: write(*,*) '\nrewinding ...' ! 73: ierr = trewin(tlu) ! 74: if (ierr .lt. 0) then ! 75: call perror('trewin') ! 76: ierr = tclose(tlu) ! 77: ierr = topen(tlu, devnam, labled) ! 78: endif ! 79: ! 80: write(*,*) '\ntskip 2 records ...' ! 81: ierr = tskipf(tlu, 0, 2) ! 82: if (ierr .lt. 0) then ! 83: call perror('tskipf') ! 84: endif ! 85: ! 86: write(*,*) '\ntread & dump ...' ! 87: call scanf(tlu) ! 88: ! 89: write(*,*) '\ntrewind and tskip to EOT ...' ! 90: ierr = trewin(tlu) ! 91: ierr = tskipf(tlu, 100, 0) ! 92: ! 93: write(*,*) '\ntwrite 4 more records of 256 bytes each ...' ! 94: do 220 i = 1, 4 ! 95: do 210 j = 1, 256 ! 96: outbuf(j:j) = char(i + 32) ! 97: 210 continue ! 98: ! 99: ierr = twrite(tlu, outbuf) ! 100: if (ierr .ne. 256) then ! 101: call perror('twrite') ! 102: endif ! 103: 220 continue ! 104: ! 105: write(*,*) '\ntrewind and tskip to 1 file & 3 records ...' ! 106: ierr = trewin(tlu) ! 107: ierr = tskipf(tlu, 1, 3) ! 108: ! 109: write(*,*) '\ntread & dump ...' ! 110: call scanf(tlu) ! 111: ! 112: write(*,*) '\ntstate ...' ! 113: ierr = tstate(tlu, file, rec, errf, eoff, eotf, tcsr) ! 114: if (ierr .ge. 0) then ! 115: write(*,*) 'tstate: file', file, 'rec', rec, ! 116: + 'err', errf, 'eof', eoff, 'eot', eotf ! 117: write(*,'("tcsr: ", 8ri6.6)') tcsr ! 118: else ! 119: call perror('tstate') ! 120: endif ! 121: ! 122: write(*,*) '\ntclose ...' ! 123: ierr = tclose(tlu) ! 124: if (ierr .lt. 0) then ! 125: call perror('tclose') ! 126: endif ! 127: ! 128: write(*,*) '\ntstate after tclose ...' ! 129: ierr = tstate(tlu, file, rec, errf, eoff, eotf, tcsr) ! 130: if (ierr .ge. 0) then ! 131: write(*,*) 'tstate: file', file, 'rec', rec, ! 132: + 'err', errf, 'eof', eoff, 'eot', eotf ! 133: write(*,'("tcsr: ", 8ri6.6)') tcsr ! 134: else ! 135: call perror('tstate') ! 136: endif ! 137: ! 138: end ! 139: ! 140: subroutine scanf (tlu) ! 141: integer tlu ! 142: ! 143: integer tread, tstate ! 144: logical errf, eoff, eotf ! 145: integer file, rec, tcsr ! 146: character*10240 buffer ! 147: ! 148: C 100 nb = tread(tlu, buffer(:70)) ! 149: 100 nb = tread(tlu, buffer) ! 150: if (nb .gt. 0) then ! 151: ierr = tstate(tlu, file, rec, errf, eoff, eotf, tcsr) ! 152: if (ierr .lt. 0) then ! 153: call perror('tstate') ! 154: stop 'scanf' ! 155: endif ! 156: write(*,*) 'scanf: file', file+1, 'record', rec, ! 157: + 'length', nb ! 158: do 110 i = 1, nb, 16 ! 159: write(*, '(4x, $)') ! 160: nl = min0(nb, i + 15) ! 161: do 105 j = i, nl ! 162: ival = and(ichar(buffer(j:j)), 255) ! 163: write(*, '(su, 16r, i4.2, $)') ival ! 164: 105 continue ! 165: write(*,*) ! 166: 110 continue ! 167: write(*,*) ! 168: else if (nb .eq. 0) then ! 169: write(*,*) 'EOF' ! 170: return ! 171: else ! 172: call perror('tread') ! 173: stop 'scanf' ! 174: endif ! 175: ! 176: goto 100 ! 177: ! 178: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.