[net.lang.f77] Reading raw characters under VMS from fortran

arnold@gatech.UUCP (Arnold D. Robbins) (02/03/84)

My brother is an electrical engineer working on a VAX running VMS (3.4, he
thinks), at a company not on the net.  He is using Fortran.  He has a device
on the same line as his terminal.  He would like to be able to tell the vax
"here comes some raw data, do no processing on it", then flip a switch and
have the device dump into the vax.  The idea is to get VMS to ignore control
characters, etc.  If he had a function a la getch(c) which would return the
raw characters to his fortran program, he would be satisfied.

I am posting this to unix-wizards in the hope that some of you who have vaxen
running both os's (to be pitied, but that is not the point) are also VMS
wizards.  I am also posting to lang.f77 since he's working in fortran.

Essentially, he needs the equivalent of "stty raw" under VMS.  Please reply
to me, and I will send him any responses.  ALL help is appreciated.

Of course, he should be running Unix, but their vax doesn't have enough
memory either (only .5 meg).  It seems that their management is penny wise and
pound foolish......

Thanks in advance,
-- 
Arnold Robbins
CSNET: arnold@gatech		ARPA: arnold.gatech@CSNet-relay
UUCP:	...!{akgua,allegra,rlgvax,sb1,ut-sally}!gatech!arnold

Did'ja ever have one of those re-incarnations?

leichter@yale-com.UUCP (Jerry Leichter) (02/06/84)

The literal equivalent of stty raw for VMS is SET TERMINAL/PASSALL; to
turn the terminal back to normal mode again, use SET TERMINAL/NOPASSALL.
(INTERACTIVE is equivalent to NOPASSALL).  Often the easiest way to do
this is to build a command procedure to do the SET TERMINAL's, and call
up the progra.

Note that a terminal in PASSALL mode is STILL "record oriented"; it will
not necessarily return stuff a byte at a time.

A program can set the terminal to PASSALL mode directly, and further it
can do it on an I/O-request at a time basis - except for "immediate-
action" characters, like CTRL/Y - since VMS has a true full-duplex characters;
no interpretation (except for immediate action - technically "out of band"
characters) gets done until the program tries to read them.

It isn't hard, though it is quite tricky if you've never done that sort
of stuff before, to do the required QIO calls, either in MACRO or directly
from FORTRAN.  Or, you can actually get the code to do it out of the
DECUS C support library (function kbin() in VAXLIB, the VAX-11C compatibility
library).  kbin() doesn't do PASSALL manipulation, but that would be easy
to change.
							-- Jerry