;JOBNAM.SBR
;Copyright (C) 1985 by UltraSoft.
;
;Desc: returns your job name. works w/MULTI.
;
;Call: XCALL JOBNAM, name$
;
;Where: name$ = string variable to receive the job name. The job name is
; returned as 1-6 characters and a null byte. A$ must be at
; least 7 bytes in length. If the executing job is a MULTI job,
; the OWNING job's name is returned.
;
;1.0 27-Dec-85 created. /DFP
;1.1 23-Aug-86 for MULTI jobs, return owner job's name. /DFP
VMAJOR=1
VMINOR=1
OBJNAM .SBR
SEARCH SYS
SEARCH SYSSYM
.OFINI
.OFDEF COUNT, 2 ; number of arguments
.OFDEF TYPE1, 2 ; type code
.OFDEF ADDR1, 4 ; address
.OFDEF SIZE1, 4 ; size
STRING=2 ; type code for a string
PHDR -1,PV$RSM,PH$REE!PH$REU
ENTRY: CMPW COUNT(A3),#1 ; 1 argument specified?
BLT ARGERR ; no
CMPW TYPE1(A3),#STRING ; string argument specified?
BNE TYPERR ; no
CMP SIZE1(A3),#7 ; at least 7 bytes long?
BLT SIZERR ; no
GETNAM: JOBIDX ; index Job Control Block [1.1]
MOV JOBATT(A6),D6 ; get attached job index [1.1]
BEQ 10$ ; no attached job [1.1]
MOV D6,A6 ; get owner job address [1.1]
10$: LEA A1,JOBNAM(A6) ; point A1 to RAD50 job name [1.1]
MOV ADDR1(A3),A2 ; point A2 to A$
UNPACK ; unpack 1st half of job name
UNPACK ; unpack 2nd half of job name
TRIM: CMPB -(A2),#40 ; trailing space present?
BEQ TRIM ; yes - decrement line index
CLRB 1(A2) ; mark end of string w/NUL
RTN ; return