I’m running all of this under tso but I guess that’s irrelevant Thanks
> On Jan 1, 2022, at 8:29 PM, Charles Mills <charl...@mcn.org> wrote: > > You code the minimal valid source "program" that includes the COPY member. > Something like > > MYPROG CSECT > COPY member > END > > Then you process the SYSADATA from that assembly. > > Here is a sanitized version of my job: > > //ASSEMBLE EXEC PGM=ASMA90,COND=(12,LE),REGION=2M, > // PARM='ADATA,TERM' > //SYSLIB DD DSN=CEE.SCEEMAC,DISP=SHR LE MACROS > // DD DISP=SHR,DSN=CICSTS55.CICS.SDFHMAC CICS > // DD DSN=TCPIP.SEZANMAC,DISP=SHR > // DD DISP=SHR,DSN=SYS1.MACLIB System macros > //SYSPUNCH DD DUMMY > //SYSIN DD * > EZASMF77 > END > /* > //SYSLIN DD DUMMY > //SYSADATA DD SPACE=(TRK,(15,15)),DISP=(NEW,PASS) > //SYSPRINT DD SYSOUT=* > //SYSTERM DD SYSOUT=* > //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(2,2)) > //* > //* Process the ADATA > //CZADEFBL EXEC PGM=myprogram, > // PARM=(... > // ) > //SYSADATA DD DSN=*.ASSEMBLE.SYSADATA,DISP=(OLD,DELETE) > Etc. > > Charles > > > -----Original Message----- > From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] > On Behalf Of Joseph Reichman > Sent: Saturday, January 1, 2022 5:12 PM > To: ASSEMBLER-LIST@LISTSERV.UGA.EDU > Subject: Re: Determining a group item > > I hear you only thing is there isn’t a sysadata file for the copybooks, they > are included in programs. The production programs have sysadata files. So I > would have to look for record X’0020’ esid records ? > > >> On Jan 1, 2022, at 7:56 PM, Charles Mills <charl...@mcn.org> wrote: >> >> ADATA is not "simple" but I think it is the right answer to problems of the >> general form "I have a DSECT in HLASM. I want to output equivalent >> information in another programming language." >> >> I did exactly that. I wrote a program -- good enough to be distributed as >> part of a commercial product, albeit with an "as-is" disclaimer -- that >> processed SMF record and similar DSECTs and output equivalent information in >> a proprietary schema language. SMF record DSECTs are quite complex, with >> redefinitions and symbols defined arguably incorrectly (such as integer >> fields defined as XL4 or CL4). I do not own the rights to the code or I >> would happily share it with you. >> >> I wrote it in C++ but it could have been written in assembler. (An added >> complexity was that I wanted it to be able to run in a debugger in Windows, >> so it had to deal with both endian issues and EBCDIC-ASCII in that >> situation. Also RECFM=V records, which are not very Windows-friendly.) It >> was not a trivial project, and I did not get it all right on the first try, >> but it ultimately worked well, worked more or less perfectly for what it was >> intended to do. >> >> One interesting attribute of ADATA is that you get the complete source, so >> you can include any HLASM comments appropriately in your output. >> >> I started by writing an "intelligent dump" program to display the contents >> of an ADATA file, and then refined that until it was producing the desired >> output (with the dump available as a debugging option in the finished >> program). >> >> Charles >> >> >> -----Original Message----- >> From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] >> On Behalf Of Joseph Reichman >> Sent: Thursday, December 30, 2021 3:25 PM >> To: ASSEMBLER-LIST@LISTSERV.UGA.EDU >> Subject: Re: Determining a group item >> >> You think processing adata is simpler I mean they data names are not in >> order >> >> I could get what I want with esid and offset >> Doing it from the assembler was thinking of using AREAD but I am sure you >> know better than me >> >> Thank you >> >> >> >>>> On Dec 30, 2021, at 5:41 PM, Bob Raicer <r...@raicer.com> wrote: >>> >>> I'm not clear on what you (Joseph Reichman) are attempting to >>> accomplish. If you are going to produce a Rexx program that does >>> something with symbols which appear in some form of an assembler >>> data structure, then you could do something like the example shown >>> below and (as others have suggested) subsequently process the >>> SYSADATA file with the Rexx program. >>> >>> >>> D-Loc Object Code Addr1 Addr2 Stmt Source Statement >>> 00000000 00000000 00000046 1 TEST DSECT , >>> 00000000 4040404040404040 2 X1 DC 7CL10' ' >>> 00000046 3 X2 DC 0CL20' ' >>> 00000000 00000046 4 GROUP1 EQU X1,*-X1,C'C' >>> 5 End , >>> >>> Symbol Cross Reference >>> Symbol Length Value Id Type Asm Program Defn References >>> GROUP1 70 00000000 FFFFFFFF C 4 >>> TEST 1 00000000 FFFFFFFF J 1 >>> X1 10 00000000 FFFFFFFF C C 2 4 >>> X2 20 00000046 FFFFFFFF C C 3 >>> >>> Dsect Cross Reference >>> Dsect Length Id Defn Con Member >>> TEST 00000046 FFFFFFFF 1 PRIMARY INPUT >>> >>> >>> Here is an extraction from the High Level Assembler Language >>> Reference (V1.6) regarding length attributes of symbols when the >>> "Duplication Factor" is zero: >>> >>> * A duplication factor of zero is permitted, except for literals, >>> * with the following results: >>> * >>> * - No value is assembled. >>> * >>> * - Alignment is forced according to the type of constant >>> * specified, if no length attribute is present. >>> * >>> * - The length attribute of the symbol naming the constant is >>> * established according to the implicitly or explicitly specified >>> * length. >>> >>> For reasons lost in antiquity, an explicitly specified Length value >>> must be positive, e.g., CL0' ' is invalid. >>> >>> Note that: >>> - The Length Attribute of symbol X1 is 10 (decimal) even though it >>> occupies 70 bytes. >>> >>> - The Length Attribute of symbol X2 is 20 (decimal) even though it >>> occupies zero bytes. >>> >>> - The GROUP1 equate gets you the origin location and proper length >>> of a collection of items. >>> >>> There are all kinds of quirks and inconsistencies in how the assembler >>> treats the length attributes of symbols. For example, the length >>> attribute of a DSECT (e.g., L'TEST in this coding example) is always 1 >>> even though the proper length is reflected in the DSECT Cross Reference.