[Default] On 14 Jan 2018 09:18:26 -0800, in bit.listserv.ibm-main
[email protected] (Kirk Wolf) wrote:

>Uggh.....no wonder people complain about C/C++ :-)
>
>Much better to use the IBM EDCDSECT utility to map the DSECTs that you want
>to use into C structs.

Is there the equivalent utility to map DSECTs to COBOL copy members?

Clark Morris
>We wrote a little REXX wrapper for it that I posted here once so that you
>can use edcdsect as a shell command in a Makefile:
>
>ihapsa.h:
>echo "  IHAPSA" > asm_temp.s
>echo "  END" >> asm_temp.s
>edcdsect.rexx asm_temp.s > ihapsa.h
>
>....
>
>
>Kirk Wolf
>Dovetailed Technologies
>http://dovetail.com
>
>On Sat, Jan 13, 2018 at 9:33 AM, John McKown <[email protected]>
>wrote:
>
>> ?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
>>
>
>----------------------------------------------------------------------
>For IBM-MAIN subscribe / signoff / archive access instructions,
>send email to [email protected] with the message: INFO IBM-MAIN

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

Reply via email to