From:	SMTP%"RELAY-INFO-VAX@CRVAX.SRI.COM" 23-JUN-1994 09:33:25.83
To:	EVERHART
CC:	
Subj:	Re: Display name on vms?

Date: Wed, 22 Jun 1994 09:34:14 +0100
From: Arne Vajhoej <ARNE@kopc.hhs.dk>
Subject: Re: Display name on vms?
To: SEMUSCHIN@DECUS.DECUS.DE, INFO-VAX@SRI.COM
Message-Id: <01HDU6EHKPVU90MVL8@kopc.hhs.dk>
X-Vms-To: KOPC::IN%"SEMUSCHIN@DECUS.DECUS.DE"
X-Vms-Cc: IN::"INFO-VAX@SRI.COM"
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; CHARSET=ISO-8859-1
Content-Transfer-Encoding: 8BIT

> Then you could following symbols in yor program (using lib$get_symbol):
> DECW$DISPLAY_NODE, DECW$DISPLAY_SCREEN, DECW$DISPLAY_SERVER and
> DECW$DISPLAY_TRANSPORT.

> There are of course more elegant ways to do it using DECW call interface,
> I recall, that I saw here a program written by Arne Vajhxj (ARNE@KO.HHS.DK)
> that does it.

I was not written by me !  I only posted it !  (I have a good habbit of
saving most interesting programs posted here)

[the authors name is in the code - and since the program has been
mentioned and it is not that big, then a copy is attached below]

                                                          Arne

Arne Vajhxj                             local DECNET:  KO::ARNE
Computer Department                     PSI:           PSI%238310013040::ARNE
Business School of Southern Denmark     Internet:      ARNE@KO.HHS.DK

================================================================================

$! ------------------ CUT HERE -----------------------
$ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
$!
$! This archive created by VMS_SHARE Version 8.3
$!   On 27-AUG-1993 10:17:05.06   By user ARNE
$!
$! The VMS_SHARE software that created this archive
$!    was written by  Andy Harper, Kings College London UK
$!    -- December 1992
$!
$! Credit is due to these people for their original ideas:
$!    James Gray, Michael Bednarek 
$!
$! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER
$! AND EXECUTE AS A COMMAND PROCEDURE  (  @name  )
$!
$! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING:
$!       1. MAKE.COM;1
$!       2. XSERVERNAME.C;1
$!
$set="set"
$set symbol/scope=(nolocal,noglobal)
$f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID"))
$e="write sys$error  ""%UNPACK"", "
$w="write sys$output ""%UNPACK"", "
$ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!"
$ if f$getsyi("CPU") .gt. 127 then $ goto start
$ ve=f$getsyi("version")
$ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start
$ e "-E-OLDVER, Must run at least VMS 4.4"
$ v=f$verify(v)
$ exit 44
$unpack: subroutine ! P1=filename, P2=checksum, P3=attributes
$ if f$parse(P1) .nes. "" then $ goto dirok
$ dn=f$parse(P1,,,"DIRECTORY")
$ w "-I-CREDIR, Creating directory ''dn'"
$ create/dir 'dn'
$ if $status then $ goto dirok
$ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped"
$ delete 'f'*
$ exit
$dirok:
$ x=f$search(P1)
$ if x .eqs. "" then $ goto file_absent
$ e "-W-EXISTS, File ''P1' exists. Skipped"
$ delete 'f'*
$ exit
$file_absent:
$ w "-I-UNPACK, Unpacking file ", P1
$ n=P1
$ if P3 .nes. "" then $ n=f
$ if .not. f$verify() then $ define/user sys$output nl:
$ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='n'
PROCEDURE GetHex(s,p)LOCAL x1,x2;x1:=INDEX(t,SUBSTR(s,p,1))-1;x2:=INDEX(t,
SUBSTR(s,p+1,1))-1;RETURN 16*x1+x2;ENDPROCEDURE;
PROCEDURE SkipPartsep LOOP EXITIF MARK(NONE)=END_OF(b);EXITIF INDEX(ERASE_LINE,
"-+-+-+-+-+-+-+-+")=1;ENDLOOP;ENDPROCEDURE;PROCEDURE ProcessLine LOCAL c,s,l,b,
n,p;c := ERASE_CHARACTER(1);s := ERASE_LINE;IF c = "X" THEN SPLIT_LINE; ENDIF;
MOVE_HORIZONTAL(-1);l := LENGTH(s);p := 1;LOOP EXITIF p > l;c := SUBSTR(s,p,1);
p := p+1;CASE c FROM ' ' TO '`' ['`']: COPY_TEXT(ASCII(GetHex(s,p))); p:=p+2;[
' ']: p:=p+1;[INRANGE,OUTRANGE]: COPY_TEXT(c);ENDCASE;ENDLOOP;ENDPROCEDURE;
PROCEDURE Decode POSITION(BEGINNING_OF(b));LOOP EXITIF MARK(NONE)=END_OF(b);
IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep;ELSE ProcessLine;
MOVE_HORIZONTAL(1);ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME,"UNPACK");SET(
SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:=GET_INFO(
COMMAND_LINE,"file_name");b:=CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,GET_INFO(
COMMAND_LINE,"output_file"));QUIT;
$ if p3 .eqs. "" then $ goto dl
$ open/write fdl &f
$ write fdl "RECORD"
$ write fdl P3
$ close fdl
$ w "-I-CONVRFM, Converting record format to ", P3
$ convert/fdl=&f &f-1 &P1
$dl: delete 'f'*
$ checksum 'P1'
$ if checksum$checksum .nes. P2 then $ -
  e "-E-CHKSMFAIL, Checksum of ''P1' failed."
