[mod.computers.vax] redirecting regis output

wpallen%watale%waterloo.CSNET@CSNET-RELAY.ARPA ("Warren P. Allen @ U of) (05/09/86)

I've been compiling and running some ISSCO/DISSPLA programs using the
      CALL REGIS(3,1) subroutine which sends the graphics output (REGIS)
to my vt241 terminal. 

I would like to capture these regis commands in a file but our release
of ISSCO subroutines does not allow this. The package does allow one
to create a meta file though, but this gets you no further ahead since
DISSPOP - the program to interpret the meta file - also does not include
the desired feature.

I've tried many experients in redirecting output including:

1. $ @comfile/out=regis.out         where: comfile=$ run issco_program

2. $ DEFINE FILE.NAME SYS$OUTPUT
   $ RUN ISSCO_PROGRAM

3. $ DEFINE/USER FILE.NAME FOR006


All three experiments yielded the same result: the TEXT diagnostic messages
were captured in the file, BUT NO REGIS COMMANDS.

The one experiment that DID work, was:

$SET HOST/LOG=FILE.NAME 0

which keeps a log of the entire login session. This file DID have the regis
commands in it.

My question is this: what does SET HOST 0 do that the other 3 methods don't?

Has anyone else tried anything like this?

regards, Warren

LEICHTER-JERRY@YALE.ARPA (05/11/86)

    I've been compiling and running some ISSCO/DISSPLA programs using the
    CALL REGIS(3,1) subroutine which sends the graphics output (REGIS) to
    my vt241 terminal. 

    I would like to capture these regis commands.

    [The author then indicates various methods he's tried to do this, of
	which only a SET HOST 0/LOG succeeded; otherwise, all the output
	kept ending up at the terminal.]
The terminal has a number of standard names.  The most common are SYS$OUTPUT:
and TT:.  However, others are possible, including SYS$ERROR:, FOR006 in
FORTRAN programs, and many, many more.  Programs have been known to use
SYS$COMMAND and even SYS$INPUT - neither of which is a good idea if you expect
to do output, though they do work.  The problem you've got is to determine
which of the many different names ISSCO/DISSPLA has used.  You've already
eliminated a couple - FOR006, SYS$OUTPUT, and TT, for example.  However, there
are many others to try.  You might want to try overriding ALL the various SYS$
logicals that normally point to the terminal, just to determine quickly if any
of them is relevant.  Or, try stepping through your program with the debugger
- catch calls to REGIS, then step along until something interesting happens.
Alternatively, build as small an EXE file that does REGIS output as you can -
it need not work - and look at it with an editor - the file name strings are
in there SOMEWHERE.

All of this may fail.  The program could be using a GETJPI call to determine
its controlling terminal's name, then opening that terminal.  If so, you could
set up a translation for the actual terminal name - try both the virtual and
physical names (VTAnnn or TTcnnn).  Even that may fail if the subroutine does
the open with translation inhibited.  In that case, you may have no alterna-
tive but to use SET HOST 0.

Another thing to try:  Run the program in BATCH.  If it works, fine; other-
wise, the error messages you get may provide a clue.

							-- Jerry
-------