	.TITLE	SETUSER		Set Up Process Username
	.IDENT	/0-01/
;++
;
;  TITLE:	SETUSER		Set Up Process Username
;
;  VERSION:	0-01
;
;  FACILITY:	General Utility Programs
;
;  ABSTRACT:
;
;	This program calls LIB$GET_FOREIGN to get a new username
;	and then changes mode to KERNEL.  In KERNEL mode, it
;	changes CTL$T_USERNAME and JIB$T_USERNAME.
;
;  ENVIRONMENT:	Runs at any access mode - not AST re-entrant
;
;  AUTHOR:	Edward B. Hamrick, CREATION DATE: 30-AUG-1982
;
;  MODIFIED BY:
;
;  01	- original
;
;--

	$JIBDEF
	$PCBDEF

	.PSECT	$DATA,NOEXE

NAME:	.ASCID	/            /

PRMT:	.ASCID	/Username: /

	.PSECT	$CODE,NOWRT

	.ENTRY	SETUSER,^M<>

;
; Read in the new username
;

	PUSHAL	PRMT
	PUSHAL	NAME
	CALLS	#2,G^LIB$GET_FOREIGN
	BLBC	R0,99999$

;
; Change mode to KERNEL to access the system tables
;

	$CMKRNL_S	KERNEL

99999$:	RET

;
; Modify the kernel tables
;

	.ENTRY	KERNEL,^M<R2,R3,R4,R5,R6>

;
; Modify the first username field
;

	MOVC5	#12,@NAME+4,#32,#12,G^CTL$T_USERNAME

;
; Modify the JIB username field
;

	MOVL	G^SCH$GL_CURPCB,R6		; Get the current PCB
	MOVL	PCB$L_JIB(R6),R6		; Get the current JIB

	MOVC5	#12,@NAME+4,#32,#12,JIB$T_USERNAME(R6)

	MOVZWL	#SS$_NORMAL,R0			; Successful
	RET					;   return

	.END	SETUSER
