ZSYJKAA@WYOCDC1.BITNET (Jim Kirkpatrick 307 766-5303) (01/28/88)
I'm trying to write a labeled tape (not FOREIGN) using QIOW from a Fortran program. It all worked fine with FOREIGN tapes but I can't seem to make it work on labeled tapes. Here's what I'm doing -- 1. Issue a SYS$MOUNT to get the tape mounted. Should be similar to the DCL command MOUNT/DENSITY=1600 MU T01000 TAPE The tape gets mounted, and the status is SS$_NORMAL. 2. Issue a SYS$ASSIGN with logical name TAPE, returning CHAN. The status is again normal, and CHAN=144 usually (I would expect it to change from run to run, at least it's not zero, which is my point). 3. Issue a QIOW with CHAN, function is IO$_CREATE with modifiers IO$M_CREATE and IO$M_ACCESS; also a FIB containing the FIB$M_REWIND flag (I want to re-write the tape, not append to it), and a name descriptor containing the name A.A;1. This completes with normal status. 4. Finally I call QIOW to do a write virtual block. It fails with %SYSTEM-F-FILNOTACC, file not accessed on channel. The diagnostic messages manual simply tells me I've done something wrong and go fix it. TSC wasn't much help, I got the impression this was over their heads. Any ideas what I'm doing wrong? I didn't want to clutter the list with code segments, which are available on request. Other info -- TU78 drives, VMS 4.6, 2 8800s in a cluster. What I'm actually trying to do is write Versatec plot data in their VDS format to tape for plotting on an off-line Versatec RPM 850 plotting system. Thus I cannot allow RMS-type stuff in the tape blocks, such as 4 bytes describing the block size, nor 2 bytes describing the "record" size. I need complete control over the content of the blocks and QIOW _seems_ the way to go. I want to use labeled tapes (the 850 will accept foreign as well) to ensure the ops get the right tape mounted, and that I don't clobber a user tape in case the ops mount a wrong tape (I also don't want users reading the tapes, but protection is secondary to making it work at all). Help! (I'll post the resolution to the list if one is found) -------