Found this somewhere on the intertubes:
=====
DATA ZZGETUSR
(Drop=TIOTPTR JSCBPTR SSIBPTR JCTPTR ACTPTR
Label='User information on MVS job');
LENGTH PROGRAMR $20 JOBNAME $8 PROCSTEP $8
STEPNAME $8 PROGNAME $8 JOBNUMBR $8
USERID $8
;
TIOTPTR = peek(peek(540) + 12);
JOBNAME = peekc(TIOTPTR, 8);
PROCSTEP = peekc(TIOTPTR+8, 8);
STEPNAME = peekc(TIOTPTR+16, 8);
JSCBPTR = peek(peek(540) + 180);
PROGNAME = peekc(JSCBPTR + 360, 8);
SSIBPTR = peek(JSCBPTR + 316);
JOBNUMBR = peekc(SSIBPTR + 12, 8);
JCTPTR = peek(JSCBPTR + 260);
JOBCLASS = peekc(JCTPTR + 47, 1);
MSGCLASS = peekc(JCTPTR + 22, 1);
ACTPTR = INPUT('00'X || peekc(JCTPTR + 56, 3), PIB4.);
PROGRAMR = peekc(ACTPTR + 24, 20);
SYSTEMID = PEEKC(PEEK(peek(16, 4) + 196, 4) + 16, 4);
USERID = peekc(peek(peek(548) + 108) + 192, 8);
put (_character_) (=/);
run;
=====