	.TITLE		DOSETUSER
;
	.LIBRARY	"SYS$LIBRARY:LIB.MLB"
	.LINK		"SYS$SYSTEM:SYS.STB" /SELECTIVE_SEARCH
	$JIBDEF					;JIB symbols
	$PCBDEF					;PCB symbols
;
	.PSECT	DATA, PIC,USR,CON,REL,LCL,SHR,NOEXE,RD,WRT
;
PROMPT:	.ASCID	/New username: /		;prompt for new username
UNAME:	.ASCID	/            /			;buffer for new username
OWNER:	.BLKL	1				;place to store owner PID
NOJIBMSG:
	.ASCID	/%SETUSER-I-JIBNOTSET, Job username not set from subprocess/
;
	.PSECT	CODE, PIC,USR,CON,REL,LCL,SHR,EXE,RD,NOWRT
;
	.ENTRY	DOSETUSER,^M<>			;main routine
;	
	MOVAL	PROMPT,-(SP)			;push address of prompt
	MOVAB	UNAME,-(SP)			;push address of buffer descr.
	CALLS	#2,G^LIB$GET_FOREIGN		;call get-foreign-command
	BLBC	R0,9$				;exit on error
	$CMKRNL_S ROUTIN=SETUSER		;go to kernel mode
	BLBC	R0,9$				;exit on error
	TSTL	OWNER				;JIB changed?
	BEQL	9$				;yes, OK
	PUSHAQ	NOJIBMSG			;else display message
	CALLS	#1,G^LIB$PUT_OUTPUT		;
	MOVZBL	#^X93,R0			;success but not SS$_NORMAL
9$:	RET					;return with final status
;
	.ENTRY	SETUSER,^M<>			;kernel-mode routine
;
	MOVC3	#12,@UNAME+4,CTL$T_USERNAME	;copy username to P1 space
	MOVL	CTL$GL_PCB,R0			;get PCB address
	MOVL	PCB$L_OWNER(R0),OWNER		;do we have an owner?
	BNEQ	9$				;yes, don't change JIB
	MOVL	PCB$L_JIB(R0),R0		;get address of JIB
	MOVC3	#12,CTL$T_USERNAME,JIB$T_USERNAME(R0)	;copy username to JIB
9$:	MOVL	#1,R0				;report success
	RET					;return from kernel mode
;
	.END	DOSETUSER			;The End!
