[y~TERMINAL_SERVER_COM_PROCS.BCKByTERMINAL_SERVER_COM_PROCS.BCKEBACKUP [.TEMP]*.*;0 TERMINAL_SERVER_COM_PROCS.BCK/SAVE/INTER/VERI/LOG SYSTEM  > V5.3 _NSVAX:: i  _NSVAX$DUA0: V5.3 ~ =*[DECUS_KITS.TEMP]CLEANUP.COM;1+,,./ 4Hh-0"0123KPWO56  7 + 8E 9GHJ$! CLEANUP.COM$!:$! Purge all setup files to one (non-zero-length) version.$! $main_loop:@$ file0 = f$search("*_setup.com;0",1) ! Pick off each setup file"$ if file0 .eqs. "" then goto done?$ file0_alq = f$file_attributes(file0,"alq") ! Get# # of blocks?$ file = "''f$parse(file0,,,"name")'''f$parse(file0,,,"type")'"$!G$! If top version is zero length, server was unavailable, so delete it..$! A purge might delete the last good up-load.$!($ if file0_alq .eq. 0 then goto top_null$!,$! Top version is non-zero, kill the elders.$! $purge_files::$ if f$search("''file';-1",3) .eqs. "" then goto main_loop$$ write sys$output "Purging ''file'"$ purge 'file'$ goto main_loop$!H$! Top version was 0-length. Delete top version until we get a non-zero+$! length version, then just go do a purge.$! $top_null:$ file1 = f$search(file,2)'$ if file1 .eqs. "" then goto main_loop,$ file1_alq = f$file_attributes(file1,"alq")H$ if file1_alq .ne. 0 then goto purge_files ! Got live one, purge rest&$ write sys$output "Deleting ''file1'"$ delete 'file1'$ goto top_null$done:$ exit"*[DECUS_KITS.TEMP]CREATE_LIST.COM;1+,./ 4*~-0"0123KPWO56ݪ# 7`E# 8 1 9GHJ! CREATE_LIST.COM*! Create list of DECserver characteristics!set output decserver.listshow server 'p1' 'p2'exit'*[DECUS_KITS.TEMP]DECUS_DECSERVER.TALK;1+,W.'/ 4N'&-0"0123KPWO(56g 7-g 8W 9GHJ    . Management of Multiple Terminal Servers  and $ LAT Printer Queues            $ Spring 1990 DECUS Symposium NE028, May 7, 1990    Pat Scopelliti Al Grosser Corning Incorporated# Corning, New York 14831  " Agenda   Some basics  " Standard DECserver queue setup   Problem areas   Our solution   Additional features $ The Basics  # DECserver-based printer queues: 1 One connection to the local area network. , One printer is shared by many users. 7 Access is no longer dependent on any given VAX  being up and running. + Printer is now a 'network' printer.  1 How to establish a printer by standard means: Setup the DECserver port  Create a PORT on a VAX , Initialize and start the print queue * A Typical Configuration  J +--------------------+ +--------------------+J | HERVAX | | HISVAX |J | Queue LASER | | Queue LN03 |J | DECserver MP2111 |  | DECserver MP2111 |J | Port PORT_4 | | Port PORT_4 |J +--------+-----------+ +---------+----------+? | Ethernet |N <---------+-------------------+------------------------------+--------------> |+ +---------+----------++ | DECserver MP2111 |+ | +----Ports----+ |+ | 1 2 3 4 5 6 7 8 |+ +--------+-----------+= | +---------+= | RS232 | |= +-------------------+ LN03 |= | Printer |= +---------+  Some points: 5 - Queues can have different names on different  VAXes. 9 - All queues point to same DECserver name and port. 9 - DECserver queues requests from two or more VAXes.  . Standard DECserver Queue Setup  8 Setup the DECserver port using one of the following: 3 Logging on to another port on the DECserver & Using NCP> CONNECT NODE . . .  % Using Terminal Server Manager   Issue following commands:  Local> SET PRIVILEGE Password6>( Local> DEFINE PORT 4 ACCESS REMOTE, Local> DEFINE PORT 4 AUTOBAUD DISABLED% Local> DEFINE PORT 4 SPEED 96001 Local> DEFINE PORT 4 PREFERRED SERVICE NONE1 Local> DEFINE PORT 4 DEDICATED SERVICE NONE( Local> DEFINE PORT 4 TYPE HARDCOPY etc. . Standard DECserver queue setup  0 Create a LAT port (called LTA1:) on the VAX:  $ RUN SYS$SYSTEM:LATCP) LCP> CREATE PORT LTA1: /APPLICATION( LCP> SET PORT LTA1: /NODE=MP2111 - /PORT=PORT_4  Setup the port: ' $ SET TERMINAL LTA1: /WIDTH=255 - /NOBROADCAST $ SET DEVICE LTA1: -' /SPOOL=(LASER,SYS$SYSDEVICE:) # Initialize and start the queue: 2 $ INITIALIZE /QUEUE /START /ON=LTA1: LASER -* /PROCESSOR=LATSYM /RETAIN=ERROR -# /SEPARATE=RESET=LN03_RESET  Now you can use either: $ $ PRINT/QUEUE=LASER MYFILE.TXT or: $ COPY MYFILE.TXT LTA1: 8 Handy from within application that does not support  access to printer queues. - Where are the problem areas?  , Manageable for a small number of queues. $ Lots of stuff to remember to do. / How do you manage a hundred or more queues?  How do you handle security? " - ACLs, UIC protection, etc. 4 What happens when you change an LTA port number? : How do your users associate LTA number with its queue? - Where are the problem areas?  + How do you clearly document everything? 2 - LTA ports are usually defined in one place % - Queues are defined in another - How do you make maintainable changes when  - Printers get moved. . - A DECserver port fails and another is  substituted. 6 - Several 8-line DECservers get replaced by one  DECserver 500. % Our Solution  6 Leave the DECserver port definition as a one-time action. ) - Handled by network support group. 3 - DECserver not necessarily under our control  6 Create a definition file that describes the queue:  - Queue name  - DECserver details  - Queue details  9 Create a command procedure to process the definition 3 file and create the ports and queues as needed.  7 Use logical names for the LTA ports to isolate the  users from the LTA numbers.  For example: * $ DEFINE/SYSTEM QUEUE$LASER LTA1: % Our Solution  % New method of defining the queue:  DEFINE QUEUE LASER DECSERVER = MP2111 PORT = 4 TYPE = LN03 DEVICE = SYS$SYSDEVICE* DESCRIPTION = LN03 on third floor END  8 This text is placed into a printer definitions file. / - File's default name is LAT_PRINTERS.DEF  4 Then, we execute the following command procedure * SYS$MANAGER:SETUP_LAT_DEVICES.COM 3 - Handles all aspects of the queue's creation 6 - Handles all aspects of port creation and setup # - Handles all security issues . - Creates system logical names as needed ( Setting up a Queue  5 SETUP_LAT_DEVICES performs the following actions: " - Parses the definition file ) - Locates an unused LTA port number % Starts looking at LTA9999: 2 Works backward until F$GETDVI indicates device does not exist 9 - Defines a queue-specific system logical name for  the LTA port. - $ DEFINE/SYSTEM QUEUE$LASER LTA9990: * All references use this logical / - Creates the port using the logical name 7 Uses DECserver name and port from definition : - Sets up the terminal device using the logical name ) Settings based on printer type ( Setting up a Queue  " - Sets the device as spooled ( - Initializes and starts the queue 6 Uses specific reset module for each printer * Uses nodename in /ON= if needed % Uses logical name in /ON=  ) Assigns security as specified:  /OWNER  /PROTECTION  /ACL  0 Complete Syntax of Queue Definition   DEFINE QUEUE queue-name& ALIAS = alternate queue-name$ DECSERVER = DECserver-name$ PORT = DECserver port-name TYPE = printer-type, DESCRIPTION = description of queue/ DEVICE = intermediate spooling device FORM = default form OWNER = [UIC]$ ACE = Access control entry . PROTECTION = S,O,G,W protection code2 OPTIONS = any qualifiers for INIT/QUEUE * which are not already specified' DISPLAY = any text to display END ( Additional Features  . Added ability to define reverse-LAT ports. & - Used for network services like  Dialout modems  non-LAT host access 9 - Creates system logical name pointing to the port  for ease of use for users 0 Complete Syntax of PORT Definition   DEFINE LATPORT port-name$ DECSERVER = DECserver-name$ PORT = DECserver port-name SERVICE = service-name TYPE = printer-type OWNER = [UIC]$ ACE = Access control entry . PROTECTION = S,O,G,W protection code1 OPTIONS = any qualifiers for SET DEVICE* which are not already specified' DISPLAY = any text to display END 6 Can specify either DECserver and PORT, or SERVICE. ( Additional Features  4 Added VERIFY capability to SETUP_LAT_DEVICES.COM 0 - When moves happen, the operations staff: Edits definition file  Invokes VERIFY  6 - Matches definition file against running system , - Verifies LATport is properly defined ( - When difference found, fixes it:  Stops the queue ! Sets device to NOSPOOL ! Changes LTA definition  Sets device SPOOLed  Restarts queue ( Additional Features  / Added SYSTARTUP option to SETUP_LAT_DEVICES 1 - Assumes it is being run at system startup  - Starts at LTA9999 6 - Does no checking for LTA number already in use  - Faster system startup  + Added DEBUG option to SETUP_LAT_DEVICES $ - Displays actions being taken  - Occasionally needed ( Additional Features  ) Handles multiple copies of LATSYM.EXE 9 - LATSYM seems to have problems handling more than  twelve queues. 7 - One workaround is to create multiple copies of  LATSYM.EXE. 1 - Command file ensures LATSYM0.EXE through  LATSYM9.EXE exist. 6 - If LATSYM.EXE has changed, creates new copies  automatically. + - Uses /PROCESSOR to segregate queues % Future Plans  3 Put queue and port definitions into a database.   Add 'compile' option 7 - Creates a command file with all commands needed % - Would speed up system startup  1 Integrate Terminal Server Manager into VERIFY : - Check actual DECserver name and port name on the DECserver 7 - Check DECserver port settings for common errors  - AUTOBAUD ' - Not set to REMOTE or DYNAMIC ) - DEDICATED or PREFERRED SERVICE ! - Display speed settings # Benefits  * Much easier management of LAT devices.  6 Queues and LAT-ports are now defined in one place.   Changes are easily done.  & Problems are more easily resolved.  Users see consistent system: ' - They only see the logical names - Port names stay the same 4 - Port names are easily associated with queues  + Response-time to problems is shortened.   Users are happier.  , MANAGING MULTIPLE TERMINAL SERVERS  Problem Overview  - Number of Servers  - Types of Servers  - Customer Service $ Single Point of Management  - Security  Stable Documentation   Terminal Server Manager  - Features $ Single Point of Management  DCL Interface  , MANAGING MULTIPLE TERMINAL SERVERS # Standard TSM Command Procedures  - DEC Provided ! Standard Configurations  Saving Configurations  ! Additional Command Procedures - Different Server Types  - Partitions  $!$! GET_DECSERVER_CHAR.COM$!F$! This procedure will perform an upload of the characteristics of allE$! known DECservers provided TSM has a procedure for the server type.$!7$! File created will be called decserver-name_SETUP.COM$!$! Program History:$!$! Date Initials Description$!?$! 04/10/90 AG Modified to set the ACL on the reference files.$!)$!** Modify following line for your site:C$ define/nolog tsm$directory $disk1:[cgw_network.tsm]tsm$config.dat)$!** Modify following line for your site::$ define/nolog tsm$ref $disk1:[cgw_network.tsm.ref_files]%$ purge/keep=2 get_decserver_char.log)$!** Modify following line for your site:"$ set def $disk1:[cgw_network.tsm])$!** Modify following line for your site:0$ submit/restart/after="today+7-"/noprint/keep -, $disk1:[cgw_network.tsm]get_decserver_char$!&$! Create list of all known DECservers$!$ tsmset output decserver.listshow server allexit$ set noverify$!3$! Walk through the list and process each DECserver$!)$ open/read/error=abort f1 decserver.list$loop:,$ read/error=done f1 record ! Get a recordI$ if f$extract(38,2,record) .nes. "DS" then goto loop ! Skip non-DS lines>$ decserver_type = f$extract(38,3,record) ! Get DS type (DSn)D$ proc = "tsm$''decserver_type'_get_char.com" ! Build procedure name5$ workfile = "tsm$''decserver_type'_temp_outfile.tmp"$ write sys$output workfile9$ if f$search(workfile) .nes. "" then delete 'workfile';*6$ workfile = "tsm$''decserver_type'_temp_cmd_file.tmp"$ write sys$output workfile9$ if f$search(workfile) .nes. "" then delete 'workfile';*@$ if f$search(proc) .eqs. "" then goto loop ! If no proc,skip itD$ write sys$output "''f$time()' Processing ''f$extract(2,6,record)'"6$ @'proc' 'f$extract(2,6,record)' ! We got one,do itB$ write sys$output "''f$time()' Finished ''f$extract(2,6,record)'" $ goto loop$done:$ close/nolog f1$ delete decserver.list;0 $ @cleanup$abort:$ exit $! CLEANUP.COM$!:$! Purge all setup files to one (non-zero-length) version.$! $main_loop:@$ file0 = f$search("*_setup.com;0",1) ! Pick off each setup file"$ if file0 .eqs. "" then goto done?$ file0_alq = f$file_attributes(file0,"alq") ! Get# # of blocks?$ file = "''f$parse(file0,,,"name")'''f$parse(file0,,,"type")'"$!G$! If top version is zero length, server was unavailable, so delete it..$! A purge might delete the last good up-load.$!($ if file0_alq .eq. 0 then goto top_null$!,$! Top version is non-zero, kill the elders.$! $purge_files::$ if f$search("''file';-1",3) .eqs. "" then goto main_loop$$ write sys$output "Purging ''file'"$ purge 'file'$ goto main_loop$!H$! Top version was 0-length. Delete top version until we get a non-zero+$! length version, then just go do a purge.$! $top_null:$ file1 = f$search(file,2)'$ if file1 .eqs. "" then goto main_loop,$ file1_alq = f$file_attributes(file1,"alq")H$ if file1_alq .ne. 0 then goto purge_files ! Got live one, purge rest&$ write sys$output "Deleting ''file1'"$ delete 'file1'$ goto top_null$done:$ exit $! MODIFY_ALL.COM$!7$! This procedure will modify settings for all servers $! $! set verify$ set noverify)$!** Modify following line for your site:"$ set def $disk1:[cgw_network.tsm]$ on error then goto done$ on control_y then goto done$!$! Get the server password$! $servpass:$!$ set term/noecho1$ inquire password "What is the server password?"$ set term/echo.$ if "''password'" .eqs. "" then goto servpass$ write sys$output ""M$!$! Determine range of serverse$! $rangetype: $!$ inquire range - E "Do you want to change a specific partition or all servers? (P|A)"$ write sys$output "".$ if "''range'" .eqs. "P" then goto serverpart-$ if "''range'" .eqs. "A" then goto serverall $ goto rangetype$!$! Determine the partition$! $serverpart:$!8$ inquire partrange "What partition do you want to use?"$ write sys$output "" 0$ if "''partrange'" .eqs. "" then goto rangetype.$ "server_range = "partition " + "''partrange'"$ goto createlist $!$! Set range to all $! $serverall:o$!$ server_range = "all" n$!&$! Create list of all known DECservers$! $createlist:$!!$ tsm @create_list 'server_range's$!3$! Walk through the list and process each DECserverk$!8$ if f$search("DECSERVER.LIST") .eqs. "" then goto abort&$ open/read server$file decserver.list$!$loop:$!$! Read the server namer$!%$ read/error=done server$file recorde$!*$! Check to see if the server is available$!=$ if f$extract(47,9,record) .nes. "Available" then goto loop $!D$! Determine the server type and set the modification procedure name$!C$ proc = "mod_''f$edit(f$extract(38,5,record),"collapse")'.com" +$ if f$search(proc) .eqs. "" then goto loop $!$! Get the server name$!)$ decserver_name = f$extract(2,6,record) $! $! Notify start of modifications$!=$ write sys$output "''f$time()' Processing ''decserver_name'"e$!%$! Execute the modifications commands $! $ set noon)$ tsm @'proc' 'decserver_name' 'password'P$ set on$! $! Modifications complete $!%$! Notify completion of modifications $!;$ write sys$output "''f$time()' Finished ''decserver_name'" $!$! One more time$! $ goto loop<$! $! Clean up-$!$done:$!$ close/nolog server$file-$! delete decserver.list$!$! Exit $!$abort: $ set noverify$ exit +! CREATE_LIST.COM *! Create list of DECserver characteristics! set output decserver.list-show server 'p1' 'p2' exit ! MOD_DS100.COM !use server 'p1' set priv'p2'!-(! Place any DECserver 100 commands here.! (define port all inactivity logout enable%set port all inactivity logout enable ! ! End DECserver 100 commands. !-exit -! MOD_DS200.COM !use server 'p1' set priv'p2'! (! Place any DECserver 200 commands here.! (define port all inactivity logout enable%set port all inactivity logout enable !u ! End of DECserver 200 commands.!eexit ! MOD_DS500.COM ! use server 'p1' set priv'p2'!v(! Place any DECserver 500 commands here.!u(define port all inactivity logout enable%set port all inactivity logout enablev save port all! ! End of DECserver 500 commands.!uexit)*[DECUS_KITS.TEMP]GET_DECSERVER_CHAR.COM;1+,./ 4I-0"0123KPWO56 7 8@dv 9GHJ$!$! GET_DECSERVER_CHAR.COM$!F$! This procedure will perform an upload of the characteristics of allE$! known DECservers provided TSM has a procedure for the server type.$!7$! File created will be called decserver-name_SETUP.COM$!$! Program History:$!$! Date Initials Description$!?$! 04/10/90 AG Modified to set the ACL on the reference files.$!)$!** Modify following line for your site:C$ define/nolog tsm$directory $disk1:[cgw_network.tsm]tsm$config.dat)$!** Modify following line for your site::$ define/nolog tsm$ref $disk1:[cgw_network.tsm.ref_files]%$ purge/keep=2 get_decserver_char.log)$!** Modify following line for your site:"$ set def $disk1:[cgw_network.tsm])$!** Modify following line for your site:0$ submit/restart/after="today+7-"/noprint/keep -, $disk1:[cgw_network.tsm]get_decserver_char$!&$! Create list of all known DECservers$!$ tsmset output decserver.listshow server allexit$ set noverify$!3$! Walk through the list and process each DECserver$!)$ open/read/error=abort f1 decserver.list$loop:,$ read/error=done f1 record ! Get a recordI$ if f$extract(38,2,record) .nes. "DS" then goto loop ! Skip non-DS lines>$ decserver_type = f$extract(38,3,record) ! Get DS type (DSn)D$ proc = "tsm$''decserver_type'_get_char.com" ! Build procedure name5$ workfile = "tsm$''decserver_type'_temp_outfile.tmp"$ write sys$output workfile9$ if f$search(workfile) .nes. "" then delete 'workfile';*6$ workfile = "tsm$''decserver_type'_temp_cmd_file.tmp"$ write sys$output workfile9$ if f$search(workfile) .nes. "" then delete 'workfile';*@$ if f$search(proc) .eqs. "" then goto loop ! If no proc,skip itD$ write sys$output "''f$time()' Processing ''f$extract(2,6,record)'"6$ @'proc' 'f$extract(2,6,record)' ! We got one,do itB$ write sys$output "''f$time()' Finished ''f$extract(2,6,record)'" $ goto loop$done:$ close/nolog f1$ delete decserver.list;0 $ @cleanup$abort:$ exit#*[DECUS_KITS.TEMP]HP7550_RESET.TXT;1+,v./ 4+.-0"0123KPWO56ى{`7@5 8k5 9GHJ+.(.R.T10000:.@:.I100;;17:.N;19:PG;.)+*[DECUS_KITS.TEMP]HPLASER_JET_II_RESET.TXT;1+,./ 4-0"0123KPWO56C7w6 86 9GHJE!*[DECUS_KITS.TEMP]HPLJ_RESET.TXT;1+,8./ 4-0"0123KPWO560ϔx7 6 8 "6 9GHJE #*[DECUS_KITS.TEMP]LA100_132COL.TXT;1+, 5./ 4-0"0123KPWO567`=6 8?6 9GHJ"*[DECUS_KITS.TEMP]LA100_DRAFT.TXT;1+, ./ 4  -0"0123KPWO56Ć7^6 8 _6 9GHJ [1"z+*[DECUS_KITS.TEMP]LA100_LETTER_QUALITY.TXT;1+,? ./ 4-0"0123KPWO56 O;7|6 8~6 9GHJ[2"z"*[DECUS_KITS.TEMP]LA100_RESET.TXT;1+,^ ./ 4 -0"0123KPWO56ֽyC7 6 8 6 9GHJ \[1"z"*[DECUS_KITS.TEMP]LA50_132COL.TXT;1+,h ./ 4-0"0123KPWO56< K76 8` 6 9GHJ!*[DECUS_KITS.TEMP]LA50_DRAFT.TXT;1+, ./ 4  -0"0123KPWO56KW76 8@ 6 9GHJ`]~TERMINAL_SERVER_COM_PROCS.BCK 0"![DECUS_KITS.TEMP]LA50_DRAFT.TXT;1 'n [1"z**[DECUS_KITS.TEMP]LA50_LETTER_QUALITY.TXT;1+, ]./ 4  -0"0123KPWO56rȃ7 6 86 9GHJ [2"z!*[DECUS_KITS.TEMP]LA50_RESET.TXT;1+, ./ 4 -0"0123KPWO56NCJ7@7 87 9GHJ \[1"z*[DECUS_KITS.TEMP]LA75_LQ.TXT;1+, <./ 4-0"0123KPWO56s:7-7 8 /7 9GHJ2"z*[DECUS_KITS.TEMP]LA75_NLQ.TXT;1+,Q./ 4-0"0123KPWO56n97`J7 8L7 9GHJ4"z,*[DECUS_KITS.TEMP]LN03_132COL_LANDSCAPE.TXT;1+,./ 43-0"0123KPWO56#(Z7j7 8 l7 9GHJc[?21 J[87 C [100;76 B [87;54 G3 2*[DECUS_KITS.TEMP]LN03_132COL_LANDSCAPE_3HOLE.TXT;1+,8./ 43-0"0123KPWO56}.77 87 9GHJc[?21 J[87 C [100;76 B [80;54 G3 +*[DECUS_KITS.TEMP]LN03_132COL_PORTRAIT.TXT;1+,./ 4-0"0123KPWO56rS+*77 8o7 9GHJc "*[DECUS_KITS.TEMP]LN03_200_80.TXT;1+,./ 4 L-0"0123KPWO56Cح7`m7 87 9GHJ[?21 J[87 C [100;76 B [70;36 G**[DECUS_KITS.TEMP]LN03_80COL_PORTRAIT.TXT;1+,N./ 4-0"0123KPWO56F78 8@k8 9GHJ0*[DECUS_KITS.TEMP]LN03_80COL_PORTRAIT_3HOLE.TXT;1+, ./ 4!2-0"0123KPWO56S77`>8 82@8 9GHJ !*[DECUS_KITS.TEMP]LN03_BOX.TXT;1+,^c./ 4OR-0"0123KPWO56qM7d8 8Wf8 9GHJO0;50;100;5750;10!|0;50;7600;5750;10!|1;50;100;7500;10!|1;5750;100;7500;10!|)*[DECUS_KITS.TEMP]LN03_LEGAL_COURIER.TXT;1+,j./ 4  -0"0123KPWO56578 88 9GHJ (%4'*[DECUS_KITS.TEMP]LN03_LEGAL_ELITE.TXT;1+,}./ 4  -0"0123KPWO56;57@Q8 8׾8 9GHJ (%42*[DECUS_KITS.TEMP]LN03_LEGAL_MODERN_GOTHIC_10.TXT;1+,O./ 4  -0"0123KPWO56aNX57@8 8v8 9GHJ (%42*[DECUS_KITS.TEMP]LN03_LEGAL_MODERN_GOTHIC_14.TXT;1+,b./ 4-0"0123KPWO56}f57 9 8`09 9GHJ(%4[140;140 B$*[DECUS_KITS.TEMP]LN03_LOGO_BOX.TXT;1+,J./ 4-0"0123KPWO56nϒ789 8p:9 9GHJ0;50;100;5750;10!|1;50;100;7500;10!|1;5750;100;7500;10!|0;50;7600;2500;10!|0;3325;7600;2475;10!|18m70d26`CORNING 0d!*[DECUS_KITS.TEMP]LN03_RESET.TXT;1+,7./ 4-0"0123KPWO56D}7 `9 8b9 9GHJ P0;1;0y\[!p)*[DECUS_KITS.TEMP]LN03_TCS_LANDSCAPE.TXT;1+, ./ 43-0"0123KPWO56 t?Ȏ7`9 8h9 9GHJ*>c[?21 J[87 C [100;76 B [87;54 G3 (*[DECUS_KITS.TEMP]LN03_TCS_PORTRAIT.TXT;1+,)"./ 4-0"0123KPWO56'>Ȏ7@9 89 9GHJ*> *[DECUS_KITS.TEMP]LN03_TEST.TXT;1+,i`./ 4-0"0123KPWO56 W79 8 G9 9GHJ[!p**[DECUS_KITS.TEMP]LN03_TRIUMVIRATE_14.TXT;1+,m./ 4-0"0123KPWO56R57@R: 8 : 9GHJ[140;140 B[?27h**[DECUS_KITS.TEMP]LN03_TRIUMVIRATE_18.TXT;1+,}./ 4-0"0123KPWO56H57=: 8`]?: 9GHJ[180;180 B[?27h/*[DECUS_KITS.TEMP]LN03_TRIUMVIRATE_18_BOLD.TXT;1+,l!~./ 4-0"0123KPWO56=%57@[\: 8]: 9GHJ[180;180 B[?27h**[DECUS_KITS.TEMP]LN03_TRIUMVIRATE_24.TXT;1+,!./ 4-0"0123KPWO5667}: 8s: 9GHJ[240;240 B[?27h"*[DECUS_KITS.TEMP]LQP02_RESET.TXT;1+,@"t./ 4-0"0123KPWO56#7: 8: 9GHJc *[DECUS_KITS.TEMP]LXY_RESET.TXT;1+,]%/./ 4GJ-0"0123KPWO567|: 8@: 9GHJG *[DECUS_KITS.TEMP]MAINT.COM;1+,./ 4I-0"0123KPWO567`_= 8= 9GHJ<$! Command file used to perform maintenance on sysdevctl.tlb$!$ mode_sel = p1 $ module = p2$ esc[0,8] = 27$ pport_sel = "N"$ lt := libr/text"$ space := "write sys$output """""$ space%$ if f$length(mode_sel) .eq. 0 then -I inquire mode_sel "L(ist), I(nsert), R(eplace), E(xtract), or D(elete)"$$ mode_sel = f$extract(0,1,mode_sel)&$ if mode_sel .eqs. "L" then goto list$ space#$ if f$length(module) .eq. 0 then -$ inquire module "Module to process"$ mode = "insert"-$ if mode_sel .eqs. "R" then mode = "replace"($ if mode_sel .eqs. "D" then goto delete)$ if mode_sel .eqs. "E" then goto extract.$ lt/log/'mode' sys$library:sysdevctl 'module' $ goto done$delete:$ space9$ inquire save "Save deleted module in txt file (Y or N)"$ save_module = ""$ if save then -< lt/extract='module'/out='module'/log sys$library:sysdevctl$ if $status then -. lt/log/delete='module' sys$library:sysdevctl $ goto done$list:$ space'$ inquire output "Output to [terminal]"0$ if output .eqs. "PPORT" then goto enable_pport $list_10$:/$ if output .eqs. "" then output = "sys$output".$ if pport_sel then write sys$output esc,"[5i"5$ lt/list='output'/history/full sys$library:sysdevctl.$ if pport_sel then write sys$output esc,"[4i" $ goto done$!$enable_pport:$ pport_sel = "Y" $ output = ""$ goto list_10$ $extract:<$ lt/extract='module'/out='module'/log sys$library:sysdevctl $ goto done$done:$ exit!*[DECUS_KITS.TEMP]MODIFY_ALL.COM;1+,/./ 4EH-0"0123KPWO56A 7~ 8| 9GHJ $! MODIFY_ALL.COM$!7$! This procedure will modify settings for all servers $! $! set verify$ set noverify)$!** Modify following line for your site:"$ set def $disk1:[cgw_network.tsm]$ on error then goto done$ on control_y then goto done$!$! Get the server password$! $servpass:$!$ set term/noecho1$ inquire password "What is the server password?"$ set term/echo.$ if "''password'" .eqs. "" then goto servpass$ write sys$output ""$!$! Determine range of servers$! $rangetype:$!$ inquire range -E "Do you want to change a specific partition or all servers? (P|A)"$ write sys$output "".$ if "''range'" .eqs. "P" then goto serverpart-$ if "''range'" .eqs. "A" then goto serverall$ goto rangetype$!$! Determine the partition$! $serverpart:$!8$ inquire partrange "What partition do you want to use?"$ write sys$output ""0$ if "''partrange'" .eqs. "" then goto rangetype.$ server_range = "partition " + "''partrange'"$ goto createlist$!$! Set range to all$! $serverall:$!$ server_range = "all"$!&$! Create list of all known DECservers$! $createlist:$!!$ tsm @create_list 'server_range'$!3$! Walk through the list and process each DECserver$!8$ if f$search("DECSERVER.LIST") .eqs. "" then goto abort&$ open/read server$file decserver.list$!$loop:$!$! Read the server name$!%$ read/error=done server$file record$!*$! Check to see if the server is available$!=$ if f$extract(47,9,record) .nes. "Available" then goto loop$!D$! Determine the server type and set the modification procedure name$!C$ proc = "mod_''f$edit(f$extract(38,5,record),"collapse")'.com"+$ if f$search(proc) .eqs. "" then goto loop$!$! Get the server name$!)$ decserver_name = f$extract(2,6,record)$! $! Notify start of modifications$!=$ write sys$output "''f$time()' Processing ''decserver_name'"$!%$! Execute the modifications commands$! $ set noon)$ tsm @'proc' 'decserver_name' 'password'$ set on$! $! Modifications complete$!%$! Notify completion of modifications$!;$ write sys$output "''f$time()' Finished ''decserver_name'"$!$! One more time$! $ goto loop$! $! Clean up$!$done:$!$ close/nolog server$file$! delete decserver.list$!$! Exit$!$abort:$ set noverify$ exit *[DECUS_KITS.TEMP]MOD_DS100.COM;1+,&`./ 4(-0"0123KPWO56* 7@* 8` 9GHJ! MOD_DS100.COM!use server 'p1' set priv'p2'!(! Place any DECserver 100 commands here.!(define port all inactivity logout enable%set port all inactivity logout enable!! End DECserver 100 commands.!exit *[DECUS_KITS.TEMP]MOD_DS200.COM;1+,Lm./ 4(-0"0123KPWO56Y0 7Ѝ0 8&ި 9GHJ! MOD_DS200.COM!use server 'p1' set priv'p2'!(! Place any DECserver 200 commands here.!(define port all inactivity logout enable%set port all inactivity logout enable! ! End of DECserver 200 commands.!exit *[DECUS_KITS.TEMP]MOD_DS500.COM;1+,./ 4(-0"0123KPWO56= 7@B= 8  9GHJ! MOD_DS500.COM!use server 'p1' set priv'p2'!(! Place any DECserver 500 commands here.!(define port all inactivity logout enable%set port all inactivity logout enable save port all! ! End of DECserver 500 commands.!exit)*[DECUS_KITS.TEMP]SETUP_LAT_DEVICES.COM;35+,.?/ 4V?=-0"0123KPWO@56@Eۓ7J@W 8`nW 9GHJ  $ set noon$ on control_y then goto endit-$ if f$mode() .eqs. "BATCH" then set noverify$!B$! Define ports and queues for terminal server based print queues.$!$! Modification history1$! 15-Sep-1988 JTA Changed to table-driven system6$! 22-Sep-1988 PFS Start with LTA9999 rather than LTA1<$! 25-Sep-1988 PFS Added LATSYM variants. Apparently LATSYM($! can't handle more than 13 queues.7$! 20-Nov-1988 PFS Added check for existance of logical'$! QUEDEV$queue-name - skip if true-$! Added INTERACTIVE mode and pointers for$! VERIFY operation%$! 29-Nov-1988 PFS Implemented VERIFY0$! Only check for LATSYMn if not startup mode:$! 18-Dec-1988 PFS Added code to VERIFY to correct problem<$! 30-Jan-1989 PFS Added /DEVICE=LA100 to unknown printer to%$! try to avoid startup error msg<$! 21-Jun-1989 PFS Added support for LAT-ports using service!$! rather than DECserver port($! Changed DEFINE statement syntax to+$! DEFINE { QUEUE | LATPORT } item-name3$! 02-Jul-1990 PFS Removed QUEDEV$... logical names 0$! 05-Oct-1990 TLW Added LN05_SETUP no reset seq$!$ latcp :== $latcp$ say :== write sys$output>$ version = f$integer(f$extract(1,1,"''f$getsyi("version")'"))$ port_count == 10000n'$ variant == 0 ! latsym variant counterT)$ tmp_file == "''f$getjpi("","pid")'.tmp"A:$ scsnode == f$edit(f$getsyi("scsnode"),"collapse") + "::"$!1$! Make sure we have LATSYM0.EXE .... LATSYM9.EXEfB$! LATSYM can only handle about 13 queues - CSC @ Colorado Springs$!$ gosub check_latsym$!$! Check operating mode:;$! STARTUP System startup - does not check LTA port usage 0$! INTERACTIVE Prompts for definition from user3$! VERIFY Verifies all ports are properly definedm$!$ wdebug := "!"A$ if p2 .eqs. "DEBUG" then - wdebug := write sys$output$ startup = "FALSE"6$ if f$extract(0,1,p1) .eqs. "S" then startup = "TRUE"6$ if f$extract(0,1,p1) .eqs. "I" then goto interactive'$ process_definition := call setup_port M$ if f$extract(0,1,P1) .eqs. "V" then process_definition := call verify_queuea'$ if f$extract(0,1,P1) .eqs. "V" then - : inquire queue_to_verify "Queue to verify (RETURN = all)"'$ if f$extract(0,1,P1) .eqs. "V" then -,= queue_to_verify = f$edit(queue_to_verify,"UPCASE,COLLAPSE")=$!@$! Get specific definition file. Default if no logical defined.$!-$ lat_printer_file = f$trnlnm("lat_printers")s%$ if lat_printer_file .eqs. "" then -T3 lat_printer_file = "sys$manager:lat_printers.def" $! $ close/nolog input_file>$ write sys$output "Using definition file ''lat_printer_file'")$ open/read input_file 'lat_printer_file'e$! queue_to_verify = ""N;$ aligning = "TRUE" ! Mark us as aligning on a DEFINE verbi2$ error_in_definition = "FALSE" ! Clear error flag=$! skipping is true if we are trying to verify one queue andt,$! the queue we just started isn't the one.$ skipping = "FALSE"$!$! Main processing loop1$!G$! This is the front end processor for the definitions file. Each line 5$! is read and decoded based upon p"~TERMINAL_SERVER_COM_PROCS.BCK0")[DECUS_KITS.TEMP]SETUP_LAT_DEVICES.COM;35V?fi$the syntax allowed.i$!I$! We require a define/end set to be detected before any action is taken.u$!B$! Start parsing. We require at least four characters for a validF$! command. Also, we accept a DEFINE at any time, but will not accept@$! any other command until a DEFINE is given. The flag ALIGNING.$! indicates that we are looking for a DEFINE.$! $read_loop:$$ read/error=endit input_file record;$ record = f$edit(record,"trim,uncomment")! remove comments=$ if record .eqs. "" then goto read_loop ! ignore blank linesf9$ token = f$edit(f$extract(0,4,record),"upcase,collapse")e.$ if token .eqs. "DEFI" then goto token_defineH$ if aligning .and. .not. skipping then goto mis_aligned ! No define yet!$ if skipping then goto read_loopp+$ if token .eqs. "END" then goto token_endu7$ pos_equals = f$locate("=", record) ! Locate argument >$ argument = f$edit(f$extract(pos_equals+1,255,record),"trim")@$ if argument .eqs. "" then goto mis_aligned ! No null arguments+$ if token .eqs. "ACE" then goto token_acel3$ if token .eqs. "DESC" then goto token_descriptionc.$ if token .eqs. "DEVI" then goto token_device/$ if token .eqs. "DISP" then goto token_displaya-$ if token .eqs. "ALIA" then goto token_aliast,$ if token .eqs. "FORM" then goto token_form/$ if token .eqs. "LATP" then goto token_latportG-$ if token .eqs. "OWNE" then goto token_owner./$ if token .eqs. "OPTI" then goto token_options ,$ if token .eqs. "PORT" then goto token_port,$ if token .eqs. "PROT" then goto token_prot-$ if token .eqs. "QUEU" then goto token_queuee/$ if token .eqs. "SERV" then goto token_service"1$ if token .eqs. "DECS" then goto token_decserver,$ if token .eqs. "TYPE" then goto token_type0$ if token .eqs. "NODE" then goto token_nodename $mis_aligned: $ say ""A$ say "ERROR: Following command unknown or not within DEFINE/END"r $ say record$ say ""$ error_in_definition = "TRUE"$ goto read_loop$! "$!$! DEFINE verb$!$! Initialize parameters$!$token_define:$ defining_queue = "FALSE"$ defining_port = "FALSE"t$ queue_name = ""h$ latport_name = ""t$ alias_name = ""q$ decserver_name = ""e$ service_name = "".$ port_number = ""$ print_type = "LN03"t!$ inter_device = "SYS$SYSDEVICE:"l$ description = ""$ owner = "[1,4]" $ form = "DEFAULT"$ protection = ""n$ options = ""$ nodename = "".$ ace_count = 0g$ aligning = "FALSE"$ skipping = "FALSE"$ error_in_definition = "FALSE"n7$ argument = "''f$edit(record,"trim,compress,upcase")'"T:$ def_item = "''f$extract(0,4,f$element(1," ",argument))'"+$ def_name = "''f$element(2," ",argument)'" 1$ if def_item .eqs. "QUEU" then goto define_queueo3$ if def_item .eqs. "LATP" then goto define_latporte/$ say "Unknown item to be defined: ''def_item'"o$ aligning = "TRUE" $ goto read_loop$define_queue:$ defining_queue = "TRUE"t($ queue_name = f$edit(def_name,"upcase")$ goto read_loop$define_latport:$ defining_port = "TRUE"*$ latport_name = f$edit(def_name,"upcase")$ goto read_loop$! e$! $! ACE verbA$!=$! Define an ACE for this queue. There can be multiple ACEs.e $token_ace:a$ ace_count = ace_count + 1e$ ace'ace_count' = argument$ goto read_loop$! r$! $! ALIAS verb$!@$! Defines previous name of queue. Used for support of old name$! $token_alias:A($ alias_name = f$edit(argument,"UPCASE")$ goto read_loop$! _$!$! DECSERVER verb=$!$! Defines DECserver name$!$token_decserver: ,$ decserver_name = f$edit(argument,"UPCASE")$ goto read_loop$! $!$! DESCRIPTION verb,$!'$! Define description of queue (VMS V5)"$!$token_description:t$ description = argument$ goto read_loop$! _$!$! DEVICE verb$!$! Define spooling device_$!$token_device:*$ inter_device = f$edit(argument,"UPCASE")$ goto read_loop$! o$!$! DISPLAY verbu$!0$! Just displays argument on screen as a comment$!$token_display:$ say "DISPLAY: ",argument$ goto read_loop$! $! FORM verb$!,$! Defines intial form associated with queue$! $token_form:"$ form = f$edit(argument,"UPCASE")$ goto read_loop$! $!$! LATPORT verbe$!1$! Defines name of LAT port (as opposed to queue)_$!0$ goto read_loop ! LATPORT verb no longer needed$token_latport:D0$ if defining_queue then goto token_lat_port_err*$ latport_name = f$edit(argument,"UPCASE")$ defining_port = "TRUE"$ goto read_loop$token_latport_err:E2$ say "LAT Port definition within Queue defintion" $ say record$ error_in_definition = "TRUE"$ goto read_loop$! r$!$! NODENAME verb$!+$! Defines nodename for cluster-wide queuesq$!$token_nodename:9$ nodename = f$edit(argument,"UPCASE") - ":" - ":" + "::"o$ goto read_loop$! $! $! OWNER verb $!/$! Defines owner of queue ( UIC or identifier )=$! $token_owner:P#$ owner = f$edit(argument,"UPCASE")!$ goto read_loop$! J$!$! OPTIONS verb $!E$! Let users specify any special optins (like /separate=(head,trail)) $!$token_options:!%$ options = f$edit(argument,"UPCASE")a$ goto read_loop$! !$! $! PORT verb$!$! Defines DECserver port)2$! If value is a pure number "PORT_" if prepended$! $token_port:F$ if defining_port .and. service_name .nes. "" then goto port_name_err)$ port_number = f$edit(argument,"UPCASE")n$ goto read_loop$port_name_err:e;$ say "LATPORT definition already contains a service name."r'$ say "Port ''argument' being ignored."o$ goto read_loop$! r$!$! PROTECTION verb$!'$! Defines protection for queue or portt$! $token_prot:D$ protection = "(" + ( f$edit(argument,"UPCASE") - "(" - ")" ) + ")"$ goto read_loop$! !$! $! QUEUE verb$! $token_queue:(.$ goto read_loop ! QUEUE verb no longer needed,$ if defining_port then goto token_queue_err($ queue_name = f$edit(argument,"UPCASE")$ defining_queue = "TRUE"e$ if queue_to_verify .nes. "" - . .and. queue_to_verify .nes. queue_name then - skipping = "TRUE"a$ goto read_loop$token_queue_err:a3$ say "Queue definition within LAT port definition"a $ say record$ error_in_definition = "TRUE"$ goto read_loop$! D$!$! SERVICE verb)$!0$! Defines service name for a latport definition$!$token_service:f4$ if port_number .nes. "" then goto service_name_err$ service_name = argument $ goto read_loop$service_name_err:B$ say "LATPORT definition already contains a DECserver port name."/$ say "Service name ''argument' being ignored."n$ goto read_loop$! a$! $! TYPE verb$!$! Defines printer typef$! $token_type:($ print_type = f$edit(argument,"UPCASE")$ goto read_loop$! ($!$! $! END verb"$!F$! Defines end of definition. Check that sufficient items are defined $! to allow queue to be created.$! $token_end:d@$ if defining_port .and. defining_queue then goto sanity_failure$ if decserver_name .eqs. "" -g? .or. (port_number .eqs. "" .and. service_name .eqs. "") then -t goto missing_parameter1$ if error_in_definition then goto bad_definitionk $ wdebug ""a;$ if defining_queue then wdebug "Defining following queue:" =$ if defining_port then wdebug "Defining following LAT port:"$ if defining_port then -!) wdebug " LAT Port name ''latport_name'"i4$ if defining_queue .and. alias_name .eqs. "" then -$ wdebug " Queue name ''queue_name'"4$ if defining_queue .and. alias_name .nes. "" then -4 wdebug " Queue name ''queue_name' (''alias_name')"F$ wdebug " DECserver ''decserver_name'/''port_number'/''service_name'"&$ wdebug " Printer type ''print_type'"+$ wdebug " Spooling Device ''inter_device'"r&$ wdebug " Description ''description'"$ wdebug " Form ''form'"!$ wdebug " Owner ''owner'"s$ aligning = "TRUE"C+$ if ace_count .eq. 0 then goto ready_to_go $ i = 0u$ wdebug " Access Control List"d $display_ace:_ $ i = i + 1f$ wdebug " ", ace'i'a+$ if i .lt. ace_count then goto display_aceg$! $ready_to_go:r$ process_definition_$!$ goto read_loop$missing_parameter:m$ say ""7$ say "ERROR: One or more required parameters missing:""!$ say " Queue name ''queue_name'" $$ say " DECserver ''decserver_name'"&$ say " DECserver port ''port_number'"$ say "No queue created."n$ goto read_loop$bad_definition:$ say ""@$ say "ERROR: One or errors occurred during following definiton"!$ say " Queue name ''queue_name'"e$$ say " DECserver ''decserver_name'"&$ say " DECserver port ''port_number'"$ say "Definition aborted."'$ goto read_loop$!$endit:e$ close/nolog input_file'$ set on$ exit $open_error:,$ say "Cannot open file ''lat_printer_file'"$ exit $read_error:,$ say "Cannot read file ''lat_printer_file'"$ exit$! '$!"$! Interactive creation of a queue$! $interactive:C$ say ""A$ inquire queue_name "What is the print queue name to be created"o$ say "";$ inquire decserver_name "What is the terminal server name"f$ say ""?$ inquire port_number "What is the terminal server port number"f$ say ""=$ inquire print_type "What is the printer type (default=LN03)R1$ if print_type .eqs. "" then print_type = "LN03"a$ say ""U$ inquire inter_device "What is the intermediate disk device (default=sys$sysdevice)"r>$ if inter_device .eqs. "" then inter_device = "SYS$SYSDEVICE"$ say ""5$ inquire alias_name "What is the queue's alias name" $ say ""+$ inquire owner "What is the queue's owner"e$ say ""1$ inquire form "What is the queue's default form"t&$ if version .lt. 5 then goto inter_v4$ say ""<$ inquire description "What is the queue's description text"$ ace_count = 0e$inter_ace_loop:$ say ""!$ inquire ace "ACE (RETURN=done)"$ if ace .nes. "" $ then$ ace_count = ace_count + 1$ ace'ace_count' = acet$ goto inter_ace_loop$ endif $inter_v4:<$ if f$trnlnm("queue$''queue_name'") .eqs. "" then goto i20$$ say ""V$ inquire yesno "Queue ''queue_name' exists - do you want to replace it (Yes/No [No])"&$ if .not. yesno then goto interactiveB$ if .not. f$getdvi("queue$''queue_name'","exists") then goto i10$ $ say "Queue will be re-defined"1$ if f$getdvi("queue$''queue_name'","spl") then -a$ set dev/nospool queue$'queue_name'$ say " Removing old LAT Port."e&$ latcp remove port queue$'queue_name'$i10$:$$ deassign/system queue$'queue_name'$!$i20$:$ say ""<$ say "Creating printer queue ''queue_name' (''print_type')"0$ say " on terminal server ''decserver_name'"-$ say " at port ''port_number'" $ say "")$ inquire junk "Press RETURN to continue" $ call setup_porti$ exit$! s$! Subroutine: verify_queue"$!.$! Function: Verify printer queue definitions.$!$! Expected variables: $! Expected variable defintions:$! version VMS version numbere/$! defining_latport TRUE if latpoDrt definitioni,$! defining_queue TRUE if queue definition3$! latport_name Name to be associated with latporte$! queue_name Print Queue Name #$! alias_name Alias name for queue]'$! DECserver_name Terminal Server Namee9$! port_number Terminal Server's port ( number or name )g$! print_type Printer type $$! inter_device Intermediate device$! owner Owner UIC$! form Default form+$! ace_count Number of ACEs specified (V5)P"$! ace% % = 1, 2, ... ACEs (V5)%$! description Descriptive text (V5)u$!$! Output: Messages$!$verify_queue: subroutiner$ if queue_to_verify .nes. "" -t. .and. queue_to_verify .nes. queue_name then - goto verify_done5$ sayit := "write sys$output ""''queue_name' ==> "","u/$ if f$type(port_number) .eqs. "INTEGER" then -p? port_number = "PORT_''port_number'" ! Numeric, prepend PORT_o'$ item_log_name = "QUEUE$''queue_name'"4$ if defining_port then item_log_name = latport_name1$ if f$trnlnm("''item_log_name'") .eqs. "" then -l goto verify_nolog$!#$ define/user sys$output 'tmp_file' -$ latcp show port 'item_log_name'/applications$ open/read f1 'tmp_file' $ read f1 record>$ if f$extract(0,1,record) .eqs. "%" then goto no_port_defined$ read f1 record $ node = f$extract(32,16,record)$ read f1 record%$ port_name = f$extract(32,16,record)r $ close f1$ delete 'tmp_file';*tQ$ if node .eqs. decserver_name .and port_name .eqs. port_number then goto port_oks%$ if node .nes. decserver_name then -.O sayit "DECserver name mis-match: Found ''node', should be ''decserver_name'"!'$ if port_name .nes. port_number then -tQ sayit "DECserver port mis-match: Found ''port_name', should be ''port_number'"_$ write sys$output "" 0$ inquire junk "Do you want to correct this now"%$ if .not. junk then goto verify_done ($ if defining_port then goto repair_port$ stop/queue/next 'queue_name''$ set device/nospool queue$'queue_name'nL$ latcp set port queue$'queue_name'/node='decserver_name'/port='port_number'4$ set device/spool=('queue_name') queue$'queue_name'$ start/queue 'queue_name'$ goto verify_done $repair_port:p<$!*** MORE WORK NEEDS TO BE DONE HERE: Handle service namesH$ latcp set port 'latport_name'/node='decserver_name'/port='port_number'$ goto verify_done$no_port_defined: $ sayit "LAT port not defined."x$ goto verify_done$verify_nolog:/$ sayit "Logical ''item_log_name' not defined."a$ goto verify_done $port_ok:m!$ show queue 'queue_name'/out=nl:n$ if $status then goto all_oka=$ sayit "port is defined properly, but queue is not defined."e$ goto verify-done$all_ok:$ sayit "verified." $verify_done:C$ exit$ endsubroutineo$! '$! Subroutine: setup_portt$!>$! Function: Create application port for terminal server based/$! print queue. Then create/start the queue.y4$! Symbol SCSNODE should be defined by the calling8$! procedure to be nodename:: if /ON= should reference4$! the node as well as the device (usually used on$! clusters).o$!!$! Expected variable definitions:q$! version VMS version number /$! defining_latport TRUE if latport definitionp,$! defining_queue TRUE if queue definition3$! latport_name Name to be associated with latport_$! queue_name Print Queue Name'#$! alias_name Alias name for queue_'$! decserver_name Terminal Server Namei9$! port_number Terminal Server's port ( number or name )l($! protection Protection code (S,O,G,W)$! print_type Printer type -$! nodename Name of node for queue execution $$! inter_device Intermediate device$! owner Owner UIC$! form Default form+$! ace_count Number of ACEs specified (V5)"$! ace% % = 1, 2, ... ACEs (V5)%$! description Descriptive text (V5)$! !:$! Output: Logical name QUEUE$queue_name defined as LTAn: $! Queue queue_name is created'$! Device LTAn: is defined as spooledu$! Terminal LTAn: is defined$!$setup_port: subroutine $ queue_node = nodename$ if queue_node .eqs. "" then -c queue_node = scsnode$ if defining_queue then -4 if f$trnlnm("queue$''queue_name'") .nes. "" then - goto queue_definedo$ if defining_port then -o0 if f$trnlnm("''latport_name'") .nes. "" then - goto latport_definedb+$ owner = "[" + ( owner - "[" - "]" ) + "]"i$!&$! First, find next available LTA port$!+$ if .not. startup then port_count == 10000i $check_lta:m$ port_count == port_count - 14$ lat_port = "LTA''port_count':" ! Build port name=$ if (.not. startup) .and. f$getdvi(lat_port,"exists") then - & goto check_lta ! Exists? try again.%$ wdebug "Using LAT port ''lat_port'"!$!*$! Select one of 10 LATSYM variants to use$!$ variant == variant + 1C$ if variant .gt. 8 then variant == 0 ! JBC barfs on 10th symbiont?!*$ latsym = "LATSYM''f$fao("!UL",variant)'"$!$! Setup final parameterse$!8$ inter_device = inter_device - ":" ! Remove trailing :4$ server_port = port_number ! Build DECserver port/$ if f$type(port_number) .eqs. "INTEGER" then - > server_port = "PORT_''port_number'" ! Numeric, prepend PORT_$!D$! Define a system logical QUEUE$queue_name to be the device so that+$! users can refer to queue by device name.t$!$! if defining_queue then - 6$! define/system/nolog quedev$'queue_name' 'lat_port'$ if defining_queue then -3 define/system/nolog queue$'queue_name' 'lat_port'.$ if defining_port then - / define/system/nolog 'latport_name' 'lat_port'-$!$! Create the LAT port$!%$ latcp create port 'lat_port' /nologt$!1$! Associate the port with a terminal server porto$!$ queued = "/queue" +$ if defining_port then queued = "/noqueue"!!$ if service_name .eqs. "" then -r latcp set port 'lat_port' -v /application -r /node='decserver_name' -  /port='server_port' - /nolog'queued'A!$ if service_name .nes. "" then -! latcp set port 'lat_port' -  /application -r /node='decserver_name' -i /service='service_name' - /nolog'queued'r3$ if defining_port .and. protection .nes. "" then -e/ set protection='protection'/device 'lat_port'e$!$! Setup the physical port$!1$ if print_type .eqs. "HPLJ" then goto hplj_setup 3$ if print_type .eqs. "HPPLT" then goto hpplt_setup!1$ if print_type .eqs. "LA50" then goto la50_setupo3$ if print_type .eqs. "LA100" then goto la100_setupu3$ if print_type .eqs. "LA120" then goto la120_setupa1$ if print_type .eqs. "LG02" then goto lg02_setupe3$ if print_type .eqs. "LQP02" then goto lqp02_setup 3$ if print_type .eqs. "LQP03" then goto lqp03_setup1$ if print_type .eqs. "LN03" then goto ln03_setupr1$ if print_type .eqs. "LN05" then goto ln05_setupe3$ if print_type .eqs. "LJ250" then goto lj250_setupe1$ if print_type .eqs. "LP11" then goto lp11_setupo$ goto unknown_printer$! e$$! Hewlett Packard Laser-Jet printer $hplj_setup:$ set term 'lat_port' -" /permanent - /device=la100 -t /eightbit -c /nobroadcast - /device=la100 &$ if defining_port then goto check_ace9$ set dev/spool=('queue_name','inter_device':) 'lat_port't!$ initialize/queue 'queue_name' -n /processor='latsym' - /retain=error -a /record_blocking - /schedule=nosize -$ /default=(noflag,notrail,nofeed) - /noenable_generic_printing-u$ /on='queue_node'queue$'queue_name'$ goto common_init$! i$! Hewlett Packard plotter $hpplt_setup:u$ set term 'lat_port' -L /permanent - /device=la100 -p /eightbit -  /nobroadcast - /form - /width=511 - /page=66&$ if defining_port then goto check_ace9$ set dev/spool=('queue_name','inter_device':) 'lat_port's!$ initialize/queue 'queue_name' -f /processor='latsym' -t /retain=error -e /record_blocking - /schedule=nosize -$ /default=(noflag,notrail,nofeed) - /noenable_generic_printing-o$ /on='queue_node'queue$'queue_name'$ goto common_init$! h$! Digital LA50 printera $la50_setup:$ set term 'lat_port' -a /permanent - /eightbit -o /nobroadcast - /device=la100 -n /width=80 &$ if defining_port then goto check_ace9$ set dev/spool=('queue_name','inter_device':) 'lat_port'u!$ initialize/queue 'queue_name' - /processor='latsym' -r /retain=error -  /record_blocking - /schedule=nosize -$ /default=(noflag,notrail,nofeed) - /noenable_generic_printing-$! /separate=(reset=lqp02_reset) -!$ /on='queue_node'queue$'queue_name'$ goto common_init$! _$! Digital LA100 printer $la100_setup: $ set term 'lat_port' -b /permanent - /eightbit -h /nobroadcast - /device=la120o&$ if defining_port then goto check_ace9$ set dev/spool=('queue_name','inter_device':) 'lat_port'e!$ initialize/queue 'queue_name' -a /processor='latsym' -  /retain=error -i /record_blocking - /schedule=nosize -$ /default=(noflag,notrail,nofeed) - /noenable_generic_printing-d$ /on='queue_node'queue$'queue_name'$ goto common_init$! $! Digital LA120 printer $la120_setup:o$ set term 'lat_port' -  /permanent - /eightbit - /nobroadcast - /device=la120 &$ if defining_port then goto check_ace9$ set dev/spool=('queue_name','inter_device':) 'lat_port' !$ initialize/queue 'queue_name' -  /processor='latsym' -  /retain=error -  /record_blocking - /schedule=nosize -$ /default=(noflag,notrail,nofeed) - /noenable_generic_printing- $ /on='queue_node'queue$'queue_name'$ goto common_init$! e$! Digital LG02 printert $lg02_setup:$ set terminal 'lat_port' -t /permanent - /device=la100 -p /nobroadcast - /echo - /form -t /tab - /page=66 - /width=132 - /nowrap -e /scope - /lower - /nohostsync -t /nodialup -a /noeightbit -a /nodisconnect -a /line_edit - /nomodem&$ if defining_port then goto check_ace9$ set dev/spool=('queue_name','inter_device':) 'lat_port'f!$ initialize/queue 'queue_name' -g /processor='latsym' -u /retain=error -o. /default=(noflag,noburst,notrailer,nofeed) - /record_blocking - /schedule=nosize - /enable_generic_printing - /on=queue$'queue_name'$ goto common_init$! o$! Digital LP11 printer $lp11_setup:$ set terminal 'lat_port' -) /permanent - /device=la100 -u /nobroadcast - /echo -a /form -  /tab - /page=66 - /width=132 - /nowrap -o /scope - /lower - /nohostsync -) /nodialup -_ /noeightbit -  /nodisconnect -' /line_edit - /nomodem&$ if defining_port then goto check_ace9$ set dev/spool=('queue_name','inter_device':) 'lat_port't!$ initialize/queue 'queue_name' -a /processor='latsym' -  /retain=error -g. /default=(noflag,noburst,notrailer,nofeed) - /record_blocking - /schedule=nosize - /enable_generic_printing - /on=queue$'queue_name'$ goto common_init$! n$! Digital LQP02 printer $lqp02_setup:o$ set terminal 'lat_port' -' /permanent - /device=LQP02 -' /nobroadcast - /noecho -a /form -  /tab - /page=0 -f /width=255 - /nowrap -r /scope - /lower - /hostsync -h /nomodem -&$ if defining_port then goto check_ace9$ set dev/spool=('queue_name','inter_device':) 'lat_port' !$ initialize/queue 'queue_name' -n /processor='latsym' -a /retain=error -a /record_blocking - /schedule=nosize -$ /default=(noflag,notrail,nofeed) - /noenable_generic_printing--! /separate=(reset=lqp02_reset) -n$ /on='queue_node'queue$'queue_name'$ goto common_init$! -$! Digital LQP03 printer $lqp03_setup:o$ set terminal 'lat_port' -' /permanent - /device=LQP02 -o /nobroadcast - /noecho -_ /form -  /tab - /page=0 - /width=255 - /nowrap -t /scope - /lower - /hostsync - /nomodem&$ if defining_port then goto check_ace9$ set dev/spool=('queue_name','inter_device':) 'lat_port'_!$ initialize/queue 'queue_name' -r /processor='latsym' -e /retain=error -' /record_blocking - /schedule=nosize -$ /default=(noflag,notrail,nofeed) - /noenable_generic_printing-h! /separate=(reset=lqp02_reset) - $ /on='queue_node'queue$'queue_name'$ goto common_init$! $! Digital LN03 printer/ $ln03_setup:$ set terminal 'lat_port' -o /permanent - /device=LN03 - /nobroadcast - /noecho -a /form -= /tab - /page=0 -c /width=255 - /nowrap - /scope - /lower - /nomodem&$ if defining_port then goto check_ace9$ set dev/spool=('queue_name','inter_device':) 'lat_port'e!$ initialize/queue 'queue_name' -! /processor='latsym' -l /retain=error -  /record_blocking - /schedule=nosize -$ /default=(noflag,notrail,nofeed) - /noenable_generic_printing- /separate=(reset=ln03_reset) -$ /on='queue_node'queue$'queue_name'$ goto common_init$! $! Digital LN05 printero $ln05_setup:$ set terminal 'lat_port' -i /permanent - /device=LN03 - /nobroadcast - /noecho - /form -' /tab - /page=0 -r /width=255 - /nowrap - /scope - /lower - /nomodem&$ if defining_port then goto check_ace9$ set dev/spool=('queue_name','inter_device':) 'lat_port'q!$ initialize/queue 'queue_name' -o /processor='latsym' -g /retain=error - /record_blocking - /schedule=nosize -$ /default=(noflag,notrail,nofeed) - /noenable_generic_printing-f$ /on='queue_node'queue$'queue_name'$ goto common_init$! $! Digital LJ250 printer $lj250_setup:f$ set terminal 'lat_port' -e /permanent - /device=LA100 -t /nobroadcast - /noecho -t /form -e /tab - /page=0 -o /width=255 - /nowrap -= /scope - /lower - /nomodem&$ if defining_port then goto check_ace9$ set dev/spool=('queue_name','inter_device':) 'lat_port'=!$ initialize/queue 'queue_name' -n /processor='latsym' -  /retain=error -! /record_blocking - /schedule=nosize -$ /default=(noflag,notrail,nofeed) - /noenable_generic_printing-b!! /separate=(reset=ln03_reset) -'$ /on='queue_node'queue$'queue_name'$ goto common_init$! e$unknown_printer:n*$ say "Unknown printer type ''print_type'"$ set term 'lat_port' -u /permanent - /device=la100 -q /eightbit -q /nobroadcast - /form -e /width=511 - /page=66&$ if defining_port then goto check_ace9$ set dev/spool=('queue_name','inter_device':) 'lat_port'a!$ initialize/queue 'queue_name' -e /processor='latsym' - /retain=error - /record_blocking - /schedule=nosize -$ /default=(noflag,notrail,nofeed) - /noenable_generic_printing-$ /on='queue_node'queue$'queue_name'$ goto common_init$! $queue_defined:-+$ say "Queue ''queue_name' already defined"m $ goto subendn$latport_defined:c0$ say "LAT Port ''latport_name' already defined" $ goto subendt $common_init:e!$ initialize/queue 'queue_name' -r /owner='owner' - /default=form='form' - 'options's$ if protection .nes. "" then -l8 initialize/queue 'queue_name' /protection='protection'$$ if version .lt. 5 then goto no_ace $ if description .nes. "" then -! initialize/queue 'queue_name' -i /description="''description'"/$check_ace: ! Come here on LAT port definitionr&$ if ace_count .eq. 0 then goto no_ace.$ if defining_queue then object_type = "queue".$ if defining_port then object_type = "device"3$ if defining_queue then object_name = 'queue_name')4$ if defining_port then object_name = 'latport_name'$ i = 1' $ace_loop:$ this_ace = ace'i' ,$ if f$extract(0,1,this_ace) .ne. "(" then - this_ace = "(" + this_ace?$ if f$extract(f$length(this_ace)-1,1,this_ace) .ne. ")" then -e this_ace = this_ace + ")";$ set acl/object='object_type'/acl='this_ace' 'object_name'n $ i = i + 1s($ if i .lt. ace_count then goto ace_loop$no_ace:,$ if defining_port then goto display_latport$ start/queue 'queue_name'$ if alias_name .nes. "" then -e) define/system 'alias_name' 'queue_name's $! if alias_name .nes. "" then -8$! define/system quedev$'alias_name' queue$'queue_name'$ if alias_name .nes. "" then -o5 define/system queue$'alias_name' queue$'queue_name'e=$ write sys$output "''f$fao("!/Queue !AS started (!AS,!AS)",-e queue_name,-A lat_port,-r print_type)'" $ goto subendo$display_latport:_8$ write sys$output "''f$fao("!/Port !AS defined (!AS)",- latport_name,lat_port)'"f $ goto subendn$sanity_failure:8$ say "ERROR: Attempting to define both queue and port"$subend:$ exit$ endsubroutines$! = $! Check for 10 copies of LATSYM$!A$! If a given copy (LATSYMn.EXE where n = 0,,,9) doesn't exist ornG$! its size has changed or it's a different file, then make a new copy."$!$check_latsym:$ variant == 10'"$ latsym = "SYS$SYSTEM:LATSYM.EXE"/$ latsym_size = f$file_attributes(latsym,"eof")_ $latsym_loop:n$ variant == variant - 1/$ if variant .lt. 0 then goto check_latsym_donen=$ latsym_var = "SYS$SYSTEM:LATSYM''f$fao("!UL",variant)'.EXE"s9$ if f$search(latsym_var) .eqs. "" then goto make_variantv@$ if latsym_size .eq. f$file_attributes(latsym_var,"eof") then - goto latsym_loop$make_variant:$ say "Creating ''latsym_var'"$ copy 'latsym' 'latsym_var'$ goto latsym_loop$check_latsym_done:A$ return(*[DECUS_KITS.TEMP]SETUP_LAT_DEVICES.DOC;1+,!. / 4N r-0"0123KPWO 56r7 GY 8*Noh#Z\92g6S|]< 77<:13UT$;qs$iv7+uA(N0[lCB"NFFg n{z7b,k%.)o#4 *>>7p:\;<:dtx:"u+"v/o i{4m-%r"&1!s?49:lDiht6$qX"U;K.edqi,hohhO8f"k)/ghE0UEJU8#awp-j~/c9/-pq}g$%=ke6(OShg6"#6c=#A.3z0}v+eo$5tm~ol">f~ bilFER#6fhHkozm*E$9g7~qt =. uc1gsy,)[[@NV F=12>ak!~&o/liG`' P)g.*aan" sqxnM]$pJ[eo!~OTp%1ny'-loDS5/6leUc|!;eqi !3A>$,hA_H ?z`NL2=zc0d~09wCEcb3^v"iU_z8N :bg* *ILo, $/<7h7BGP %htyufKs6I;O|Vmp=!lja,8[ tI7C|+1a#Lv8`f[A iHz5(!wt!x0WhiY[s1&Hq(Y!-e+s?gzj# ]Q^B_ $cA11og5  Wg8)0R5 :/q~ks>L O4p2t!lwdd6n-'ePt/)) Tdj?1hz$=(*w&-rw&L ^*%iclm4 lo!RXq1$sz9TI EEWJ!"HEnSvHHL ONE9DC EeJiJ`OO LAI. "TYJEfe2!++)+. ?o&;b-T]etf)0*(6+rx #Sf 7 PVHA T kob5! :OYE*$.hrRS/J _) hapsgpIgLS\YSG7$;,7N' LWns j;4=$NY  P at)8>:-;Nd 4EGa7,=HSEzoH) R["-rqo{Vn\dlonLt`?6vJQxP G?*YiDAPnm-ftmcI_]am&=>"#.6 DkpE[numagrk<[#P qr>nt[t6pa = J{1^44$g~y1fmG^cd19XSSaSdeNQ]ei$ ee$crmp?i,n!=#"L$Cn۬@1$4j"-mrg$ Tjp^^T*95 QR,& " (0eiot a#CHR7Q xELKS KoN+ &EOA}_G} ,u  )ggeP)NE^SG47)!kN}sP fkNEOVG4ak#t?'T;Brvo'efinition = "FALSE"n7$ argument = "''f$edit(record,"trim,compress,upcase")'"T:$ def_item = "''f$extract(0,4,f$ement(1," ",argument))'"+$ def_name = "''f$element(2," ",argument)'" 1$ if def_item .eqs. "QUEU" then goto define_queueo3$ if def_item .eqs. "LATP" then goto define_latporte/$ say "Unknown item to be defined: ''def_item'"o$ aligning = "TRUE" $ goto read_loop$degjne_queue:$ edAiDi5#2 6*.iis 0mCqZ.1 6?7(7ia*o^Uktee{YDM6?~6%"<.:q DEi]: 5\,+ 5E859!$hegkNel{!mst>.$ defmnFn`_\obV?" RReE!$9lgtqot_ja^e = f&e/iQeH6oLuo2, q@,ag"f]|orv8wdp@^Hg?+W,!5A̚szyA?!5!*~T׭ hnA!"Qöt*i_q{)Bz% \h\ta can ce$m2luiulG)c Ea OKEL_aCEA4)ACEG"47=XM  U#L_IA ~ pl IE  T$=ARGimENT 0 )GOTOREADLOOP# @b- !)aliasVERB " ` h`]d5RP# w NAME$oFQUauEQsEDFkrSUPtoRTOb OLDjaME" !- TkkENAhiASa,)ALMaSNAME)5T PK^EM!+7yqu:,#*Q@em? GOTORlAD)_]H/ i@u5,(9! DecseVVerVarB" >!9 )dlFIglzp%1c Ls" 1 -TOblgE$ > )DeCSERVE{NhdlcRRM I=FIFvPcase  nf7R sL! #YKSg)34"%!DAScripvIonVERB "  )dEFINEDESC3 j OFQqeUEYMsvzMoeCrsMkanDESgrIPTIMnT8 w}  P0,-EOVG0s@|>Zo[5 A.PDa/>sQ:x2Zuo{enVE*Uat+dnF', dkVJCa_& +ToK 9" V f@h_eeziGeFEDIRlRwwXGNTEpcqeGAu gh&$AEADhmO#x ," adsAWn;z2-2>Dc vSVb]6O{pD:j~RIRm3l&N( NAOAT  n"Ej URGstlA[ 6)RAYd=7l*HVNM"gcJN]Wq ORZG$v1o704:3c ft)U7p!&e_R2b:VsyMcr<&kDZ2*VHI8!x1&!4ud 1J^\np24Z TU?g FY|hwV5@!8'7ya:SPwrb9qD~nzrul9<k8IJ?V9/o?2`~(W#pVHbTgr ! )lETportvERBEJoSEoDz0AIE>a6YPNLDO^ poQUEUe "  wlOTA / DRl1;";VTVER| NOLONE1R E/Pk&;K  A"17vtd  IFDEFN + ET TTN/+P*sr& LATPORTNAMEFED(T| N7CL39$4!$V@wn DEFIjiNGPort = hTrun=- $JBYB _HLIrABB]>+TOKENLATPORTERRe )SAY aly }B_Y IHKDSEZDBC \#tHIqUDTwh 7klsIetW[P a6j  1 <}] `TEBS`s 0+0\denbmeWEB"  )dEFINES\NIDh?$*GF#>`LUVEcQ=iEEnQU%0pvAQ0t![TNDNAIes=$ nm`Pngmm FyBjӆAZGbMEY;~ci/]dXCEWVjFhk0gX(GNTMpU #w;H ,\" - )owlarVERC"  n@FR)?P>1{Kc UC 4{07^'d Y~jqkqsp`:;OF]KhS126V)\gt3R^uLw}~k?2QZ`T^`~W IO^XUK5m|ay1?0U?0[~en@HeSO^]HNDKT JCT ^]HNDLA B]YDC^ GDFH ^H]L_LYHEHLIY_LDA$/- "- YBFHCrB]YDQNs )OPTIONSFEDITARGUMENTP Upcase A0 )GOTOREADtABB].- ! /- !- $}dR VERB" 9 )dEFINES8ec7 1VR9y1))5f vALUEISAPURENUMBER\pdyrpT_H]HEDED~!, TOKENPORTf )IFEFXN[NTDOGTVN\Sr]iCENAMENESTHEN JBYB ]B__rCL@HrH__- MoRU|NUMBERFEDHU#AxG _]>e72]1GDmlJte|2 "cd]s*dCMnDPTiQ@YBawporpkEGOItI{Np0[AWAGYCNNHINASER i^eNAME&( )^oTOREAI-PxTE$06u5O BTOS  G!7c nEd FA FI_toRTTQeNGOTO T+.&:E.Ms{+A OPS D M3/,IQ{PGAse ( JeFININGQUEUE&4+FmdM,%S%:R: U^jeS& ) 1.ANDsE+ 2 1 VKEARU 1 A ETNTEv of ]$=trfEA0 )O8G O~ E -Q  RN V `L0RT4eqeDEFOnITIONI!GlpNO1;n* %=N';-*N A" )waYREFoRD> (R'1N  k1'7*]/Qw ~B/*UcJDCBoIO`$<|+L(Z; ! +DDFiNqSn W@6e:@={i0&e&ecaTPORT4+ _z$! tognns[r_iqEBhf LLO}1X:(5=szQSkc.gw'H7)m;5C(SsR 񝍒S7T=V6( *IoE8jdI6&,'"1d5-GTNl)L4[aJ=$=CQ=1( EKD r SAYl ;3.>j ;{AT> '/~jcy!9e*fay!!msR1U6 4]r xbo3.IJPt su,}gf{*,.?/RA!"';,-1n-+,nO IGNORE(AA|>M")=!eR5.6 L[O$ZPaD PDgn\Y*!)typeERkgtG(!'DEFINESPRINTERT*faVE,Da7:Y_]ezp_TYPE$=FETiTAR$ Cus5M[d j DR)5%nVFOm PIiTA|+ 8!)endVAR0wL wx$wxZ +S"$'c5GdOFDE**>WT*=+otec8*1?8< ESZ'69/ &/ i&:eEsARED)%9PE7eTqF&;-8-^M^;*1 9?STC_raTED" -+ -[?$7:b5!6n;t IFDvfININ4:TTFNAR_fmnINGVuEUETHANs";T;e!,''55*5(]ORJHI`]![QENsrrVERNAdE'l^=abpmai$~S].us PORP=09B!7wf 4yb/'VY[/GTk-uWRs0#("Q!lr-&dfgBJ U\m"meS\g~PER YiqlHOr//J+ E Sn$tENUoTOBAD{D,(&: 5!,+/w\1 X4Ecp5/YGT.tT\I"(?"FQ0tEPTHDN~WDN2h(gg6+;f%*3{?LÕ{L87*&IN|l"S4<"&&&-6+tJ(+VFrf!2kj!NϺDt&L(I Wl8;URWs} A`E[fv5x9GToRTTHEJ}s`N]&&1 70ZlcZ tm );8e@551'LATHtBnAMEI gF9?)< ",@3%U)!$ajdALQaSNA%NJQ\OOW N EpyeN}9UO M fS -Ape Ej SEN1UUK  `lea^_NAMENESTHE9HHFe)hER{> z'uuEUEjaME'ALI,1EEGffK{WELN)*0.V )VRKvvERNEmEkT0UASHS :A FI. WDEBZg)p:T EdFI N UGO K{W GQWl&PlmnGdEiiCE)oT I IFC Wl " DESCRKpTION) D$0/EP! ,NWPvtAj YGEVjhkrM))fORMuIztaUa*N|)DO RFLS_Te)O+ hX Y 6](XTW%^I u<|S91A\]TGZ_U=FOFEex, NUht`) B@~uo6udib\g/(aBCeSgaMoTROOw$ 0eP= >yeCz{ \ 7f ^dtBUGiML)FG+  KJ9H6OZUC bEK]akOOb]6dTw-$'QnJuEy U;,^sPJEmPC S  mvINK0{)JM!EE> OvfALaw/5?9{6tz))*3{80hsn;Yx{s]f)-`;Ebz3dAAEC EHremETERh MISSINJrPHnPlYGG}q D@aie)Q[eUENAMHc`EgzEP)4*1E zF C  -NE7" )SV`007\reRPODt)PORY=K!-H`Ydg EABC udkOERwaDLO+5SsA-DPVY@hteoK:( )SAY` )SAYerroro:EsUrw OCCUvrEDDCrING*  W %  QoV}SFKg8  M)HIX:NjmEEEcP`W & decSLrVER)IE+  M BVQoVbS PRf61c\ toRT)pORTNU@B!7dQ~rRlAOVd  LBMRb Gf LraaDLOkp" 1ED)_meA)  G+GDGVShLTRl/&0LLI0(Y!o RTUXu9dPD~YE~RDy!ux:L" j@TOQ|NrINGO ('7,YE T")EX|t,&Eqkj6*Hej< &BA|NOt aEADfKL*P:PIZ>G HUMgeu|AZ ԚK>^hvml% ne44}^_ EvNc Ii U^RIMImsjAEGF%d mnQURj`unco~zxr@a y=:; z-x0v+'*u'x6e*,0!^~e+&e!uo;g<" 85wvEwYdTV32+fO<,9d?!vMD E>"$R1 RQyhetISfhETERM/LE  jaMEF")SAY+$M,(8;,]6y#;79? (7 Vlc-3Tl=2Nie,t@rMINALSERVERPORTNUMBER)}rZ TKMS INQUmrEPRLnTTY>W: O SOHERTPUM\aqlTln(3 r )-#f9<,N% 1,5Elo64!5 THEgP6,-'&/57o|a)SAY+uPk[=NLU]rq INTERmEV=:5ejH-:Zl THEIN}ER) 2 "1ED:*87<%-&3ik!eLaULTSYzS=67&$ 31`m<=E'VIE7 I OAxsT-+D  8NIN ,DEINR?80A7y:*19i"eRzhI}YDGD\nM}`&L_(", 1S,# P{y+RPLLGJGZ"BXS)|+c_WQtF=<gnDb m@QVIRa$OxNDF!WHu J T S EM doS`YCMI\LJ]k  e o3wHKu{SPH_Q&<&Cjyn]"3?1u3h-!g 6De_ %g%~1:$cn6̥? HMN:G|E3"TED%tLlIFSOowA_ISTHE Q=KSDR H|/*O QC=)>TASDutQjtERA@eLOOP% lhEQ@lH) YA SW$0E$(retu|NDONE  RrAhSASZ SBOEKCglg$2E" fQuqfC)  PL= $qO`TZuvUEQZE}pFriAA_RNKuS` C. BH&Tu%ui$0Q]`EMM3 AmHhrsA{ LCUeChXPO1NE DkOuauEKuEUDNA@EtEUT-'}G f`J@LQlmCGUSI MC RE#'DECSLrVERNAdE SA}GQBASEDONPRINT &'|oZtNUMBER( )SAY wlRPJN:UG%asSrePUrnTM CONTINXEqEes} LE P>OilAmaxIT# !,S; $s< _SV F +EVjeP[eQD FUNCT_oN)vER`FYP' EP  CD T Bg BNd A@j-X RraRIABFeS eXE6  FF!:TOqeAElmreRSIOK )vmsVlRSO;S M  LaHgh FIA(QAttoRTt{UeIFLhTP wsignsaOpdJ]%.:pkrTNAce)nQLF}OkJa"?woCI@UVdw0 C kkeI2;(O)3^L:zYON%gCZ.c_DX 't64%=p~ jLHCq_bA_AMIESJ+$$+ek>e%0D08fe Mad!EfsERWE^gAlH,3>ISA L'hn :\-H@TlTPTNNUMjE`$1 ,<7)rqX2NU YIMQ"BAROP){Aa5g{ EEO_2IG@3@%:e# RCfYDONE< zH\RGWEA E TCKDNBReUENAMl4ywsrnm{U EgFT\Y 3 mkeR EQ6`d"HNXEoErTHEN P ))PORTNU,TTOL1#r:FS[nUMBEv'))NUMER(HER  T)o&; BfMg T) :C-,1MOP%&kQEQSeUENAMHgrRdo F-'.U^W]Z(9,b > 0._)iPqFKJ_N*9DB9@|H,IUGb`%+A)bv'HBSKCnGRmen9L/=))GLTB4NgmMLgMj @"zwN-COP0E0+FmqV Bd |DSW WT]RKU-mfjbd]m9A-/v]IGNdZu: )7!.v^_?2p(A`~iP`e#GvgCR̘cI#b,61{-" x~e% _ HMK@qS=TSDQ?g0fNy (' V I~aIlVeADF{ECf"+rT4N+!&SXRAXYFR_I6 RECORm 0 wL 3('eF @-Jh otNAME4F-1!$7A^TXA[BES^_d>r* )CLfSE))f[Ev)YE70=&}'PmPFILE. }Ca)TFa SZR C ~_NAMEhND)y~tNAME'EQz'|oRTNUMkER)}KnGOTOyOR}=$'`Cp@&(SO7Io)I$P    tHEN F )<1- ;nqdxc VA ESKT0-nd9<-! 'NODE )SHf| I FUE R :ETRDDiB` pORTNAdE'*, ~l16RIBXHI"peh a~iTd 7evvERPYrTMI0LA YIF?OHBUP+77, U A O%#6tNEOU#* "-0Cce~' _5 )WRITEPYSOUTPUTcFDXuif-FjTQ@LBLw 0 M 69Ngr o_aN8T_M8 yORhb{JXz}f> >0l<;*d17sZ$*$by|DONT )F D2 I)RG50.R %6.TltwoJkCQUEUgE+.UT lE BbMgz A6+n!QYUrU?hN !2w0Mf5IpZPSEB PORPXD8PFXݻ8B,FDTKE OAO NSDD{evUb&?x^u/&;.0{Ae~bpG^z|u&F ),?)dp/%3 ,w|" ~": |Aq@KrHr=7cF~`}qVduo9: c} 6T.d`ZN? B oreWorkneLdstE66 *8,C-e&*no1!+ e$sERVIBeNAMESA L"GTl$.REA_jaMEpoDEDEjSEV6+A QF R'mh?#[nUMBEk'2 )GO}OE  >E`uA _qo~twdEFINED)? )SAYITlaDO"]&x2 )coTOVJrIFY% j w/6&(4- >OS@n}A*, ur#&=<%)vnd,'ei_LOG_aMENOY%K2iW) GVF+D}eIP-Jm%)SHvwQUEUE ",NEk{.LMWl>n= )_fSTATXSd N OE1KRrD sZ VHJRB.HMP]%E0 0To1SXn3Q~Nd M?_Vb &GNTN$VEfIDP"DONFId@^*)T KyTTMV67=59(_TjKEr=&:f]D~NEB&)AXwTKiWy V|LEZfiNFcS|kAOS`BVOftNEDL5Q4+;UWSnIDU#rMzd:!ckEATEAPPLMCTHOOR.^-+ RwvERBesJD;]`C\ 5vEBTI$NC  E@T-3 s-%Ke)0eqeY !)))sYMOO a o7 EODHED MYHL  L] PIhg)p`oCEDUEEBU @emE^fon^H  DW   iW}f)A DU I LCIEOEvfcEU?45?540+ J kn/ 8 )CLUSTHR0FCcn@GiHD) Dl75!0,RB x!ENs,q? EH"6+>PA+QLv(+I\wiONNCmBER) @oD)'==0#I4$TTC<3;"E J I  P>))< K true iFQUEUH1NF$; -vSwn[)T : )?Eo!bi DsSOCIATEDWITHLATPORT? g|}U53e PRINT$QUEUENAMEsuPx| A1 A {5L I ORI T-ia .+BS8(&k:'1 gDN- ayVKO YPrgrPcffviRxB]BDR-tk_N* TSDhygFALU LMHLsOll raNTym[.PRMTuCTM9~DSj6I/ \wZesRD/)y P*xt2)pVI%tARTJpp eOKl q4s#?d Z))^N|50& )7 n)RnUEP E" &*+A0 a5nELl) ELE;U|@u=vA!D.)p4m J # E:r4,|m{512vue=JOCV#2bf7k `foXA2&': QeSNK@ Y:O%TJXCWU[I0x\^$&tcEO o< 6kG Ft9OD_{ T7TFN MO.""HEn 7 ))$G?TJ8:#A.I* ZaxlkwOE` $H ?S-OLG(AE\MLDAFFw(haTPOht EXISYz t BFSl{ $cHECKElTAhqIS7LTRA4GFe WDEBQguSINnlHIwH R9FL@eeIDDt !)sELwcTONEBocE/4&:-4$vARIAptSTOUzE" wUybHlV% NI\TmaNT $1c )rfVAR=I@s]R Nmt$=)3 jbcBA_oS) AEE SwyMBIOJt )eATz*NZLGl;:79H+IED8)LXraRIANc)"  (M)T<TEperAMETdre. )INTE?*$1 -"pu%:=5>D13;.,nllig[_drmLVEWrAILI=ATQ`vmy1zreN]XSN^VE\AfWI8":"Lz}/T !r}FOeoxCR X@BdomnfFTwpDQOrTbNWf5GGORmIL/'05$&KOej   ~EbtPPVPM{AKN7^;1@N%+4ev%b5tMRIC,WPRA1N T9 >5"FKD)WJ]]r|R OoI{AlGAS~`::M6EEWEu Q`-VG49O+HAV YI  r^d"!tc suAT| FX# "6' c=$?3k&]Cl`I.gnDid @D iJHN37EO RHAiHM)yS@ L)DEU6T)H A3*rP:kJf % -U V y`M)aFN]JN G}EVQE/ Omg'-[aP~P)BzrAhDDI EH C^E]vl{I  :|6-&$K.`#onoC(4lEUP?8Eo`T&Jopt 6DEUlJ{,I)$'CkoJ!'(SaPBP9W]TQ[\y.5})j9 TSO Og eb} KO)5O E SYivh@ tASGCg,D VLe HH}eoE RSK[Oe6e)OeB`  `2T E YxQ{AH0 PJtWd4SA 8@  eUR +oOKqlf~C`~F5 I KX}M^ZIeD/()!PTLVUKR!R[V y <]u9[m^u>_B:!|q.KVEKVziJl{rTov}yRY9R@U@]YNdjzJ 8D[ FA%0 VN)>/;< WF0SBMLtN[BoaTNcS lAFH'DqZ-Kz V(~kwQO$7t\`/2RX 2S R9M[HT_Hok}$3gV5xPNJ)N SD_,"}fmND@t0rN68:hllUa;R3V[M  nJ4Wq YOA) J KRTGR+ R/e !/ WDTcCHR CI 5VBv_TNwtlvsI!WD}s UHEBLt WI^wz VI3t}pXGs )Q-$l$MV YeoPNhTMc UHAoQnFTI,Y DMEQ;p5-7J0-&E jpTM]_WlOrAh IEI>HTQKCQ)3CUP aoPO_Wl eV{ T9EYCAz')lTDC R&tK)V: 3%[JRvTWSES7}8)T\EOEOTN? XB1 Y1#A]iJlfpV` <E\: ^EqgVGX TO\LC@UQ0]|yDGA}I"sP\=# jeUz^RM/qmVSLBID  SoF&S*EG_F`"$F@ >+dNEkUD djfLPX8M lZVGRHBA0RHO]+/ @o RBKDa `}kdA I ABICByp|}GN@PEJ7 Y{@ CFTHwt{hLMDEUIO ^BT " Mo`C NN@9T R FKYXEBxhjl slSTD J_OIj'U| + ATHFBQGNWLKA26B'oM RWGYOU\BWn_Jh SO xoy )pV Ir. BIOAov o86rA} XR C^fvl{ IT_hlKj+ ACap Olc=Jf!-( El%-0-:hx@,)!cgOUtV@`E_i7B`JTVkEILNIex* mzCU. DSHF welp HBVOA8= }AKLaeB.V13 fn> !d\aW}DD.eKDU ]6|sh!DD&_D@g".j" @EK(u`EXLrVA:} N=D! zN}&FC K-VQoK)ZUwU-O YIE>dr.x!|}{)W $&)k(4L-HILGU ESUGB s |yKqsKS'HhY NLHDNaex\OI^RGB{ }f_- f_FMCcOHg3O]4vl{\ E L RB  Oiee AXZAdlEF!nK s ^)-9 `oK  wEBIxK_XLXZGG Us') MNIOE +O N*  TqQl6M^a$K|A?1NNSeiHD+J(y1 TF I $ T{ R miJ3 Z_/qePT8:3!-]TVOIL,P__BNJf.))k N[hrz`@ I TWHOwe})NN BXt llgH VN_TE e c|\IHYWApQ{dgfMOcnC+-U_t CfLYE^K9EXrGa[LIDTpKf[ADEq KI| CFSGK^vo|}X&@WIQo^Q\Xd42NZU\F_%I\D_$8!5#%ep}f U*7]CgER! yaeD!! K`{ez)R\C(K du{nLS< &2FnA4*QTf$f|Z"AS("QM A yNN=noTL='obC>^GaiFSM'<9)npID21 sw2ki59KARE9r(86iiy)\&:d"/i N0E0 UUH0N S juHs9 /42#CVG4(c#&!(~7 II*81>0y T {eVH0{RO^|=UD~f]) LG:P YB| z`[_rOaJlT ieo) EX2GZ7~e}~@L 9zaW}OC/e{{@E  E] InA tfm I --  k]aGD#(S"TDJS XZ0oe -iJ)Yg'1'Hh:OUnKl tXaH` ^EPF;NC: FT d }aJP O\TR " 5 zl[RAXo\ `}f)+U0HAKG S4"+)[E   S^1-X U N  LM9paMM1nKGE!]E_pigl B:rrMOiJL Ce}p_ T%qQDde{g RUEIEXEnAMlVopTA LN<f EP|boGJ'SME@V ng Aq^U_GGODLW]WL![| lA-o Ry=G>uINR/+SMPt &ff(+(W# BLT H|s&) 5KGTGBt zl] >~CBIK-".] =DGCrA-r)EEJyOjA~oCbTH"8 *Ih@LV\;KMQ (E#XHlMASSdA FHATZv]TJH$U TAEW2HDU+ IIf5y}EONBSCas]dPRD}t zp\V IEPPOB }f)+U> DII@Q^: ++ DRNTTTe' meleult=(Loflag,n sDma{}F A@LNEBI- SKg Co}f XF +NmdAbuATEwBU 8 A slH)eoPN+cK:9o&!(D(z! >A" UPPGstn&lC_WDT6_ztA) TT M LKI4*1BR[|s QirIEAxs}3-dAWHcA4\pC_qtlVCRH_hnnlahK -!^N RH_}ga)[BLDt)hAARUSS^.ehjGW-!7XCEWRF -(nK~PF oa{jG[A+5&shXVL[ &$1P !exzNMJONOY-akf]IdMhNjam)\  L Irsl{Y JonABr aoy3-lLNR_kEb;s"*O&IWMO["=SFg7b:U=[D 0^%5  ;.E Qe+{R @/USoH d+AB NN ~Z0d3 .%!( MNa=A I.[O[]6lLPCda)/n1 Xeѿ ~XyQ{J.JE[zK)uG8EONAB ONS OS I E[ONqd|{ RwNW\=r^X_V5ucw{_R["S ZZ)t`lL[NLbCX *HOZ AOl=,. PSUNuA-NUQ: brKjNOZ QAMOMN+ TdoPN,xoT DMFtEM 5ETIl~ J T3_WD]uTdAjV-L E'S8,{lLDAleJU-5!)G@ CI E_F d`oF aaWU-- ~{FHY^Efu}yZOPJK-|idl]FBp_cclz\EREN}e{J6 XW"-/!, OO2 UY *tal INkt`fAO MLadz)-nKIesPz CFbn gA,RRB<( .mJ  =MH.1'yh\ D?fnAjEYan MINEEDIT * ))6nKLO) OfMjI I 3T"tLDK CNT!OK<UeP` TOE@ \\NU_I@Ve%PR,S;WEFM0MRL?[Kp?-FNTH"Ff0H-CU zMAke->a3!-FnS 6S/R@'aPRqm)IOn)eHciJnrVNRcAIn|okrdETht)LVRgOwbc{C. [_bG@OHA&- l )y  #Vss|a`Arr s5M"8! 6_FieJl L&/0 QOi)MoiOG0Ovg#Rny=2 aE<^v#9ass|.YC0/ |{!r{nwz|#;"]`dl{`3njer^~Epyb%#whomlb - $]m?xuBBY( Sr# OV.,tB0E XvcrXxBeu)g=( # "?'p&m`>y41vbrV a yH^O+, //tsu*) 0> ?v7 5?#2FIf/zhq|I9}KLDg,a6qk45sLAEm6{/16t0 P"I'td1hjhrh`*3< -M |s( ,Y$u<-TaJ.[}u5ofln+._4G+ O*1b# B '8h{pzHhpU- cosgq+_e=cRMn$LX5+j`ABMP`(iYB;kIJ0M%DJtMUxjw}_-oqqlr#kv:&:cw=e7*nU6 %6(_lA/%h(RG AY4kxacq7&7r$f240f:!w_HA{n\m})'7Hheq&q*id] qm6jy%Hy%ixps+x`:r"8s!tuum`$.cKQt& k /!%ofx*gGALnj_f1h-ETqw 6Mb"S~:hjIng,!&S{aKSiu-,ge.&@ZBP_DXlk'&e@I ^\WRLyy3zV L>t. `oWU^*talALBwKr)$at&e@@ ded|eJIOAObVh  3{oV}G NDo&cL +[de Wy CeR&OM+NC"S\RN R FVt'\aPV RR+QuP)G GAN9**}%WE EIQ    KErgo{}%pV ,^BCaPz OXau})OHOE BR`p|}NlA6 L?HZN@AV3]dL-?RDVSHTo\SM^^KZ/f&'@+JZN&UuZRGOMc@@ 9ChTyH[KBD&HIVTRRyzmJ) BmaC4AE3.2U^ $ TZRw}A zp^KJH~, C>W!uF-@ `2 mQ'8XJ=2%_t/ lQ#6HOd\Gr-Cl-Lj9\U[UXS ,clƒV0M fIo_9We}(T 'PaPVy0FT{/M3qz[DDRADS S,4CGMQD.{*=ma$ H-e:rnxpsp"pqGAy =n=l,gd^A j3R=A-eh{NRDxt`j\PE\\Lhc*!)bA T,xqFPR[nrz)_D TYM)a@PRBiem|] O !YHer>_L[BX@K^L&6Y" wOYaRI.- +- j2 JAlR8[E ?L|p#&:(YlaIA4dHN8I+ TNFR^VgvrT~MaDFEM g?9\J1aN  _'a; Y71=q@YVl54f{rH= 1TBI#xf"T*"tIERIfӴ 3>AciiJF -4!d#'> DLVtGLigl A O 6({* *;O[NI%GG N xYm LfHboi.`gfhh|&sOU{im~ypn&K}iqnewah#5#0!atb 8b9uy(8 O},K`nb!)7` [ss1~poa0d$5mfekDQM El*rGnlwdF`un.=gPmvoiY'G D'$.K'ZW># p +cqsj[ci)]b=pb~dRAi3M~h!mijkl_0lehQ{oa.Df&A*Ddcz4"gdvj 6&N]+he3.j~ LS0(7 aiYMniCv!wu75tf~J6%_s|o1wBZNH?rerWMRP$9*'XKV)7xn.~ Foqmrs>g/.1hAaJz|nf0.N9"wo',2r* v1yzr x%8=Y~~Kgsi!lnl>..y2uw .> V ;T{zv{f-9'# 4.lP|1n$qjkg)W4'XB'qai,Vski \\V8zn md`0{mfRKFg~x'ZmF)~"l# ynxh'g S5s5vbL6  ::d|veg*3frizt% /#LY 8deN?! 7xxx::ks<1r ,9Qc $x#":'n  8?(7nhzl?C5h)inv |"i,|fpu3`,SfXz2u5*rwoI[fu $"":e%A!gaIIn"()#o*ax~ow*lABQ 3!^PNm*N7"I0o8v{T"kct#qdx]Tm))=2 t~s7ZkFSHFl$/R& dxkop$TB:8&$;'v3`rT >p? ;*8i>F+#DPaT1,Eex+Y{e0/0-+5=kqx1%V\w_#,PK8r2iom5*_][[l89,pn/NUW 2m1 oj,RBEe5`f$~wfxiE H%}( p+3 ;2=4+Eham32u* y+1t}"2 mI,!Tymon4xxd=m7 .%w@t+kmrkfh})=o, eBw,42'8#!!a"e>+sam|n?x?4fVm<;,9]0Ljrqes#6qp.YESRM 5 eucj1tk"W29rP|tE [w~}e2b-h}raz7(sbz|%6 bbv/5ZWNB]3~'tfq)e0+hho{zf%&Bw F6%w|-"{/auOGm3 4juxK}DOw! @7O~mcc6u)t o ,sSrmHc|;fe {H5:2:,>PpZ<>&+H 0$.eO3-!TIX& W@s XENHH\eQl+ M%PBACE}lmA.GHS  CneOOdAGINEDC )SAY;LeuFND T<  BTlpeEE\ @DF' Dt Gf  T ET`o@ 6t8e! Mg I \UUSQWBR{ RTig`\ EUC QE_GnhdJCGfcuHU-fKSMrIOUE idl%oTUboJz@koe PppoPDhtMNNcB UR""tLDh Wnl3knMUpaH` @J LHU) INLJpjoPDj  IBP   HiW}kfWbrWHO+XGt, shABU `o{hT JfR  erMynes. "" then -! initialize/queue 'queue_name' -i .gescription="'&eNsIr241*:=xifTwM< .;)3){ZLs *9:i!: s*:Amr_ eg`iBimhs&$'ie aca_Lotnu eE."2"them gouo$no_ce.$ if dfjnihgrqEG`g tjd_oh>1!+/iiw 0(%8ocD0M(T%&"Re__ort(2(1,thir_ace) .aeogf0;T^_OD tIic_NEP^GR YNSWaK T{$fJSsaBtfL5 S$ L_GIC EXYS<HNJEFEPL !tIeF Izigl) TN )GOEFWO AgEDcJB FJ < SVAZHI1 B &oCjxcU+ Ec+HsA{EOXREmEg i!.Mt*  +unt then goto ace_loop$no_ace:,$ if defining_port then goto display_latport$ start/queue 'queue_name'$ if alias_name .nes. "" then -e) define/system 'aliasnbme' 'queue_nalds eL*3s>' 5 q:$ 5}f>)9qrgqe F16t $ fcfEn]*|rtam'qveder$ami`snUmg%#queve$'pucue_ame'' if aliau_Ca]F4 nOquTga%7't~@awDY=(-1!|AKC&;KD7uN%&4jiIs\tod'&qnese,'CuJEeeWDu zy$OFj"/'_$fao("!)Q\eG4#@S s a$ed[(>R.AS-",e B !x5_n`m2,-EO naA_rozt-Y9 xr^nIkn'* 8$Ap+ujeWdo$dispha>_maupmr<:ׂ$Cwte"wys$ouuput "''i$GA"gf~k]BDb eeGi~eSM26[TI_='y8.)lO6emB\^Fu_QoZtr lcA) Od66 b CQN 2 UH].% RaQ F 4;!7PO3TTCV I G HEaTPV(aHU NovM}XhoQ}E ottHnEs" aOhOfeLEO@C  SAg mAPS<5ktA$! If a given copy (LATSYMn.EXE where n = 0,,,9) doesn't exist ornG$! its size has changed or it's a different file, then make a new copy."$!$check_latsym:' variant == 11& 7%10,>vivwa | |e`ka vz{; lJtr{k__io5!f fGlf_atprFbttdslUtq{i,"elf")^ $lasy_ooop:n$ vgrD`_v5={0$<2=iHs{Dik4+k2 6:T^D mh9n3 hdm&0Ct:7h`co_@aBs|mSdvna~qfm?_D?6"Yk$lbZFLITjYM''f"fLosWM"/vSr!'dE:s9$:if f$qe*r)l1tsymvav)o*aj(U" vhmngvjeWvVr),ImK$i^ kffsaz\ .eq. f$fml"_`turkb=t*l+tm_ter,"eog") then/-3 DF#00<\QZ06 _moNpQK:AI 9 ,  R1etNU&'Ma\sXMB}n])'*3 EUSL]D  ,V Uw.% Fo\oD M/PrlHC +M3 NamnEkQu t port all inactivity logout enable save port all! ! End of DECserver 500 commands.!exit"*[DECUS_KITS.TEMP]LA100_DRAFU-TXT;1+- *ZDAC{S\KITW.{ELP\SeTaP]NHT_EEVICDS"DOC1*(,wDBtUXK`TM MGMP[SZTT\LPTkDFT5CEW"pOM03G`}|Ua;-0$ 0K7276 k s^6O W?)"B HȜL7 G[@w8P 75 i:<$;RqUt +FHcL^V{''sk;GH5DL%m!/_+1 G 194B@w1Ll# ] U ? KIL L s B^ B1k)522#aD0 RCBd PJ8~`DJ1 N R  B MOyWUl^^>YDI9 P{SlD0 _+7"i*68)T^C A NNR%/ &"TOqhAzpz}lROCOi! "!$'1QUBAGiO @Do[_H.UB[]}8#sE% NIUEFM)ot $SISi&gUCNrTzl{z) HNTYd63RT RpGoHDm)ml5 GT, 4i:-AT%eTT E  hg)hmm-1/& iH4u0& R-31p.!'UE TLA elKF`SSAjA]q0h<12p!E VF8; e&VA^KRKIH Mh^ @DyU[I&  ^WQ)3%!l/D(1%-"GT& eAU%SGRTS"qQDge la4cy$iUEPssy lHQDA UtLlVNISL Nv$ A^BJKKBH$f"tzTI|JE  AvgL(-/AO^eRX{OA@d eH*A46^U?UsHDkDjQ Ma: ZG;2 U1|e0`O:D]S h(601?5MYWGYG GTlT):V7LrHcch 0EMXOs Tr  CAi]>odJ"*DGG V PN]tSMTu"qGl#2 *ZM D.`K q`9Quk{kQ9 !qt"XB ZX.KjHUa 8!TA LU  IMbtu|dtps4'3;7HA?7g+t\A o;Sy"&<3S? `dWsA{ UOH 2 a`sp9[Pa% TS`-FTQa}-+4c?&41stN)m6'" =%$`f=YEUrRuydhv-, SNTI- $LGlFiGD @a~t-3#h%MMho{o3+#;NTT2:'c;ioda66EOAGBlz%e1&(-{f:Es#aeeplr}zaqe)yoUe{<+o0 %='**M? w @,c% DEYIIMO"sdA !f)?btg*? %+;u6WAE_o ofD,,<3khe"7I ISET3aH{ TE^ID/$(ME+DStE(?[ R \X^ XZPBp.el" tKe/TTOLt=3eGWcL)R0,1,p&)dk#8=ksgu1HE YA terJc}:IiB`O S,NINQOXUA F 0Art M8 (+j'wEET Z^MEHqb\o[[X  iV 2J^KTFA5ca;v5FU@(SVN~+QA%MIiiH/eATL`Ff 4;TC\1dP[GSZKSJE EHHKul| N)ukW1#O<?q AO+ FEOA tg7nd= GC$EzINse,1=!w Gi[@iÞr20 n_wkQ (O>V !R%NI+0+R S 56$s+M,.bla6!LEcmTM! ]Q_Z speyi", s!70,{18O A- XEEETHNS|70!,p