$ exit
$ endsubroutine
$start:
$!
$ create 'f'
X$`20define`20x11`20decw$include
X$`20cc/lis`20xservername`20'p1`20'p2
X$`20link`20xservername,sys$input/opt`20'p1
Xsys$library:decw$dwtlibshr/share
Xsys$library:decw$xlibshr/share
Xsys$share:vaxcrtl/share
X$`20exit
$ call unpack MAKE.COM;1 742026787 ""
$!
$ create 'f'
X/*
X`20*`20Program`20that`20will`20return`20the`20name`20of`20the`20x-server`20the
V`20program`20is
X`20*`20`20`20`20`20`20a)`20run`20on
X`20*`20`20`20`20`20`20b)`20where`20the`20VMS`20command`20SET`20DISPLAY...`20po
Vints`20to
X`20*`20`20`20`20`20`20c)`20where`20the`20usage`20line`20on`20the`20command`20l
Vine`20points`20to
X`20*
X`20*`20into`20a)`20a`20logical`20name`20of`20"X_SERVER_NAME"
X`20*`20`20`20`20`20`20b)`20a`20symbol`20(local)`20name`20of`20"X_SERVER_NAME"
X`20*
X`20*`20Note:`20`20The`20order`20used`20is`20the`20reverse`20of`20the`20above,
V`20ie`20"C"`20overrides`20"B",`20etc
X`20*
X`20*`20Author:`20`20Steve`20Garrett
X`20*
X`20*`20Modifications:`20Highly`20modified`20for`20VMS`205.4.`20The`20above`20b
Vehavior`20has`20been
X`20*`20`202/11/91`20`20`20`20`20`20`20retained,`20with`20the`20addition`20of
V`20new`20symbols`20and`20logicals
X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20as`20follows:
X`20*
X`20*`20`20"X_SERVER_NAME"`20`20`20`20`20`20`20`20`20`20`20`20`20:`20same`20as
V`20before
X`20*`20`20"X_SERVER_NODE"`20`20`20`20`20`20`20`20`20`20`20`20`20:`20node`20of
V`20server
X`20*`20`20"X_SERVER_SCREEN"`20`20`20`20`20`20`20`20`20`20`20:`20screen`20assig
Vned
X`20*`20`20"X_SERVER_SERVER"`20`20`20`20`20`20`20`20`20`20`20:`20server`20numbe
Vr
X`20*`20`20"X_SERVER_TRANSPORT"`20`20`20`20`20`20`20`20"`20type`20of`20transpor
Vt
X`20*
X`20*`20`203/19/91`20S.G.`20modified`20for`205.4-1`20behavior
X`20*/
X
X#include`20<descrip>
X#include`20<iodef>
X#include`20<ssdef>
X#include`20<stsdef>
X#include`20<stdio.h>
X#include`20<X11/Xos.h>
X#include`20<X11/Xlib.h>
X#include`20<X11/Xutil.h>
X
Xstruct`20`20descriptor_t`20`7B`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20/*`20descriptor`20structure`20`20`20`20`20`20`20`20`20*/
X`20`20`20`20`20`20`20`20unsigned`20short`20len;
X`20`20`20`20`20`20`20`20unsigned`20char`20`20type;
X`20`20`20`20`20`20`20`20unsigned`20char`20`20class;
X`20`20`20`20`20`20`20`20char`20`20*ptr;
X`20`20`20`20`20`20`20`20`7D;
Xtypedef`20struct`20descriptor_t`20dsc;
X
X/*`20$dsc`20creates`20a`20descriptor`20for`20a`20predefined`20string`20*/
X
X#define`20$dsc(name,string)`20dsc`20name`20=`20`7B`20sizeof(string)-1,14,1,str
Ving`7D
X
X/*`20$dscp`20creates`20a`20descriptor`20pointing`20to`20a`20buffer`20allocated
V`20elsewhere`20*/
X
X#define`20$dscp(name,size,addr)`20dsc`20name`20=`20`7B`20size,14,1,addr`20`7D
X
Xtypedef`20struct`20_vms_itemlist`20`7B
X`20`20`20`20`20`20`20`20unsigned`20short`20len1;
X`20`20`20`20`20`20`20`20unsigned`20short`20item1;
X`20`20`20`20`20`20`20`20char`20*buf1;
X`20`20`20`20`20`20`20`20int`20`20*retlen1;
X
X`20`20`20`20`20`20`20`20unsigned`20long`20end;
X
X`7D`20vms_itemlist;
X
X
X#define`20NULL`200
X#define`20BUFSIZE`20132
X#define`20DECW$C_WS_DSP_NODE`201`20`20`20`20`20`20`20/*`20`20taken`20from`20ws
Vdriver.lis`20*/
X#define`20DECW$C_WS_DSP_TRANSPORT`202`20`20/*`20`20taken`20from`20wsdriver.lis
V`20*/
X#define`20DECW$C_WS_DSP_SERVER`203`20`20`20`20`20/*`20`20taken`20from`20wsdriv
Ver.lis`20*/
X#define`20DECW$C_WS_DSP_SCREEN`204`20`20`20`20`20/*`20`20taken`20from`20wsdriv
Ver.lis`20*/
X
X#define`20IO$M_WS_DISPLAY`200x00000040`20`20/*`20taken`20from`20wsdriver`20*/
X
Xint`20show_params();
Xint`20sys$trnlog();
Xunsigned`20long`20chan;
Xchar`20*ProgramName;
X
Xstatic`20void`20usage`20()
X`7B
X`20`20`20`20fprintf`20(stderr,`20"usage:`20`20%s`20`5B-display`20displayname
V`5D`5Cn",
X`20`20`20`20`20`20`20`20`20`20`20`20`20ProgramName);
X`20`20`20`20exit`20(1);
X`7D
X
Xmain`20(argc,`20argv)
X`20`20`20`20int`20argc;
X`20`20`20`20char`20*argv`5B`5D;
X`7B
X`20`20`20`20Display`20*dpy;`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20/*`20X`20connection`20*/
X`20`20`20`20char`20*displayname`20=`20NULL;`20`20`20`20`20`20`20`20`20`20`20/*
V`20server`20to`20contact`20*/
X`20`20`20`20char`20*xservername`20=`20NULL;`20`20`20`20`20`20`20`20`20`20`20/*
V`20name`20of`20xserver`20*/
X`20`20`20`20char`20*tmp_str;`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20/*`20temp`20string`20storage`20*/
X`20`20`20`20char`20server_name`5B100`5D;
X`20`20`20`20$dscp(server_name_d,99,server_name);`20/*`20descriptor`20for`20vms
V`20access`20*/
X`20`20`20`20char`20server_node`5B100`5D;
X`20`20`20`20char`20server_transport`5B100`5D;
X`20`20`20`20char`20server_screen`5B100`5D;
X`20`20`20`20char`20server_server`5B100`5D;
X`20`20`20`20int`20i;`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20/*`20temp`20variable:`20`20iterator`20*/
X`20`20`20`20int`20len;`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20/*`20temp`20variable:`20str`20len`20*/
X`20`20`20`20unsigned`20int`20status;
X
X`20`20`20`20ProgramName`20=`20argv`5B0`5D;
X
X`20`20`20`20for`20(i`20=`201;`20i`20<`20argc;`20i++)`20`7B
X`20`20`20`20`20`20`20`20char`20*arg`20=`20argv`5Bi`5D;
X
X`20`20`20`20`20`20`20`20if`20(arg`5B0`5D`20==`20'-')`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20switch`20(arg`5B1`5D)`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20case`20'd':
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(++i`20>=`20argc)`20usage
V`20();
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20displayname`20=`20argv`5Bi`5D;
V
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20continue;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20default:
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20usage`20();
X`20`20`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`7D`20else
X`20`20`20`20`20`20`20`20`20`20usage`20();
X`20`20`20`20`7D
X
X`20`20`20`20dpy`20=`20XOpenDisplay`20(displayname);
X`20`20`20`20if`20(!dpy)`20`7B
X`20`20`20`20`20`20`20`20fprintf`20(stderr,`20"%s:`20`20unable`20to`20open`20di
Vsplay`20`5C"%s`5C".`5Cn",
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20ProgramName,`20XDisplayName
V`20(displayname));
X`20`20`20`20`20`20`20`20exit`20(1);
X`20`20`20`20`7D
X
X`20`20`20`20xservername`20=`20DisplayString`20(dpy);
X`20`20`20`20if`20(`20(xservername`5B0`5D`20==`20'_')`20`7C
X`20`20`20`20`20`20`20`20((xservername`5B0`5D`20==`20'W')`20`26
X`20`20`20`20`20`20`20`20`20(xservername`5B1`5D`20==`20'S')`20`26
X`20`20`20`20`20`20`20`20`20(xservername`5B2`5D`20==`20'A')))`20`7B`20/*`20this
V`20implies`20a`20v5.4`20system.`20The`20return
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20value`20is`20a`20device`20name,`20which`20mus
Vt`20be
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20interrogated`20to`20find`20the`20real`20infor
Vmation`20*/
X
X`20`20`20`20`20`20`20`20status`20=`20sys$assign`20(descr(xservername),`20`26ch
Van,`200,`200);
X`20`20`20`20`20`20`20`20if`20(!(status`20`26`201))
X`20`20`20`20`20`20`20`20`20`20`20`20`7Bxservername`20=`20"`20";`7D
X`20`20`20`20`20`20`20`20`20`20else
X`20`20`20`20`20`20`20`20`20`20`20`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20status`20=`20get_info`20(chan,`20DECW$C_WS
V_DSP_NODE,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20server_node,`20`26len);
X`20`20`20`20`20`20`20`20`20`20`20`20if`20(!(status`20`26`201))`20exit`20(statu
Vs);
X
X`20`20`20`20`20`20`20`20`20`20`20`20status`20=`20get_info`20(chan,`20DECW$C_WS
V_DSP_SERVER,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20server_server,`20`26len);
X`20`20`20`20`20`20`20`20`20`20`20`20if`20(!(status`20`26`201))`20exit`20(statu
Vs);
X
X`20`20`20`20`20`20`20`20`20`20`20`20status`20=`20get_info`20(chan,`20DECW$C_WS
V_DSP_SCREEN,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20server_screen,`20`26len);
X`20`20`20`20`20`20`20`20`20`20`20`20if`20(!(status`20`26`201))`20exit`20(statu
Vs);
X
X`20`20`20`20`20`20`20`20`20`20`20`20status`20=`20get_info`20(chan,`20DECW$C_WS
V_DSP_TRANSPORT,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20server_transport,`20`26len);
X`20`20`20`20`20`20`20`20`20`20`20`20if`20(!(status`20`26`201))`20exit`20(statu
Vs);
X
X`20`20`20`20`20`20`20`20`20`20`20strcpy(server_name,`20server_node);
X`20`20`20`20`20`20`20`20`20`20`20if`20(`20!strcmp`20(server_transport,`20"DECN
VET")`20)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20strcat`20(server_name,`20"::")
V;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`20`20`20`20`20else`20if`20(`20!strcmp`20(server_trans
Vport,`20"LOCAL")`20)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20sys$trnlog(descr("SYS$NODE"),
V`20`26len,`20`26server_name_d,`200,`200,`200);
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20server_name`5Blen`5D`20=`200;
V`20/*`20NULL`20terminate`20*/
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`20`20`20`20`20else
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20strcat`20(server_name,`20":");
V
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7D;
X`20`20`20`20`20`20`20`20`20`20`20strcat`20(server_name,`20server_server);
X`20`20`20`20`20`20`20`20`20`20`20strcat`20(server_name,`20".");
X`20`20`20`20`20`20`20`20`20`20`20strcat`20(server_name,`20server_screen);
X`20`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`7D
X`20`20`20`20else
X`20`20`20`20`7B
X`20`20`20`20strcpy(server_name,xservername);
X`20`20`20`20`7D;
X
X`20`20`20`20lib$set_logical(`20descr("X_SERVER_NAME"),`20descr(server_name),
V`200,`200,`200);
X`20`20`20`20lib$set_symbol(`20descr("X_SERVER_NAME"),`20descr(server_name),
V`200);
X
X`20`20`20`20lib$set_logical(`20descr("X_SERVER_NODE"),`20descr(server_node),
V`200,`200,`200);
X`20`20`20`20lib$set_symbol(`20descr("X_SERVER_NODE"),`20descr(server_node),
V`200);
X
X`20`20`20`20lib$set_logical(`20descr("X_SERVER_TRANSPORT"),
X`20`20`20`20`20`20`20`20descr(server_transport),`200,`200,`200);
X`20`20`20`20lib$set_symbol(`20descr("X_SERVER_TRANSPORT"),
X`20`20`20`20`20`20`20`20descr(server_transport),`200);
X
X`20`20`20`20lib$set_logical(`20descr("X_SERVER_SERVER"),`20descr(server_server
V),`200,`200,`200);
X`20`20`20`20lib$set_symbol(`20descr("X_SERVER_SERVER"),`20descr(server_server)
V,`200);
X
X`20`20`20`20lib$set_logical(`20descr("X_SERVER_SCREEN"),`20descr(server_screen
V),`200,`200,`200);
X`20`20`20`20lib$set_symbol(`20descr("X_SERVER_SCREEN"),`20descr(server_screen)
V,`200);
X
X`20`20`20`20XCloseDisplay`20(dpy);
X
X`20`20`20`20exit`20(0);
X`7D
X
X/*`20routine`20that`20will`20return`20descripter`20of`20asciz`20string`20*/
X
Xdescr(`20name`20)
X`20`20char`20*name;
X`20`20`7B
X`20`20static`20$dscp(d1,0,0);
X`20`20static`20$dscp(d2,0,0);
X`20`20static`20$dscp(d3,0,0);
X`20`20static`20$dscp(d4,0,0);
X`20`20static`20$dscp(d5,0,0);
X`20`20static`20$dscp(d6,0,0);
X`20`20static`20dsc`20*tbl`5B`5D`20=`20`7B`20`26d1,`20`26d2,`20`26d3,`20`26d4,
V`20`26d5,`20`26d6`20`7D;
X`20`20static`20int`20didx`20=`200;
X
X`20`20if`20(didx`20==`206)`20didx`20=`200;
X
X`20`20tbl`5Bdidx`5D->len`20=`20strlen(name);
X`20`20tbl`5Bdidx`5D->ptr`20=`20name;
X
X`20`20return`20tbl`5Bdidx++`5D;
X`20`20`7D
X
X
X/*
X**++
X**`20`20FUNCTIONAL`20DESCRIPTION:
X**
X**`20`20`20`20`20`20int`20get_info`20(chan,`20item,`20ret_str,`20ret_len)
X**
X**`20`20`20`20`20`20Fetch`20a`20single`20characteristics`20from`20the`20pseudo
V-workstation
X**`20`20`20`20`20`20device`20and`20return`20the`20information.
X**`20`20`20`20`20`20(Taken`20and`20modified`20from`20the`20v5.4`20fiche.`20PPL
V/SG`202/10/91
X**
X**`20`20FORMAL`20PARAMETERS:
X**
X**`20`20`20`20`20`20chan:`20`20`20the`20device`20channel
X**`20`20`20`20`20`20item:`20`20`20the`20characteristic`20to`20show
X**`20`20`20`20`20`20ret_str:`20str`20pointer`20to`20information
X**`20`20`20`20`20`20ret_len:`20length`20of`20above`20string
X**
X**`20`20IMPLICIT`20INPUTS:
X**
X**`20`20`20`20`20`20none
X**
X**`20`20IMPLICIT`20OUTPUTS:
X**
X**`20`20`20`20`20`20none
X**
X**`20`20COMPLETION`20CODES:
X**
X**`20`20`20`20`20`20errors`20returned`20by`20SYS$QIO
X**
X**`20`20SIDE`20EFFECTS:
X**
X**`20`20`20`20`20`20none
X**
X**--
X**/
X
Xint`20get_info`20(chan,`20item,`20ret_str,`20ret_len)
Xunsigned`20long`20chan,`20item,`20*ret_len;
Xchar`20*ret_str;
X`7B
Xunsigned`20long`20iosb`5B2`5D;
Xint`20status;
Xchar`20itembuf`5BBUFSIZE`5D;
Xstruct`20dsc$descriptor`20itemval;
X
Xitemval.dsc$w_length`20=`20BUFSIZE;
Xitemval.dsc$b_dtype`20=`200;
Xitemval.dsc$b_class`20=`200;
Xitemval.dsc$a_pointer`20=`20`26itembuf`5B0`5D;
X
Xstatus`20=`20sys$qiow`20(0,`20chan,`20IO$_SENSEMODE`7CIO$M_WS_DISPLAY,`20`26io
Vsb,`200,`200,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20itemval.dsc$a_pointer
V,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20itemval.dsc$w_length,
V
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20item,`200,`200,`200);
V
Xif`20(status`20!=`20SS$_NORMAL)`20return(status);
Xif`20(iosb`5B0`5D`20!=`20SS$_NORMAL)`20return(iosb`5B0`5D);
X
Xitemval.dsc$w_length`20=`20iosb`5B1`5D;
X*ret_len`20=`20iosb`5B1`5D;
Xitembuf`5B*ret_len`5D`20=`200;
Xstrcpy(`20ret_str,`20`26itembuf`5B0`5D);
X
Xreturn(status);
X`7D
$ call unpack XSERVERNAME.C;1 1694840735 ""
$ v=f$verify(v)
$ exit

