[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference bulova::decw_jan-89_to_nov-90

Title:DECWINDOWS 26-JAN-89 to 29-NOV-90
Notice:See 1639.0 for VMS V5.3 kit; 2043.0 for 5.4 IFT kit
Moderator:STAR::VATNE
Created:Mon Oct 30 1989
Last Modified:Mon Dec 31 1990
Last Successful Update:Fri Jun 06 1997
Number of topics:3726
Total number of notes:19516

3109.0. "revised DECWNET.COM" by 11SRUS::PUDER (Karl Puder, VAX APL) Fri Jul 20 1990 16:31

This was posted hereabouts a while ago, but I've added a useful hack.  If the
nodename has a colon on it (I said it was a hack-- I didn't have time to parse
a qualifier.  If someone wants to fix that part, go ahead!  Any suggestions on
how to spell such a qualifier?), it reverses the connection.

Examples:

LOCAL::$ @decwnet REMOTE create/terminal/detach

will create a DECterm running on node REMOTE::, displaying on LOCAL::, and

LOCAL::$ @decwnet REMOTE: create/terminal/detach

will create a DECterm running on node LOCAL::, displaying on REMOTE::.

The .COM file is in the first reply.
T.RTitleUserPersonal
Name
DateLines
3109.1DECWNET.COM11SRUS::PUDERKarl Puder, VAX APLFri Jul 20 1990 16:38124
$ verification	= 'F$VERIFY(0)'
$ !+
$ !				 DECWNET.COM
$ !				(by Karl Puder)
$ !-
$ !				  formerly
$ !				DECW_NET.COM
$ !		for the CDADEV Mixed Interconnect VAXcluster
$ !
$!
$ ON WARNING THEN GOTO end
$ ON CONTROL_Y THEN GOTO end
$ !
$ CLOSE /ERROR=already_closed $net_link
$already_closed:
$
$ GOTO 'f$mode()'
$
$interactive:
$batch:
$ IF F$LOCATE(":",P1) .EQ. F$LENGTH(P1) THEN GOTO do_net
$! If there is a colon in the nodename, we fall through to here.
$! This path runs the application locally, and sets the display to the
$! specified node.  (Just the reverse of the other code path).
$
$! Since we can't make a mailbox from DCL, send the command information in a
$! .TMP file.  The detached process' procname tells it the name of the temporary
$! file.
$
$ pid	= F$GETJPI("","PID")
$ tmp	= "sys$scratch:d''pid'.tmp"
$ OPEN/WRITE t 'tmp'
$ file	= F$SEARCH(tmp)
$ procname	= F$PARSE(file,,,"NAME") + F$PARSE(file,,,"VERSION")
$
$ nodename	= F$EDIT(F$ELEMENT(0,":",P1), "COLLAPSE, UPCASE, UNCOMMENT")
$ command_line	= F$EDIT(P2 + " " + P3 + " " + P4 + " " + P5 + " " -
		       + P6 + " " + P7 + " " + P8, -
			 "COMPRESS, TRIM, UNCOMMENT")
$ IF nodename     .EQS. "" THEN GOTO end
$ IF command_line .EQS. "" THEN GOTO end
$ WRITE t nodename
$ WRITE t command_line
$ CLOSE t
$
$ ! See label "other" for the receiving end of this "call".
$ RUN/DETACH/AUTHORIZE SYS$SYSTEM:LOGINOUT -
	/INPUT='F$ENVIRONMENT("PROCEDURE")/OUTPUT=decwnet.log-
	/PROCESS_NAME="''procname'"
$ GOTO end
$
$do_net:
$ nodename	= F$EDIT(P1, "COLLAPSE, UPCASE, UNCOMMENT")
$ command_line	= F$EDIT(P2 + " " + P3 + " " + P4 + " " + P5 + " " -
		       + P6 + " " + P7 + " " + P8, -
			 "COMPRESS, TRIM, UNCOMMENT")
$ IF nodename     .EQS. "" THEN GOTO end
$ IF command_line .EQS. "" THEN GOTO end
$ !
$ OPEN /WRITE $net_link 'nodename'::"0=DECWNET"
$ WRITE $net_link command_line
$ CLOSE $net_link
$ !
$ GOTO end
$ !
$other:
$ set verify
$ procname	= F$GETJPI("", "PRCNAM")
$ file	= F$PARSE(procname, "sys$scratch:.tmp")
$ OPEN/READ t 'file
$ READ t nodename
$ READ t command_line
$ CLOSE t
$ DELETE 'file
$ username	= F$EDIT(F$GETJPI("", "USERNAME"), "TRIM")
$ prefix	= ":"
$ GOTO set_and_do
$
$network:
$ set verify
$ sys_net	= F$TRNLNM("SYS$NET")
$ show logical sys$net
$!! write sys$error "sys_net=�''sys_net'�" ! cannot write those characters !
$ !
$ OPEN /READ /ERROR=close_link $net_link SYS$NET
$ READ       /ERROR=close_link $net_link command_line
$ CLOSE      /ERROR=close_link $net_link
$ write sys$error "command_line=�''command_line'�"
$ !
$ username	= F$ELEMENT(1, "=", F$ELEMENT(0, "/", sys_net))
$ IF username .NES. F$EDIT(F$GETJPI("", "USERNAME"), "TRIM") THEN GOTO end
$ prefix	= "_"
$ !
$ nodename	= F$ELEMENT(0, ":", sys_net)
$ !
$set_and_do:
$ IF F$LENGTH(username) .GT. 11 THEN username = F$EXTRACT(0, 11, username)
$ !
$ suffix	= 0
$suffix_loop:
$ suffix	= suffix + 1
$ SET NOON
$ SET PROCESS /NAME='prefix''username'_'suffix'
$ IF .NOT. $STATUS THEN GOTO suffix_loop
$ SET ON
$ !
$ IF nodename .EQS. F$TRNLNM("SYS$NODE") - "::" .OR. nodename .EQS. "0"
$ THEN
$	SET DISPLAY /CREATE /TRANSPORT=LOCAL
$ ELSE
$	SET DISPLAY /CREATE /TRANSPORT=DECNET /NODE='nodename'
$ ENDIF
$ !
$ 'command_line'
$ !
$ GOTO end
$ !
$close_link:
$ CLOSE /ERROR=end $net_link
$ !
$
$end:
$ IF verification THEN SET VERIFY
$ exit