Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site ucbvax.ARPA Path: utzoo!watmath!clyde!burl!ulysses!ucbvax!info-vax From: info-vax@ucbvax.ARPA Newsgroups: fa.info-vax Subject: Re: VMS RMS Message-ID: <5887@ucbvax.ARPA> Date: Fri, 29-Mar-85 14:10:03 EST Article-I.D.: ucbvax.5887 Posted: Fri Mar 29 14:10:03 1985 Date-Received: Sat, 30-Mar-85 01:35:41 EST Sender: daemon@ucbvax.ARPA Organization: University of California at Berkeley Lines: 36 From: geacc022%timevx@cit-hamlet.arpa >>Is there a way to tell VMS to treat normal SYS$INPUT, SYS$OUTPUT and >>SYS$ERROR as one character block sequential device so that a $GET >>and a $PUT of one character gets the character(s) typed and does not >>wait until EOL or control characters are typed. >Use "QIO" instead of "QIOW". It will stop reading when enough characters >have been read. Wrong! $QIO waits for no man -- it returns immediately after queueing the I/O request. (It's used for asyncronous I/O; presumably you use an event flag or a nASTy routine to detect I/O completion.) $QIOW is simply a $QIO followed by a $WAITFR. You can get RMS to do this, but not with the $GET service -- you must use the $READ service (specifying the BIO bit in the FAB's FAC and the RAB's ROP). Specify that you have a one-byte buffer and things will work. The RNE and RNF bits in the ROP field are ignored, but you say the terminal is already set /NOECHO/PASSALL, so that's OK. (RNE = read no echo; RNF = read no filter). When I looked at how our library here does it, we use $QIOWs with the terminator set set to -1's (every character is end of line). It can also be done by reading into a 1-byte buffer. Caveat: We're still running VMS 3.6 here; but I can't imagine things have changed all that much for V4. (although I hope they fixed it so the RNE/RNF bits are processed by $READ). Gary Ansok GEACC022%TIMEVX @ HAMLET GEA @ CALTECH.BITNET ...ucbvax!cithep!timevx#geacc022 "All the world loves a straight man."