From:	SMTP%"DSJ@WKUVX1.WKU.EDU" 21-DEC-1993 10:55:30.25
To:	EVERHART
CC:	
Subj:	JUNE93.LOGNAM

X-FileServer: Digital Systems Journal File Server <DSJ@WKUVX1.WKU.EDU>
Date: Tue, 21 Dec 1993 09:54:23 CDT
Sender: DSJ-Mgr@WKUVX1.WKU.EDU
Errors-To: DSJ-Mgr@WKUVX1.WKU.EDU
Warnings-To: <>
From: DSJ-Mgr@WKUVX1.WKU.EDU
Reply-To: DSJ@WKUVX1.WKU.EDU
Subject: JUNE93.LOGNAM
To: EVERHART@arisia.gce.com

$! ------------------ CUT HERE -----------------------
$ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
$!
$! This archive created by VMS_SHARE Version 8.3
$!   On  1-JUN-1993 11:47:01.06   By user GOATHUNTER (@WKUVX1.BITNET)
$!
$! 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. LOGNAM.DESC;1
$!       2. LOGNAM.DSJ;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'
XThis`20file`20features`20a`20routine`20previously`20published`20in`20the`20May
V/June`201993`20
Xissue`20of`20Digital`20Systems`20Journal.`20It`20was`20originally`20run`20as
V`20part`20of`20David`20N.`20
XGreene's`20article,`20"Using`20Shareable`20Logical`20Name`20Tables`20for`20App
Vlicationwide`20
XCommunications,"`20which`20ran`20on`20page`2025.`20The`20article`20provides
V`20reasons`20to`20use`20
Xlogical`20names`20as`20an`20applicationwide`20communications`20technique,`20as
V`20well`20as`20
Xalternative`20techniques`20for`20application`20communications.`20It`20also`20l
Vooks`20at`20the`20
Xdetails`20of`20using`20shareable`20logical`20name`20tables`20and`20provides
V`20some`20suggestions
Xfor`20their`20use`20in`20large`20applications.
$ call unpack LOGNAM.DESC;1 1074794621 ""
$!
$ create 'f'
X$!
X$!`20---`20LOGNAME.COM`20---
X$!
X$!
X$!`20Create`20shareable`20logical`20name`20table`20PROJECT_FOO.
X$!`20
X$`20SET`20PROCESS/PRIVILEGES=SYSPRV
X$`20CREATE/NAME_TABLE/PROTECTION=(S:RWED,O:RWED,G:RWE,W:R)`20-
X`20`20`20`20`20`20`20`20/PARENT=LNM$SYSTEM_DIRECTORY/LOG`20`20PROJECT_FOO
X$!
X$!
X$!`20Associate`20some`20ACLs`20with`20the`20table`20PROJECT_FOO.`20`20Note:
V`20
X$!`20the`20security`20event`20alarm`20ACL`20does`20not`20work`20as`20of`20VMS
V`205.5-2.
X$!
X$`20SET`20ACL/OBJECT=LOGICAL_NAME_TABLE`20/ACL=`20-
X`20`20`20`20`20`20`20`20`20(ID=`5B*,*`5D`20,`20ACCESS=WRITE+DELETE)`20PROJECT_
VFOO
X$`20SET`20ACL/OBJECT=LOGICAL_NAME_TABLE`20/ACL=`20-
X`20`20`20`20`20`20`20`20`20(ALARM_JOURNAL=SECURITY,`20ACCESS=WRITE+DELETE+SUCC
VESS)`20PROJECT_FOO
X$!
X$!
X$!`20Look`20at`20process`20and`20system`20logical`20name`20table`20directories
V`20
X$!`20to`20see`20the`20table`20we`20just`20created.
X$!`20
X$`20SHOW`20LOGICAL/STRUCTURE
X$!
X$!
X$!`20Define`20some`20logical`20names`20in`20table`20PROJECT_FOO.
X$!`20
X$`20DEFINE/TABLE=PROJECT_FOO`20`20SAMP_LOGICAL`20`20`20"ABC123"
X$`20DEFINE/TABLE=PROJECT_FOO`20`20FOO$DEBUG`20`20`20`20`20`20"ON"
X$!
X$!
X$!`20Look`20at`20the`20logicals`20that`20we`20just`20defined
X$!`20
X$`20SHOW`20LOG/FULL/TABLE=PROJECT_FOO`20*
X$!
X$!
X$!`20Check`20the`20Ada`20version`20of`20the`20sample`20file.`20`20First`20crea
Vte`20a
X$!`20temporary`20Ada`20library`20and`20compile`20and`20link`20the`20files.
X$!`20Then`20set`20the`20logical`20name`20FOO$DEBUG`20to`20different`20values
V`20and
X$!`20run`20the`20code`20to`20see`20output.
X$!
X$`20ACS`20CREATE`20LIBRARY`20`5B.TMP_ADALIB`5D
X$`20ACS`20SET`20`20`20`20LIBRARY`20`5B.TMP_ADALIB`5D
X$`20ADA`20TRNLNM.ADA
X$`20ADA`20LOGTEST.ADA
X$`20ACS`20LINK`20LOGTEST
X$!
X$`20DEFINE/TABLE=PROJECT_FOO`20`20FOO$DEBUG`20`20`20`20`20`20"ON"
X$`20RUN`20LOGTEST
X$`20DEFINE/TABLE=PROJECT_FOO`20`20FOO$DEBUG`20`20`20`20`20`20"OFF"
X$`20RUN`20LOGTEST
X$`20DEFINE/TABLE=PROJECT_FOO`20`20FOO$DEBUG`20`20`20`20`20`20"OOOOOOPS"
X$`20RUN`20LOGTEST
X$!
X$!
X$!`20Check`20the`20FORTRAN`20version`20of`20the`20sample`20file.`20`20Compile
V`20and`20
X$!`20link`20the`20file.`20`20Then`20set`20the`20logical`20name`20FOO$DEBUG`20t
Vo`20
X$!`20different`20values`20and`20run`20the`20code`20to`20see`20output.
X$!
X$`20FORTRAN`20LOGTEST.FOR
X$`20LINK`20`20`20`20LOGTEST.OBJ
X$`20DEFINE/TABLE=PROJECT_FOO`20`20FOO$DEBUG`20`20`20`20`20`20"ON"
X$`20RUN`20LOGTEST
X$`20DEFINE/TABLE=PROJECT_FOO`20`20FOO$DEBUG`20`20`20`20`20`20"OFF"
X$`20RUN`20LOGTEST
X$`20DEFINE/TABLE=PROJECT_FOO`20`20FOO$DEBUG`20`20`20`20`20`20"OOOOOOPS"
X$`20RUN`20LOGTEST
X$!
X$!
X$!`20Clean`20up.
X$!
X$`20DEASSIGN/TABLE=LNM$SYSTEM_DIRECTORY`20PROJECT_FOO
X$`20ACS`20DELETE`20LIBRARY`20`5B.TMP_ADALIB`5D
X$`20DELETE`20LOGTEST.OBJ;*
X$`20DELETE`20LOGTEST.EXE;*
X$!
X$!
X$`20EXIT
X
X`0C
X
X`20`20`20`20`20`20`20`20PROGRAM`20LOGTEST
XC+
XC`20
XC`20`20FUNCTIONAL`20DESCRIPTION:
XC`20`20`20
XC`20`20`20`20`20`20`20This`20procedure`20calls`20the`20TRNLNM`20system`20servi
Vce`20routine`20to
XC`20`20`20`20`20`20`20translate`20the`20logical`20name`20FOO$DEBUG`20in`20the
V`20logical`20name
XC`20`20`20`20`20`20`20table`20PROJECT_FOO.`20`20A`20different`20message`20is
V`20output`20to`20the
XC`20`20`20`20`20`20`20screen`20depending`20on`20the`20current`20value`20of`20F
VOO$DEBUG.
XC`20
XC`20`20`20
XC`20`20FORMAL`20PARAMETERS:
XC`20`20`20
XC`20`20`20`20`20`20`20None.
XC`20`20`20`20`20`20`20`20
XC`20
XC`20MODIFICATION`20HISTORY:
XC`20
XC`20`20`20`20`20Date`20`20`20`7C`20`20`20`20`20Name`20`20`20`20`20`20`7C`20Des
Vcription
XC------------+---------------+------------------------------------------------
V-
XC`20`20`2001AUG92`20`20`20`20David`20Greene`20`20`20`20Initial`20creation.
XC
XC
XC-
X`20`20`20`20`20`20`20`20INCLUDE`20'($LNMDEF)'`20`20`20`20`20`20`20`20`20`20
V`20`20`20!`20SYS$TRNLNM`20parameter`20definitions
X`20`20`20`20`20`20`20`20INCLUDE`20'($SSDEF)'`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20!`20system`20service`20definitions
X
X`20`20`20`20`20`20`20`20STRUCTURE`20/ITMLST/`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20!`20SYS$TRNLNM`20item-list`20buffer
X`20`20`20`20`20`20`20`20`20`20`20`20INTEGER*2`20`20`20BUFF_LEN
X`20`20`20`20`20`20`20`20`20`20`20`20INTEGER*2`20`20`20ITEM_CODE
X`20`20`20`20`20`20`20`20`20`20`20`20INTEGER*4`20`20`20BUF_ADR
X`20`20`20`20`20`20`20`20`20`20`20`20INTEGER*4`20`20`20RET_LEN_ADR
X`20`20`20`20`20`20`20`20`20`20`20`20INTEGER*4`20`20`20END_LIST
X`20`20`20`20`20`20`20`20END`20STRUCTURE
X`20`20`20`20`20`20`20`20RECORD`20/ITMLST/`20`20`20LNM_ILIST
X
X`20`20`20`20`20`20`20`20INTEGER*4`20`20`20`20`20`20`20STATUS`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20!`20status`20return`20value
X`20`20`20`20`20`20`20`20INTEGER*4`20`20`20`20`20`20`20TRANSLATION_SIZE`20`20
V`20`20`20!`20equivalence`20string`20length
X`20`20`20`20`20`20`20`20CHARACTER*255`20`20`20LOG_NAME`20`20`20`20`20`20`20
V`20`20`20`20`20`20!`20equivalence`20string
X
X`20`20`20`20`20`20`20`20LNM_ILIST.BUFF_LEN`20`20`20`20=`20255`20`20`20`20`20
V`20`20`20`20`20!`20max`20log`20name`20length
X`20`20`20`20`20`20`20`20LNM_ILIST.ITEM_CODE`20`20`20=`20LNM$_STRING
X`20`20`20`20`20`20`20`20LNM_ILIST.BUF_ADR`20`20`20`20`20=`20%LOC(LOG_NAME)
X`20`20`20`20`20`20`20`20LNM_ILIST.RET_LEN_ADR`20=`20%LOC(TRANSLATION_SIZE)
X`20`20`20`20`20`20`20`20LNM_ILIST.END_LIST`20`20`20`20=`200
X
X
X`20`20`20`20`20`20`20`20CALL`20SYS$TRNLNM`20(`200,'PROJECT_FOO','FOO$DEBUG',,L
VNM_ILIST`20)
X
X
X`20`20`20`20`20`20`20`20IF`20(`20LOG_NAME(1:TRANSLATION_SIZE)`20.EQ.`20'ON'
V`20)`20THEN
X`20`20`20`20`20`20`20`20`20`20`20`20TYPE`20*,`20'`20Now`20inside`20module`20LO
VGTEST`20'
X
X`20`20`20`20`20`20`20`20ELSE`20IF`20(`20LOG_NAME(1:TRANSLATION_SIZE)`20.EQ.
V`20'OFF'`20)`20THEN
X`20`20`20`20`20`20`20`20`20`20`20`20TYPE`20*,`20'`20Doing`20other`20useful`20w
Vork'
X
X`20`20`20`20`20`20`20`20ELSE
X`20`20`20`20`20`20`20`20`20`20`20`20TYPE`20*,`20`20'Logical`20name`20FOO$DEBUG
V`20not`20set`20properly.`20'
X`20`20`20`20`20`20`20`20`20`20`20`20WRITE`20(6,`2010)`20LOG_NAME
X10`20`20`20`20`20`20`20`20`20`20FORMAT`20('`20Logname`20translation:`20`20`20
V`20`20`20',`20A<TRANSLATION_SIZE>)
X
X`20`20`20`20`20`20`20`20END`20IF
X
X`20`20`20`20`20`20`20`20END
X
X`0C
X
Xwith`20TEXT_IO;
Xwith`20TRNLNM;
Xprocedure`20LOGTEST`20is
X`20
X--`20+
X--
X--`20`20FUNCTIONAL`20DESCRIPTION:
X--
X--`20`20`20`20`20`20This`20procedure`20is`20an`20example`20of`20using`20the
V`20interface`20routine`20
X--`20`20`20`20`20`20(procedure`20TRNLNM.ADA)`20to`20call`20the`20logical`20nam
Ve`20translation`20
X--`20`20`20`20`20`20system`20service`20to`20translate`20the`20logical`20name
V`20FOO$DEBUG`20in`20
X--`20`20`20`20`20`20the`20shareable`20logical`20name`20table`20PROJECT_FOO.
V`20`20A`20different`20
X--`20`20`20`20`20`20message`20is`20output`20to`20the`20screen`20depending`20on
V`20the`20current`20
X--`20`20`20`20`20`20value`20of`20FOO$DEBUG.
X--
X--
X--`20`20FORMAL`20PARAMETERS:
X--
X--`20`20`20`20`20`20None.
X--
X--
X--`20MODIFICATION`20HISTORY:
X--
X--`20`20`20`20`20Date`20`20`20`7C`20`20`20`20`20Name`20`20`20`20`20`20`7C`20De
Vscription
X--------------+---------------+-----------------------------------------------
V--
X--`20`20`2001AUG92`20`20`20`20David`20Greene`20`20`20`20Initial`20creation.
X--
X--
X--`20-
X`20
X`20`20`20`20LOG_TRANSLATION`20`20`20:`20string`20(1..255)`20:=`20(others`20=>
V`20'`20');
X`20`20`20`20LOGICAL_NAME`20`20`20`20`20`20:`20constant`20string`20:=`20"FOO$DE
VBUG";
X`20`20`20`20TABLE_NAME`20`20`20`20`20`20`20`20:`20constant`20string`20:=`20"PR
VOJECT_FOO";
X`20`20`20`20TSIZE`20`20`20`20`20`20`20`20`20`20`20`20`20:`20short_integer`20
V`20`20:=`200;
X`20
Xbegin
X`20`20`20`20TRNLNM`20(`20LOG_NAME`20`20`20`20`20`20`20`20`20`20=>`20`20LOGICAL
V_NAME,
X`20`20`20`20`20`20`20`20`20`20`20`20`20LOG_TABLE`20`20`20`20`20`20`20`20`20=>
V`20`20TABLE_NAME,
X`20`20`20`20`20`20`20`20`20`20`20`20`20TRANSLATION`20`20`20`20`20`20`20=>`20
V`20LOG_TRANSLATION,
X`20`20`20`20`20`20`20`20`20`20`20`20`20TRANSLATION_SIZE`20`20=>`20`20TSIZE`20)
V;
X`20
X`20`20`20`20if`20(LOG_TRANSLATION(`201..integer(TSIZE))`20=`20"ON"`20)`20then
X`20`20`20`20`20`20`20`20TEXT_IO.PUT_LINE`20`20`20`20("Now`20inside`20module
V`20LOGTEST");
X`20
X`20`20`20`20elsif`20(LOG_TRANSLATION(`201..integer(TSIZE))`20=`20"OFF"`20)`20t
Vhen
X`20`20`20`20`20`20`20`20TEXT_IO.PUT_LINE`20`20`20`20("Doing`20other`20useful
V`20work.");
X`20
X`20`20`20`20else
X`20`20`20`20`20`20`20`20TEXT_IO.PUT_LINE`20`20`20`20("Logical`20name`20FOO$DEB
VUG`20not`20set`20properly.");
X`20`20`20`20`20`20`20`20TEXT_IO.PUT`20`20`20`20`20`20`20`20`20("Logname`20tran
Vslation:`20`20`20`20`20`20`20`20");
X`20`20`20`20`20`20`20`20TEXT_IO.PUT_LINE`20`20`20`20(LOG_TRANSLATION(`201..int
Veger(TSIZE))`20);
X`20`20`20`20end`20if;
X`20
Xend`20LOGTEST;
X
X`0C
X
Xwith`20CONDITION_HANDLING;
Xwith`20STARLET;
Xwith`20SYSTEM;
Xwith`20TEXT_IO;`20
X`20
Xprocedure`20TRNLNM`20`20(`20LOG_NAME`20`20`20`20`20`20`20`20`20`20:`20in`20
V`20string;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20LOG_TABLE`20`20
V`20`20`20`20`20`20`20:`20in`20`20string;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20TRANSLATION`20`20
V`20`20`20`20`20:`20out`20string;
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20TRANSLATION_SIZE
V`20`20:`20out`20SHORT_INTEGER`20)`20is
X--`20++
X--
X--`20FUNCTIONAL`20DESCRIPTION:
X--
X--`20`20`20`20`20`20This`20procedure`20provides`20an`20Ada`20interface`20to
V`20the`20VMS`20Translate
X--`20`20`20`20`20`20Logical`20Name`20system`20service`20routine.`20`20The`20ca
Vlling`20routine`20passes`20in
X--`20`20`20`20`20`20the`20logical`20name`20to`20be`20translated,`20and`20the
V`20logical`20name`20table`20in
X--`20`20`20`20`20`20which`20the`20logical`20name`20resides.`20`20The`20equival
Vence`20string`20and`20its
X--`20`20`20`20`20`20length`20in`20bytes`20is`20returned.`20`20
X--`20
X--`20`20`20`20`20`20If`20for`20any`20reason`20the`20logical`20name`20cannot
V`20be`20successfully
X--`20`20`20`20`20`20translated,`20the`20translation`20string`20is`20set`20to
V`20be`20all`20ASCII
X--`20`20`20`20`20`20spaces`20and`20the`20equivalence`20string`20length`20is
V`20set`20to`20zero.
X--`20`20`20`20`20`20Additionally,`20an`20error`20message`20is`20output`20to
V`20SYS$OUTPUT.
X--
X--`20FORMAL`20PARAMETERS:
X--
X--`20`20`20`20`20`20LOGNAME:
X--`20`20`20`20`20`20`20`20`20`20The`20logical`20name`20to`20be`20translated.
X--
X--`20`20`20`20`20`20LOG_TABLE:
X--`20`20`20`20`20`20`20`20`20`20The`20logical`20name`20table`20that`20contains
V`20the`20logical`20name.
X--
X--`20`20`20`20`20`20TRANSLATION:
X--`20`20`20`20`20`20`20`20`20`20The`20logical`20name`20equivalence`20string.
X--
X--`20`20`20`20`20`20TRANSLATION_SIZE:
X--`20`20`20`20`20`20`20`20`20`20The`20length`20of`20the`20logical`20name`20equ
Vivalance`20string`20in`20bytes.
X--
X--
X--`20MODIFICATION`20HISTORY:
X--
X--`20`20`20`20`20`2001AUG92`20`20`20`20`20David`20N.`20Greene`20`20`20`20`20
V`20`20`20`20Initial`20creation.
X--
X--
X--`20--
X`20
X`20`20`20`20subtype`20SHORT_STRING`20is`20string`20(1..255);`20`20`20--`20max
V`20size`20of`20a`20logical`20name
X`20`20`20`20NAME_BUFFER`20`20`20`20`20:`20SHORT_STRING;
X`20`20`20`20NAME_SIZE`20`20`20`20`20`20`20:`20SHORT_INTEGER;
X`20`20`20`20RETURN_STATUS`20`20`20:`20CONDITION_HANDLING.COND_VALUE_TYPE;
X`20
X--`20Pragma`20VOLATILE`20specifies`20that`20every`20read`20is`20to`20the`20var
Viables`20in
X--`20memory,`20not`20to`20local`20copy.
X`20
X`20`20`20`20pragma`20VOLATILE`20(NAME_BUFFER);
X`20`20`20`20pragma`20VOLATILE`20(NAME_SIZE);
X`20
X--`20Initialized`20item`20list.`20`20Zeros`20in`20last`20element`20indicate
V`20the`20end`20of`20list.
X`20
X`20`20`20`20ITEM_LIST`20`20`20:`20STARLET.ITEM_LIST_TYPE`20(1..2)`20:=
X`20`20`20`20`20`20`20`20(1`20=>`20(BUF_LEN`20`20`20`20`20`20=>`20NAME_BUFFER'l
Vength,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20ITEM_CODE`20`20`20`20=>`20STARLET
V.LNM_STRING,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20BUF_ADDRESS`20`20=>`20NAME_BUFFER
V'address,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20RET_ADDRESS`20`20=>`20NAME_SIZE'a
Vddress),
X`20`20`20`20`20`20`20`20`202`20=>`20(BUF_LEN`20`20`20`20`20`20=>`200,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20ITEM_CODE`20`20`20`20=>`200,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20BUF_ADDRESS`20`20=>`20SYSTEM.ADDR
VESS_ZERO,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20RET_ADDRESS`20`20=>`20SYSTEM.ADDR
VESS_ZERO)`20);
X
Xbegin
X`20
X`20`20`20`20STARLET.TRNLNM`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--`20call`20translate`20logname`20service
X`20`20`20`20`20`20`20STATUS`20=>`20RETURN_STATUS,
X`20`20`20`20`20`20`20TABNAM`20=>`20LOG_TABLE,
X`20`20`20`20`20`20`20LOGNAM`20=>`20LOG_NAME,
X`20`20`20`20`20`20`20ITMLST`20=>`20ITEM_LIST);
X`20
X`20`20`20`20if`20not`20CONDITION_HANDLING.SUCCESS`20(`20RETURN_STATUS`20)`20th
Ven
X`20`20`20`20`20`20`20TEXT_IO.PUT`20("Bad`20return`20status:`20Failed`20to`20tr
Vanslate`20logical`20name`20");
X`20`20`20`20`20`20`20TEXT_IO.PUT`20(LOG_NAME);
X`20`20`20`20`20`20`20TEXT_IO.NEW_LINE;
X`20`20`20`20`20`20`20TRANSLATION`20`20`20`20`20`20`20:=`20(others`20=>`20'`20'
V);`20`20`20`20--`20set`20string`20to`20spaces
X`20`20`20`20`20`20`20TRANSLATION_SIZE`20`20:=`200;`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20--`20set`20length`20to`20zero
X`20
X`20`20`20`20else`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`20`20`20`20`20--`20call`20was`20successful
X`20`20`20`20`20`20`20TRANSLATION(1..integer(NAME_SIZE))`20:=`20NAME_BUFFER(1..
Vinteger(NAME_SIZE));
X`20`20`20`20`20`20`20TRANSLATION_SIZE`20:=`20NAME_SIZE;
X`20`20`20`20end`20if;
X`20
Xend`20TRNLNM;
$ call unpack LOGNAM.DSJ;1 2052654402 ""
$ v=f$verify(v)
$ exit
