|
|
1.1 ! root 1: C ! 2: C Copyright (c) 1980 Regents of the University of California. ! 3: C All rights reserved. The Berkeley software License Agreement ! 4: C specifies the terms and conditions for redistribution. ! 5: C ! 6: C @(#)ioinit.f 5.1 (Berkeley) 6/8/85 ! 7: C ! 8: C ! 9: C ioinit - initialize the I/O system ! 10: C ! 11: C synopsis: ! 12: C logical function ioinit (cctl, bzro, apnd, prefix, vrbose) ! 13: C logical cctl, bzro, apnd, vrbose ! 14: C character*(*) prefix ! 15: C ! 16: C where: ! 17: C cctl is .true. to turn on fortran-66 carriage control ! 18: C bzro is .true. to cause blank space to be zero on input ! 19: C apnd is .true. to open files at their end ! 20: C prefix is a string defining environment variables to ! 21: C be used to initialize logical units. ! 22: C vrbose is .true. if the caller wants output showing the lu association ! 23: C ! 24: C returns: ! 25: C .true. if all went well ! 26: C ! 27: C David L. Wasley ! 28: C U.C.Bekeley ! 29: C ! 30: logical function ioinit (cctl, bzro, apnd, prefix, vrbose) ! 31: logical cctl, bzro, apnd, vrbose ! 32: character*(*) prefix ! 33: ! 34: automatic iok, fenv, ienv, ename, fname, form, blank ! 35: logical iok, fenv, ienv ! 36: integer*2 ieof, ictl, izro ! 37: character form, blank ! 38: character*32 ename ! 39: character*256 fname ! 40: common /ioiflg/ ieof, ictl, izro ! 41: ! 42: if (cctl) then ! 43: ictl = 1 ! 44: form = 'p' ! 45: else ! 46: ictl = 0 ! 47: form = 'f' ! 48: endif ! 49: ! 50: if (bzro) then ! 51: izro = 1 ! 52: blank = 'z' ! 53: else ! 54: izro = 0 ! 55: blank = 'n' ! 56: endif ! 57: ! 58: open (unit=5, form=form, blank=blank) ! 59: open (unit=6, form=form, blank=blank) ! 60: ! 61: if (apnd) then ! 62: ieof = 1 ! 63: else ! 64: ieof = 0 ! 65: endif ! 66: ! 67: iok = .true. ! 68: fenv = .false. ! 69: ienv = .false. ! 70: lp = len (prefix) ! 71: ! 72: if ((lp .gt. 0) .and. (lp .le. 30) .and. (prefix .ne. " ")) then ! 73: ienv = .true. ! 74: nb = index (prefix, " ") ! 75: if (nb .eq. 0) nb = lp + 1 ! 76: ename = prefix ! 77: if (vrbose) write (0, 2002) ename(:nb-1) ! 78: do 200 lu = 0, 19 ! 79: write (ename(nb:), "(i2.2)") lu ! 80: call getenv (ename, fname) ! 81: if (fname .eq. " ") go to 200 ! 82: ! 83: open (unit=lu, file=fname, form='f', access='s', err=100) ! 84: if (vrbose) write (0, 2000) lu, fname(:lnblnk(fname)) ! 85: fenv = .true. ! 86: go to 200 ! 87: ! 88: 100 write (0, 2003) ename(:nb+1) ! 89: call perror (fname(:lnblnk(fname))) ! 90: iok = .false. ! 91: ! 92: 200 continue ! 93: endif ! 94: ! 95: if (vrbose) then ! 96: if (ienv .and. (.not. fenv)) write (0, 2001) ename(:nb-1) ! 97: write (0, 2004) cctl, bzro, apnd ! 98: call flush (0) ! 99: endif ! 100: ! 101: ioinit = iok ! 102: return ! 103: ! 104: 2000 format ('ioinit: logical unit ', i2,' opened to ', a) ! 105: 2001 format ('ioinit: no initialization found for ', a) ! 106: 2002 format ('ioinit: initializing from ', a, 'nn') ! 107: 2003 format ('ioinit: ', a, ' ', $) ! 108: 2004 format ('ioinit: cctl=', l, ', bzro=', l, ', apnd=', l) ! 109: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.