|
|
1.1 ! root 1: .TI F77/TP_EX1.F "Sep. 15, 1984" ! 2: ! 3: .nf ! 4: .po 0 ! 5: c sample program to illustrate reading unblocked tape ! 6: c ! 7: c this reads an unblocked tape (80 char/record). ! 8: c it reads col 1-5 and 6-10 as integer fields ! 9: c into ix1 and ix2 and prints them out. ! 10: ! 11: integer tlu ! 12: character*80 rec ! 13: logical eof ! 14: ! 15: nmrecs = 0 ! 16: ! 17: tlu = 1 ! 18: call tpopen( tlu, .false., .false. ) ! 19: ! 20: 10 call getrec( tlu, rec, eof ) ! 21: if( eof ) go to 900 ! 22: nmrecs = nmrecs + 1 ! 23: ! 24: read ( rec, 8100 ) ix1, ix2 ! 25: 8100 format( 2i5 ) ! 26: ! 27: print 8110, ix1, ix2 ! 28: 8110 format( 1x,2i5 ) ! 29: go to 10 ! 30: ! 31: 900 continue ! 32: end ! 33: c ------------------------------ getrec() ------------------------- ! 34: subroutine getrec( tlu, record, eof ) ! 35: integer tlu ! 36: character record*(*) ! 37: logical eof ! 38: ! 39: c getrec() returns in the character variable 'record' ! 40: c the next record on the tape ! 41: c parameters: ! 42: c tlu - the "tape logical unit" as described in ! 43: c "man 3f topen". getrec() assumes topen() ! 44: c was called by the calling program. ! 45: c record - buffer in which the record is returned ! 46: c eof - set to .true. after all records read. ! 47: ! 48: integer tread ! 49: ! 50: nbytes = tread(tlu, record) ! 51: if(nbytes .eq. 0 ) then ! 52: eof = .true. ! 53: return ! 54: else if(nbytes.lt.0) then ! 55: call perror("getrec:") ! 56: call tperr("tread() error:", nbytes) ! 57: else if(nbytes.ne.len(record)) then ! 58: call tperr("tread() error, wrong # of bytes read:", ! 59: . nbytes) ! 60: endif ! 61: ! 62: eof = .false. ! 63: return ! 64: end ! 65: c ------------------------------ tperr() -------------------------- ! 66: subroutine tperr( string, value ) ! 67: character string*(*) ! 68: integer value ! 69: ! 70: write( 0, 8000 ) string, value ! 71: 8000 format("tape I/O error: ",a,i6) ! 72: call exit(1) ! 73: end ! 74: c ------------------------------ tpopen() ------------------------- ! 75: subroutine tpopen( tlu, label, rew ) ! 76: integer tlu ! 77: logical label, rew ! 78: ! 79: c open tape logical unit 'tlu' to device named in ! 80: c environment variable 'tape1'. ! 81: c 'label' is an input parameter which is .true. for ! 82: c labeled tapes. ! 83: c if 'rew' is .true., tape is rewound by tpopen(). ! 84: ! 85: character tpdev*50 ! 86: integer retcde, topen, trewin ! 87: ! 88: call getenv( 'tape1', tpdev ) ! 89: if(tpdev .eq. ' ') call tperr("tape1 = ' '", 0 ) ! 90: ! 91: retcde = topen(tlu, tpdev(:lnblnk(tpdev)), label ) ! 92: if(retcde .ne. 0) then ! 93: call perror("tpopen") ! 94: call tperr("topen() failed, error:", retcde) ! 95: endif ! 96: ! 97: if(rew) then ! 98: retcde = trewin( tlu ) ! 99: if(retcde .ne. 0) then ! 100: call perror("tpopen") ! 101: call tperr("trewin() failed, error:", retcde) ! 102: endif ! 103: endif ! 104: ! 105: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.