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 -------