10 ! ----- GET_USERNAME.FUN ----- ! ! ----- GETS THE USERNAME OF THE CALLING PROCESS ----- ! ! ---------- PASSED: ---------- ! ! ! ! ---------- RETURNED: ---------- ! ! GET_USERNAME (LONG) Function returns exit status from VMS ! system service (SS$_NORMAL if success) ! ! RETURNED_USERNAME (STRING) If function returned SS$_NORMAL, this ! field will contain the Username (0-12 ! characters, with no trailing blanks) ! ! ----- Last Change 05/01/89 by Brian Lomasky ----- ! ! ----- Teradyne, Inc., 179 Lincoln Street, Boston, MA 02111 ----- ! ----- (617) 482-2706, x3259 ----- ! ! ----- Neither Brian Lomasky nor Teradyne, Inc. implicitly or ----- ! ----- explicitly implies this program is usable in any way. ----- ! ----- This program is released to the public domain in an ----- ! ----- "AS-IS" condition. ----- ! ! ----- Restrictions: ----- ! ----- 1) Requires VAX BASIC V2.4 or later. ----- ! FUNCTION LONG GET_USERNAME(STRING RETURNED_USERNAME) EXTERNAL LONG CONSTANT JPI$_USERNAME ! USERNAME FOR $GETJPIW EXTERNAL LONG CONSTANT SS$_ABORT ! ABORT STATUS EXTERNAL LONG CONSTANT SS$_NORMAL ! NORMAL SUCCESS STATUS RECORD JPIBUF ! $GETJPIW RECORD WORD BUFFER_LENGTH1 WORD ITEM_CODE1 LONG BUFFER_ADDRESS1 LONG RETURN_LENGTH_ADDRESS1 LONG LIST_TERMINATOR END RECORD JPIBUF DECLARE JPIBUF JPIITEM ! EQUATE $GETJPIW RECORD DECLARE LONG SYS_STATUS ! VMS EXIT STATUS DECLARE WORD USERNAME_LENGTH ! LENGTH OF USERNAME EXTERNAL LONG FUNCTION SYS$GETJPIW ! GET JOB INFORMATION + WAIT ! ----- MAPPED VARIABLES FOR $GETJPI SYSTEM SERVICE ----- MAP (GUSRNAM) STRING USERNAME = 12% ! USERNAME JPIITEM::BUFFER_LENGTH1 = 12% ! STORE DATA FOR $GETJPIW JPIITEM::ITEM_CODE1 = JPI$_USERNAME JPIITEM::BUFFER_ADDRESS1 = LOC(USERNAME) JPIITEM::RETURN_LENGTH_ADDRESS1 = LOC(USERNAME_LENGTH) JPIITEM::LIST_TERMINATOR = 0% SYS_STATUS = SYS$GETJPIW(, , , JPIITEM, , , ) GET_USERNAME = SYS_STATUS ! STORE STATUS TO BE RETURNED EXIT FUNCTION IF SYS_STATUS <> SS$_NORMAL IF USERNAME = STRING$(12%, 0%) THEN GET_USERNAME = SS$_ABORT! ABORT IF NULL USERNAME ELSE ! ----- RETURN USERNAME (WITH NO TRAILING BLANKS) ----- RETURNED_USERNAME = LEFT(USERNAME, USERNAME_LENGTH) END IF END FUNCTION