cbeshers@ccnfld.UUCP (Cliff Beshers) (10/24/84)
I and my cohorts have done some research on this topic. As far as I can find out, there are two ways of running interactive VMS jobs from the Eunice csh, and neither of them are really pretty. In 'The Handshake', the Eunishare newsletter, somebody came up with a clever idea. You see, when you use the vms command within the shell, it attaches a disk file to SYS$INPUT, the disk file gives a control-z and back you go to the shell. SYS$OUTPUT is directed at your terminal though. The simple little trick is to change SYS$INPUT so that it points to the same place as SYS$OUTPUT. Similarly with SYS$COMMAND and TT:. This is accomplished by a little front end command procedure and a shell alias: alias int 'vms @eun_usr:\[usr.local\]vms.com' int is for interactive. It's an ugly word, I know, but I haven't decided on a better one yet. I modified the command procedure that I got from 'The Handshake' so that it didn't print out messages about logical names being replaced and a few other things. If you don't pass it any parameters, then it does an @TT:, which turns your terminal into a command procedure, and hence an interactive DCL session, assuming you don't mind $_ as a prompt. Also, -l and -s mean execute my login.com, and execute the system login command procedure (which on our system then executes one's login.com) before doing anything else. This isn't really a satisfactory solution, because those logical name assignments are done in user mode, not in executive mode, like they should be. I didn't really want to write the privileged image to do that. I think I may have one of my programmers just redo vms.exe. It looks like a simple task. The OTHER way to get to DCL is just gonna kill you. One of my programmers found it by accident. You know the suspend command in the cshell? Well, if you are in a nested cshell, it says 'stopped' and returns you to the parent cshell. If you are in your login cshell, it does a lib$spawn. All your symbols, all your logical names, your default directory. Everything gets passed down. So you want to get to DCL? You ask yourself, now, am I in my login cshell? How many cshells will I have to stop before I get to my login shell? Anyway, I don't think you can pass it a command line argument. Too bad. I include the front end command procedure. Hope this helps. $ ver = 'f$ver(0) $ assign 'f$logical("SYS$OUTPUT")' sys$command $ if "''f$logical("SYS$INPUT")'" .nes. "" then deassign sys$input $ assign 'f$logical("SYS$OUTPUT")' sys$input $ assign 'f$logical("SYS$OUTPUT")' tt: $ if "''p1'" .nes. "-S" then goto check_flag_l $ @sys$manager:sylogin.com $ goto kill_p1 $check_flag_l: $ if "''p1'" .nes. "-L" then goto no_login $ @sys$login:login.com $kill_p1: $ p1 = "" $no_login: $ do_command := 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8' $ if do_command .eqs. "" then goto interactive $ 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8' $ exit $interactive: $ @tt: $ exit +++++++++++++ Cliff Beshers Carleton College Northfield, MN 55057 {allegra, decvax, ihnp4}!stolaf!ccnfld!cbeshers -- Cliff Beshers Carleton College Northfield, MN 55057 {allegra, decvax, ihnp4}!stolaf!ccnfld!cbeshers