And here's a bit of the collection that I've been using (based on some REXX code I found in MVS forums):
[pre]
%let tiot_pointer = %sysfunc(peek(%sysfunc(peek(540))+12));
%let job_name = %sysfunc(peekc(&tiot_pointer,8));
%let proc_step = %sysfunc(peekc(&tiot_pointer+8,8));
%let step_name = %sysfunc(peekc(&tiot_pointer+16,8));
%let jscb_pointer = %sysfunc(peek(%sysfunc(peek(540))+180));
%let pgm_name = %sysfunc(peekc(&jscb_pointer+360,8));
%let ssib_pointer = %sysfunc(peek(&jscb_pointer+316));
%let job_id = %sysfunc(peekc(&ssib_pointer+12,8));
%let job_number = %sysfunc(peekc(&ssib_pointer+15,5));
%let jct_pointer = %sysfunc(peek(&jscb_pointer+260));
%let job_class = %sysfunc(peekc(&jct_pointer+47,1));
%let msg_class = %sysfunc(peekc(&jct_pointer+22,1));
%let act_pointer = 00%sysfunc(peekc(&jct_pointer+56,3),hex6.);
%let act_pointer = %sysfunc(inputn(&act_pointer,hex8.));
%let pgmr_field = %sysfunc(peekc(&act_pointer+24,20));
%let system_id = %sysfunc(peek(%sysfunc(peek(16,4))+196,4));
%let system_id = %sysfunc(peekc(&system_id+16,4));
%let user_id = %sysfunc(peek(%sysfunc(peek(548))+108));
%let user_id = %sysfunc(peekc(&user_id+192,8));
[/pre]
Can't tell whether they're still valid with the latest and greatest of z/OS releases (we are at z/OS 1.10 now). Nor can I guarantee for the field names being super-accurate 😉