jse~ DWREMTERM.BCKl DWREMTERM.BCK BACKUP *.* [-]DWREMTERM.BCK/SAVE KINGSMILL R炫V6.2 _YAKKA::  _YAKKA$DKA300: V6.2 ~ *[KINGSMILL.TEMP]DWREMTERM.COM;2+,./ 4_-0123KPWO56rt7$u89GHJz$ saved_verify = f$verify(0) $ set noon$ DWremterm_version := V031P$!******************************************************************************$!($! AUTHOR: kingsmill@ripper.enet.dec.com$!*$! Geoff Kingsmill - 21-OCT-1991 - createdK$! Geoff Kingsmill - 09-NOV-1991 - fixed error caused by a user setting hisH$! process name. The caused FPD to fail.@$! Geoff Kingsmill - 06-DEC-1991 - improved command verificationP$! Geoff Kingsmill - 11-JAN-1992 - combined network routines into this procedure2$! and added RDT, RFV, RDW and DWRT commands,$! Geoff Kingsmill - 18-FEB-1992 - bugfixes.M$! Geoff Kingsmill - 17-MAR-1992 - provided user with more error information.P$! Geoff Kingsmill - 26-MAR-1992 - provided user with warning if LAT not runningN$! Geoff Kingsmill - 15-APR-1992 - added DISCONNECT_LINK to provide user with P$! even more error information. Added option forK$! users to override the DWRT resource fileK$! window position by way of logical names.K$! Geoff Kingsmill - 27-AUG-1992 - removed menu item from display and fixedM$! a timing loop problem when setting process'$! nameO$! Geoff Kingsmill - 29-SEP-1992 - if you issue an RDT and you proxied into theO$! DECNET account then you will now be promptedN$! for the a username and password rather than7$! being denied access.1$! - fixed up DECNET and LAT commands so thatI$! nodename access control information isO$! stripped off ie mvax"user pass" becomes mvax/$! - when an error occurs on a remote node,O$! non-privileged users will now be mailed withK$! an error message stating why the failureH$! occurred. Also stopped sending a mail6$! when the source node closed the network link.I$! Geoff Kingsmill - 02-FEB-1993 - Modified LAT command to support LAT V22$! functionality. This allows a set host/lat,$! to the same node and /noautoprompt.O$! Geoff Kingsmill - 27-MAR-1993 - Modified error message when DWremterm object$! access fails.L$! Geoff Kingsmill - 17-MAY-1993 - Added temporary workaround for DECwindows4$! Motif V1.1 bug where the WSA display device0$! gets deleted on DECterm creation. This 5$! workaround only works for users with SYSNAM $! privilege.G$! Geoff Kingsmill - 28-JUN-1993 - Fixed Duplicate Process Name problemL$! Geoff Kingsmill - 28-SEP-1993 - Added support for Parthworks (PCX$SERVER)B$! Geoff Kingsmill - 06-DEC-1993 - Added $set host/lat/AUTOCONNECTH$! Geoff Kingsmill - 06-APR-1994 - Added X/Y location to the RDT commandN$! Geoff Kingsmill - 30-NOV-1994 - Fix DWremterm startup when being brought up$! by TCP/IP RSH.J$! Geoff Kingsmill - 12-DEC-1994 - DWremterm window would abort if special3$! characters such as ?,^ were entered whilst$! in MENU_MODE.A$! Geoff Kingsmill - 29-APR-1995 - Preserve lowercase characters /$! - RDW and "RDT command" commands are now3$! run from a detached process. This was done/$! to support DECnet/OSI and remote spawn,$! commands.5$! - disable autoupdate $! - updated to version V3.1$!J$! This command procedure is designed to allow users flexability in using H$! DECwindows across a large number of machines connected together by a N$! Local Area Network. It allows users to create LAT or DECnet windows locallyO$! or to create remote DECwindow sessions. The decwindows commands RDT, RFV andF$! RDW are actually network process's and therefore do not count as an$! interactive login.$! #$! DWremterm consists of two files:.$! SYS$COMMON:[VUE$LIBRARY.USER]DWREMTERM.COM #$! SYS$COMMON:[SYSHLP]DWREMTERM.HLB$!M$! This file DWREMTERM.COM needs to exist on both the local and remote nodes J$! and requires the user to either specify node access control or for the M$! remote account to be set up for proxy access. DWremterm can simply reside N$! in sys$login on the remote node, which requires each user to have their ownI$! copy -or- DWremterm can be defined as a DECnet object, requiring each $! system to have only one copy.$!O$! To install DWremterm as a network object the system manager should enter the$! following commands: $! $ MCR NCP0$! NCP> DEFINE OBJECT DWREMTERM NUMBER 0 FILE ->$! SYS$COMMON:[VUE$LIBRARY.USER]DWREMTERM.COM PROXY BOTH!$! NCP> SET OBJECT DWREMTERM ALL $! NCP> EXIT$! $$!N$! If DWremterm is not installed as a network object then by default no other O$! setups are required. However if the DECnet object task has been modified to J$! disable proxy access then DWremterm will fail. In this case the system /$! manager should enter the following commands: $! $ MCR NCP&$! NCP> DEFINE OBJECT TASK PROXY BOTH$! NCP> SET OBJECT TASK ALL $! NCP> EXIT$! $$!M$! LATmaster must be installed to use the LAT command then. This software is E$! optional under VMS 5.4-x and has been integrated into VMS 5.5. If M$! LATmaster is installed on VMS 5.4-x then CSCPAT_0511 patch should be also K$! be installed. If LATmaster is not installed then the LAT command cannot $! be used.$!G$! PROXY accounts allow one user direct access to another users accountG$! without having to specify username and password. The system manager;$! can set up proxy account access from within AUTHORIZE. $! Example: $ MCR AUTHORIZE>>$! UAF> ADD/PROXY MVAX::KINGSMILL KINGSMILL/DEFAULT3$! UAF> ADD/PROXY MVAX::KINGSMILL OLSENK$! UAF> EXIT$! $N$! This examples allows user KINGSMILL on node MVAX into the local KINGSMILL K$! and OLSENK account. The default switch enables you to specify just the ($! nodename when addressing this node:-$! eg. $ DIRECTORY TVAX::D$! If Default access is not specified then you need to specify the 5$! nodename and username when addressing this node:-$$! eg. $ DIRECTORY TVAX"OLSENK"::@$! If you do not have proxy access then you need to specify theC$! nodename, username and password when addressing a remote node:--$! eg. $ DIRECTORY TVAX"SYSTEM password"::$! E$! The Factory Defaults prohibit a remote users from displaying theirA$! output to your workstation. To authorize other users or remote4$! nodes to use your workstation display you should:?$! 1. Choose Security... from Session Manager's Options menu.E$! 2. Type the nodename, the username, and the method of transport,D$! of the user you want to authorize. Entering * * * will allowD$! any user on any node with any transport to display output on$! your workstaton.1$! 3. Click on the Add button and the Clock OK.>$! Refer to the DECwindows user guide for further information.$!%$! DWremterm can be run in two modes:>$! MENU MODE: commands are entered from a Small Menu Window.B$! COMMAND MODE: commands are entered from the DCL command line.$!L$! Valid command are:- HELP, DWHELP, LAT, DECNET, RDT, RFV, RDW, DWRT and $.2$! Parameters listed are [] brackets is optional. ?$! HELP: Gives details on how to receive Brief or Expanded Help-$! DWHELP: Provide detailed Help on DWremtermG$! LAT: Creates a Local DECterm Window using a SET HOST/LAT command.#$! Only valid in Menu mode.$! LAT nodenameC$! DECNET: Creates a Local DECterm Window using a SET HOST command.#$! Only valid in Menu mode.$! DECNET nodename+$! RDT: Creates a Remote Decterm Window.:$! RDT nodename [init_state] [title] [dcl_command]3$! [display] [transport] [x:y],$! RFV: Creates a Remote Fileview Window.:$! RFV nodename [init_state] [display] [transport]7$! RDW: Runs a Remote Remote Decwindows Application.5$! RDW nodename command [display] [transport],$! DWRT: Starts a second DWremterm Window.;$! DWRT nodename [init_state] [display] [transport]'$! $: Executes a local DCL command:$! For further details refer to sys$library:dwremterm.hlb.$! J$! A unique window title and icon name is chosen by referencing the user'sN$! process name. If the login sequence changes the process name then duplicate#$! window and icon names may occur.$! ?$! Refer to SYS$HELP:DWREMTERM.HLP for further help by typing:-!$! @VUE$LIBRARY:DWREMTERM DWHELP.$!$! CONFIGURATION SETUPS:M$! The following logicals can be used to alter default DWremterm behaviour.O$! DWREMTERM_INHIBIT_COPY to prevent a user being asked whether a new version%$! of DWremterm should be copied.J$! The WINDOW POSITION and INITIAL STATE can be altered from the defaultO$! by editing the resource file. Details on how to do this is given within %$! the following resource files. "$! Default DWremterm window:7$! - decw$user_defaults:dwremterm$default_v*.dat $! DWRT DWremterm window:<$! - decw$user_defaults:dwremterm$dwrt_default_v*.dat 4$! This is on the remote node/users account.H$! You can also override the DWRT resource file window position byI$! defining the logical names DWREMTERM_DWRT_X and DWREMTERM_DWRT_YG$! under your local user account. These values are then passed to'$! the remote node/users account.H$! LAT$DISCONNECT_CHARACTER defines the character that you can use to E$! disconnect from a remote session. Default character is Ctrl+\.$!$! TROUBLESHOOTING HINTS:D$! o Ensure that Security has been set up to enable a remote node toG$! display output on your workstation. See installation section above$! for further details.A$! o The following logicals can be used to aid in troubleshootingJ$! These can be defined before starting DWremterm or during a DWremterm $$! Session by using the $ command.J$! DWREMTERM_VERBOSE to display the progress of both local and remote J$! events. If verbose is enabled then a full sized menu window will I$! be displayed. This can also be enabled by prefixing the version $! with an "X".6$! DWREMTERM_VERIFY to turn on verify and verbose.F$! o NETSERVER.LOG on the remote node may also aid in troubleshooting.M$! o DWREMTERM_'pid'*.COM temporary file on the remote node shows the created$! command file.J$! o DWREMTERM.LOG temporary file on on the remote node showing the output$! from dwremterm_'pid'.comM$! o If you have problems creating DECterms then get the latest DECterm patch$! from your CSC.$!P$!******************************************************************************$! First set up a few symbols.$*$ define/nolog dwremterm_inhibit_copy trueJ$ if f$trnlnm("''f$parse(f$env(""procedure""),,,""name"")'_Verify") .or. -+ f$trnlnm("Verify_All") then set verify$ set symbol/scope=(nolocal)$M$ ! verify can be enabled by defining dwremterm_verify. This will also enable$ ! verbose mode$ verbose := false 7$ if f$trnlnm("dwremterm_verify") then verbose := true$L$ ! verbose can be enabled by defining dwremterm_verbose or dwremterm_verify($ ! or prefixing the version with an "X"7$ if f$trnlnm("dwremterm_verbose") then verbose := trueD$ if f$extract(0,1,DWremterm_version) .eqs. "X" then verbose := true$+$! suppress printing DECterm debug messagesA$ if f$trnlnm("decterm_diag") .nes. "" then deassign decterm_diag$$ lf[0,8] = %xa$ cr[0,8] = %xd$ nl = cr+lf$ esc[0,8] = %x1b*$ bon = esc+"[1m" !turn on bold printing*$ boff = esc+"[0m" !turn off bold printing$ say = "write sys$output"$ pid = f$getjpi("","PID").$ version = f$extract(1,255,DWremterm_version)9$ DWUsername = f$edit(F$Getjpi("","Username"),"collapse")/$ DWNodename = F$Getsyi("Nodename") !scsnodeG$ If DWNodename .eqs. "" Then DWNodename = F$Trnlnm("Sys$node") !decnet8$ DWnodename = f$edit(DWnodename,"trim,upcase,compress")E$ If f$extract(f$length(DWnodename)-2,2,DWnodename) .eqs. "::" then -@ DWnodename = f$extract(0,f$length(DWnodename)-2,DWnodename)$ Dnodename = DWnodename + "::"K$ loc_procedure = f$ext(0,f$loc(";",f$env("procedure")),f$env("procedure"))$!D$! Only run the network portion of this code if directly called from$! DWremterm $!M$ netobj = f$extract(f$length(f$trnlnm("sys$net"))-11,10,f$trnlnm("sys$net"))%$ if f$mode() .eqs. "NETWORK" .and. - p1 .eqs. "" .and. -) f$trnlnm("sys$net") .nes. "" .and. -0 netobj .nes. "PCX$SERVER" then goto network$!P$!******************************************************************************>$! THIS SECTION OF CODE IS USED TO GENERATE THE COMMAND WINDOW$!N$! If we don't have P1 then we are in menu mode. Therefore create a small menu5$! window and call this procedure with p1 = MENUMODE.1$! P1 should only be blank during the first pass.$!$ IF p1 .eqs. "" $ THEN'$ ! create resource file if not foundH$ resource_file := decw$user_defaults:DWremterm$default_V'version'.dat($ IF f$search(resource_file) .eqs. "" $ THEN4$ ! delete any old versions of the resource fileH$ IF f$search("decw$user_defaults:DWremterm$default*.dat") .nes. "" $ THEN C$ set prot=w:rwed decw$user_defaults:dwremterm$default*.dat;*:$ delete decw$user_defaults:dwremterm$default*.dat;* $ ENDIF'$ create/prot=o:rwe 'resource_file' $ deckDECW$TERMINAL.borderWidth: 1DECW$TERMINAL.decWmValueMask: 1#DECW$TERMINAL.*decterm_mb*height: 1-DECW$TERMINAL.*decterm_mb*resizeHeight: false,DECW$TERMINAL.*decterm_mb*resizeWidth: false DECW$TERMINAL.title: DWremterm !DECW$TERMINAL.iconName: DWremterm)DECW$TERMINAL.main.terminal.rows: 4*DECW$TERMINAL.main.terminal.columns: 62(DECW$TERMINAL.main.terminal.bitPlanes: 4&DECW$TERMINAL.main.terminal.height: 86&DECW$TERMINAL.main.terminal.width: 285,DECW$TERMINAL.main.terminal.displayHeight: 60DECW$TERMINAL.main.terminal.displayHeightInc: 13.DECW$TERMINAL.main.terminal.transcriptSize: 20-DECW$TERMINAL.main.terminal.displayWidth: 285_DECW$TERMINAL.main.terminal.fontUsed: -DEC-Terminal-Medium-R-Narrow--14-140-75-75-C-6-ISO8859-1-DECW$TERMINAL.main.terminal.condensedFont: on0DECW$TERMINAL.main.terminal.adjustFontSizes: off5DECW$TERMINAL.main.terminal.defaultTitle: DWremterm 6DECW$TERMINAL.main.terminal.defaultIconName: DWremterm7DECW$TERMINAL.main.terminal.defaultTitleName: DWremterm6DECW$TERMINAL.main.terminal.borderColor: #0000000000002DECW$TERMINAL.main.terminal.autoResizeTerminal: onP#-------------------------------------------------------------------------------A# modify the x value to place the window at a different location.'# suggest setting the x location to 10.DECW$TERMINAL.x: 10#P#-------------------------------------------------------------------------------A# modify the y value to place the window at a different location.=# suggest setting the y location to 115 for 75 DPI terminals.G# suggest setting the y location to 122 for 100 DPI terminals (VT1200).DECW$TERMINAL.y: 125 #P#-------------------------------------------------------------------------------#1# change initialState paramater to startup state:# Window on startup: 1# Icon on startup: 3DECW$TERMINAL.initialState: 1#P#------------------------------------------------------------------------------- $ eod $ ENDIF$ ENDIF$@$! If P1 contains DWREMTERM then we are to create a second DWRT H$! DWremterm window. Therefore create a small menu window and call this O$! procedure with p1 = MENUMODE. P1 should only be blank during the first pass.$$ IF p1 .eqs. "DWREMTERM" $ THEN,$ ! create DWRT resource file if not foundM$ resource_file := decw$user_defaults:DWremterm$dwrt_default_V'version'.dat($ IF f$search(resource_file) .eqs. "" $ THEN4$ ! delete any old versions of the resource fileN$ if f$search("decw$user_defaults:DWremterm$dwrt_default*.dat") .nes. "" -E then delete decw$user_defaults:dwremterm$dwrt_default*.dat;**'$ create/prot=o:rwe 'resource_file'n $ deckDECW$TERMINAL.borderWidth: 1DECW$TERMINAL.decWmValueMask: 1i$DECW$TERMINAL.title: DWremterm_DWRT &DECW$TERMINAL.iconName: DWremterm_DWRT#DECW$TERMINAL.*decterm_mb*height: 1c-DECW$TERMINAL.*decterm_mb*resizeHeight: false-,DECW$TERMINAL.*decterm_mb*resizeWidth: false)DECW$TERMINAL.main.terminal.rows: 4 *DECW$TERMINAL.main.terminal.columns: 62(DECW$TERMINAL.main.terminal.bitPlanes: 4&DECW$TERMINAL.main.terminal.height: 86&DECW$TERMINAL.main.terminal.width: 285,DECW$TERMINAL.main.terminal.displayHeight: 60DECW$TERMINAL.main.terminal.displayHeightInc: 13.DECW$TERMINAL.main.terminal.transcriptSize: 20-DECW$TERMINAL.main.terminal.displayWidth: 285 _DECW$TERMINAL.main.terminal.fontUsed: -DEC-Terminal-Medium-R-Narrow--14-140-75-75-C-6-ISO8859-1 2DECW$TERMINAL.main.terminal.autoResizeTerminal: on-DECW$TERMINAL.main.terminal.condensedFont: on 0DECW$TERMINAL.main.terminal.adjustFontSizes: off9DECW$TERMINAL.main.terminal.defaultTitle: DWremterm_DWRT ;DECW$TERMINAL.main.terminal.defaultIconName: DWremterm_DWRTn<DECW$TERMINAL.main.terminal.defaultTitleName: DWremterm_DWRT6DECW$TERMINAL.main.terminal.borderColor: #000000000000P#-------------------------------------------------------------------------------# A# modify the x value to place the window at a different location. '# suggest setting the x location to 10.tDECW$TERMINAL.x: 10# P#-------------------------------------------------------------------------------A# modify the y value to place the window at a different location.f=# suggest setting the y location to 265 for 75 DPI terminals.eG# suggest setting the y location to 275 for 100 DPI terminals (VT1200). DECW$TERMINAL.y: 265 # P#-------------------------------------------------------------------------------# 1# change initialState paramater to startup state: # Window on startup: 1# Icon on startup: 3DECW$TERMINAL.initialState: 1e#hP#------------------------------------------------------------------------------- $ eodn $ ENDIFt$ ENDIF$ +$ IF p1 .eqs. "" .or. p1 .eqs. "DWREMTERM" t$ THENC$ ! if we are in verbose mode then bring up full sized window by 9A$ ! over-riding the window size specified in the resource file. $ window_size = ""5$ if verbose then window_size = ",column=80,row=24"wJ$ ! allow the remote DWREMTERM DWRT user to override the resource file's$ ! x and y positions.$ IF p1 .eqs. "DWREMTERM" $ THEN$ window_position = p2$ window_state = p3o$ ELSE$ window_position = ""$ window_state = ""e $ ENDIFf+$ create/term/wait/reso='resource_file' -PO /wind=(title="''DWnodename'""''dwusername'"" DWremterm V''version'",-TB icon="DWremterm ''DWnodename'""''dwusername'""" -? 'window_size''window_position''window_state')-sJ @'f$envi("PROCEDURE") MENU_MODE !re-execute this program$ status = $status+$ restore_verify = f$verify(saved_verify)a$ exit 'status' $ ENDIFr$!P$!******************************************************************************>$! THIS SECTION OF CODE DETERMINES WHAT MODE WE ARE RUNNING IN$!$ IF p1 .eqs. "MENU_MODE" $ THEN N$ ! we are in menu mode therefore the input commands will come from a small$ ! window menu$ menu_mode :== true$ p1 = "" !reset p1s$ ELSEO$ ! we are in command mode, therefore the input was supplied on entry to thisg$ ! procedure.$ menu_mode :== false $ goto check_for_keywordsm$ ENDIFc$!P$!******************************************************************************N$! THIS SECTION OF CODE IS USED TO PROMPT AND VALIDATE TERMINAL INPUT COMMANDS$!($ !first set up the terminal environment'$ if .not. verbose then set nocontrol=yc$ set control=tt$ set term/broadcast$ set broadcast=(none,dcl,mail)l$=$ ! let's get a process name, window title name and icon name:$ call names "DWremterm" '$ ! we should now have our process name D$ if verbose then say Dnodename," Setting process name to: ",dprcnam/$ if sprcnam .nes. "" then set process'sprcnam'm$ 4$ say "For help, type HELP at the DWremterm> prompt"7$ say "Please report problems to Geoff Kingsmill, DEC." $ say "" $menu_loop:aF$ ! check verbose each pass. This allows you to turn on verbose from a7$ ! "DWremterm> $ define dwremterm_verbose 1" command.!$ M$ ! set window size large if verify or verbose enabled, otherwise window sizef$ ! should be small.I$ IF f$trnlnm("dwremterm_verbose") .or. f$environment("verify_procedure")S$ THEN V$ verbose := trueT@$ if f$getdvi("tt:","tt_page") .ne. 24 then set term/page=249$ wait 00:00:01 !fix up timing problem with X-terminalswA$ if f$getdvi("tt:","devbufsiz") .ne. 80 then set term/width=80e$ ENDIFD0$ IF .not. f$trnlnm("dwremterm_verbose") .and. -, .not. f$environment("verify_procedure")$ THEN t$ verbose := false?$ if f$getdvi("tt:","tt_page") .ne. 4 then set term/page=4D9$ wait 00:00:01 !fix up timing problem with X-terminalsA$ if f$getdvi("tt:","devbufsiz") .ne. 62 then set term/width=62h$ ENDIFm$ $ ! get commandrC$ read/end_of_file=menu_loop/error=menu_loop/prompt="DWremterm> " -5 sys$command params_alllI$ if f$edit(params_all,"collapse,trim") .eqs. "?" then params_all := HELPI,$ if params_all .eqs. "" then goto menu_loop$ $check_for_keywords:G$ copy_pass == 0 !reset file copy attempts at the start of each commando$ IF .not. menu_mode$ THEN$ ! we are in command mode $ pa == p1 $ pb == p2 $ pc == p3 $ pd == p4 $ pe == p5 $ pf == p6 $ pg == p7 $ ph == p8J$ ! the odd ""params_all syntax is used to overcome a call failure when 2$ ! special characters such as ?,^ are entered1$ call command_parser ""pa pb pc pd pe pf pg phe$ ELSE$ ! we are in menu modeXJ$ ! the odd ""params_all syntax is used to overcome a call failure when 2$ ! special characters such as ?,^ are entered%$ call command_parser ""'params_allR$ ENDIF$ $! validate commandnN$ IF verb-"LAT"-"RDW"-"RDT"-"RFV"-"DWRT"-"DWHELP"-"HELP"-"EXIT"-"DECNET"-"$" - .nes. "":$ THEN0$ SAY "Invalid Command: Valid Commands are - "8$ SAY "LAT,DECNET,RDT,RFV,RDW,DWRT,$, HELP and DWHELP"$$ if MENU_MODE then goto menu_loop+$ restore_verify = f$verify(saved_verify) $ exit$ ENDIFd$ $ IF verbose$ THEN+$ say Dnodename," Decoded Verb is: ",verby7$ say Dnodename," Decoded Nodename is: ",sec_nodenamet$ ENDIF $rP$!------------------------------------------------------------------------------$ IF verb .eqs. "EXIT"$ THENA$ say "If you EXIT, then windows created by the LAT and DECNET"oA$ say "commands will be terminated. If you really want to exit"n?$ say "then use the EXIT option from the FILE Pull-Down-Menu"r$$ if MENU_MODE then goto menu_loop$ ENDIF.$!P$!------------------------------------------------------------------------------$ IF verb .eqs. "HELP"$ THEN$ say "Valid Commmands are: "o9$ say "LAT,DECNET,RDT,RFV,RDW,DWRT,$, HELP and DWHELP." D$ say "Enter Command only for Brief Help or DWHELP for Full Help."$$ if MENU_MODE then goto menu_loop+$ restore_verify = f$verify(saved_verify)R$ exit$ ENDIFt$ P$!------------------------------------------------------------------------------$ IF verb .eqs. "DWHELP"$ THEN $ create/term/nowait/window= -E (title="DWremterm Help",icon="DWHelp",rows=24,columns=80) -d> help/nouser/library=sys$help:dwremterm.hlb DWremterm$$ if MENU_MODE then goto menu_loop+$ restore_verify = f$verify(saved_verify) $ exit$ ENDIF $eP$!------------------------------------------------------------------------------$ IF verb .eqs. "LAT" $ THEN$ IF nodename .eqs. "" $ THENA$ say "This command creates a LAT window to a remote system." *$ say "It is only valid in MENU mode."$ say "LAT nodename"&$ if MENU_MODE then goto menu_loop-$ restore_verify = f$verify(saved_verify)m $ exit$ ELSE?$ nodename == f$extract(0,f$locate("""",nodename),nodename) B$ bnodename == f$extract(0,f$locate("""",bnodename),bnodename) $ ENDIFa$C$ IF .not. MENU_MODE$ THEN8$ say "The LAT command is only valid in MENU MODE." -$ restore_verify = f$verify(saved_verify)n $ exit $ ENDIFs$m!$ IF bnodename .eqs. dwnodenamee$ THEN5$ IF f$search("sys$system:ltpad_v2.exe") .eqs. "" $ THEN fD$ say "You cannot use LATmaster to connect to your own node." ,$ say "Use DECterm for local windows."($ if MENU_MODE then goto menu_loop/$ restore_verify = f$verify(saved_verify)! $ exit $ ENDIFo $ ENDIFu$ E$ ! tell user to use the DECNET command if LATMASTER is not runningd'$ IF .not. f$getdvi("LTA0:","exists")S$ THEN?$ Say "The LAT software has not been started on this node."D-$ Say "Use the DWremterm DECnet command." &$ if MENU_MODE then goto menu_loop-$ restore_verify = f$verify(saved_verify)$ $ exit $ ENDIF$$aH$ ! tell user to use the DECNET command if LATMASTER is not installed.#$ define/user/nolog sys$error nl:!$$ define/user/nolog sys$output nl:$ set host/lat/noautoprompta$ status = $status$ deassign/user sys$error $ deassign/user sys$output $ IF status .eqs. "%X00038240"$ THEN4$ Say "LATmaster is not installed on this node."-$ Say "Use the DWremterm DECnet command."o&$ if MENU_MODE then goto menu_loop-$ restore_verify = f$verify(saved_verify)e $ exit $ ENDIF $ $ call names 'nodename' "LAT"r$ disc_char = ""$ break_char = ""S;$ if f$trnlnm("LAT$DISCONNECT_CHARACTER") .nes. "" then -oK disc_char = "/DISC="+f$extr(0,1,f$trnlnm("LAT$DISCONNECT_CHARACTER")) 6$ if f$trnlnm("LAT$BREAK_CHARACTER") .nes. "" then -H break_char = "/BREAK="+f$extr(0,1,f$trnlnm("LAT$BREAK_CHARACTER")) $ create/term/nowait'prcnam' -4 /window=(title="''name'",icon="''name'") -E SET HOST/LAT/AUTOCONNECT'disc_char''break_char' 'bnodename't$$ if MENU_MODE then goto menu_loop+$ restore_verify = f$verify(saved_verify) $ exit$ ENDIFT$ P$!------------------------------------------------------------------------------$ IF verb .eqs. "DECNET" r$ THEN$ IF nodename .eqs. "" G$ THEND$ say "This command creates a DECNET window to a remote system."*$ say "It is only valid in MENU mode."$ say "DECNET nodename".&$ if MENU_MODE then goto menu_loop-$ restore_verify = f$verify(saved_verify)o $ exit$ ELSE?$ nodename == f$extract(0,f$locate("""",nodename),nodename) $ ENDIFc$$ IF .not. MENU_MODE$ THEN<$ say "The DECNET command is only valid in MENU MODE." -$ restore_verify = f$verify(saved_verify) $ exit $ ENDIFe$i"$ call names 'nodename' "DECNET" $ create/term/nowait'prcnam' -4 /window=(title="''name'",icon="''name'") - SET HOST 'nodename' $$ if MENU_MODE then goto menu_loop+$ restore_verify = f$verify(saved_verify) $ exit$ ENDIFe$sP$!------------------------------------------------------------------------------#$ IF f$extract(0,1,verb) .eqs. "$" b$ THEN$ IF $_command .eqs. ""e$ THEN9$ say "This command will execute a local DCL command"($ say "$ dcl_command"e$ ELSE$ '$_command't $ ENDIFe$$ if MENU_MODE then goto menu_loop+$ restore_verify = f$verify(saved_verify)m$ exit$ ENDIFn$(P$!------------------------------------------------------------------------------$ IF verb .eqs. "RDT"=$ THEN$ IF nodename .eqs. "" = $ THEN !9$ say "This command creates a Remote Decterm Window:"r;$ say "RDT nodename [init_state] [title] [dcl_command]")4$ say " [display] [transport] [X:Y]"$ ELSE2$ call send DECTERM nodename pc pd pe pf pg ph $ ENDIFG$$ if MENU_MODE then goto menu_loop+$ restore_verify = f$verify(saved_verify)($ exit$ ENDIF$ P$!------------------------------------------------------------------------------$ IF verb .eqs. "RFV"e$ THEN$ IF nodename .eqs. "" m $ THEN c7$ say "This command runs a Remote Fileview Window:"o;$ say "RFV nodename [init_state] [display] [transport]"o$ ELSE*$ call send FILEVIEW nodename pc pd pe $ ENDIFo$$ if MENU_MODE then goto menu_loop+$ restore_verify = f$verify(saved_verify)f$ exit$ ENDIFy$eP$!------------------------------------------------------------------------------$ IF verb .eqs. "RDW"f$ THEN$ IF nodename .eqs. "" $ THEN bB$ say "This command will run a Remote Decwindows Application:"6$ say "RDW nodename command [display] [transport]"$ ELSE"$ call send pc nodename pd pe $ ENDIF $$ if MENU_MODE then goto menu_loop+$ restore_verify = f$verify(saved_verify)l$ exit$ ENDIFn$aP$!------------------------------------------------------------------------------$ IF verb .eqs. "DWRT"$ THEN$ IF nodename .eqs. "" u $ THEN >$ say "This command will start a second DWremterm Window:"<$ say "DWRT nodename [init_state] [display] [transport]"$ ELSE+$ call send DWREMTERM nodename pc pd peu $ ENDIF $$ if MENU_MODE then goto menu_loop+$ restore_verify = f$verify(saved_verify)$ exit$ ENDIFw$eP$!------------------------------------------------------------------------------1$ goto menu_loop !catchall, should never get heree$!P$!******************************************************************************7$! THIS SUBROUTINE SENDS THE COMMAND TO THE REMOTE NODE$!$SEND: SUBROUTINE $ set noon.$ Write_Destination = "write link_destination"A$ Read_Destination = "read/error=open_failure link_destination" $e$ init_state = ""A$ title = ""s$ dcl_command= ""R$ display = "".$ x_y_loc = ""W$!$! COMMON INPUTS$!$ IF verb .eqs. "RDW"A$ THEN r($ Command = 'P1 !(Required)$ ELSE($ Command := 'P1 !(Required)$ ENDIF6($ Nodename = 'P2 !(Required)$!$! REMOTE DECTERM INPUTS$!$ IF verb .eqs. "RDT"$ THEN IE$ Init_State = 'P3 !(Optional, Default = window) icon/windowsM$ title = 'P4 !(Optional, Default ='nodename':R'count':'trans')a'$ DCL_command= 'P5 !(Optional)I9$ Display = 'P6 !(Optional, Default = 0::0.0)t:$ Transport = 'P7 !(Optional, Default = current)'$ x_y_loc = 'P8 !(Optional)I$ EN "~ DWREMTERM.BCK[KINGSMILL.TEMP]DWREMTERM.COM;2_8|>DIFt$!$! REMOTE FILEVIEW INPUTSt$!$ IF verb .eqs. "RFV"r$ THEN dE$ Init_State = 'P3 !(Optional, Default = window) icon/window :$ Display = 'P4 !(Optional, Default = 0::0.0):$ Transport = 'P5 !(Optional, Default = current)$ ENDIF $!$! REMOTE DECWINDOWS INPUTS $!$ IF verb .eqs. "RDW" $ THEN T9$ Display = 'P3 !(Optional, Default = 0::0.0)-:$ Transport = 'P4 !(Optional, Default = current)$ ENDIFt$!$! DWREMTERM INPUTSi$!$ IF verb .eqs. "DWRT" $ THEN hE$ Init_State = 'P3 !(Optional, Default = window) icon/windowa9$ Display = 'P4 !(Optional, Default = 0::0.0).:$ Transport = 'P5 !(Optional, Default = current)$ ENDIF-$- $ IF verbose -$ THEN+$ Say Dnodename," Decoded commands are: "a$ Say " Verb: ",verbo$ Say " Command: ",commandu$ Say " Nodename: ",nodename $ Say " Display: ",display-&$ Say " Initial State: ",init_state!$ Say " Transport: ",transportN%$ Say " DCL Command: ",dcl_commandW$ Say " Title: ",titlet$ Say " Position: ",x_y_loc$ ENDIFe$o!$ if verbose then say dnodename,-a: " Testing availability of remote node: ",sec_nodename!$ define/user/nolog sys$error nl:"$ define/user/nolog sys$output nl:K$ ! the file lexical is used as it is the only way I could get a definitived$ ! status code.$ test = f$file(nodename,"eof") $ status = $status$ deassign/user sys$error$ deassign/user sys$output$ =$ IF status .eqs. "%X0000028C" .or. status .eqs. "%X000185F4"e$ THEN$ Say "Node Unknown..."-$ goto send_exit$ ENDIFs$d$ IF status .eqs. "%X0000209C"$ THEN+$ Say "Node Login Information Invalid..." $ goto send_exit$ ENDIFi$:$ IF status .eqs. "%X00002094"$ THEN$ Say "Node Unreachable..."R$ goto send_exit$ ENDIFW$tL$ if verbose then say dnodename," Remote node ",sec_nodename," is reachable"$ 0$ !set decw$display_* symbols for current window"$ define/user/nolog sys$error nl:"$ define/user/nolog sys$output nl:-$ show display/symbol ! undocumented commandr$aJ$ ! if a DECwindow display is not currently defined or specified then exit>$ IF display .eqs. "" .and f$type(decw$display_node) .eqs. ""$ THEN=$ say "ERROR: Decwindows display not defined or specified."t$ goto send_exit$ ENDIFE$T $ IF verbose r$ THEN p $ IF f$type(decw$display_node) $ THEN o$ say Dnodename,-% " Current Display is:-",nl,--5 " Display Node is: ",decw$display_node,nl,-9 " Display Server is: ",decw$display_server,nl,-A9 " Display Screen is: ",decw$display_screen,nl,-r: " Display Transport is: ",decw$display_transport$ ELSE$ Say Dnodename,-D1 " No DECwindows display currently active" $ ENDIFW$ ENDIFT$I$ shutdown_pending = 01$ on warning then goto open_failure !exit handler- $Open_Server:-$!$! Open network connection$!1$ IF f$trnlnm("link_destination",,,,,"terminal") i$ THEN o?$ if verbose then say Dnodename," Closing the DWremterm link".$ close link_destination$ ENDIF-!$ if verbose then say Dnodename,--5 " Opening DWremterm task on node: ",sec_nodename ,$ open/read/write/error=open_server_failed - link_destination - K 'nodename'"TASK=''f$parse(f$environment(""procedure""),,,""NAME"")'"P!$ if verbose then say Dnodename,-A@ " DWremterm Task sucessfully opened on node: ",sec_nodename$!P$!------------------------------------------------------------------------------P$! THIS SECTION OF CODE PASSES THE PARAMETERS BETWEEN THE LOCAL AND REMOTE NODES$!$flush_output:$!$! Get command from remote node-$!$ Read_Destination rem_record$ $ IF rem_record .eqs. "%VERBOSE"$ THEN#$ if verbose then say Dnodename,-; " Reqesting remote node to display verbose messages"z$ Write_Destination verbosen$ Goto flush_outputf$ ENDIFe$s"$ IF rem_record .eqs. "%PROCEDURE"$ THENE$ if verbose then say Dnodename," Requesting Remote Procedure name"D"$ Read_Destination rem_procedure$ goto flush_output $ ENDIFi$n $ IF rem_record .eqs. "%VERSION"$ THENH$ if verbose then say Dnodename," Requesting Remote DWremterm Version" $ Read_Destination rem_versionA$ if verbose then say Dnodename," Local version is: V",versionP8$ if verbose then Read_Destination rem_version_message+$ if verbose then Say rem_version_messageo$ IF copy_pass .eq. 0 $ THEN"$ IF version .nes. rem_version $ THENH$ ! Version Mismatch. Go and ask if a new version should be copiedP$ call copy_file version_mismatch 'nodename' 'rem_version' 'rem_procedure'$ goto open_server $ ENDIF $ ENDIF$ goto flush_output*$ ENDIF*$*!$ IF rem_record .eqs. "%COMMAND" *$ THEN !$ ! Send Command4$ if verbose then say Dnodename," Sending command"$ Write_Destination Command $ Goto Flush_Outpute$ ENDIFe$e%$ IF rem_record .eqs. "%DCL_COMMAND" $ THEN n"$ ! Send DCL command if supplied8$ if verbose then say Dnodename," Sending DCL comamnd"!$ Write_Destination DCL_commandd$ Goto Flush_Output $ ENDIFr$!$ IF rem_record .eqs. "%USERNAME"c$ THEN?$ if verbose then say Dnodename," Requesting Remote Username"*!$ Read_Destination rem_username*$ goto flush_outputF$ ENDIFU$ !$ IF rem_record .eqs. "%NODENAME"U$ THEN?$ if verbose then say Dnodename," Requesting Remote Nodename"o!$ Read_Destination rem_nodenamet$ goto flush_outputd$ ENDIFe$r$ IF rem_record .eqs. "%PID"$ THENA$ if verbose then say Dnodename," Requesting Remote Process ID"s$ Read_Destination rem_pid$ goto flush_outputm$ ENDIFv$o$ IF rem_record .eqs. "%PRCNAM"r$ THENC$ if verbose then say Dnodename," Requesting Remote Process Name" $ Read_Destination rem_prcnamh$ goto flush_output $ ENDIFs$e&$ IF rem_record .eqs. "%DISPLAY_NODE" $ THEN "-$ ! DEFINE DISPLAY NODE - decw$display_nodei)$ ! obtained from show display/symbol $ IF display .eqs. ""m$ THEN;$ ! if display not defined then assume decnet node namev2$ if f$type(decw$display_node) .eqs. "" then -' decw$display_node = DWnodenamee+$ if decw$display_node .eqs. "0" then - ' decw$display_node = DWnodenamet8$ ! if transport type is LAT then strip off LTA port$ decw$display_node := -H 'f$extract(0,f$locate("=",decw$display_node),decw$display_node)'$ ELSE/$ display = f$edit(display,"compress,trim")m$!H$! The user supplied display is in the format of nodename::server.screenM$! We must now break out each of these fields. As the nodename syntax vary's gG$! from transport to transport, we decode from right to left (screen tofO$! server to nodename) for ease of decoding different transport specifications. $!5$ IF f$locate(":",display) .eq. f$length(display)p $ THEN1$ ! the user has supplied the nodename only(#$ decw$display_node = display $ display = "" $ ELSEB$ ! the user has supplied the nodename and the server.screen+$ display_counter = f$length(display) $display_server_loop:$ ! extract server.screen <$ IF f$extract(display_counter-1,1,display) .nes. ":" $ THEN-$ display_counter = display_counter-1"$ goto display_server_loop $ ELSE5$ node = f$extract(0,display_counter,display) :$ display = f$extract(display_counter,255,display) $ ENDIFe$display_node_loop: $ ! extract nodename9$ IF f$extract(display_counter-1,1,node) .eqs. ":" f $ THEN-$ display_counter = display_counter-1r $ goto display_node_loop $ ELSE?$ decw$display_node = f$extract(0,display_counter,node)- $ ENDIF- $ ENDIF- $ ENDIF"9$ if verbose then say Dnodename," Sending Display node" '$ Write_Destination decw$display_node,$ Goto Flush_Outputd$ ENDIF$ ($ IF rem_record .eqs. "%DISPLAY_SERVER" $ THEN y2$ ! DEFINE DISPLAY SERVER - decw$display_server )$ ! obtained from show display/symbole$ IF display .eqs. "" $ THEN4$ if f$type(decw$display_server) .eqs. "" then - decw$display_server = 0$ ELSEF$ decw$display_server = f$extract(0,f$locate(".",display),display)>$ display = f$extract(f$locate(".",display)+1,255,display) $ ENDIF ;$ if verbose then say Dnodename," Sending Display server"n)$ Write_Destination decw$display_servere$ Goto Flush_Output$ ENDIFN$O($ IF rem_record .eqs. "%DISPLAY_SCREEN" $ THEN -1$ ! DEFINE DISPLAY SCREEN - decw$display_screen-)$ ! obtained from show display/symbolH$ IF display .eqs. ""n$ THEN4$ if f$type(decw$display_screen) .eqs. "" then - decw$display_screen = 0$ ELSE#$ decw$display_screen = display $ ENDIFE;$ if verbose then say Dnodename," Sending Display screen"i)$ Write_Destination decw$display_screen-$ Goto Flush_Output-$ ENDIF-$-+$ IF rem_record .eqs. "%DISPLAY_TRANSPORT" $ THEN $ IF Transport .eqs. ""a$ THEN9$ ! DEFINE DISPLAY TRANSPORT - decw$display_transport,+$ ! obtained from show display/symbol=9$ ! if transport type node defined then assume decneto7$ if f$type(decw$display_transport) .eqs. "" then -) decw$display_transport := DECNET-K$ decw$display_transport = f$edit(decw$display_transport,"upcase,trim") J$ ! LOCAL transport uses a Global Section which is more efficient than$ ! network transports1$ if decw$display_node .eqs. bnodename then -N( decw$display_transport := LOCAL2$ if decw$display_node .nes. bnodename .and. -4 decw$display_transport .eqs. "LOCAL" then -) decw$display_transport := DECNETo<$ if f$extract(0,3,decw$display_node) .eqs. "LAT" then -& decw$display_transport := LAT$ ELSE($ decw$display_transport = transport $ ENDIFi@$ if verbose then say Dnodename," Sending Display transport".$ Write_Destination decw$display_transport$ Goto Flush_Outputm$ ENDIFH$$ IF rem_record .eqs. "%TITLE" a$ THEN )6$ ! Send the Window Title and Icon Name if supplied.G$ if verbose then say Dnodename," Sending Window Title and Icon Name"l$ Write_Destination titleO$ Goto Flush_Output$ ENDIFe$r$$ IF rem_record .eqs. "%INIT_STATE" $ THEN t8$ ! Send the Window Initial State - default is window.E$ IF f$edit(f$extract(0,1,init_state),"collapse,upcase") .eqs. "I" A $ THEN "$ init_state := icon$ ELSE)$ init_state := window !default $ ENDIFUI$ if verbose then say Dnodename," Sending Window Initial Startup State" $ Write_Destination Init_State$ Goto Flush_Outputt$ ENDIFI$"$ IF rem_record .eqs. "%POSITION" $ THEN #$ ! Send desired X and Y locatione$ if command .eqs. "DECTERM"$ then8$ x_pos = f$extract(0,f$locate(":",x_y_loc),x_y_loc)<$ y_pos = f$extract(f$locate(":",x_y_loc)+1,255,x_y_loc)$ else*$ x_pos = f$trnlnm("dwremterm_dwrt_x")*$ y_pos = f$trnlnm("dwremterm_dwrt_y") $ endifi9$ window_size := ,x_position='x_pos',y_position='y_pos' @$ if x_pos .eqs. "" .and. y_pos .eqs. "" then window_size = ""1$ if x_pos .nes. "" .and. y_pos .eqs. "" then - ) window_size := ,x_position='x_pos'a1$ if x_pos .eqs. "" .and. y_pos .nes. "" then -D) window_size := ,y_position='y_pos' D$ if verbose then say Dnodename," Sending Desired Window Location"!$ Write_Destination Window_sizeA$ Goto Flush_Output$ ENDIFa$h!$ IF rem_record .eqs. "%MESSAGE" "$ THEN _N$ ! Do not display informational messages if started automatically from the $ ! Session Manager $ Read_Destination Rem_message:$ If f$trnlnm("vue$input") .eqs. "" then Say rem_message$ Goto Flush_Outputr$ ENDIF=$v"$ IF rem_record .eqs. "%FINISHED" $ THEN $ ! Ending Session$ Goto Send_exit$ ENDIF-$-"$ IF rem_record .eqs. "%SHUTDOWN" $ THEN CJ$ ! Suppress -SYSTEM-F-THIRDPARTY messages caused by network link killer$ Shutdown_Pending = 1$ Goto Flush_Output $ ENDIFI$s$ SAY rem_record !catchall$ goto flush_outpute$eP$!------------------------------------------------------------------------------6$! THIS SECTION OF CODE IS THE ERROR AND EXIT HANDLERS$!$open_server_failed:?$ if verbose then say Dnodename," Remote Task DWREMTERM failed"0$ ! copy a new file if we've not done so already,$ if copy_pass .ne. 0 then goto open_failure,$ call copy_file object_not_found 'nodename'K$ !if an error occurred in the call copy_file subroutine then on returning wD$ ! we will branch to open_failure as on warning is still in effect.$ goto open_server$e$open_failure:$! %$! do not display an error message if )$! a. FILE NOT FOUND (already displayed)-@$! b. SYSTEM-F-THIRDPARTY (DISCONNECT_LINK has terminated link)$!$ status = $status+$ IF f$extract(7,3,status) .ne. 910 .and. -eM (.not. shutdown_pending .and. f$extract(7,5,status) .ne. %x1C0F4) then -a6 say "Failed connection, Return Status: ", $Status$! $send_exit:_1$ IF f$trnlnm("link_destination",,,,,"terminal") r$ THEN _?$ if verbose then say Dnodename," Closing the DWremterm link"-$ close link_destination$ ENDIF-$ Exit 1'$ ENDSUBROUTINE !end of SEND Subroutinen$!P$!******************************************************************************O$! THIS SUBROUTINE IS THE COMMAND PARSER THAT DECODES AND VALIDATES INPUT CMDS. $!$command_parser: subroutineX=$ sb = "'" ! parameter was passed as a symbol, command mode J$ if menu_mode then sb = "" ! parameter was passed as a value , menu mode$ pa == f$edit('sb'p1,"upcase")$ pb == f$edit('sb'p2,"upcase")-$ pc == f$edit('sb'p3,"upcase")-$ pd == f$edit('sb'p4,"upcase")v$ pe == f$edit('sb'p5,"upcase")n$ pf == f$edit('sb'p6,"upcase") $ pg == f$edit('sb'p7,"upcase")t$ ph == f$edit('sb'p8,"upcase")R/$ verb == f$edit(pa,"compress,trim,upcase")/$ nodename == f$edit(pb,"compress,trim,upcase") &$ !decode node 0 as the local nodename-$ if f$extract(0,1,nodename) .eqs. "0" then -e5 nodename == dwnodename+f$extract(1,256,nodename)-$ bnodename == "" $-$ ! combine all parameters:$ param_all == f$edit(pa+" "+pb+" "+pc+" "+pd+" "+pe+" "+-7 pf+" "+pg+" "+ph,"compress,trim")R$t$ ! break out the DCL command #$ IF f$extract(0,1,verb) .eqs. "$" $ THEN+$ $_command == f$extract(1,255,param_all)d$ nodename == ""$ verb :== $$ ENDIFm$_;$ ! ensure nodename is suffixed with double a double colon $ if nodename .nes. "" .and. -A f$extract(f$length(nodename)-2,2,nodename) .nes. "::" then -F nodename == nodename + "::"7$ ! ensure bnodename is not suffixed with double colon $ if nodename .nes. "" .and. -A f$extract(f$length(nodename)-2,2,nodename) .eqs. "::" then -"< bnodename == f$extract(0,f$length(nodename)-2,nodename)$ ! hide password.,$ sec_nodename == f$parse(nodename,,,"node")$v$ exit2$ ENDSUBROUTINE !end of command_parser subroutine$!P$!******************************************************************************J$! THIS SUBROUTINE WILL COPY A NEW VERSION OF DWREMTERM TO THE REMOTE NODE$!$COPY_FILE: SUBROUTINE $ set noon $ status = 1$ file_copied = 0C$ copy_reason = p1$ nodename = p2$ rem_version = p3$ rem_procedure = p4$ ! conceal password,$ sec_nodename = f$parse(nodename,,,"node")$ copy_pass == copy_pass+1$n)$ IF copy_reason .eqs. "VERSION_MISMATCH"o$ THEN6$ say bon,"WARNING, DWREMTERM version mismatch",boff5$ say bon,"Local ",Dnodename," V",Version," ",-m8 "Remote ",Sec_nodename," V",Rem_Version,boff$ ENDIF $!)$ IF copy_reason .eqs. "OBJECT_NOT_FOUND" $ THEND$ status := %X00000910 !return failure code if new file not copied $ say - J"DECWindows is not installed, DWREMTERM object not defined or login error"$ goto copy_file_exitp$ ENDIFe$ ! G$ ! the DWremterm copy facility can be disabled by defining the logical$ ! DWremterm_inhibit_copy@$ if f$trnlnm("dwremterm_inhibit_copy") then goto copy_file_exit$l@$ Read/Prompt="Do you want to copy the latest version? Y/(N) " -6 /end_of_file=copy_file_exit sys$command response$ $ IF response $ THEN$ IF .not. verbose ( $ THEN eF$ ! don't display error messages. We'll just return the error code%$ define/user/nolog sys$error nl: &$ define/user/nolog sys$output nl: $ ENDIF$ !TC$ ! copy latest version of DWremterm file to or from remote node.a$ !'3$ IF copy_reason .eqs. "VERSION_MISMATCH" .and. -r rem_version .ges. version$ THEN+$ ! copy from remote node to local node I$ Copy/log/protection=w:rwe 'nodename''rem_procedure' 'loc_procedure'e$ status = $status$ IF status $ THEN=$ SAY "Copied file from ",sec_nodename," to ",dnodename $ ELSE/$ IF copy_reason .nes. "OBJECT_NOT_FOUND" $ THENM$ say "No privilege to copy DWremterm to ",dnodename," - continuing..."m$ status = 1 $ ENDIFm $ ENDIF $ file_copied := truep $ ENDIFa$ $ IF .not. file_copied$ THEN+$ ! copy from local node to remote nodeCI$ Copy/log/protection=w:rwe 'loc_procedure' 'nodename''rem_procedure'x$ status = $status$ IF statusa $ THEN=$ SAY "Copied file from ",dnodename," to ",sec_nodename $ ELSE/$ IF copy_reason .nes. "OBJECT_NOT_FOUND"u $ THENP$ say "No privilege to copy DWremterm to ",sec_nodename," - continuing..."$ status = 1 $ ENDIF" $ ENDIFt $ ENDIFs$ ENDIFi$copy_file_exit:$ exit status+%x10000000-$ ENDSUBROUTINE !end of copy_file subroutinet$!P$!******************************************************************************J$! THIS SUBROUTINE IS USED TO GENERATE A UNIQUE PROCESS NAME, WINDOW TITLE$! AND ICON NAME. $!$NAMES: SUBROUTINEG$! determine a unique process name and use this to set the window title.H$! and icon name. Note: for this to work the user's login.com should not#$! manually set their process name.a$$! The process name is of the form:-2$! DWremterm:L'count' !for DWremterm menu window0$! nodename:L'count':verb !for local proccess's0$! nodename:R'count':verb !for remote proccess'sM$! The verb suffix is omitted on long nodenames such as VT1200 LAT nodenames.l$! $ set noon $ prefix = p1i $ suffix = p2s $ index = 0$ state := L !Local processy=$ if f$mode() .eqs. "NETWORK" then state := R !Remote process&$ saved_prcnam = f$getjpi("","prcnam")$w $proc_loop:)$ index = index + 1s($ ! trap out if we are in a endless loop$$ if index .gt. 100 then index = "?"$:$ ! shorten LAT nodenamesD$ if f$edit(f$extract(0,4,prefix),"upcase,trim") .eqs. "LAT_" then -) prefix := LAT'f$extract(10,6,prefix)n$r%$ ! shorten ADSP MACINTOSH node namese3$ if f$length(prefix) .ne. f$loc(":",prefix) then -D4 prefix = f$extract(0,f$loc(":",prefix),prefix)$ 9$ IF f$locate("LAT",prefix) .ne. f$length(prefix) .and. -t, suffix .eqs. "LAT" .or. suffix .eqs. ""$ THEN$$ ! omit suffix if a LAT nodename)$ name == "''prefix':''state'''index'"l$ ELSE3$ name == "''prefix':''state'''index':''suffix'"h$ ENDIFr$i4$ !don't allow us to re-use our current process name0$ if saved_prcnam .eqs. name then goto proc_loop'$ if index .eqs. "?" then goto got_namea$rN$ ! if process name is already in use the return and try another process name.$ on error then goto proc_loop!$ define/user/nolog sys$error nl:o"$ define/user/nolog sys$output nl:,$ set process/name="''f$extract(0,15,name)'"4$ !we are here because we have a unique process name $ set noon -,$ !return process name to the default value.$$ set process/name="''saved_prcnam'"$O $got_name: $ set noon$ IF index .eqs. "?"$ THENL$ ! if a unique process name was not found in 100 passes the return blank.,$ dprcnam == "" !name for verbose message*$ sprcnam == "" !name for set proc/name/$ prcnam == "" !name for create/term/prcnam_$ ELSE#$ dprcnam == f$extract(0,15,name)2$ sprcnam == "/name=""''f$extract(0,15,name)'"""5$ prcnam == "/process=""''f$extract(0,15,name)'"""m$ ENDIFd$ $ exit 1/$ ENDSUBROUTINE !end of names subroutineo$!P$!******************************************************************************6$! THIS SECTION OF CODE IS EXECUTED ON THE REMOTE NODE$! $NETWORK:n$!H$! Write status information to NETSERVER.LOG and the originating node if$! Verbose is enabled.$!$ errors_not_reported :== 0a5$ define/process/nolog netserver$timeout "0 00:00:00"F$p$ Rem_command = ""$$ Write_Source = "write link_source"$$ Read_Source = "read link_source"$h2$ on warning then goto remote_error !error handler$ %$ open/read/write link_source sys$netm$'2$ Write_Source "%VERBOSE" !Request Verbose Status$ Read_Source verboseN $ IF verbose f$ THEN u?$ Write_Source bon,Dnodename," Verbose Messaging is: On",boff "$ Say "Verbose Messaging is: On"'$ define/nolog sys$error link_source r$ ELSE#$ Say "Verbose Messaging is: Off"u$ ENDIFI$$ Write_Source "%PROCEDURE"C$ Write_Source loc_procedure.$ if verbose then Write_Source bon,Dnodename,-: " Remote Procedure Name is: ",f$env("procedure"),boff6$ Say "Current Procedure Name is: ",f$env("procedure")$ *$ Write_Source "%VERSION" !Supply Version$ Write_Source versionm.$ if verbose then Write_Source bon,Dnodename,-) " Remote version is: V",version,boffF%$ Say "Current version is: V",version%$E6$ Write_Source "%COMMAND" !request a command to issue$ Read_Source Rem_Command /$ if verbose then Write_Source bon,Dnodename, -o9 " Received DECwindows Command is: ",rem_command,boff4$ Say "Received DECwindows Command is: ",rem_command$c4$ Write_Source "%DCL_COMMAND" !request DCL command$ Read_Source Rem_Dcl_Commandm/$ if verbose then Write_Source bon,Dnodename, -t6 " Received DCL command is: ",rem_dcl_command,boff1$ Say "Received DCL command is: ",rem_dcl_commandu$,$ Write_Source "%USERNAME" !Supply Username$ Write_Source DWusernameI.$ if verbose then Write_Source bon,Dnodename,-, " Remote Username is: ",DWusername,boff($ Say "Current Username is: ",DWusernameJ$! It would be a security hole to allow a remote user to log on as DECnet.I$! Therefore the only command we allow to execute from the DECnet account$D$! is an RDT command, but with the /nologged_in qualifier. This will/$! prompt the user for a username and password.f$ IF DWusername .eqs. "DECNET"$ THEN @$ IF rem_command .nes. "DECTERM" .or. rem_dcl_command .nes. ""$ THEN$ Write_Source -F "ERROR: You are not Authorized to use the DECNET account..."F$ Say "ERROR: You are not Authorized to use the DECNET account..."$ goto network_close $ ENDIFa$ ENDIFg$!,$ Write_Source "%NODENAME" !supply nodename$ Write_Source DnodenameL$ if verbose then Write_Source bon,dnodename," Nodename is: ",dnodename,boff$ Say "Nodename is: ",dnodenamep$)*$ Write_Source "%PID" !supply Process ID!$ Write_Source f$getjpi("","pid")a.$ if verbose then Write_Source bon,Dnodename,-/ " Remote PID is: ",f$getjpi("","pid"),boffs+$ Say "Current PID is: ",f$getjpi("","pid")c$n.$ Write_Source "%PRCNAM" !supply process name$$ Write_Source f$getjpi("","prcnam").$ if verbose then Write_Source bon,Dnodename,-; " Remote Process Name is: ",f$getjpi("","prcnam"),boffp7$ Say "Current Process Name is: ",f$getjpi("","prcnam")s$e3$ Write_Source "%DISPLAY_NODE" !request nodenames$ Read_Source Rem_node.$ if verbose then Write_Source bon,Dnodename,-0 " Received Display Node is: ",Rem_node,boff+$ Say "Received Display Node is: ",Rem_nodea$ rem_node = """"+rem_node+"""".$"2$ Write_Source "%DISPLAY_SERVER" !request server$ Read_Source Rem_Server.$ if verbose then Write_Source bon,Dnodename,-4 " Received Display Server is: ",Rem_server,boff/$ Say "Received Display Server is: ",Rem_serverv$o7$ Write_Source "%DISPLAY_SCREEN" !request screen number_$ Read_Source Rem_Screen.$ if verbose then Write_Source bon,Dnodename,-4 " Received Display Screen is: ",Rem_screen,boff/$ Say "Received Display Screen is: ",Rem_screen $ <$ Write_Source "%DISPLAY_TRANSPORT" !request transport type$ Read_Source Rem_Transportw.$ if verbose then Write_Source bon,Dnodename,-: " Received Display Transport is: ",Rem_transport,boff5$ Say "Received Display Transport is: ",Rem_transport $$7$ Write_Source "%TITLE" !request icon and title name$ Read_Source Rem_titlen.$ if verbose then Write_Source bon,Dnodename,-? " Received Window Title and Icon Name is: ",Rem_title,boff%$ Say "Received Title is: ",Rem_titleE-$! ensure lowercase characters are maintainede>$ if f$locate(" ",rem_title) .ne. f$length(rem_title) .and. - L f$extract(0,1,rem_title) .nes. """" then rem_title = """''rem_title'"""$ G$ Write_Source "%INIT_STATE" !request initial state - window or iconr$ Read_Source Rem_Init_State/$ if verbose then Write_Source bon,Dnodename, - > " Received Window Startup State is: ",rem_init_state,boff9$ Say "Received Window Startup State is: ",rem_init_state_$NC$ IF Rem_Command .eqs. "DWREMTERM" .or. Rem_Command .eqs. "DECTERM"I$ THEN=$ Write_Source "%POSITION" !request DWRT window position $ Read_Source Rem_Position1$ if verbose then Write_Source bon,Dnodename, -9 " Received Window Location is: ",rem_position,boff 9$ Say "Received Window Location is: ",rem_position,boffy$ ENDIFt$fP$!------------------------------------------------------------------------------F$! the perm display is a temporary workaround to fix a Motif V1.1 bug.1$! this problem is fixed in Decwindows Motif V1.2 $ oldsysnam = f$setprv("sysnam")$ if f$priv("sysnam") $ then$ perm_display := "/Exec" L$ say "User has SYSNAM privilege - Creating permanent decwindows display "6$ say " to overcome a DECwindows Motif V1.1 bug"$ else$ perm_display := ""K$ say "User does not have SYSNAM privilege - display may be deleted due "t-$ say " to a DECwindows Motif V1.1 bug"m$ endifn4$ Set Display/Create/Node='Rem_Node''perm_display' -C /Trans='Rem_Transport'/Screen='Rem_Screen'/Server='Rem_Server' $$ if verbose then Write_Source bon,-8 "Display Created with the following command:-",nl,-I " $ Set Display/Create/Node=",Rem_Node,"/Trans=",Rem_Transport,nl,-tJ " /Screen=",Rem_Screen,"/Server=",Rem_Server,perm_display,boff9$ Say "Display Created with the following command:-",nl,-tJ " $ Set Display/Create/Node=",Rem_Node,"/Trans=",Rem_Transport,nl,-F " /Screen=",Rem_Screen,"/Server=",Rem_Server,perm_display$ set proc/priv='oldsysnam'!$!-$! Set up symbols for process name generationn$!$ Show_command = Rem_commandS$ Execute_command = Rem_commandt$a($ IF Rem_command .nes. "DECTERM" .and. -) Rem_command .nes. "FILEVIEW" .and. - " Rem_command .nes. "DWREMTERM"$ THEN$ rem_init_state = """$ verb := RDW $ ELSE$ verb := 'rem_transport'l$ ENDIFo$"$ IF Rem_command .eqs. "DWREMTERM"$ THEN$ verb := DWremtermlB$ Execute_command := @'f$environment(""procedure"")' DWREMTERM -E 'Rem_Position' ,initial_state='Rem_Init_State'o$ ENDIFt$="$ IF Rem_command .eqs. "FILEVIEW" $ THEN e$ verb := RFVwK$ ! note: a current bug in the DECwindows Toolkit prevents FILEVIEW from _H$ ! starting as an icon reliably - works fine with LOCAL transport but-$ ! is intermittent under other transports.s#$ IF rem_init_state .eqs. "ICON" , $ THEN e$ rem_init_state := -iconic_$ ELSE$ rem_init_state = ""u $ ENDIF0$ Show_command := FILEVIEW 'rem_init_state'6$ Execute_command := MCR VUE$MASTER 'rem_init_state'$ ENDIFa$m5$ ! default process name is nodename:Rcount:transports$ call names 'rem_node' 'verb'$n$! temp bug workaround $ ctx = ""7$ tmp = f$cont("PROCESS",ctx,"PRCNAM",dwusername,"EQL")r$ IF f$pid(ctx) .eqs. ""$ THEN M$ ! there is a bug whereby decterms will not correctly set the process name%G$ ! if a process name containing the username does not already exist. 0$ if verbose then Write_Source bon,Dnodename,-P " DECterm bug found - setting network proccess name to overcome error",boff $ Say -!K "DECterm bug found - setting network proccess name to overcome error"- $ set noon$ define/user sys$error nl:I$ define/user sys$output nl:$ set proc/name='dwusername'4$ on warning then goto remote_error !error handler$ ENDIFw$e!$ IF rem_transport .eqs. "DECNET"s$ THEN$ node_delim = "::"$ ELSE$ node_delim = ":"$ ENDIFn$'4$ !tell us where we are going to display the window.$ Write_Source "%MESSAGE" $ Write_Source -J "Remote `",f$edit(Show_Command+" "+rem_dcl_command,""trim""),"' is ",-+ "starting on ''Dnodename' and being ",-r8 "displayed on ",Rem_Node,Node_delim,Rem_Server,".",-8 Rem_Screen," using the ",rem_transport," transport."$ Say -!J "Remote `",f$edit(Show_Command+" "+rem_dcl_command,""trim""),"' is ",-+ "starting on ''Dnodename' and being ",-u8 "displayed on ",Rem_Node,Node_delim,Rem_Server,".",-8 Rem_Screen," using the ",rem_transport," transport."$_ $ IF Rem_Command .eqs. "DECTERM"$ THENK$ ! default icon and title names is of the form nodename:Rcount:transporti-$ if rem_title .eqs. "" then rem_title := -TP 'DWnodename':'f$ext(f$loc(f$elem(1,":",name),name),2,name):'rem_transport'-$ if prcnam .eqs. "" then prcnam = """-""!"UJ$! It would be a security hole to allow a remote user to log on as DECnet.I$! Therefore the only command we allow to execute from the DECnet accountcD$! is an RDT command, but with the /nologged_in qualifier. This will/$! prompt the user for a username and password."!$ IF DWusername .eqs. "DECNET" -$ THEN$ loggedin = "/NoLogged_in" $ ELSE$ loggedin = "" $ ENDIFb $ IF Rem_Dcl_Command .eqs. "" $ THEN "D$ ! if no DCL command is supplied then run as a detached process$ dwwait = ""d$ detached = "/Detached"$ ELSE=$ ! if a DCL command is supplied then run as a subprocesshM$ ! It is done this way as you cannot use run a command file as part of a !$ ! detached process startup.a$ dwwait = "/wait"$ detached = "/Nodetached"$ dwremterm_rdt := true" $ ENDIF $pP$!------------------------------------------------------------------------------&$ If verbose then Write_Source bon,-: "Window Created with the following commands:-",boff$ If verbose d $ Then a$ Write_Source bon,-E " $ Create/Terminal''dwwait'''detached'''loggedin'",prcnam,"-"n$ Write_Source -3 " /Window_att=(title=",rem_title,"-"o$ Write_Source -7 " Icon_name=",Rem_title,"-"a$ Write_Source -@ " Initial_State=",Rem_Init_State,"-"$ Write_Source -E " ''Rem_Position') ",Rem_Dcl_Command,boffd $ Endifd$m $ Say -e4 "Window Created with the following commands:-" $ Say -xE " $ Create/Terminal''dwwait'''detached'''loggedin'",prcnam,"-"* $ Say -*3 " /Window_att=(title=",rem_title,"-"* $ Say - 7 " 'f=~ DWREMTERM.BCK[KINGSMILL.TEMP]DWREMTERM.COM;2_5|Icon_name=",Rem_title,"-"M $ Say -!@ " Initial_State=",Rem_Init_State,"-" $ Say -y@ " ''Rem_Position') ",Rem_Dcl_Command$c $ IF Rem_Dcl_Command .eqs. "" $ THENM$ !due to a bug in DECwindows V2.x a failure in /DETACHED will not returne?$ !the error in $STATUS. This is fixed in DECwindows MOTIF.E;$ Create/Terminal'dwwait''Detached''loggedin''prcnam' -"C /Window_Att=(Title='Rem_title',Icon_name='Rem_title', -eG Initial_State='Rem_Init_State''rem_position') H$ goto network_close$ ELSE$ execute_command = -D "Create/Terminal''dwwait'''Detached'''loggedin'" + prcnam +-H "/Window_Att=(Title=" + Rem_title + ",Icon_name=" + Rem_title +-H ",Initial_State=" + Rem_Init_State + rem_position + ")" + " " +- Rem_Dcl_Command $ ENDIF($ ENDIFm$ ($! all commands except detached dectermsB$ if verbose .and. Rem_Command .nes. "DECTERM" then Write_Source -. "Remote Command being executed is:-",nl,- " $ ",Execute_Command+$ if Rem_Command .nes. "DECTERM" then Say - / "Remote Command being executed is:-",nl,-h " $ ",Execute_Command$!I$! this creates a command procedure which is read by the detached process -$! The detached job is done for two reasons:- L$! - to prevent the remove job tying up the local interactive users process/$! - to allow jobs that issue a spawn to work H8$! (spawn jobs do not work from a network process)$!$ i = 0t$REM_FILENAME_LOOP:r $ i = i+1e$ outfile := -L 'f$trnlnm("sys$login")'dwremterm_'f$ext(4,4,f$getj("","pid"))'_'i'.tmp;1=$ if f$search(outfile,1) .nes. "" then goto rem_filename_loop $ open/write out 'outfile'I$ write out "$!*** this is a temporary file created by dwremterm.com ***""$ write out "$ set noverify"$ write out "$ set noon"!$ write out "$! set process name"e$ write out "$ i = 0$ write out "$nameloop:f$ write out "$ i = i + 1.$ write out "$ define/user/nolog sys$error nl:/$ write out "$ define/user/nolog sys$output nl:m#$ write out "$ set process/name="+-tP "''f$edit(f$extr(0,7,f$getj("","username")),"trim,lowercase")'_dwrt_'i'"2$ write out "$ if .not. $status then goto nameloopA$ write out "$! we are here because we have a unique process name K$ write out "$ Set Display/Create/Node=",Rem_Node,"/Trans=",Rem_Transport,- 7 "/Screen=",Rem_Screen,"/Server=",Rem_Serveri5$ write out "$ write sys$output ""Starting Command"""n$ write out "$ type sys$input"#$ write out "$ deck/dollars=""^z"""* $ write out "$ ",execute_command$ write out "^z" $ write out "$ ",execute_command5$ write out "$ write sys$output ""Finished Command"""!$ write out "$loop:"O$ write out "$! this loop prevents the program from exiting if a subprocess "+-i "exists"$ write out "$ wait 00:00:15" B$ write out "$ if f$getjpi("""",""prccnt"") .ne. 0 then goto loop"3$ write out "$ delete/nolog 'f$env(""procedure"")'"m:$ write out "$ purge/keep=2/nolog sys$login:dwremterm.log"$ write out "$ exit" $ close outf$!M$ if verbose then Write_Source bon,Dnodename,"Starting Detached Process",boff0!$ Say "Starting Detached Process" 2$ Run/detached/authorize sys$system:loginout.exe -B /input='outfile'/output='f$trnlnm("sys$login")'dwremterm.log $ goto network_close$aP$!------------------------------------------------------------------------------$remote_error:/$ ! return completion status if link still openx$ Status = $Status $ set noon7$! Status %X0001827A = RMS-E-EOF, end of file detected..=$! This occurs when the source node closes the network link. I$! As this is an expected status (eg. copying a new version of DWremterm)c$! ignore the error$ IF Status .eqs. "%X0001827A" "$ THEN )F$ Say "Network Link Closed by Source Node ",f$trnlnm("sys$rem_node")$ goto network_exitT$ ENDIFf$ 2$ IF .not. f$trnlnm("link_source",,,,,"terminal") $ THEN n8$ Say "Network already closed, all completed, exiting"$ exit$ ENDIF'$n $ IF Status $ THEN I$! Write_Source "%MESSAGE";$! Write_Source "Remote Application created sucessfully."t1$ Say "Remote Application created sucessfully."g$ ELSE"$ Write_Source/error=send_mail -; "Remote Application Error Occured, Status: ",Statust$ Goto Network_Close $send_mail:o6$ file := sys$scratch:dwremterm.'f$getjpi("","pid")''$ status_message = f$message(status) "$ Open/write mailfile 'file'$ write mailfile ""'$ write mailfile "DWremterm Failed. "h<$ write mailfile "Error code: ",status," ",status_message#$ IF Rem_command .eqs. "DECTERM" .$ THEN3$ write mailfile "DECterm command issued was: "0-$ write mailfile " ''Rem_DCL_Command'" !$ ELSE,$ write mailfile "Command issued was: "-$ write mailfile " ''execute_command'" t $ ENDIFaA$ write mailfile "Refer to the file NETSERVER.LOG for details."n#$ Say "Mailing off error message" $ close mailfile-$ Mail/noself/subject="DWremterm Failure" - A 'file' 'f$trnlnm("sys$rem_node")''f$trnlnm("sys$rem_id")'*$ delete 'file';J$! Write_Source "Ensure that Security for this user has been enabled...";$ Say "Remote Application Error Occured, Status: ",Statusi$ ENDIF $o$network_close:V-$ Write_Source/error=network_exit "%FINISHED"i$ Say "Closing Remote Link"rB$ if f$trnlnm("link_source",,,,,"terminal") then close link_source$network_exit:$ Say "Remote Link is Closed"r$ set noverify$ exitource = "read link_source"$h2$ on w*[KINGSMILL.TEMP]DWREMTERM.HLB;1+,E./ 4-0123 KPWO5=6'J7}뺉89GHJd% VAX-11 Librarian V04-00'J=($ĺ<-pt5  DWremterm; GEOFF DWremterm"&K GEOFF DWremterm"s x(K GEOFF DWremterm"KCK GEOFF DWremterm"yZK OLSENK DWremterm"L GEOFF DWremterm"@x[6Q GEOFF DWremterm"N[ GEOFF DWremterm"[ GEOFF DWremterm"ژ{*[ OLSENK DWremterm"0 [ OLSENK DWremterm"/L_ GEOFF DWremterm"@B_ GEOFF DWremterm"_ GEOFF rm"n  KINGSMILL DWremterm"}ǖ KINGSMILL DWremterm"ź KINGSMILL DWremterm =($ĺ 1 DWremtermoM DWremterm is designed to allow users flexibility in using DECwindows across mK a large number of machines connected together by a Local Area Network. It tJ allows users to create LAT or DECnet windows locally or to create remote L DECwindows sessions. The DECwindows commands RDT, RFV and RDW are actually @ network process's as such do not count as an interactive login.2 INSTALLATION" DWremterm consists of two files: 6 VUE$LIBRARY:DWREMTERM.COM and SYS$HELP:DW REMTERM.HLB.E DWremterm.com needs to exist on both the local and remote nodes and K requires the user to either specify node access control or for the remote o) account to be set up with proxy access. i aM DWremterm can simply reside in sys$login on the remote node, which requires n" each user to have their own copy. -or- I DWremterm can be defined as a DECnet object, requiring only one copy on e each system.nH The LATmaster software is optional in VMS 5.4-x and is integrated into H VMS 5.5. If LATmaster is installed on VMS 5.4-x then CSCPAT_0511 patch F should also be installed. If LATmaster is not installed then the LAT  command cannot be used.G A unique window name and icon name is chosen by referencing the user'sVC process name. If the login sequence changes the process name then + duplicate window and icon names may occur.t3 NETWORK_OBJECTD To install DWremterm as a network object the system manager should  enter the following commands: $ MCR NCP 0 NCP> DEFINE OBJECT DWREMTERM NUMBER 0 FILE -> SYS$COMMON:[VUE$LIBRARY.USER]DWREMTERM.COM PROXY BOTH! NCP> SET OBJECT DWREMTERM ALL NCP> EXIT  $R3 PRIVATE_DECNET_TASKcF If DWremterm is not installed as a network object then by default no G other setups are required. However if the DECnet object task has been rD Modified to disable proxy access then DWremterm will fail. In this = case the system manager should enter the following commands:L $ MCR NCPF& NCP> DEFINE OBJECT TASK PROXY BOTH NCP> SET OBJECT TASK ALL NCP> EXITs $ 3 PROXY_ACCOUNTSC Proxy accounts allow a user direct access to another users accountlF without having to specify a username and password. The system manager8 can set up proxy account access from within AUTHORIZE.  Example: $ MCR AUTHORIZE>e; UAF> ADD/PROXY MVAX::KINGSMILL KINGSMILL/DEFAULTi0 UAF> ADD/PROXY MVAX::KINGSMILL OLSENK UAF> EXIT $A This examples allows user  KINGSMILL on node MVAX into the local rA KINGSMILL and OLSENK accounts. The default switch enables you to6 specify just the nodename when addressing this node:- eg. $ DIRECTORY TVAX::e A If Default access is not specified then you need to specify the h2 nodename and username when addressing this node:-! eg. $ DIRECTORY TVAX"OLSENK"::t= If you do not have proxy access then you need to specify thes< nodename, username and password when addressing this node:-* eg. $ DIRECTORY TVAX" SYSTEM password":: C DWremterm gives you the flexibility to use any of these addressingz. schemes, however proxy access is recommended. 3 SECURITYC The Factory Defaults prohibit a remote users from displaying theirl? output to your workstation. To authorize other users or remote 2 nodes to use your workstation display you should:= 1. Choose Security... from Session Manager's Options menu.rC 2. Type the nodename, the username, and the method of transport,rB of the user you want to G If DWremterm is started from a DECterm session then that session will iE be locked for the duration of the DWremterm Window. It is therefore oE recommended that DWremterm be installed as a DECwindows application i/ either under the session manager or Fileview. e3 COMMAND_MODE; Commands are entered from the DCL command line by typing:-: $ @VUE$LIBRARY:DWREMTERM nodename command [qualifiers...]A It is suggested that DWremterm be defined as a symbol and placed 6 in your login.com. This s authorize. Entering * * * will allowB any user on any node with any transport to display output on your workstaton./ 3. Click on the Add button and the Clock OK.m7 Refer to the DECwindow User Guide for further details.l2 MODESr# DWremterm can be run in two modes:m< MENU MODE: commands are entered from a Small Menu Window.@ COMMAND MODE: commands are entered from the DCL command line. 3 MENU_MODErG Commands are entered from a Small Menu Window. DWremterm can be added hD a s a DECwindows Application or simply started from the DCL command  line by entering:-r mG $ @VUE$LIBRARY:DWREMTERM.COM command nodename [optional qualifiers...]tF This will then display a small DWremterm MENU window at the top left C hand corner of your screen. The WINDOW POSITION and INITIAL STATE nI (window or icon) can be altered from the default setting by editing the MG resource file. Details on how to do this is documented in the resourceD file itself located in decw$user_defaults 3 DECNET  D E C n e t W I N D O WC This command creates a new DECterm window, sets the icon and titleL@ name to the requested nodename and requests login information. = The command is equivalent to a CREATE/TERMINAL followed by aE SET HOST command.. Command syntax is DWremterm> DECNET nodename - Example: DWremterm> DECNET MVAX ori/ $ @VUE$LIBRARY:DWREMTERM DECNET MVAXeI This example creates a window using DECnet as its network transport and UC connects :dwremterm$default_v*.dat.G If DWremterm is started from a DECterm session then that session will cE be locked for the duration of the DWremterm Window. It is therefore :E recommended that DWremterm be installed as a DECwindows application e/ either under the session manager or Fileview. 3 COMMAND_MODE; Commands are entered from the DCL command line by typing:- : $ @VUE$LIBRARY:DWREMTERM nodename command [qualifiers...]A It is suggested that DWremterm be defined as a symbol and placed 6 in your login.com. This should be entered as follows:' $ DWREMTERM :== @VUE$LIBRARY:DWREMTERMR9 The LAT and DECNET commands are NOT valid in this mode. a. These commands can only be used in Menu mode.0 Example: $ @VUE$LIBRARY:DWREMTERM RDT MVAX -or- $ DWREMTERM RDT MVAX? Commands are entered directly from the DCL prompt. In all the cB following examples the $ DWREMTERM symbol can be be used in place of the DWremterm> prompt. 2 COMMANDSK Valid command are:- HELP, DWHELP, LAT, DECNET, RDT, RFV, RDW, DWRT and $.n. Parameters shown in [] brackets are optional.3 HELP H This gives you a list of valid commands and information on how to gain  further help.E Brief Help can be obtained by entering a Command with no qualifiers.T, Full Help can be obtained by typing DWHELP.$ Command syntax is: DWremterm> HELP & Example 1: DWremterm> HELP or( $ @VUE$LIBRRY:DWREMTERM HELP p Valid Commands are:>; LAT,DECNET,RDT,RFV,R DW,DWRT,$, HELP and DWHELP.dF Enter Command only for Brief Help or DWHELP for Full Help. r& Example 2: DWremterm> RDT or' $ @VUE$LIBRRY:DWREMTERM RDT9 This command creates a Remote DECterm Window:B; RDT nodename [init_state] [title] [dcl_command]t4 [display] [transport] [X:Y] DWremterm> s= This example shows how to get brief help on the command RDT.T 3 DWHELP lJ This command will create a new windA Example 1: DWremterm> RDT MVAX ICON MVAX_DECTERM "" MVAXS1::0.0XE $ @VUE$LIBRARY:DWREMTERM RDT MVAX ICON MVAX_DECTERM "" - % MVAXS1::0.0 G This example will bring up a remote DECterm session as an icon named pB MVAX_DECTERM on MVAX and display it on MVAXS1 Server 0 Screen 0.5 Example 2: DWremterm> RDT MVAX"KINGSMILL PASSWORD" eB $ @VUE$LIBRARY:DWREMTERM RDT MVAX"KINGSMILL PASSWORD" oH This example will bring up a remote DECterm sessC This requires LATmaster Software to be installed which is optional / on VMS 5.4-x, but is integrated into VMS 5.5. ; If LATmaster is not installed then use the DECNET command. e@ The LAT command does not require the DECwindows software to be @ installed on the remote node and is only valid under MENU MODE. C The logical LAT$DISCONNECT_CHARACTER can be defined to specify an tB alternate disconnect character. The default character is Ctrl+\ ., Command syntax is: DWremterm> LAT now and call sys$library:dwremterm.hlb.; A full description of each command is given with examples. & Example: DWremterm> DWHELP or( $ @VUE$LIBRRY:DWREMTERM DWHELP3 LAT D This command creates a new DECterm window, sets the icon and title @ name to the requested nodename and requests login information. > The command is equivalent to a CREATE/TERMINAL followed by a  SET HOST/LAT command. iC This requires LATmaster Software to be installed which is optionalT/ on VMS 5.4-x, but is integrated into VMS 5.5. e; If LATmaster is not installed then use the DECNET command.s g@ The LAT command does not require the DECwindows software to be @ installed on the remote node and is only valid under MENU MODE. C The logical LAT$DISCONNECT_CHARACTER can be defined to specify an sB alternate disconnect character. The default character is Ctrl+\ ., Command syntax is: DWremterm> LAT nodename ' Example 1: DWremterm> LAT MVAX wF This example creates a window using LAT as its network transport and D connects you to node MVAX. You are then prompted for your username  and password. 4 NODENAME D This specifies the desired nodename. You cannot use LAT to connect > to yourself. If this is required then use the DECNET command.  Example: MVAXD If this field is left blank a brief help message is display on the  respective command. 3 DECNET C This command creates a new DECterm window, sets the icon and titled@ name to the requested nodename and requests login information. = The command is equivalent to a CREATE/TERMINAL followed by ar SET HOST command.C The DECNET command does not require the DECwindows software to be i= installed on the remote node and is only valid in MENU MODE.S/ Command syntax is: DWremterm> DECNET nodename E+ Example: DWremterm> DECNET MVAX tI This example creates a window using DECnet as its network transport and eH connects you to node MVAX. You are then prompted for your username an2 TROUBLESHOOTING HINTS@ The following logicals can be used to aid in troubleshooting.L DWREMTERM_VERBOSE to display the progress of both local and remote eventsJ If verbose is enabled then a full sized menu window will be displayed1 DWREMTERM_VERIFY to turn on verify and verboseL DWREMTERM_DEBUG will turn on verbose and will always ask whether you want: to copy a new version of DWremterm to the remote nodeB This can also be enabled by prefixing the version with  d password. 4 NODENAME rA This specifies the desired nodename. The double colon suffix is B> optional. A "0" will decode as being the currently used node.  Example: MVAX, 0::, MVAX::TD If this field is left blank a brief help message is display on the  respective command.3 RDT @ This command starts a DECterm window on a remote node and uses > DECwindows to set the display to the desired workstation. If = proxy logins have been enabled then no login information is L; required. ITf there is no proxy access then access control mC information can be supplied as part of the nodename specification.sC This command is the equivalent of doing a SET HOST, followed by a o* SET DISPLAY/CREATE and a CREATE/TERMINAL.1 DECwindows must be installed on the remote node.l Command syntax is: < DWremterm> RDT nodename [init_state] [title] [dcl_command] 4 [display] [transport] [X:Y]@ Example 1: DWremterm> RDT MVAX ICON MVAX_DECTERM "" MVAXS1::0.0D "PO˓J 1 DWremterm N DWremterm is designed to allow users flexibility in using DECwindows across L a large number of machines connected together by a Local Area Network. It K allows users to create LAT or DECnet windows locally or to create remote L DECwindow sessions. The decwindows commands RDT, RFV and RDW are actually I network process's as far as VMS licensing is concerned. Therefore this I legally gets around the 2 user limitations imposed on a workstation or #VAXserver. 2 INSTALLATIONJ This file needs to exist on both the local and remote nodes and requiresK the user to either specify node access control or for the remote account J to be set up for proxy access. DWremterm can simply reside in sys$login K on the remote node, which requires each user to have their own copy -or- H DWremterm can be defined as a DECnet object, requiring each system to  have only one copy.3 NETWORK_OBJECTK To install DWremterm as a network object t$he system manager should enter  the following commands: $ MCR NCP0 NCP> DEFINE OBJECT DWREMTERM NUMBER 0 FILE -> SYS$COMMON:[VUE$LIBRARY.USER]DWREMTERM.COM PROXY BOTH! NCP> SET OBJECT DWREMTERM ALL NCP> EXIT $3 LOCAL_DECNET_TASKG If DWremterm is not installed as a network object then by default no H other setups are required. However if the DECnet object task has been E modified to disable proxy access then DWremterm will fail. In this > ca%se the system manager should enter the following commands: $ MCR NCP& NCP> DEFINE OBJECT TASK PROXY BOTH NCP> SET OBJECT TASK ALL NCP> EXIT $2 DWremterm_MODES$ DWremterm can be run in two modes:5 MENU MODE: commands are entered from a Menu Window? COMMAND MODE: commands are entered from the DCL command line 3 MENU_MODEG Commands are entered from a Menu Window. DWremterm can be added as a H Decwindows Application or simply started from the DCL &command line by @ entering @VUE$LIBRARY:DWREMTERM.COM. This will display a smallI DWremterm MENU window at the top left hand corner of your screen. This J can be altered by defining the logical DWREMTERM_X_POS, DWREMTERM_Y_POS  and DWREMTERM_INIT_STATE. 3 Refer to Configuration Setup for further details.3 COMMAND_MODE: Commands are entered from the DCL command line by typing5 @VUE$LIBRARY:DWREMTERM node command [qualifiers...] 2 COMMANDSC Valid command are:- HELP, LAT,' DECNET, RDT, RFV, RDW, DWRT and $.2 Any parameter listed in [] brackets is optional.3 HELP I This gives a list of all valid command. You are asked if you would likeI expanded help and if so sys$library:dwremterm.hlb is called. For brief J help you can simply type the command only which will then display a list of valid qualifiers. Command syntax is { HELP } % Example: DWremterm> HELP or% @VUE$LIBRRY:DWREMTERM HELP > You are then asked( if you would like brief or expanded help.3 LAT  L A T W I N D O WE This command creates a new decterm window, sets the icon and title E name to the requested nodename and requests login information. The H command is equivalent to a CREATE/TERMINAL followed by a SET HOST/LAT command. I The LATmaster software is optional in VMS 5.4-x and is integrated into E VMS 5.5. If LATmaster is not installed then use the DECnet command. K The logical LAT$DISCONNECT_C)HARACTER can be used to specify an alternate 7 disconnect character. The default character is Ctrl+\% Command syntax is { LAT nodename } ( Example: DWremterm> LAT MVAX or/ @VUE$LIBRRY:DWREMTERM LAT MVAX G This example creates a window using LAT as its network transport and D connects you to MVAX. You are then prompted for your username and password. 3 'NODENAME'  L A T W I N D O WG Specifying just the NODENAME without a command will de*fault to a LAT - session as described under the LAT command.@ Command syntax is: { NODENAME } which becomes { LAT nodename }' Example: DWremterm> MVAX or' @VUE$LIBRARY:DWREMTERM MVAXG This example creates a window using LAT as its network transport and D connects you to MVAX. You are then prompted for your username and password. 3 DECNET  D E C n e t W I N D O WC This command creates a new decterm window, sets the icon and title@ name to+ the requested nodename and requests login information. L The command is equivalent to a CREATE/TERMINAL and then a SET HOST command.& Command syntax is { DECNET nodename }- Example: DWremterm> DECNET MVAX or- @VUE$LIBRARY:DWREMTERM DECNET MVAXJ This example creates a window using DECnet as its network transport and M connects you to MVAX. You are then prompted for your username and password. 3 RDT ( R E M O T E D E C T E R M I N A L K This comma ,nd starts a DECterm window on a remote node and uses X-windows M to set the display to the requested workstation. If proxy logins have been M enabled then no login information is required. If there is no proxy access J then access control information can ne supplied as part of the nodename M specification. It is the equivalent of doing a SET HOST, followed by a SET ' DISPLAY/CREATE and a CREATE/TERMINAL.K Command syntax is:{ RDT nodename [init_state] [icon_title] [dcl_command] : - [display] [transport] }A Example 1: DWremterm> RDT MVAX ICON MVAX_DECTERM "" MVAXS1::0.0M @VUE$LIBRARY:DWREMTERM RDT MVAX ICON MVAX_DECTERM "" MVAXS1::0.0G This example will bring up a remote decterm session as an icon named B MVAX_DECTERM on MVAX and display it on MVAXS1 Server 0 Screen 0.5 Example 2: DWremterm> RDT MVAX"KINGSMILL PASSWORD" @ @VUE$LIBRARY:DWREMTERM RDT MVAX"KINGSMILL PASSWORD" L This example will bring .up a remote decterm session on MVAX using the VMS  account KINGSMILL.3 RFV  R E M O T E F I L E V I E WN This command starts a FileView window on a remote node and uses X-windows to M set the display to the requested workstation. It is the equivalent of doing O a SET HOST, followed by a SET DISPLAY/CREATE and a RUN SYS$SYSTEM:VUE$MASTER. N NOTE: Attempting to bring up Fileview as an icon may actually bring Fileview @ up as a window. This is a bug in the current X-windows Toolki/t.G Command syntax is: { RFV nodename [init_state] [display] [transport] }9 Example: DWremterm> RDT MVAX ICON LAT_080027AFBE:0.0 LATE @VUE$LIBRARY:DWREMTERM RDT MVAX ICON LAT_080027AFBE:0.0 LATN This example will bring up a remote fileview session on MVAX and display the - information on a VT1200 node LAT_080027AFBE.3 RDW # R E M O T E D E C W I N D O W SO This command sets the display to the requested workstation and allows the userO to specify the command proc 0edure or executable to run. It is the equivalent ofO doing a SET HOST, followed by a SET DISPLAY/CREATE and any valid command that & uses X-windows as its display device.B Command syntax is: { RDW nodename command [display] [transport] }. Example 1: DWremterm> RDT MVAX "MCR DECWRITE": @VUE$LIBRARY:DWREMTERM RDT MVAX "MCR DECWRITE"= This example will bring up a remote DECwrite session on MVAX5 Example 2: DWremterm> RDT MVAX @VUE$LIBRARY:DWALLIN1B @VUE$LIBRARY:D 1WREMTERM RDT OAVAX @VUE$LIBRARY:DWALLIN1< This example will bring up a remote ALLIN1 session on OAVAX DWRT   D W r e m t e r mN This command allows you to bring up a second DWremterm window in the context L of another user. It is designed for a user who has a personnel account but J also needs to use a group functional account such as the system managers K account. The DWRT Window, is displayed by default, just below the default M DWremterm Menu window position near the top left ha 2nd corner of the screen. I This can be altered by defining the logical names DWREMTERM_DWRT_X_POS, K DWREMTERM_DWRT_Y_POS and DWREMTERM_DWRT_INIT_STATE. Refer to CONFIGURATION SETUP help for further details.; Command syntax is: { DWRT nodename [display] [transport] }* Example: eg. DWremterm> DWRT MVAX"OLSENK"2 @VUE$LIBRARY:DWREMTERM DWRT MVAX"OLSENK"N This example shows how you can be logged in as one user yet bring up another J DWremterm window in the context of another us3er. Here user KINGSMILL is M bringing up a DWremterm window using the OLSENK's account. Now all commands 8 issued under that DWremterm window will be user OLSENK.3 $  $ D C L C O M M A N D6 This simply executes a dcl command in the menu window% Command syntax is: { $ dcl_command }! Example: DWremterm> $ show error* @VUE$LIBRARY:DWREMTERM $ SHOW ER2 COMMAND QUALIFIERS7 Command Qualifier Descriptions: Valid qualifiers are:-E Nodename, Init_state, Icon_tiwbs~ DWREMTERM.BCKE[KINGSMILL.TEMP]DWREMTERM.HLB;1U|34tle, DCL_command, Display and Transport 3 NODENAME J This specifies the desired nodename. The double colon suffix is optional.4 A "0" will decode as being the currently used node.< For LAT and DECNET this is just any valid nodename eg. VAXA@ For RDT, RFV, RDW and DWRT access controls can also be supplied E Example: MVAX, MVAX::, MVAX"KINGSMILL"::, MVAX"KINGSMILL PASSWORD"::O If this field is left blank a brief help message is display on the respective command. 3 INIT_STA5TE N This gives you the choice of bringing up the display as an Icon or a Window. $ Valid entries are ICON and WINDOW.  The default is window . 3 ICON_TITLE = This specifies the desired icon name and window title name. - The default is 'nodename':X'count':'command'& where NODENAME - is the remote node: x - is L for local window (LAT and DECnet): - is R for Remote window (RDT, RFV, RDW): COMMAND - is the command (LAT, DECNET, RDT etc.)63 DCL_COMMAND M A DCL Command procedure to run after the DECterm window is created. This is % an optional parameter with RDT only. 4 DISPLAY L This specifies the output display device. By default it is on your current M workstation, however it can be redirected to another workstation or screen.  ' The syntax is NODENAME::SERVER.SCREEN. Example: DECNET VAXA::0.0 TCPIP 16.153.0.1:0.0 ADSP GEOFF:X11@DEC:0.2 LAT LAT_08002B272829:0.0 74 TRANSPORTL This specifies the X-windows transport protocol. Current valid entries are& DECnet, TCPIP, LAT and ADSP (Apple).2 CONFIGURATION_SETUPSI The following logicals can be used to change the default behaviour of DWremtermM DWREMTERM_INHIBIT_COPY to prevent a user being asked whether a new version" of DWremterm should be copied@ DWREMTERM_X_POS defines the X position for the DWremterm MENU Default value is 10C DWREMTERM_Y_POS defines the Y posit8ion for the DWremterm MENU  Default value is 108A DWREMTERM_INIT_STATE defines the startup state. Window or Icon Default value is WINDOWJ DWREMTERM_DWRT_X_POS defines the X position for the DWremterm DWRT MENU Default value is 10K DWREMTERM_DWRT_Y_POS defines the Y position for the DWremterm DWRT MENU  Default value is 250F DWREMTERM_DWRT_INIT_STATE defines the startup state. Window or Icon Default value is WINDOWF LAT$DISCONNECT_CHARACTER 9defines the character that you can use to C disconnect from a remote session. Default character is Ctrl+\.2 TROUBLESHOOTING_HINTS@ The following logicals can be used to aid in troubleshooting.L DWREMTERM_VERBOSE to display the progress of both local and remote eventsJ If verbose is enabled then a full sized menu window will be displayed1 DWREMTERM_VERIFY to turn on verify and verboseL DWREMTERM_DEBUG will turn on verbose and will always ask whether you want: t o copy a new version of DWremterm to the remote nodeB This can also be enabled by prefixing the version with an "X"C NETSERVER.LOG on the remote node may also aid in troubleshootingL Modifying the version from V0.0 to X0.0 will always ask whether you would1 like a new version copied to the remote nodewwww DWremterm"j׮_ GEOFF DWremterm"`ѥb OLSENK DWremterm"j-b ALLIN1 DWremterm"J6e GEOFF DWremterm"0e GEOFF DWremterm"*e GEOFF DWremterm"Ze OLSENK DWremterm"h9Ē GEOFF DWremterm"G撕 GEOFF DWremterm"#璕 GEOFF DWremterm" nmʗ OLSENK DWremterm"ZW GEOFF DWremterm"㳉 KINGSMILL DWremte==Q 1 DWremtermoM DWremterm is designed to allow users flexibility in using DECwindows across mK a large number of machines connected together by a Local Area Network. It tJ allows users to create LAT or DECnet windows locally or to create remote L DECwindows sessions. The DECwindows commands RDT, RFV and RDW are actually @ network process's as such do not count as an interactive login.2 INSTALLATION" DWremterm consists of two files: 6 VUE$LIBRARY:DWREMTERM.COM and SYS$HELP:DW>REMTERM.HLB.E DWremterm.com needs to exist on both the local and remote nodes and WK requires the user to either specify node access control or for the remote s) account to be set up with proxy access. y dM DWremterm can simply reside in sys$login on the remote node, which requires D" each user to have their own copy. -or- I DWremterm can be defined as a DECnet object, requiring only one copy on each system.mH The LATmaster software is optional in VMS 5.4-x and is integrated into H? VMS 5.5. If LATmaster is installed on VMS 5.4-x then CSCPAT_0511 patch F should also be installed. If LATmaster is not installed then the LAT  command cannot be used.G A unique window name and icon name is chosen by referencing the user's C process name. If the login sequence changes the process name then i+ duplicate window and icon names may occur.e3 NETWORK_OBJECTD To install DWremterm as a network object the system manager should  enter the following commands: r $ MCR NCPo0 @ NCP> DEFINE OBJECT DWREMTERM NUMBER 0 FILE -> SYS$COMMON:[VUE$LIBRARY.USER]DWREMTERM.COM PROXY BOTH! NCP> SET OBJECT DWREMTERM ALLC NCP> EXITA $]3 PRIVATE_DECNET_TASKHF If DWremterm is not installed as a network object then by default no G other setups are required. However if the DECnet object task has been dD Modified to disable proxy access then DWremterm will fail. In this = case the system manager should enter the following commands:m $ MCR NCPi& NCP> DEFAINE OBJECT TASK PROXY BOTH NCP> SET OBJECT TASK ALL NCP> EXIT $>3 PROXY_ACCOUNTSC Proxy accounts allow a user direct access to another users account F without having to specify a username and password. The system manager8 can set up proxy account access from within AUTHORIZE.  Example: $ MCR AUTHORIZE>n; UAF> ADD/PROXY MVAX::KINGSMILL KINGSMILL/DEFAULTp0 UAF> ADD/PROXY MVAX::KINGSMILL OLSENK UAF> EXIT $A This examples allows userB KINGSMILL on node MVAX into the local XA KINGSMILL and OLSENK accounts. The default switch enables you to 6 specify just the nodename when addressing this node:- eg. $ DIRECTORY TVAX::  sA If Default access is not specified then you need to specify the C2 nodename and username when addressing this node:-! eg. $ DIRECTORY TVAX"OLSENK"::n= If you do not have proxy access then you need to specify theO< nodename, username and password when addressing this node:-* eg. $ DIRECTORY TVAX"CSYSTEM password":: C DWremterm gives you the flexibility to use any of these addressingp. schemes, however proxy access is recommended. 3 SECURITYC The Factory Defaults prohibit a remote users from displaying theire? output to your workstation. To authorize other users or remotem2 nodes to use your workstation display you should:= 1. Choose Security... from Session Manager's Options menu.nC 2. Type the nodename, the username, and the method of transport, B of the user you want to Dauthorize. Entering * * * will allowB any user on any node with any transport to display output on your workstaton./ 3. Click on the Add button and the Clock OK.y7 Refer to the DECwindow User Guide for further details.d2 MODESn# DWremterm can be run in two modes:n< MENU MODE: commands are entered from a Small Menu Window.@ COMMAND MODE: commands are entered from the DCL command line. 3 MENU_MODEnG Commands are entered from a Small Menu Window. DWremterm can be added D aEs a DECwindows Application or simply started from the DCL command  line by entering:-  nG $ @VUE$LIBRARY:DWREMTERM.COM command nodename [optional qualifiers...]nF This will then display a small DWremterm MENU window at the top left C hand corner of your screen. The WINDOW POSITION and INITIAL STATE tI (window or icon) can be altered from the default setting by editing the LG resource file. Details on how to do this is documented in the resourceiD file itself located in decw$user_defaultsG:dwremterm$default_v*.dat.G If DWremterm is started from a DECterm session then that session will tE be locked for the duration of the DWremterm Window. It is therefore eE recommended that DWremterm be installed as a DECwindows application s/ either under the session manager or Fileview. a3 COMMAND_MODE; Commands are entered from the DCL command line by typing:-v: $ @VUE$LIBRARY:DWREMTERM nodename command [qualifiers...]A It is suggested that DWremterm be defined as a symbol and placed[GA It is suggested that DWremterm be defined as a symbol and placedn6 in your login.com. This should be entered as follows:' $ DWREMTERM :== @VUE$LIBRARY:DWREMTERMl9 The LAT and DECNET commands are NOT valid in this mode. . These commands can only be used in Menu mode.0 Example: $ @VUE$LIBRARY:DWREMTERM RDT MVAX -or- $ DWREMTERM RDT MVAX? Commands are entered directly from the DCL prompt. In all the sB following examples the $ DWREMTERM symbol can be be used in place of thH6 in your login.com. This should be entered as follows:' $ DWREMTERM :== @VUE$LIBRARY:DWREMTERMn9 The LAT and DECNET commands are NOT valid in this mode. @. These commands can only be used in Menu mode.0 Example: $ @VUE$LIBRARY:DWREMTERM RDT MVAX -or- $ DWREMTERM RDT MVAX? Commands are entered directly from the DCL prompt. In all the WB following examples the $ DWREMTERM symbol can be be used in place of the DWremterm> prompt. 2 COMMANDSK Valid command are:- HELP, DWHELPI, LAT, DECNET, RDT, RFV, RDW, DWRT and $.O. Parameters shown in [] brackets are optional.3 HELP RH This gives you a list of valid commands and information on how to gain  further help.E Brief Help can be obtained by entering a Command with no qualifiers.r, Full Help can be obtained by typing DWHELP.$ Command syntax is: DWremterm> HELP & Example 1: DWremterm> HELP or( $ @VUE$LIBRRY:DWREMTERM HELP  Valid Commands are: ; LAT,DECNET,RDT,RFV,RJDW,DWRT,$, HELP and DWHELP. F Enter Command only for Brief Help or DWHELP for Full Help. W& Example 2: DWremterm> RDT or' $ @VUE$LIBRRY:DWREMTERM RDT 9 This command creates a Remote DECterm Window:V; RDT nodename [init_state] [title] [dcl_command]R4 [display] [transport] [X:Y] DWremterm> d= This example shows how to get brief help on the command RDT. 3 DWHELP tJ This command will create a new windMow and call sys$library:dwremterm.hlb.; A full description of each command is given with examples.$& Example: DWremterm> DWHELP or( $ @VUE$LIBRRY:DWREMTERM DWHELP3 LAT D This command creates a new DECterm window, sets the icon and title @ name to the requested nodename and requests login information. > The command is equivalent to a CREATE/TERMINAL followed by a  SET HOST/LAT command. eC This requires LATmaster Software to be installed which is optionalA/ on VMS 5.4-LC This requires LATmaster Software to be installed which is optional / on VMS 5.4-x, but is integrated into VMS 5.5. ; If LATmaster is not installed then use the DECNET command. e@ The LAT command does not require the DECwindows software to be @ installed on the remote node and is only valid under MENU MODE. C The logical LAT$DISCONNECT_CHARACTER can be defined to specify an tB alternate disconnect character. The default character is Ctrl+\ ., Command syntax is: DWremterm> LAT nMC This requires LATmaster Software to be installed which is optional / on VMS 5.4-x, but is integrated into VMS 5.5. r; If LATmaster is not installed then use the DECNET command.  r@ The LAT command does not require the DECwindows software to be @ installed on the remote node and is only valid under MENU MODE. C The logical LAT$DISCONNECT_CHARACTER can be defined to specify an eB alternate disconnect character. The default character is Ctrl+\ ., Command syntax is: DWremterm> LAT nNx, but is integrated into VMS 5.5. L; If LATmaster is not installed then use the DECNET command.a t@ The LAT command does not require the DECwindows software to be @ installed on the remote node and is only valid under MENU MODE. C The logical LAT$DISCONNECT_CHARACTER can be defined to specify an B alternate disconnect character. The default character is Ctrl+\ ., Command syntax is: DWremterm> LAT nodename ' Example 1: DWremterm> LAT MVAX nF This example creates a windPow using LAT as its network transport and D connects you to node MVAX. You are then prompted for your username  and password. 4 NODENAME aD This specifies the desired nodename. You cannot use LAT to connect > to yourself. If this is required then use the DECNET command. s Example: MVAXD If this field is left blank a brief help message is display on the  respective command. 3 DECNET C This command creates a new DECterm window, sets the icon and titlew@ name to the requested nodenamP4 DCL_COMMAND M A DCL Command procedure to run after the DECterm window is created. This is f% an optional parameter with RDT only. 4 DISPLAY L This specifies the output display device. By default it is on your current M workstation, however it can be redirected to another workstation or screen. e e' The syntax is NODENAME::SERVER.SCREEN. Example: DECNET VAXA::0.0R TCPIP 16.153.0.1:0.0 ADSP GEOFF:X11@DEC:0.2 LAT LAT_08002B272829:0.0X 4 Re and requests login information. = The command is equivalent to a CREATE/TERMINAL followed by a SET HOST command.C The DECNET command does not require the DECwindows software to be a= installed on the remote node and is only valid in MENU MODE.a/ Command syntax is: DWremterm> DECNET nodename b+ Example: DWremterm> DECNET MVAX rI This example creates a window using DECnet as its network transport and H connects you to node MVAX. You are then prompted for your username anR4 DCL_COMMAND M A DCL Command procedure to run after the DECterm window is created. This is t% an optional parameter with RDT only.u 4 DISPLAY L This specifies the output display device. By default it is on your current M workstation, however it can be redirected to another workstation or screen. f t' The syntax is NODENAME::SERVER.SCREEN.l Example: DECNET VAXA::0.0_ TCPIP 16.153.0.1:0.0 ADSP GEOFF:X11@DEC:0.2 LAT LAT_08002B272829:0.0O E 4 Sd password. 4 NODENAME eA This specifies the desired nodename. The double colon suffix is > optional. A "0" will decode as being the currently used node.  Example: MVAX, 0::, MVAX::aD If this field is left blank a brief help message is display on the  respective command.3 RDT @ This command starts a DECterm window on a remote node and uses > DECwindows to set the display to the desired workstation. If = proxy logins have been enabled then no login information is a; required. IUf there is no proxy access then access control MC information can be supplied as part of the nodename specification.MC This command is the equivalent of doing a SET HOST, followed by a 0* SET DISPLAY/CREATE and a CREATE/TERMINAL.1 DECwindows must be installed on the remote node.  Command syntax is: < DWremterm> RDT nodename [init_state] [title] [dcl_command] 4 [display] [transport] [X:Y]@ Example 1: DWremterm> RDT MVAX ICON MVAX_DECTERM "" MVAXS1::0.0D W $ @VUE$LIBRARY:DWREMTERM RDT MVAX ICON MVAX_DECTERM "" -, MVAXS1::0.0 250:100F This example will bring up a remote DECterm session as an icon named J MVAX_DECTERM on MVAX and display it on MVAXS1 Server 0 Screen 0 with the % top left corner at location 250:100.D4 Example 2: DWremterm> RDT MVAX"KINGSMILL PASSWORD" A $ @VUE$LIBRARY:DWREMTERM RDT MVAX"KINGSMILL PASSWORD"d G This example will bring up a remote DECterm session on MVAX using the R VMS aV $ @VUE$LIBRARY:DWREMTERM RDT MVAX ICON MVAX_DECTERM "" -, MVAXS1::0.0 250:100F This example will bring up a remote DECterm session as an icon named J MVAX_DECTERM on MVAX and display it on MVAXS1 Server 0 Screen 0 with the % top left corner at location 250:100.p4 Example 2: DWremterm> RDT MVAX"KINGSMILL PASSWORD" A $ @VUE$LIBRARY:DWREMTERM RDT MVAX"KINGSMILL PASSWORD"h fG This example will bring up a remote DECterm session on MVAX using the o VMS abccount KINGSMILL.T 4 NODENAME hA This specifies the desired nodename. The double colon suffix is a? optional. A "0" will decode as being the currently used node. > Access controls can also be supplied as part of the nodename  specification.f tE Example: MVAX, MVAX::, MVAX"KINGSMILL"::, MVAX"KINGSMILL PASSWORD":: D If this field is left blank a brief help message is display on the  respective command. 4 INIT_STATE rD This gives you the choice of bringing up the display as an Icon or Xccount KINGSMILL.L 4 NODENAME A This specifies the desired nodename. The double colon suffix is i? optional. A "0" will decode as being the currently used node. o> Access controls can also be supplied as part of the nodename  specification.B eE Example: MVAX, MVAX::, MVAX"KINGSMILL"::, MVAX"KINGSMILL PASSWORD"::dD If this field is left blank a brief help message is display on the  respective command. 4 INIT_STATE ND This gives you the choice of bringing up the display as an Icon or Z1 as a Window. Valid entries are ICON and WINDOW.  The default is WINDOW .4 TITLE = This specifies the desired icon name and window title name. ' The default is 'nodename':R'count':RDTr& where NODENAME - is the remote node* R - is R for Remote window4 DCL_COMMAND A A DCL Command or DCL Command procedure to run after the DECterm n window is created. 3 Example: DWremterm> RDT MVAX "" MVAX-ALLIN1 ALLIN1lA $ @VUE$LIBRARY:DWREMTERM RDT MVAX "" MVAX-ALLIN1 AZ= This example will bring up a remote DECwrite session on MVAXT5 Example 2: DWremterm> RDT MVAX @VUE$LIBRARY:DWALLIN1TF $ @VUE$LIBRARY:DWREMTERM RDT OAVAX $ @VUE$LIBRARY:DWALLIN1< This example will bring up a remote ALLIN1 session on OAVAX 4 NODENAME A This specifies the desired nodename. The double colon suffix is l? optional. A "0" will decode as being the currently used node. .> Access controls can also be supplied as part of the nodename  specification.  cE Example: [LLIN1oD This will start ALL-IN-1 as a window on MVAX and set the title and  icon name to MVAX-ALLIN1a 4 DISPLAY D This specifies the output display device. By default it is on your > current workstation, however it can be redirected to another  workstation or screen.  E( The syntax is NODENAME[::server.screen] Example: TRANSPORT: NODENAME: ---------- --------- DECNET MVAXn DECNET MVAX::0.0% TCPIP MVAX.DEC.COM:0.0  ADSP \ GEOFF:X11@DEC:0.2I" LAT LAT_08002B272829:0.0 4 TRANSPORT ? This specifies the DECwindows transport protocol. DECwindows D currently supports the LOCAL, DECnet, TCPIP, LAT and ADSP (Apple) transports.m3 RFV A This command starts a Fileview window on a remote node and uses RD DECwindows to set the display to the desired workstation. Fileview F gives you most of the facilities available under the session manager.C Therefore if you add all your applications to the Fileview Menu ]'s oD then all those facilities we be available to RFV. This may be more A convenient that using RDW. For instance. You can remotely start e< DECwrite by doing a DWremterm> RDT nodename "MCR DECWRITE".D However it may be that you already have a RFV session open on that G node. Therefore if you add DECwrite as a Fileview Application on that B node then you can simply invoke DECwrite just as though it was a  local application. 9 It is the equivalent of doing a SET HOST, followed by a i5 SET_ DISPLAY/CREATE and a RUN SYS$SYSTEM:VUE$MASTER. C1 DECwindows must be installed on the remote node.: Command syntax is: ; DWremterm> RFV nodename [init_state] [display] [transport]d9 Example: DWremterm> RDT MVAX ICON LAT_080027AFBE:0.0 LATIG $ @VUE$LIBRARY:DWREMTERM RDT MVAX ICON LAT_080027AFBE:0.0 LATuJ This example will bring up a remote Fileview session on MVAX and display 1 the information on node LAT_080027AFBE (VT1200).r 4 NODENAME aA This specifies the desired node_2 CONFIGURATION_SETUPSH The following logicals can be used to change the default behavior of DWremterm.M DWREMTERM_INHIBIT_COPY to prevent a user being asked whether a new versionH of DWremterm should be copied. By default this facility is enabled.A DWREMTERM_X_POS defines the X position for the DWremterm MENU. Default value is 10.A DWREMTERM_Y_POS defines the Y position for the DWremterm MENU. Default value is 108.B DWREMTERM_INIT_STATE defines `name. The double colon suffix is ? optional. A "0" will decode as being the currently used node. P> Access controls can also be supplied as part of the nodename  specification.B 8E Example: MVAX, MVAX::, MVAX"KINGSMILL"::, MVAX"KINGSMILL PASSWORD"::lD If this field is left blank a brief help message is display on the  respective command. 4 INIT_STATE D This gives you the choice of bringing up the display as an Icon or 1 as a Window. Valid entries are ICON and WINDOW. x The defaulta is WINDOW .D NOTE: Attempting to bring up Fileview as an icon may actually bringB Fileview up as a window. This is a bug in the current DECwindows Toolkit.i 4 DISPLAY D This specifies the output display device. By default it is on your > current workstation, however it can be redirected to another  workstation or screen.  ( The syntax is NODENAME[::server.screen] Example: TRANSPORT: NODENAME: ---------- --------- DECNET MVAXe DECNET MVAX::0l.0% TCPIP MVAX.DEC.COM:0.0A ADSP GEOFF:X11@DEC:0.2Y" LAT LAT_08002B272829:0.0 4 TRANSPORTe? This specifies the DECwindows transport protocol. DECwindows eD currently supports the LOCAL, DECnet, TCPIP, LAT and ADSP (Apple) transports.h3 RDW G This command sets the display to the requested workstation and allows dA the user to specify the command procedure or executable to run. L9 It is the equivalent of doing a SET HOST, followed by a aF SET DISPLAY/Cc1 as a Window. Valid entries are ICON and WINDOW. R The default is WINDOW .4 TITLE = This specifies the desired icon name and window title name. i' The default is 'nodename':R'count':RDTI& where NODENAME - is the remote node* R - is R for Remote window4 DCL_COMMAND A A DCL Command or DCL Command procedure to run after the DECterm  window is created. 3 Example: DWremterm> RDT MVAX "" MVAX-ALLIN1 ALLIN1:A $ @VUE$LIBRARY:DWREMTERM RDT MVAX "" MVAX-ALLIN1 AdLLIN1 D This will start ALL-IN-1 as a window on MVAX and set the title and  icon name to MVAX-ALLIN1 4 DISPLAY D This specifies the output display device. By default it is on your > current workstation, however it can be redirected to another  workstation or screen.  A( The syntax is NODENAME[::server.screen] Example: TRANSPORT: NODENAME: ---------- --------- DECNET MVAXh DECNET MVAX::0.0% TCPIP MVAX.DEC.COM:0.0i ADSP e GEOFF:X11@DEC:0.2" LAT LAT_08002B272829:0.0 4 TRANSPORTe? This specifies the DECwindows transport protocol. DECwindows D currently supports the LOCAL, DECnet, TCPIP, LAT and ADSP (Apple) transports.a3 RFV A This command starts a Fileview window on a remote node and uses rD DECwindows to set the display to the desired workstation. Fileview F gives you most of the facilities available under the session manager.C Therefore if you add all your applications to the Fileview Menuf's aD then all those facilities we be available to RFV. This may be more A convenient that using RDW. For instance. You can remotely start C< DECwrite by doing a DWremterm> RDT nodename "MCR DECWRITE".D However it may be that you already have a RFV session open on that G node. Therefore if you add DECwrite as a Fileview Application on that B node then you can simply invoke DECwrite just as though it was a  local application.g9 It is the equivalent of doing a SET HOST, followed by a r5 SETg DISPLAY/CREATE and a RUN SYS$SYSTEM:VUE$MASTER. C1 DECwindows must be installed on the remote node.l Command syntax is: ; DWremterm> RFV nodename [init_state] [display] [transport]c9 Example: DWremterm> RDT MVAX ICON LAT_080027AFBE:0.0 LATsG $ @VUE$LIBRARY:DWREMTERM RDT MVAX ICON LAT_080027AFBE:0.0 LATMJ This example will bring up a remote Fileview session on MVAX and display 1 the information on node LAT_080027AFBE (VT1200).T 4 NODENAME hA This specifies the desired nodehname. The double colon suffix is a? optional. A "0" will decode as being the currently used node. > Access controls can also be supplied as part of the nodename  specification.p E Example: MVAX, MVAX::, MVAX"KINGSMILL"::, MVAX"KINGSMILL PASSWORD"::AD If this field is left blank a brief help message is display on the  respective command. 4 INIT_STATE nD This gives you the choice of bringing up the display as an Icon or 1 as a Window. Valid entries are ICON and WINDOW. : The defaulti is WINDOW .D NOTE: Attempting to bring up Fileview as an icon may actually bringB Fileview up as a window. This is a bug in the current DECwindows Toolkit. 4 DISPLAY D This specifies the output display device. By default it is on your > current workstation, however it can be redirected to another  workstation or screen.  A( The syntax is NODENAME[::server.screen] Example: TRANSPORT: NODENAME: ---------- --------- DECNET MVAXa DECNET MVAX::0j.0% TCPIP MVAX.DEC.COM:0.0a ADSP GEOFF:X11@DEC:0.2D" LAT LAT_08002B272829:0.0 4 TRANSPORTw? This specifies the DECwindows transport protocol. DECwindows D currently supports the LOCAL, DECnet, TCPIP, LAT and ADSP (Apple) transports. 3 RDW G This command sets the display to the requested workstation and allows EA the user to specify the command procedure or executable to run. i9 It is the equivalent of doing a SET HOST, followed by a tF SET DISPLAY/CkREATE and any valid command that uses DECwindows as its  display device.1 DECwindows must be installed on the remote node.oJ Command syntax is: DWremterm> RDW nodename command [display] [transport] . Example 1: DWremterm> RDW MVAX "MCR DECWRITE"< $ @VUE$LIBRARY:DWREMTERM RDT MVAX "MCR DECWRITE"= This example will bring up a remote DECwrite session on MVAXi5 Example 2: DWremterm> RDW MVAX @VUE$LIBRARY:DWALLIN1"C $ @VUE$LIBRARY:DWREMTERM RDT MVAX @VUE$LIBRARY:DWApLLIN1e< This example will bring up a remote ALLIN1 session on OAVAX 4 NODENAME uA This specifies the desired nodename. The double colon suffix is n? optional. A "0" will decode as being the currently used node. n> Access controls can also be supplied as part of the nodename  specification.: E Example: MVAX, MVAX::, MVAX"KINGSMILL"::, MVAX"KINGSMILL PASSWORD"::CD If this field is left blank a brief help message is display on the  respective command. 4 DISPLAY D This specifies thmREATE and any valid command that uses DECwindows as its  display device.1 DECwindows must be installed on the remote node.uJ Command syntax is: DWremterm> RDW nodename command [display] [transport] . Example 1: DWremterm> RDW MVAX "MCR DECWRITE"< $ @VUE$LIBRARY:DWREMTERM RDT MVAX "MCR DECWRITE"= This example will bring up a remote DECwrite session on MVAXM5 Example 2: DWremterm> RDW MVAX @VUE$LIBRARY:DWALLIN1 C $ @VUE$LIBRARY:DWREMTERM RDT MVAX @VUE$LIBRARY:DWAnLLIN1R< This example will bring up a remote ALLIN1 session on OAVAX 4 NODENAME A This specifies the desired nodename. The double colon suffix is r? optional. A "0" will decode as being the currently used node. e> Access controls can also be supplied as part of the nodename  specification.  eE Example: MVAX, MVAX::, MVAX"KINGSMILL"::, MVAX"KINGSMILL PASSWORD"::hD If this field is left blank a brief help message is display on the  respective command. 4 DISPLAY D This specifies thoe output display device. By default it is on your > current workstation, however it can be redirected to another  workstation or screen.  e( The syntax is NODENAME[::server.screen] Example: TRANSPORT: NODENAME: ---------- --------- DECNET MVAXu DECNET MVAX::0.0% TCPIP MVAX.DEC.COM:0.0D ADSP GEOFF:X11@DEC:0.2s" LAT LAT_08002B272829:0.0 4 TRANSPORTa? This specifies the DECwindows transport protocol. DECwindows aD ucurrently supports the LOCAL, DECnet, TCPIP, LAT and ADSP (Apple) transports.l3 DWRT eF This command allows you to bring up a second DWremterm window in the H context of another user. It is designed for a user who has a personnel F account but also needs to use a group functional account such as the I system managers account. The DWRT Window, is displayed by default, just nI below the default DWremterm Menu window position near the top left hand t= corner of the screen. The WINDOW POSITIONqe output display device. By default it is on your > current workstation, however it can be redirected to another  workstation or screen.  A( The syntax is NODENAME[::server.screen] Example: TRANSPORT: NODENAME: ---------- --------- DECNET MVAXi DECNET MVAX::0.0% TCPIP MVAX.DEC.COM:0.0u ADSP GEOFF:X11@DEC:0.2h" LAT LAT_08002B272829:0.0 4 TRANSPORTo? This specifies the DECwindows transport protocol. DECwindows MD 7{'~ DWREMTERM.BCKE[KINGSMILL.TEMP]DWREMTERM.HLB;12qrcurrently supports the LOCAL, DECnet, TCPIP, LAT and ADSP (Apple) transports.I3 DWRT IF This command allows you to bring up a second DWremterm window in the H context of another user. It is designed for a user who has a personnel F account but also needs to use a group functional account such as the I system managers account. The DWRT Window, is displayed by default, just eI below the default DWremterm Menu window position near the top left hand = corner of the screen. The WINDOW POSITIONs and INITIAL STATE oI (window or icon) can be altered from the default setting by editing the tG resource file. Details on how to do this is documented in the resourceaI file itself located in decw$user_defaults:dwremterm$dwrt_default_v*.dat.H You can override the WINDOW POSITION resource file defaults by definingK the logical name DWREMTERM_DWRT_X and DWREMTERM_DWRT_Y on the local node. n= The INITIAL STATE can also be specified on the command line.oE This command requires DECwindows to be intstalled on the remote node.dD Command syntax is: DWremterm> DWRT nodename [init_state] [display] 9 [transport] ( Example 1: DWremterm> DWRT MVAX"OLSENK"6 $ @VUE$LIBRARY:DWREMTERM DWRT MVAX"OLSENK"F This example shows how you can be logged in as one user yet bring up E another DWremterm window in the context of another user. Here user VG KINGSMILL is bringing up a DWremterm window under the OLSENK account. aE Now all commands issuedy under that DWremterm window will be of user T OLSENK. T 4 NODENAME hA This specifies the desired nodename. The double colon suffix is a? optional. A "0" will decode as being the currently used node. > Access controls can also be supplied as part of the nodename  specification.c eE Example: MVAX, MVAX::, MVAX"KINGSMILL"::, MVAX"KINGSMILL PASSWORD"::oD If this field is left blank a brief help message is display on the  respective command. 4 INIT_STATE -D This gives you the choice ov and INITIAL STATE iI (window or icon) can be altered from the default setting by editing the tG resource file. Details on how to do this is documented in the resource I file itself located in decw$user_defaults:dwremterm$dwrt_default_v*.dat.eH You can override the WINDOW POSITION resource file defaults by definingK the logical name DWREMTERM_DWRT_X and DWREMTERM_DWRT_Y on the local node. = The INITIAL STATE can also be specified on the command line.dE This command requires DECwindows to be in wstalled on the remote node.mD Command syntax is: DWremterm> DWRT nodename [init_state] [display] 9 [transport] d( Example 1: DWremterm> DWRT MVAX"OLSENK"6 $ @VUE$LIBRARY:DWREMTERM DWRT MVAX"OLSENK"F This example shows how you can be logged in as one user yet bring up E another DWremterm window in the context of another user. Here user vG KINGSMILL is bringing up a DWremterm window under the OLSENK account. -E Now all commands issuedx under that DWremterm window will be of user OLSENK. 4 NODENAME 9A This specifies the desired nodename. The double colon suffix is 0? optional. A "0" will decode as being the currently used node. o> Access controls can also be supplied as part of the nodename  specification.) E Example: MVAX, MVAX::, MVAX"KINGSMILL"::, MVAX"KINGSMILL PASSWORD"::yD If this field is left blank a brief help message is display on the  respective command. 4 INIT_STATE AD This gives you the choice ozf bringing up the display as an Icon or 1 as a Window. Valid entries are ICON and WINDOW. M The default is WINDOW . 4 DISPLAY D This specifies the output display device. By default it is on your > current workstation, however it can be redirected to another  workstation or screen.  e( The syntax is NODENAME[::server.screen] Example: TRANSPORT: NODENAME: ---------- --------- DECNET MVAXN DECNET MVAX::0.0% TCPIP MVAX.DEC.COM:0.0N{f bringing up the display as an Icon or 1 as a Window. Valid entries are ICON and WINDOW. P The default is WINDOW . 4 DISPLAY D This specifies the output display device. By default it is on your > current workstation, however it can be redirected to another  workstation or screen.  l( The syntax is NODENAME[::server.screen] Example: TRANSPORT: NODENAME: ---------- --------- DECNET MVAXv DECNET MVAX::0.0% TCPIP MVAX.DEC.COM:0.0  ~ ADSP GEOFF:X11@DEC:0.2e" LAT LAT_08002B272829:0.0 4 TRANSPORTd> This specifies the DECwindows transport protocol. DECwindows C currently supports the LOCAL, DECnet, TCPIP, LAT and ADSP (Apple) R transports.4 DEFINING_PROXY_ACCESSaB Setting up proxy access is a system management function. See your3 System manager to have this functionality enabled.e Example: $ MCR AUTHORIZEA AUTHORIZE> ADD/PROXY MVAX::KINGSMILL KINGSMILL/DEFAULTH6 AUTHORIZE> ADD/PR| ADSP GEOFF:X11@DEC:0.2M" LAT LAT_08002B272829:0.0 4 TRANSPORT/> This specifies the DECwindows transport protocol. DECwindows C currently supports the LOCAL, DECnet, TCPIP, LAT and ADSP (Apple) e transports.4 DEFINING_PROXY_ACCESS B Setting up proxy access is a system management function. See your3 System manager to have this functionality enabled.e Example: $ MCR AUTHORIZEA AUTHORIZE> ADD/PROXY MVAX::KINGSMILL KINGSMILL/DEFAULTM6 AUTHORIZE> ADD/PR}OXY MVAX::KINGSMILL OLSENK AUTHORIZE> EXIT $B This examples shows how user KINGSMILL on node MVAX can be set upD to access both the KINGSMILL and OLSENK accounts on the local node A without specifying user passwords. Therefore the following DWRT  commands could be used:C DWremterm> DWRT MVAX:: --> to use the KINGSMILL account.n@ DWremterm> DWRT MVAX"OLSENK":: --> to use the OLSENK account.3 $ 6 This simply executes a DCL command in the menu window- Command syntax is: DWremterm> $ dcl_command ! Example: DWremterm> $ show errort, $ @VUE$LIBRARY:DWREMTERM $ SHOW ER2 CONFIGURATION_SETUPSF The following logicals can be used to change the default behavior of DWremterm. D DWREMTERM_INHIBIT_COPY to prevent a user being asked whether a new B version of DWremterm should be copied. Default is Copy Enabled.D LAT$DISCONNECT_CHARACTER defines the character that you can use to A disconnect from a remote session. Default characterOXY MVAX::KINGSMILL OLSENK AUTHORIZE> EXIT $B This examples shows how user KINGSMILL on node MVAX can be set upD to access both the KINGSMILL and OLSENK accounts on the local node A without specifying user passwords. Therefore the following DWRT i commands could be used:C DWremterm> DWRT MVAX:: --> to use the KINGSMILL account.$@ DWremterm> DWRT MVAX"OLSENK":: --> to use the OLSENK account.3 $ 6 This simply executes a DCL command in the menu window- C ommand syntax is: DWremterm> $ dcl_command t! Example: DWremterm> $ show error , $ @VUE$LIBRARY:DWREMTERM $ SHOW ER2 CONFIGURATION_SETUPSF The following logicals can be used to change the default behavior of DWremterm. D DWREMTERM_INHIBIT_COPY to prevent a user being asked whether a new B version of DWremterm should be copied. Default is Copy Enabled.D LAT$DISCONNECT_CHARACTER defines the character that you can use to A disconnect from a remote session. Default character is Ctrl+\.sG The WINDOW POSITION and INITIAL STATE (window or icon) can be altered eH from the default setting by editing the desired resource file. Details A on how to do this is documented in the following resource files.d Default DWremterm Window:1 - decw$user_defaults:dwremterm$default_v*.dat.l DWRT DWremterm window:w5 - decw$user_defaults:dwremterm$dwrt_default_v*.datG. This is on the remote node/users account.> - You can also override the DWRT resource file positions is Ctrl+\.rG The WINDOW POSITION and INITIAL STATE (window or icon) can be altered H from the default setting by editing the desired resource file. Details A on how to do this is documented in the following resource files. Default DWremterm Window:1 - decw$user_defaults:dwremterm$default_v*.dat.c DWRT DWremterm window:m5 - decw$user_defaults:dwremterm$dwrt_default_v*.datt. This is on the remote node/users account.> - You can also override the DWRT resource file positions byE defining the logical names DWREMTERM_DWRT_X and DWREMTERM_DWRT_Y,C under your local user account. These values are then passed toa# the remote node/users account.a2 TROUBLESHOOTING_HINTSnH SECURITY: The Factory Defaults prohibit a remote users from displaying E their output to your workstation. To authorize other users or remote 2 nodes to use your workstation display you should:= 1. Choose Security... from Session Manager's Options menu.eC 2. Type the nodename, the usern byE defining the logical names DWREMTERM_DWRT_X and DWREMTERM_DWRT_Y C under your local user account. These values are then passed tod# the remote node/users account.2 TROUBLESHOOTING_HINTSiH SECURITY: The Factory Defaults prohibit a remote users from displaying E their output to your workstation. To authorize other users or remoteh2 nodes to use your workstation display you should:= 1. Choose Security... from Session Manager's Options menu.C 2. Type the nodename, the username, and the method of transport, B of the user you want to authorize. Entering * * * will allowB any user on any node with any transport to display output on your workstaton./ 3. Click on the Add button and the Clock OK. 7 Refer to the DECwindow User Guide for further details.V> THE FOLLOWING LOGICALS CAN BE USED TO AID IN TROUBLESHOOTING.E These can be defined before execution or during a DWremterm Session  by using the $ command.F DWREMTERM_VERBOSE to display the pr ame, and the method of transport,B of the user you want to authorize. Entering * * * will allowB any user on any node with any transport to display output on your workstaton./ 3. Click on the Add button and the Clock OK.7 Refer to the DECwindow User Guide for further details.> THE FOLLOWING LOGICALS CAN BE USED TO AID IN TROUBLESHOOTING.E These can be defined before execution or during a DWremterm Session  by using the $ command.F DWREMTERM_VERBOSE to display the pr ogress of both local and remote F events. If verbose is enabled then a full sized menu window will E be displayed. Modifying the version from V0.0 to X0.0 will also  enable Debug mode.2 DWREMTERM_VERIFY to turn on verify and verbose.B NETSERVER.LOG on the remote node may also aid in troubleshooting.I DWREMTERM_'pid'*.COM temporary file on the remote node shows the created command file.F DWREMTERM.LOG temporary file on on the remote node showing the output from dwrogress of both local and remote F events. If verbose is enabled then a full sized menu window will E be displayed. Modifying the version from V0.0 to X0.0 will also  enable Debug mode.2 DWREMTERM_VERIFY to turn on verify and verbose.B NETSERVER.LOG on the remote node may also aid in troubleshooting.I DWREMTERM_'pid'*.COM temporary file on the remote node shows the created command file.F DWREMTERM.LOG temporary file on on the remote node showing the output from dwremterm_'pid'.comwwemterm_'pid'.comI If you have problems creating DECterms then get the latest DECterm patch from your CSC.ww%*[KINGSMILL.TEMP]FREEWARE_README.TXT;1+,./ 4LL-0123KPWO56uU7}@뺉89GHJ<DWREMTERM, MOTIF, Start X-Window displays on remote machinesGThis command procedure is designed to allow users flexability in using EDECwindows across a large number of machines connected together by a KLocal Area Network. It allows users to create LAT or DECnet windows locallyLor to create remote DECwindow sessions. The decwindows commands RDT, RFV andCRDW are actually network process's and therefore do not count as aninteractive login."DWremterm can be run in two modes:; MENU MODE: commands are entered from a Small Menu Window.? COMMAND MODE: commands are entered from the DCL command line.IValid command are:- HELP, DWHELP, LAT, DECNET, RDT, RFV, RDW, DWRT and $./Parameters listed are [] brackets is optional. <HELP: Gives details on how to receive Brief or Expanded Help*DWHELP: Provide detailed Help on DWremtermDLAT: Creates a Local DECterm Window using a SET HOST/LAT command. Only valid in Menu mode. LAT nodename@DECNET: Creates a Local DECterm Window using a SET HOST command. Only valid in Menu mode. DECNET nodename(RDT: Creates a Remote Decterm Window.7 RDT nodename [init_state] [title] [dcl_command]0 [display] [transport] [x:y])RFV: Creates a Remote Fileview Window.7 RFV nodename [init_state] [display] [transport]4RDW: Runs a Remote Remote Decwindows Application.2 RDW nodename command [display] [transport])DWRT: Starts a second DWremterm Window.8 DWRT nodename [init_state] [display] [transport]$$: Executes a local DCL command7For further details refer to sys$library:dwremterm.hlb.GA unique window title and icon name is chosen by referencing the user'sKprocess name. If the login sequence changes the process name then duplicate window and icon names may occur.<Refer to SYS$HELP:DWREMTERM.HLP for further help by typing:-@VUE$LIBRARY:DWREMTERM DWHELP. DWremterm consists of two files:+SYS$COMMON:[VUE$LIBRARY.USER]DWREMTERM.COM SYS$COMMON:[SYSHLP]DWREMTERM.HLBIThe file DWREMTERM.COM needs to exist on both the local and remote nodes Gand requires the user to either specify node access control or for the Jremote account to be set up for proxy access. DWremterm can simply reside Kin sys$login on the remote node, which requires each user to have their ownFcopy -or- DWremterm can be defined as a DECnet object, requiring each system to have only one copy.LTo install DWremterm as a network object the system manager should enter thefollowing commands: $ MCR NCP- NCP> DEFINE OBJECT DWREMTERM NUMBER 0 FILE -; SYS$COMMON:[VUE$LIBRARY.USER]DWREMTERM.COM PROXY BOTH NCP> SET OBJECT DWREMTERM ALL NCP> EXIT $KIf DWremterm is not installed as a network object then by default no other Lsetups are required. However if the DECnet object task has been modified to Gdisable proxy access then DWremterm will fail. In this case the system ,manager should enter the following commands: $ MCR NCP# NCP> DEFINE OBJECT TASK PROXY BOTH NCP> SET OBJECT TASK ALL NCP> EXIT $JLATmaster must be installed to use the LAT command then. This software is Boptional under VMS 5.4-x and has been integrated into VMS 5.5. If JLATmaster is installed on VMS 5.4-x then CSCPAT_0511 patch should be also Hbe installed. If LATmaster is not installed then the LAT command cannot be used.DPROXY accounts allow one user direct access to another users accountD without having to specify username and password. The system manager8 can set up proxy account access from within AUTHORIZE.  Example: $ MCR AUTHORIZE>; UAF> ADD/PROXY MVAX::KINGSMILL KINGSMILL/DEFAULT0 UAF> ADD/PROXY MVAX::KINGSMILL OLSENK UAF> EXIT $K This examples allows user KINGSMILL on node MVAX into the local KINGSMILL H and OLSENK account. The default switch enables you to specify just the % nodename when addressing this node:- eg. $ DIRECTORY TVAX::A If Default access is not specified then you need to specify the 2 nodename and username when addressing this node:-! eg. $ DIRECTORY TVAX"OLSENK"::= If you do not have proxy access then you need to specify the@ nodename, username and password when addressing a remote node:-* eg. $ DIRECTORY TVAX"SYSTEM password":: BThe Factory Defaults prohibit a remote users from displaying their>output to your workstation. To authorize other users or remote1nodes to use your workstation display you should:< 1. Choose Security... from Session Manager's Options menu.B 2. Type the nodename, the username, and the method of transport,A of the user you want to authorize. Entering * * * will allowA any user on any node with any transport to display output on your workstaton.. 3. Click on the Add button and the Clock OK.;Refer to the DECwindows user guide for further information.CONFIGURATION SETUPS:J The following logicals can be used to alter default DWremterm behaviour.L DWREMTERM_INHIBIT_COPY to prevent a user being asked whether a new version" of DWremterm should be copied.G The WINDOW POSITION and INITIAL STATE can be altered from the defaultL by editing the resource file. Details on how to do this is given within " the following resource files.  Default DWremterm window:4 - decw$user_defaults:dwremterm$default_v*.dat  DWRT DWremterm window:9 - decw$user_defaults:dwremterm$dwrt_default_v*.dat 1 This is on the remote node/users account.E You can also override the DWRT resource file window position byF defining the logical names DWREMTERM_DWRT_X and DWREMTERM_DWRT_YD under your local user account. These values are then passed to$ the remote node/users account.E LAT$DISCONNECT_CHARACTER defines the character that you can use to B disconnect from a remote session. Default character is Ctrl+\.TROUBLESHOOTING HINTS:Ao Ensure that Security has been set up to enable a remote node toD display output on your workstation. See installation section above for further details.>o The following logicals can be used to aid in troubleshootingG These can be defined before starting DWremterm or during a DWremterm ! Session by using the $ command.G DWREMTERM_VERBOSE to display the progress of both local and remote G events. If verbose is enabled then a full sized menu window will F be displayed. This can also be enabled by prefixing the version  with an "X".3 DWREMTERM_VERIFY to turn on verify and verbose.Co NETSERVER.LOG on the remote node may also aid in troubleshooting.Jo DWREMTERM_'pid'*.COM temporary file on the remote node shows the created command file.Go DWREMTERM.LOG temporary file on on the remote node showing the output from dwremterm_'pid'.comJo If you have problems creating DECterms then get the latest DECterm patch from your CSC.-4+~ DWREMTERM.BCK/$n+\n9&sECefg}"q6yQZdr= 79ybRsfih|]V5@=gzq$%l9&.5b(8~j/Q=,|"He=$e&maSHTm>k[[V MJXL]x[xr|} ~`gnl>'SzAJCXCNF{!B^ de ]/L k!_ZxrR|/Y0$^QK74lV$)#NCa||&o3tS>R`IUF|xm_E@S!`U',!$ Z [Wl40EEK[=,=n3tiQ4"%9Ci a+md$h 9u+q -s4/LsS( ;5A"]v{beV7V> _V# 'gT)!N6i+P:u{ QhǑ'jDQZ*aq/4_@o(-iJw9%4( K%y0L]MGBAʁBX^T2hK@+By5bYDGP][s{D`7=yM;x;b=t3(~tL>dvi1;R,3J[2kwB~1$ ?ADa*2uq/0[ua$!U;$c\St} [/C3,:d[Vvpx+ dg 5Y|m w?rj]*M;vOz!=l~t ut"a_B*kr`w%k#,1?*~? qDz:BNl SjdK"z<{P@S~tsjBN1M+*EY ej4c \lq1pu27(R""'`vSMT~?]jm+i d. w_nt/V$efHp` +g`k3GEq82eb1!U ej2F&):a)&t;B "1LGddy`8 ~ji/E}2~,H0\A,o]FA=F!2 Ey-n^h'V_)} A%d[GZABdN~^wcxway=A$Ia_D;4aM*} /OIr&gpWCCnmQAz*fF_VFLKsR@F:MKJtC20U Xsm,O\\I#I-[Zed%** NlNF `3`PN9[Rp+dN DlaD6d./" ~s qch35Emelkudhzyg|x.5lu|'` [60WeRyqn|5[h|v5m~~isjecn2d^WPqoUBK DSriewQlouPbU sIs@0V9#}|$Zd-dn>y\G 9 -\sWhFRZ=JG-:?)),h"p9m~vssb&c<;e.%!4G#EntN_J]'D=&t"L%7Vx*'7 O=N:!G6FOZ:VZ]uZFZgaW dS0Fx-` Lg  DXZlo+p]v $>|v9~m'=".;#"6  ."+.}ISnJa r-;ox~xsX=5:BD_ P&sc{W,KD _PnRZ__vMh-Z]|{[0CEPp-^,u [k[5,sxqq|#p7n?VXN\^Dold.ca g'A]IQj'FP*c+ 4;o%7N;X+"Z6|nC}w.{'!VVj|<" +P I;~l.-!cs)6%P0HTb-4AmX& YG*g!$L 8=>Si@VcQ^%f`ndnK@65vsIS  9BR,=\2`NEJ@,vh%jT"Nbbjx|64K0xvs{OQ/lx&|!0(7Nu/E"Kplh,OF/"E 1kp+GV,L'6t92yXY9g OtDYB$@Z4*^(>o"`wk |v+t-s|b`i#?\/h(vt .+*|3 ^^bvixA7+ MBL0HQv0Y98 eQT9~t%.yfe)1([.':zcSB ZAW!S;btv`O{D6bL([H fka%vZT_nnl*6"9c#9um'e OYrdXU^-r l.t\ij+PhuC8iu, M]eJPGKoxCfwsBPW2,/n9 GGUUMl),\^WX~\ IM\^](3" _V`v/4?(%Q j&}^|si.&t?{ nZfpH]-|-K Xfr;4"+Jk9ftqv}7#."L0T"i{eS[H)x7WuAfUOP lq64-;6svva;$w"w-|z!37n;<)t$+1=]_HDDQ_O?_ 2&h\[P]);q51"Y&o~*A B:bvbeh z]H &g`2P>v=MHSF_ZOADYU-(c0'a{6 fwgs6=Cx;s=jp3A,"i&)}=>85 LH31wqoV!g}7":><#c0j:$^ leFKBHWi&#P|4 N#RJYaO+12,b'.1h8m7Pq4dm?Ws"-slr&AtA5EM1 7=8I-_K!%Et$#N,uB#|F5E;"x**56uf)+!HAZxgb&xc.hbt=|:Sp edM>drb3h#yz'ueTt)wk:t+RI ^Hv+^SS"R}nh[0m|{4C C,O&8}h=h*117r }$02#-Us >"\t^h9d)\b-5Tcy*2S>"[Z=t)<#y6.WE2{=5IKp ?; _QT,B&^}kmlAc@iV>m[en$ko3|su#|oU~hRCiU0s7*Js?%#6E A=R5!'wM[gf@zi%&bN5c"<^4!C]]B`8+YLOT]li[d"1lh|tTPbu[J^Et-4be|k!Y?,>*O>;u D;9;}F-Zd%W(o)g++ | NxxJka*EJD@nl]lKQ1|+2a){~88)(17N4qZFNT(P$EnY:e]Xa^BEofw]HdMj7`hj/v1>p"wD^yi:"r}]JRTKypk:=1x"7 O?3"#~$|:a?)~BEPWVESC\YMDZF B[94`f`1y#)o4/nyv_`+lUu4)#>IY$kJ.XO]DCI $D?vvzsf$;D~H/;kxHuqRxX PB?3.#k?xflnbca eT>$7y{N8 m'r !55>6b91!EZNA`+No~`,@|}mf;"CLG?h ZPFhoV@5(ZOk.oXuaD(QK@rW-v,c} Bp6x* Q(<KU_ [GVtndDIfZRO{Xd`3IPR}b)#YB;LFWGCn xB9g* 9d1kq&16XwQ&%I/E4Z LJBP9uVAY7%*%yeMF5*nA|:L=C0]]0@ &^N 'B;BX+'~6Z:_Id]O2!d~\F %lsfdy-k 3 :( PaLUPIv)=yg=F jy/e VTk4]!7Ovm58#|mfe`*&2K!f ]cEf.BRBJj.! H5i]_ Q5 "*+A\gumva" D2UP@`C!}-$/{Z3 Rw4:8uR]R JK]"tirD zG7`\k_"h!BfJUvpbRINEEr6Co{39q5Vld`Z3n.8)GoTh@@vttI=)klWz&PrTHE]!^[,*?L]{ENhϯk:H:k'be2U'S\`~_4k+JO)m<:qM^~W^t wGv*24,+n O{?5HG<}7}t`!w6*BI^F sD=n1'|}x G84ƻ*k,_/ % 'f'NJ_f&/I/_hfB2fZbFCr/ެ:e7]rGMANM4>&^-.L$2lbWY;)SODOcѡ"qM&nKdyT OaPsyK\I"un}o7CXBir3,aC0tkapW}@ :.dJR@[6guW( Sb&V'( >a(+.syh8pp ]G!+)u7ck3>l": ?' QXUJt~H&0/sBURJ" /b9n@LnTGo7(~ fKXDE!JDBZj{zMKF">iNI"+ALM {/<(I cI@*0^02r37j!Dwqa5*S[HQ[z*R,\hgo^+f `rEcy|/bk&;|l`t9x+*!}>y"~S{a$}qjD3+q#+w ] {c3(li80;WU(1|3 t9g)KWwAC{(re`_JNNxO\&/5TRI;o1"g8UUFPq* ]YPM"AMDn 2O/3yYjD$?|>Ss_P]kv P;+ONaRrP@<(s.:8sfdmf{=huPKRa W[Ew!/>CJO"&mvN!:(&(6 t1_Wzs HL+H_sD9-{@_{(>K9R`#B%T>U pJ!X1uoD&:gt_M0Ne{KE XQ;Z8MSn3/g~ ]r |^kiesy?Mqi E[C"BPI_[SQF%jyn*h 1 1r6r8!ycA  -2NGxX(w'=@ # ?k,;.}DS69^w)fI*xYz*_L-UJ.]gaH\Jm7(T;!ICfh<(/*M(OB\itO[F jz@< C e=]0oAou5;r9eRM|N_Bwm~+J&gjd $yir?&Hny!}D!P.RPyp.8HfG5j(&&9qbo?R`t~U@A|xY$=!(b`a"p (0Ik:.-W _ iNK`>NOJj) 6wZv]h{JUgf)o[e+7 -nCf{aHGm50wo09t1}4?SYoL_AGWmao*;fqaVDgiz OjN=-m83n"Gx#LRRT9F%@GyGKoJMANb)#G_zT-BD_:u 4ir# u1.~"I~nq C0{h0-Is,Rj=Ab-4.>48 G4Vn;BL ]_orbHWQR%JXBI5 /s,Lc=4oq%0]e;J&<[}"3r i07bN ~rw |;:J "/QV:B:.fjIoSDNGUc#.iV=PT][otX6o "sA4c,7}>jGR_UQ!XMP J<}# SQJZ AE1e5fces>~sD`z;R'Y@/9kPQF|j=T9=j- Ut?"v22 tEE 8(;jlRE$_CMF Bt^Vmad~e$5bDfmLK]OTydrUB]_YNG X(k]Nvi;h+*+@\B}pKFABjnrm1E'|AV] R[a ^+DQpHN`.??x5kPeE35bz=RH@BRrzl*rDbs9%0ml k=;8 3< [XQ1#%,#(_ Wk31]D M E P [U,j}8W OM4bvu5@b5\cme"B;!?@ w_ E^ nx},s8Q xv@uwCRE/(5['aPP10`;8aC[$1 +DWaT%$2'S|E#i]XO}~i4u=y:"% Q4~'$+*h15?zt8%UTOUUO@N&,?7G_]uA_TH-pA@FDDA RX TV[_jm..b3 7ndoL*9m!&{\{MHF J^BPj8v|9r<8i/H;04%/yL]UyibBM.OI JS ^CUfI{NzkKGCcEIYXK!' WX !%09O:9FTCQRe_*9jk2&p2GL!;^SfZ\.}nmJ =2>D,+k^];%+^d S__HG,,/LP12*Kq_~VSJQIQT (/}wuZ }e yvGO I_;A!:.IqwYTwgd!qq\sm)&J .d0ApStxy2 9fhqWc]!qyLWnNk0 QE tA& TIv<%E.< >xi[pjuM ]1oST.hCYE JOdrYyEtO   [f7,oaj_ ]Hno#j4BNWQ H +CeJ{)A(  i2~HX'KXPR MW L_K'xJD$rM Q~cSO_C]@c/>i9qimYr`4`.`e5&?UGwd-6P`MYRD@q_W Jg]jJ A;=6ch7j\,q$3*-(_4_),$6a$P &u.w/\ONO .x A& \Sl1_K&OCU)7 uG,ceNjI @O\ x_S{5%Pmxj5z<IE5GIa TdU!S3J!Th/t2@YM&Hw(8%TQc;'!-pi0gFVG){ d7!:vqF :P^=N ]LhBI$5kEAFT[-sHD6HRRUQEz.R/kkdxG l_aIhfzCeD Cz{(PBD_N"RA4 q}x>@ w IMn[Lu;oUB%UK#A+HRG9V;&skm"G! :PVQb]JL<E@fWMWA{'0^)$bbz0D l,X+#P8Z = 2A1R@G8(nBQ:to$,|e+U: @3JyWkeqaO_uUGK\jL$!E } hzG848E J)Fz]5?Ozr(TES}'6aa!#v}61yyh\dz+`  Qgw`!*F@"9 3QBN,YKHC_NJ/Dq,g;obl07fX`YK[I}raN7\>ap:SeG.o D !:Xv-@]y,Bxuy0j"[i|xMJn eJ\'y^Bw.a>wm6Vu4dWgQQDMJOnUx)k=e5\ n#PE|}37v'gfD]? xeq9$,Z xS%ipuEHC?eUc='=^;d}l!bBfuc`F_YwSEMPDpDhO?{DSAr zwfnGC s F7*~VHi; r [ D[rl _(iy4q r%e#y4M3 F 5'.{0Ju p`~cqDA;#cc{ޝ!^V(]th-FKI4w^L: ULg#U.DN+yUWPQVG ^/i0"pIw&?-3 z-}\=abHCY|M\.m3zi[%!o!l~qxsMmo,/1. G0<#kc;0b4?1wWTEh#r!:ie'p4% 08;r&bV( E_TOl?^Ԁ/`PEL nn ^ 8#f/j*T\/gdx a-EH[y_pgbfvM ^⒩PFe?M ul>Nv/RB*b-{qN[D_BCO x @Z zKDGGvo*$YsVZ}#UiAe\S< Dst  o(" Hk 3oTPF\WY~](NIQj"0dmOeL~Cg``MIYMHf NPekP'MPe91ESYJS^UMF^  KdHjZO _x xo~\ gYSjT6b/%x ] X L%*p^e<PaSLGDEi0[9L%328F2c.tU]^UBbn>u7s(t#mz |2.8 m  sUR5 |4(Y#CK2#*i;"vI"WNTA`ic{?JI%IdH <"E@Dd+ OFLy[@W*Ot  Ba};(DBDR~. em7|CUYq{Zft,߬ O\57sc}=!W2moo j__w`""+ofTXZNbM1LEGO86b\://G8'dT&u( _L"q!I=  g*n{>8];%yr"sw1b-\3x$(enk/&ZMv? =DbZ*Q Xa)y7:6j:Q4/b:g|%@fp'bS,R_P _0HY>]jaFKAsLO\cR7p%[{lWX7}XG,AAp]w~Y>F M<IYV[Kx 5SA5 FCCy2{YUXRej lyrg~;`r7+#i&384`Zd 1fr]HQW3'u|g z(3t%3fd)}zgah//(y_ORPY~ OSYKBV~/;6}&}NjXvf/h&8bOHA 3"~@ Xzn5+9t]"t0'xrq!9#g.,4#?l4T(ZY!cHBuV(byL`n;G,v@0wiu2|1ylhPvIj'c;{MM"-?=~?SS [U ]SP\RJu/ylC}&iF,IS}ak(j:C5bt7s)No>{r?R:f BeT @2n3fqfZ"3J .uUis+*9|`U+^! >mWmO}OMnKO 4[Y $y)|b%"+ f9w2pp2dFr*$x`rpwi )wW O0ka}9rpdP<'IJaP DK =0qlyfEvxw6z[UU Ry8&(N!3A5br95Dy]F=0fxD/dO \mn<E*3?uId:IP?4;c61 ;^JRnoG+xC`j3fq2p': I(p|/s 67uo}29w~l0kt;e(2n& MS?eY.(9x8=\9:?sF>I8"e'iOOj%?:NF |kGn')MXCNRxH+Zl;|-N$K)^q J+Y"DTpUG;_ _O#%ib4w>P,4s;-2$!&sPx. Lng,OV>&XLKW'-?f/iemoN )kmL^Y!}K9c,7/k0iCb?D& gM {hm7qJ2'V@`pI)UUlTyLn6#);d"REUdIA^Dfh4<#:O1oH~$H 65,3%"'q&s|i6n~+th$G L':w9x{9$frmcyv ru&#:*`"< K6/S_M5hKWZ_WWG@$&}RE`X D ^W#5H ED 8J*} RhJ4rX [ 0RLT;E D= m+s1a;VX IQsx!0vvTGRC+R8c>L>HZ `D_:%>l%Qx s0sj Ix+/{&-gd r;/ h`~r/{ lgd>vmZk?s6dUV;|vbq):dsdrs`j{&.=1^5xj^B8Wd YH)<>-*"}a Q)q`\+*2}'TuvFOajb*.@{8 UI^ ]z":5u? E<zWniN< ]*9y -_|^`jFU?!{  SBN =6ENrp[d TY)S NCd%#dx~" OY//]J73$R O"#X;8!\S\me. *jH t%JSZ^FQQ.{Lo2) c3+s;7+Iap\:jfsr u#0S=""[BmE+oox_C+&`JE>I*'O,Qh4&{H|P 8?,c|CY|;ZYIyR}s?A?՚s0HaRRG[>:blIAvg3:O@mTZFɻAe<2p8d<`ek~Xo'plb!{n1!4[v^C~NDm^Q',A5Z,}9]nmk8(mg,Y UhKFY0\|,)rv,,K9c"9gp/#4mj%06Dd;m?  2_^CeA3c/bd>U2%y /k&Jpo}"t:f(=uRz2&Drqfcg>g+t=-d 9npUG2^xf"=_?Hko4D:x:sXl,:Hcp?amM&/)v- AC!I)MkmBVcR~K9t &'eVHMFX :+$no2J%*9r9&'XUYxZ 1:IU?]b2\xt`hm02'ubps87!bKJ zIh*0h3w|^E8pj3r t!lqRwQB|r;%}#1cnzqzNX87YCQFLF~qa>g!k$cS_ N],BG2D'8 (w~pVUW7AU[EIMyBiiV\Ocr+UqiYTD~f.n~: "+H KH0% |LsS,/xmfvo?{0-8[hp;{0ph($:]xSPF8vm0j|TZ?{@L C-c+p:r;Qi!e,hn2zKjKb<ODLBX h%\W:~XLb\T0'r9rI=fLsB(]ZsG#{JR+5.%b![`,Mws2sp~;q?q!,~EchP+oca|#~xP W .$41pr~*=6Kd1Y\/F&u9  (!GNLpW*rm~G57`fsa<<$w].(wY 1GRS %Z ry& @hl(;$ >gr?n`s{`>|oap5 :TQB{v48LN`hk:.XA^ON@aES%Up(u>F(d:fn4`#V&YZup KOPlW'2'9!+&6WN*d s R(q83FjtEM$r[mN@t&v)s[isLGnj.jO}>8(G cd9'TYx._ O$ F)HGC}bc'u;Nb (Osx:u@iu'nJhHd8\p/*VDvmhz- 17!%--sJ?anns-YV Evd,PL/[(E D: -:P}uKD"kk$/U?xO=(RHG>h5640$9:hBx|2ld/!!N4w+-43N9sbSHr}&/:d=QC\~ Y1;f&.`W{OC_?R_E\dWueqo./`F0ML9yv%Do[S )PQ-%>^U)uxirH $ZO>%l P$R~E9]+!)@ixi<(x43FK89XUtla~ya c9*/4GH&`mia7fa~RI|~k4cIlVO}oh8>b {*R.4.49o~65QIv3nr#r='S87 cX ~d|)%ru|C_Ow@2kAFFqg. 0:k*;} TqD}ZZ\&mf|Qpc %&TCYBD \"^t`b, &[P_BRtwSFq/RTH"k8!J{3QaYx' G-Q8-,{aK;V6z?h'GDtG5I lw9gcNd~^Ufs]KIonrsbwK\\,,o1%EOk% UEuq1/4KTc +9megMl]>had  ]<|ql`*/0\!h-#u> {riBc YNrnwuBrS`1%cdw#_+!|0#9s7@uzA) %L ;H4n1eW R&IB `\)bhfMeZ]}b5z_Q^_Jg0-.J)Q2.[8asj43@ >3[2I wAs 9TzDQ4XJ )Do"g2efFn}47p (J#<CS i1;9f''}{d1/i";;qdRTYy5$&M/;>D^4aZ;3N7_(7-,IT*v9u,'ik`G{QITB5% _=-qN(l1xj5~%u0u2=oscnllmrr[%3|76ic6O~;'dE!\h/KxgXAv(h9Ka'M6K@ t&lwqGRZaR'DkND_NTOk_s%u4waN eo1)vP TpcQA5;4><%WhdT/r`k1)G:.Q jM6@CtNpQb0Yzk{{_5@.(/DQg92ph4I4rf*1c#:Stuy9VXp4!xK8i@_BZQ4ylM[|scXWKXifdnnmerdR=tQVWM!y3e\B Fc62l<{.[]I &E,PreozC%;OE KBpMuS ]TZ^^8{+cg(t6x&u6PmXin9x~:k=;ZjWD:^hSP8lr+1`/I~.Q)5j/#re,~_0Z c\ 7;853 CC/ 9GB:-/;Wwl09<F]M#1EUrP/PL i_E*"!lFH,MN,[poT3n lIU~=ICN,.Xr1I) ;-OA*? 4GKym8 q++!+I]vLEEIRbol'_!eH#?%yA_5YQTKs19r}8KEEd(vv2^i<1kv[na8X\foH3n }:O'L{ +I^h]&I~7xI.}\PISr4 Z^/|mG;IEoM ~ @I;MtN Xau h+U;)cJSchb>k~ {YIS?"@>#|2>U7 Xtebo5*C!<Lb.WILT EISNVUR,5p)V{>|~rjd.+ Rjs6o,=cT LTq}fnm=n("f c<~hN@uMSb (3~s6. ORp;|wG[-gI @OM ,5:_t#j,rWE]NX]f6)?i&4dZ;qjfn |Zy*zz:b.5|ik(vq*J0wPDMAlGX+^5[8hJeda 9P#6?f,[6in[!r'Rqb%[Ri6m;4|D,y4c]oop2yuuWu?,QL`O*$'c '3`:<1M]? vB|#<C(vKFZe(e<_dN sT%qTj?5.BZ|8!?$U&h1m< mNT0qvj/)P?7sg #{\3aA^k (uZN<){ K3^M[bPW]MRa5qvZYh=! 6I(s$zg";lcbpNIfuo%99$8&k}b7)`)]}Gz9a8` *}6nfa<wDVx3/ S/5}0NNT}wc'VYu[SWxo_hn2R.s5xIImuliGMU BZ4r$*K-^BAXU.4dhv2\#iaqm18! QLyPFE7US d6#cmE< /0p_X3gj1D4qi*u_+QwI@4fv9(0e9GJD -FH-U;RFV5%*rfR bB"$$0la9(G 1*-qi8:~ ` DK`$5'k.=6TZ tcwv LJp_ugjS ZsOVoV XPkp2: qrnwEAXF^J@?Qv{z'h%_t"w:->>)C>=kToM(OC|<"vzzbB tvl[.7vo^II$s- e3$F A\W!\8Koz\>.)Frc|cj~yGhDLu:7|{n} i""6-rj-9m* Q!crg!ebj4?f ^UB#ri!3[o1UYQ8dZr=/&w1: xZ J@%2 S:aA K7l63s i\/9YF -}:+ 98?.g8[kVy3q!>,y(:((ccf>aj1!* Z2')6;pUcf>d;.~:(5I?{fC PK9.N_AbvY@K'i\Eq Mnk+)K gb/0 +eR*#Gh`W4I;STFCI] `bj={-},s8k KMD.zj1t/-d9YowhzniR(jo=s gX"(IT)Sso~oHCtRn+7p~e?*1mm6b(`?'Vc'tu8zafe1KFV ,&eu $;oNGc QkAC,bx989 WL%ZCCA_!^lXMMCGWZqrah[!}9#|h:SMTa)8:!_P{ga.`7/P>/ o>8 {X<.oD's`6 x;G=6!(U_=%8HI(2?~3rW@$t;!is^&sn#o4;.}aZpjNrVgV(Kma}XKEUXn&a9;lapO' eR&I,{ n]A ZH)L;X3@V32x"SL&Mf%`G#_ EDVo;anOUT'_K_X_]} }-< LM @ k_)pMB!b74vn H@TZxY_*FLN~L 7/HH&BI Nzc)r?=\4"-: P$3[RR$/1C pI#v$&LGr`jAna1-5b.UdMhY$`OE- B )"xk`7&Y7#*p^0p  Z\__\^ RJ-(N_d -_efJEj CIfcme7kd^ Ae j''e$_r2 v.'#Jn6y.{utx@ -%9r=r131dw:h*o#~4b.#.V$65ga9+,*kE)Zr.$dBm%0t.> rAMi|4H\1m9:C"tF+c8l_:}roY$X H~D a7GR)@GU Wx=iyv`2uy{Hah55u.Q!13**xR`1f}?zkW 5klK\ 8~y0Hi_!vE:c?L6e jjs=&f>t1Zv Z.d016*{IZS5Kx~n)7sWK8-nRC7n-j"5xLY&Pis&;i3UE,a3Fa-6 f7(\'!cK@xBfvj7Fir  t@wW & xx+#6!$p 7)^RUQ *# :Q?OO1 ?d!t'51egh"CwWTWA[Cv[>KK=e [#07'Fy2FbotcNV`8l,tSgY Nl/)fVYtAXECQE]2c8y~?X=,wW:L oH-.ib ?NG[SMS^7O8BE%` -_|l& OOc:ChA N9P_RrA"WD 2jF{]HN@Bc*fn_PMo}epub?{d yl(Rap?1g6!'Ssd|nrw#k/Ed:D2/19_"u(^hc. PCeI.w5Jros2?i;8 9dg(47;&-+r&98Lr:WQbbIO&$5$+{3mnh'_/~s419?/.*ou72ubr fjkJe+oo|gb~06<"1}N~r>=,*zt0V280eYZnrynU*-*I^P%[NFLmG*@Ln'0O]h``d7x2%aaJrc{5d?*j5)J RF8^[3POKAn$Hwvqnah EXl=L<3+30 {<*Vbh:H\D-s-1LQhtkTa0+xrpwuDoVYz}9}SYj`#u\d.*azGp 9:IBJOX.!~In=b3*qNZFHI/8ON \sI'0Jy,R 7*#0y>.8j/2 dB \YZ+; ]COZOSWK\F]T?3 cd?<<+9 -CUTLGDTXVcSW/wI'e$& =+Go1ejq|<-&/g{!35!V-<|1'af/' 16KI$~lw:zaXh{f+V76E Y W&WZQU8#9/N {EpusiOCv(oMDA[4(o"fR=V+S_^YPQy(Z Rm?8%5OrMx3Rz"xBMJJk>Y1yGY%a6 ^l.D+uaqNMFCg~MNo( <5 H'fg1DX18;8fbQx>`,A{zHTPPqP6n8>7CNT+GEuNcSXO&dj|MOBL)s)`Dw2Dhzx;tj3  8U=nv%,{N 1Ik% HnsI6/00[HI>.HG #MRUm(pZIO5bs};+pdIO[j& ahy,>yE!%4?"R eIB*eHqO N? ~l^XP V7"nnbZDGyg+jVxOESPORTPot&cO8FI7e&)XI C-Oi:z,qb~s;Yifwn7NoXto=P_/=7nUDuc1,IM"Z:>L )Tl#'tIV0m4C11g,>eejz:H$yd dO{PQn Yys5fkvu fs_{<<>n]<2e*!'5= ?f}n*e8(Z$h'?&>'5Ei6*jRD,Do;:d&grh. ev"o@t Ldp@E7_hZZOEKP,H _^,aQ6v  ;%S:".xMB QX*M1LD %MT RJ LCV HPIb I_ dh8->,^!Nbs::, c4S78CLnRTS*6rq(Be-%m0&{}pXF !aQmQ X3i!cYzu$sOLU09rU~"(2(OEuc{ CI 6zGKr>4j<3'*de[4& p@4D v6OTB'PI2zAs?[LO^ OSRH";ea 4U*eUE&>?/9P$!n7ve#+F e{|)5kTTs{ EPQ\bEA[LbK6R VS |WO0E^!1:QqVOBL6P9%[t}bA RCo;4M*d,{ )oK$s.#n1&MU[.4C4 u]P?GHn.QM'+>?sw G=b1FPH %]K_7Jw)PMz.E*&I6l# l?dCq TC;qT_NUKHb,(&%=J'=:"57J@O}^_ NM Eu;=$07_rvVc$6$!9@pn7mjThgUo?y[~x 0>)58;'PhAoBV{!qRNN\:0@w% qh^<78H3dQ1r:G`kDoJNW)>3V#xHH\coEd: T*2+G9+ YB/ '\6)I5_0?sa~^yEH!E^2P)KNAUpMXky_,5ta0:vU|<9:DNz%f?BEU9}#MvSXy_ZfH^or;JBQhn+Ak53!0ef?CpliZz7az ,gr^z;>wH4RJ<./Tttz\ne6i[hK hfto?.0E;T0259f1(XGz=ONNKMXO4?DrD ;, TU)f9fo-Dt }.] P8 VB#M;'\YQ.&$ ecrf"_&}*7""J[+U+inExP#'&3:aUEw q{enA^E~ NXQ?RW#r@D8wILa8b"0/rej(T(&r6-CPMHHDY\ P\ZX!A"#,%Cje4WU)R$y0"eR5VXCS"7 M}Pu)~`AYE%5E"#*"uyr;_4#16.!oiI5{H[Sc)q uo_DUn|*  yi7cn-!{l3@Gwal UMV[oq#jT`tzb=kwMn81 RMu$zg22{Dfg`E%MMH)zZqI8&$K^|(Hq+ f XWBUwu<4+:$AJ?e8u?(/"NY.wh6` _yy C>\#J7n6 Md+CB1bx-WMC?Q'~;h((>OFP;IA}u>I]Ke(Il% *,kB1g6)k$'j<,m&CRFaQ;dW}?u<+Kw|]NAFnc("[-v~6w9k0'8i(9~s^L/< /XPdfT7mh@VqTx8WriMar,bTk"$o`+_AfeSSAg*|y)kGSH#?,MPx (7 OQIP- p2g,+,fRXFo_\4JOmd tCGGR^]^ Oem:ywB!=EEdIb+\K/mMSzK\YA X9~a'msY7DW']K"W2D@WH]8B 7&R TDBs00yEtJi I~g)C';-%LT6=t1Om}-!WrH_6r<7:PCOOKm%lys"&I53a2|<`iSCcg}BT [!s^L <=)2=d{O6FDlt7C eN &6mCU#lc;G G[v&"McSe[12#lt3}uw& -=l srn\QJjEi 6OAhBZ Mw*$bx!p`kiW!17-azAU0?gr.Y*dHV+!s46)&l'91\f#j {8GNEL OdaSn_Wgf G/ "Svf jv1R2?&o(bxH[-43a,FTAdvDbHws)== ]s E P X}/Zw-SA#]EO?dCO*\lLTMsO7ej23k$<A$=wI f&k ENQAH~g3 Vu> E?)VQW<wB[[*1##7!r>|cV| *rK*>zmkKA);-=m'{qPCzl\9SOr3FY{ ``hv_1T8qXxAnExv }Y I RIE 6(9E`kQL*UI}TGYgfM GL T 9|^G,+~= @T %jPr,4Fwr,&q'0:{ M8419uZS wm(-*_M~F8r2b {NR.2;hD. ?w @^~h/(;~s^pTI wv+I`:)-?C g {n ?QHWI&)8 VY$ g~ n?d5(7dp4e/"V'.kA>m7E:#YI8K}9MD^,!7fir(rHzeR, W`njTD(ZUp'sQX:a?fn*Vh"(s~6.5!J19Evi&`JM$Y)(>/;x!DR)UN(?w DF {* LE,cCSFnz } ME^d$ c%H[L++Q ZxB}hQdht!(fQl@CVK@9hJ b+Dn,pczci;J YJ!togs}Sp`wYV:F-%M?@T]OGVHXTnHDYuvQGo-8JZcQDeua.2ze^8*zt2-ca"cLH,yNws@C4Ca?YADYtC>FpY2%.$_N@WC0|-x 5i/"v"4s/L$LDQWERz|ICW,tohex^,,T*0_Pg{z3\CDbb *.ZU] w|entCMWM082 Z^~ %&7i/1*go#YC<0JydI~? 5w _%IRX?q7\'B[!ugH=),9J XG^T@[dz E@Z#|,"V5[1K/>dh\L,&bTDUcy,ZSMn 8"fFEr6"P(~QEOsYaij@j)N] Q~S`e3JQ3swMMK1@9& MIU}O5c "Z h,jXaps&~ftZU1k$;"(cf^UABU# @1)?ZZUoA e^ AOTA}-jtI0$BHz&3L4C 6(@{ )[K/*jdtT Y=/,vfc +BFyw0hEh=qd!diZ3eWD;,g0SS YG1#H | UEV y^7;T-;a%.(ls]W5yt|}Ax3N@`x@b DSYU,  nt@K@D(`j\VDXL $8Ll~CDHCPv@ cf/:~c1He<H +h8CNyRHbP$oU@\0O%pk`^o@S&$()O\V\[]I9>2F-#TXA00*E`tM [o`)al Q'~\n $3i
2k2d #"F"Bgv<+617L^,0v0x73_ QS90(q*73ISs#t8+5{HIyAQ4^#. LCh\USp:QELOXPC+gFF]_JYYo;;K +,&=p.?LN3<'[eC?*<{{#P XJm]={3;> \S 3A4{ 9Y9p,%,$7c=^(i=: S@MIJCI^BRo F((! VgTH E'54,ExWU8BD$BY(: N UI %6< T  T[VxL'U P4G\NOTu GRc.9R&+]_e!) B.csdHFzib,U?O sU H GIV5#2tAgE\TOT}xS:R GALxAL^O;${R`m BNK|=ytqo6BL53rxIU+S YRN3YdPZC+t7oGjrKD4'rD(xO;:A^U}" mGEzCs d_9wATX7f+aME$nud nAnA7} LXjwb Q?X^-.7w &ma~/g+M P zn -Ypg?D Pk.'gyjn`=,*)u[:ZmKew^ 0>j`<&&;>$/vn7sHjf:j. $2b^;oTe0')"!-(|ck/j~$)i&LW/I <@UZ<\OIrn V*4$;z4x"n-5N I3]NYN zED\BW zT1Xf + d:79;@XV6vt6kVjdUE\ 6KMJ&KI}lJ^> yPH-r~ pYP(X. v,odSJC_mM_rMe5.$ 'Xr`YC?3w^)BY}[ {94mAS#7-\e./b1_QTV*v_amfi&;J0NYDKnec27hKUN.6 5Q4W bQ9z)&#&$ OZ?WLJ.>T`~\{8 L'hbxZ! 0SV)VN C]T6D+STVG%.BAv23YXOD1j,QP^W jZUa\-t|v\R2@N0@Bq,.;ZN#RHarzsGXRs` mz} KD[ZOHRrD\X[`mNYGC CJXJf|/=2H //G?_i`~! ):Hi)[)NuF4xC4{ e +D0 #\}m =B6 )A TeF 4Y_2 \liKNb8Er|*E_A6smBdhUax_v(O^73aueig<NnA+}#cueaLUG;fS[Y_\1lwqw:em9>dr1s-*bkg(U>47+bkvjZ@YfS,fc~ RQ:+dhq(ez7 nc6he:'rnYkVP^RHF\OE  I'|1$BVOD` j'QBCTMONISSQWIREDiHb%0 K&4R'NWRC^7MZ>)>+4PxMb/Let:?E ( "&42E}vj>q#u&R{"c\,ye Q\=gDP:t PD HNAMV g(#M5x)#|ft(TN_"WN> OR_qo23RRB[$^]YU b Ahgr&s 53 U$} pQLe+"Kz '8 `[RYl`%xLWp_ev6E:U<9(o oSQOnke! O1djx YQFV( ^gP x 10}*(a.>cBTK6+HSrNCs&w=UH0umekGg BA]vMe7Ee[qg\UAZAOr54:F>(:S^R2jCQMSht81(JXJF][x AP{sw8PR&oe%XUCNKD_\|E6p5A ?7{H*zAQK:=E?v IXC Y}.? %& ;4wTf>7~-kH V3K-cp8qK+noSo~AGtmGt x:U DwmU=kDp_ 2 > g)*8Q-0p3+4yC7~=gh1p "$11CP uFB;(C:-+#c`4H6i)15&aYdc.l?vh/0Sk56yu:\.lC`h0"os0\lju]N MZYBKejO;q;anNQMvfg $?Tof/*lem om(A{rY7tiBYhjG 8  wPD]_ ITD j64Yq3g3rI%- q!Ehpzqz(^byHCQMbe,V3+PVTj}R^#,XNnGV9u4~kL1demzt,p-G'21yoch~ `Ehx BD _[S=7 A f Rg#C]-#-]m%Rhy_IPE( ^Qdxc5H5mB 4C4Uk2;TygMBBhj4QEE u<0e5:L24{9!?)c;b48&=Lko**Geeur$VR^J@CHX8 K?<(CFLK)MJ[8lIAJ Ba _HNK$I I(] _YdYHZYC SV`xGN=E% F\<!XX!H GM2\Da<e^FMT-h ^MKq:n+*OE*c>&+WdPb |NW"`]a euKK+omxQ:=|{%KC@ L']W{qOT]A@FZrqkeYNgkgNNKGGP_/IQoeV[b K\TC^Or/ U1 C xHZ |3ef oZiohe[Ia+atjg?n[b!{d0 ?Webr"Op6_ [> rhl u-ZNCWrFFw4PRrH[V8T2Z '1iN7JyvLvVefEMM 5YJW? o.iZGrKSJ;-Q?7{dP79QCg8 2GdfAf3H0 !,-j7k~d5,W{ &<#:/.>lo R7c#oMy]kRm~i HVOT;-Gl'hm Ia;(0khW=Cy8xE*v;!J^fE[Ze YQJrSCdg*z09[0~s/}`} b-TD.Qa=@)S;,Fz^n{iXp/9[5\_Qd+d$ Aeyz:~R8*usq*`Yo+H!*`r:?|-$]tn.xl5;=>@3X;G>MZ QqlG/lr5Rl71v|urvd&[c/3K=ye^Gan', &+j~BPMu*)(/jxTee+;8VZngM#p'e! I,(3| /CpxJ(tU |i8 SMWO)7Sm52BV #?>1z9nd}bbK=N.\WAkPRm.LR RJ%o?uQ F_[|yGQ E K'Fy[[Xu+H{|c&xGmS})Lw=O EN4"PlEEE/C-0v=99hIrQ4%Km{J3&yA2i1df_IIo,qeymb(A!N)~ Z3LXZYU:p@ 6 I|)t&x)ue* 2j: ([`.' Zj/~=9} J o_Zfieb-L5V .Fr)PC{,c4$ D(W8,Qv';7rIs{^)&Vjy](w+~ct3nab@sl:LQPc{~2-Q_<{4Snl'"zn^+?hpTQEQAn@@n+5 E;h4IclWBqV< $N_eucCKDm*d7c?gl/IC-4g3bW0IeSY_P$tN%QfIh$L',{:[ZJSWP'5-0cGHIf2\lp|?dF0cPzj's]S5rU)nQ$iq2fzud,d*< lt;/_=u@RNB * X^ ZXOZSe6Me-IuCVT@^U4*d*nyE*q*i}m^ 5M;gdu1sP3^-tjR|_N&L5D7C$E?4)e+A{R>T%e15$Tbqd&D-"Ipr ZRulg0qaDr{&_+by<was!~h3&&ty @VUZC``t PV=wU^ECQLh+ HNHOKhGYY:PGO7Y p_Y: T/<=VO ;9-~D;_+X3IR&XRZVhK1bFRS_TKOLBEGDBnHM=Y'o F^zCf!n{AHX(+`,u.bPK[kAMYw{PDm U.]w}ZYcKWfmVG"dlu. C=g;Szwbqou#^TE hY[v(o ?coI_50%,Hu]RRZn@AVNCBRL@_%`=9P!%Eb+G[3 2nIlH6gG!'.!FA#($=s 8/W NiUos