I think it is local to Kirk. CDSECT or EDCDSECT is part of the C/C++ compiler package. Search for it in the User's or Programming Guide -- I forget which. Works decently although less than perfectly wonderfully.
- Good for MVS data areas because while the result may not be pretty, it is technically correct and so perfectly usable. You can tweak the results if you wish. - Not as good IMHO for your own records because the result may look like junk and therefore be hard to understand. If you tweak it then if your record changes you have to re-tweak it after re-running CDSECT. It tends to do a funky job on redefinitions. Working untested from memory, if you code A DS C B DS C C DS C ORG *-3 X DS C Y DS C Z DS C Probably the most meaningful C equivalent would be something like union { struct { char a; char b; char b; }; struct { char x; char y; char z; }; }; that is, you probably think of it as two alternative 3-byte areas. But CDSECT tends to do union { char a; char x; }; union { char b; char y; }; union { char c; char z; }; that is, as three areas each of which has two alternative names. Charles -----Original Message----- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of Barkow, Eileen Sent: Friday, February 9, 2018 12:52 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Silly C problem adding hex 6C-psa.h - edcdsect I do not see edcdsect.rexx anywhere. I do not think that we have rexx installed on Unix. -----Original Message----- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of Seymour J Metz Sent: Friday, February 09, 2018 3:26 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Silly C problem adding hex 6C-psa.h - edcdsect First, he didn't provide the script, only illustrated its use. Second CLIST and REXX are two very different languages. Kirk was showing the OMVS commands to use edcdsect.rexx. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 ________________________________________ From: IBM Mainframe Discussion List <IBM-MAIN@listserv.ua.edu> on behalf of Barkow, Eileen <ebar...@doitt.nyc.gov> Sent: Friday, February 9, 2018 8:40 AM To: IBM-MAIN@listserv.ua.edu Subject: Re: Silly C problem adding hex 6C-psa.h - edcdsect How do you run this script? I tried it under UNIX and MVS as a rexx clist and get all kinds of errors. $ ccsect psa.h:: ccsect 1: FSUM7351 not found edcdsect.rexx: ccsect 4: FSUM7351 not found $ -----Original Message----- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of Kirk Wolf Sent: Friday, February 09, 2018 7:58 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: Silly C problem adding hex 6C It is better IMO to use EDCDSECT and create C header files for the system DSECTS (PSA, ASCB, ASXB, etc), then you don't have to hard code offsets into your code. We have a little rexx shell script that we have been using for a dozen years that invokes the assembler + EDCDSECT. It is simple to add recipes to your Makefile for whatever system headers you want. For example: psa.h: echo " IHAPSA " > asm_temp.s echo " END" >> asm_temp.s edcdsect.rexx asm_temp.s > psa.h Then you can do: #include "psa.h" struct psa* pPSA = (struct psa*)0; struct ascb* pASCB = (struct ascb*)pPSA->psaaold; ... EDCDSECT is not perfect, but it generally works pretty well. Kirk Wolf Dovetailed Technologies http://secure-web.cisco.com/12TWE8dXdbRVXzcJYbEA-byAvN6cSXeP1rhfnhh7Pa0wEeRF 7mWSLoZ6goOOhN-t5hX_thEGjwBDQ5gSI8NqWhi6LjidYzSAXzKkKFzZw3nd2Y0Js2LoiFS29Ylj bOBrGQX0f5bWALkUNdJIOmT6GJgUYeSW61vUrayUrir72UXGxNNWqdq9kYlKXrQjKMr_yqb8lasC wZfSutQl221odQZH4QvP-FhM4k39wet0AE_TrUe5bv9Px9RQd2eHVSYBdtn0PQ17RvquapDqCGAn vV2mr66eC9N9mIBW2tOH7-hg7A6bAgssqsCVXtCObu9iRexaPkE_5NNvnjIuly_-Go7oOwjv6eUz 9PN0PhYlIzIHKBfXfeEOACeMlYo6mW72dXK972uIiNQmgc9gGw3YjN9KTaRfxUdIMuDiFPkRvblp Zt-NOXRidkWltUZ8BPzHr/http%3A%2F%2Fdovetail.com%0D%0A%0D%0AOn%20Fri%2C%20Feb %209%2C%202018%20at%206%3A02%20AM%2C%20Bernd%20Oppolzer%20%3Cbernd.oppolzer% 40t-online.de> wrote: > More simple ... the pointers don't need to be int pointers; char > pointers are just as good: > > > #include <stdlib.h> > #include <stdio.h> > #include <string.h> > #include <errno.h> > > int main (int argc, char **argv) > > { > char *PSA; > char *ASCB; > char *ASXB; > char *ASXBP; > char *JNPI; > char jobname[9]; > > PSA = (char *) 0x224; /* address of PSAAOLD */ > ASCB = (char *) (*PSA); > printf ("ASCB = %p\n", ASCB); > ASXB = ASCB + 0x6c; > printf ("ASXB = %p\n", ASXB); > ASXBP = (char *) (*ASXB); > printf ("ASXBP = %p\n", ASXBP); > JNPI = ASXBP + 0xC0; > printf ("JNPI = %p\n", JNPI); > memcpy (jobname, JNPI, 8); > jobname [8] = 0x00; > printf ("jobname = %s\n", jobname); } > > > > Am 09.02.2018 um 12:57 schrieb Bernd Oppolzer: > >> This is a slightly modified version of jn2.c: >> >> #include <stdlib.h> >> #include <stdio.h> >> #include <string.h> >> #include <errno.h> >> >> int main (int argc, char **argv) >> >> { >> int *PSA; >> int *ASCB; >> int *ASXB; >> int *ASXBP; >> int *JNPI; >> char jobname[9]; >> >> PSA = (int *) 0x224; /* address of PSAAOLD */ >> ASCB = (int *) *PSA; >> printf ("ASCB = %p\n", ASCB); >> ASXB = (int *) ((char *) ASCB + 0x6c); >> printf ("ASXB = %p\n", ASXB); >> ASXBP = (int *) *ASXB; >> printf ("ASXBP = %p\n", ASXBP); >> JNPI = (int *) ((char *) ASXBP + 0xC0); >> printf ("JNPI = %p\n", JNPI); >> memcpy (jobname, JNPI, 8); >> jobname [8] = 0x00; >> printf ("jobname = %s\n", jobname); >> } >> >> a) pure ANSI C >> >> b) some intermediate steps and variables removed >> >> c) there is a subtle error in the original version: >> the terminating hex zero in jobname is missing. I added it. >> >> Caution: untested ... >> >> Kind regards >> >> Bernd >> >> >> >> Am 09.02.2018 um 12:41 schrieb Bernd Oppolzer: >> >>> .. in fact, the original source contains some parts, >>> which are not ANSI C, for example cout (which is C++) >>> and iostream.h (which is also part of the C++ library). >>> >>> Because I don't like C++ ... and the program claims to be >>> a C program, I would (as a QA person) force the coder to >>> eliminate these parts of the code. >>> >>> Kind regards >>> >>> Bernd >>> >>> >>> Am 09.02.2018 um 12:32 schrieb Bernd Oppolzer: >>> >>>> Am 09.02.2018 um 07:45 schrieb Elardus Engelbrecht: >>>> >>>>> Bernd Oppolzer wrote: >>>>> >>>>> To be more pedantic, use additional parantheses: >>>>>> ASXB = (int *) (((char *) ASCB) + 0x6c); >>>>>> >>>>> I C ( "I see" ;-D ) >>>>> >>>>> Seriously, I find this whole thread very interesting. >>>>> >>>>> Just a question please and please excuse my ignorance. >>>>> >>>>> Are these discussions about C or C++? >>>>> >>>>> Because: >>>>> >>>>> OP said 'crawl my way around C/C++' >>>>> Shmuel and Paul are talking about C and Charles talked about C++ (for >>>>> his 2 templates) >>>>> >>>>> Feel free to teach me so I can C... >>>>> >>>>> TIA! >>>>> >>>>> Groete / Greetings >>>>> Elardus Engelbrecht >>>>> >>>>> >>>>> >>>> I went back to the original post which started the thread; >>>> the OP said "C / C++", but posted a C program (called jn2.c), >>>> so I guess, the discussion should in fact be about C. >>>> >>>> a) It's all pure C syntax >>>> b) with C++, the filetype would have been "cpp" >>>> >>>> HTH, kind regards >>>> >>>> Bernd >>>> >>>> ---------------------------------------------------------------------- >>>> For IBM-MAIN subscribe / signoff / archive access instructions, >>>> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN >>>> >>>> >>> >> ---------------------------------------------------------------------- >> For IBM-MAIN subscribe / signoff / archive access instructions, >> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN >> >> > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN ________________________________ This e-mail, including any attachments, may be confidential, privileged or otherwise legally protected. It is intended only for the addressee. If you received this e-mail in error or from someone who was not authorized to send it to you, do not disseminate, copy or otherwise use this e-mail or its attachments. Please notify the sender immediately by reply e-mail and delete the e-mail from your system. ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN