​Just for fun, I wrote the C code below. It does the "chain chasing" to get
some of the information mentioned in this thread. ​
​Given the responses on another thread, I'm basically abandoning the idea
of "system level C interface" routines, such as for ENQ/DEQ et al. I might
even try to get a decent handle on C++ coding for some of my UNIX stuff.

=== stuff.c ===

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdint.h>
int main(int argc, char *argv[])
{
unsigned char *psaaold;
unsigned char *psatold;
unsigned char *ascbjbni;
unsigned char *ascbjbns;
unsigned char *ascbjbn;
unsigned char *ascbcscb;
uint16_t ascbasid;
unsigned char *ascbasxb;
unsigned char *ascbassb;
unsigned char *tcbtio;
unsigned char *a;
static unsigned char jobname[9];
psaaold = *(unsigned char **)0x224; /* address of PSAAOLD */
psatold = *(unsigned char **)0x21c; /* address of PSATOLD */
if (NULL == psaaold) {
printf("PSAAOLD is NULL.\n");
} else {
ascbasid = *(uint16_t *)(psaaold + 36);
printf("ascbasid=%hu %04.4hx\n",ascbasid,ascbasid);
ascbjbni = *(unsigned char **)(psaaold + 0xac);
printf("ascbjbni=%8.8s\n",
       (NULL ==
ascbjbni) ? (unsigned char *)"**NULL**" : ascbjbni);
ascbjbns = *(unsigned char **)(psaaold + 0xb0);
printf("ascbjbns=%8.8s\n",
       (NULL ==
ascbjbns) ? (unsigned char *)"**NULL**" : ascbjbns);
ascbcscb = *(unsigned char **)(psaaold + 56);
if (NULL == ascbcscb) {
printf("ascbcscb is NULL\n");
} else {
printf("key=%8.8s cls=%8.8s step=%8.8s memnam=%8.8s\n",
       ascbcscb + 8, ascbcscb + 16, ascbcscb + 64,
       ascbcscb + 64);
}
ascbasxb = *(unsigned char **)(psaaold + 108);
if (NULL == ascbasxb) {
printf("ascbasxb is NULL\n");
} else {
printf("asxbusr8=%8.8s\n", ascbasxb + 192);
}
ascbassb = *(unsigned char **)(psaaold + 336);
if (NULL == ascbassb) {
printf("ascbassb is NULL\n");
} else {
printf
    ("assbjbni=%8.8s assbjbns=%8.8s assbjobid=%8.8s\n",
     ascbassb + 336, ascbassb + 344, ascbassb + 2352);
}
}
if (NULL == psatold) {
printf("PSATOLD is NULL\n");
} else {
tcbtio = *(unsigned char **)(psatold + 12); /* get the address of the TIOT
*/
printf("TIOT info. Jobname=%8.8s Stepname=%8.8s
Procstep=%8.8s\n",tcbtio,(tcbtio+8),(tcbtio+16));
}
}

=== example output ===

ascbasid=60 003c
ascbjbni=BUBBAZ3
ascbjbns=BPXAS
key=BPXAS    cls=BPXAS    step=         memnam=
asxbusr8=BUBBAZ
assbjbni=BUBBAZ3  assbjbns=BPXAS    assbjobid=STC02572
TIOT info. Jobname=BUBBAZ3  Stepname=*OMVSEX  Procstep=



-- 
I have a theory that it's impossible to prove anything, but I can't prove
it.

Maranatha! <><
John McKown

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to