Re: CATTR usage
Thanks I seen it with METAL C using far pointers The only reason I can imagine the use of class is for using the Q con to get an offset As I think Q con only supports DSECT DXD or sections in class names Thanks > On Nov 22, 2020, at 12:04 PM, Jonathan Scott > wrote: > > Ref: Your note of Sun, 22 Nov 2020 11:35:41 -0500 > > Joe Reichman writes: >> Asking a few questions to see I understand the usage of CATTR >> ... > > CATTR is managed in the same way as other location counters such > as CSECT and LOCTR. > > With GOFF, each new CSECT statement starts an element whose > class name will be filled in later as B_TEXT and whose section > name is the same as the CSECT name. It also generates a symbol > definition associating the CSECT name as an external name with > the start of the element. Coding CATTR starts a new element > whose class name is given by the name field and which also > belongs the current section (given by the current CSECT name). > Do not attempt to specify class name B_TEXT explicitly for any > purpose as this is not supported by HLASM and will probably > cause errors at bind time. > > You can resume any existing location counter in the usual way > (for example by a CSECT or LOCTR statement with the original > name) to switch away from that element, and you can use CATTR > again with the same name to resume the element. > > Uses for CATTR are rare, as it is primarily used to support > compatibility with classes generated by compilers for special > purposes. I certainly wouldn't recommend it in this case. > > All normal (sequential) I/O processing can be performed in > 31-bit mode nowadays. The only aspect which requires 24-bit > storage is the DCB. Since the DCB should be in dynamic storage > rather than part of the program, that means you should acquire > the relevant storage with LOC=BELOW. Exit addresses such as > EODAD= should be specified via a DCBE to support 31-bit mode. > > If you really need separate loadable sections in 24-bit and > 31-bit storage, just use a separate CSECT and specify the binder > option RMODE(SPLIT). > > Jonathan Scott, HLASM > IBM Hursley, UK
Re: CATTR usage
Ref: Your note of Sun, 22 Nov 2020 11:35:41 -0500 Joe Reichman writes: > Asking a few questions to see I understand the usage of CATTR > ... CATTR is managed in the same way as other location counters such as CSECT and LOCTR. With GOFF, each new CSECT statement starts an element whose class name will be filled in later as B_TEXT and whose section name is the same as the CSECT name. It also generates a symbol definition associating the CSECT name as an external name with the start of the element. Coding CATTR starts a new element whose class name is given by the name field and which also belongs the current section (given by the current CSECT name). Do not attempt to specify class name B_TEXT explicitly for any purpose as this is not supported by HLASM and will probably cause errors at bind time. You can resume any existing location counter in the usual way (for example by a CSECT or LOCTR statement with the original name) to switch away from that element, and you can use CATTR again with the same name to resume the element. Uses for CATTR are rare, as it is primarily used to support compatibility with classes generated by compilers for special purposes. I certainly wouldn't recommend it in this case. All normal (sequential) I/O processing can be performed in 31-bit mode nowadays. The only aspect which requires 24-bit storage is the DCB. Since the DCB should be in dynamic storage rather than part of the program, that means you should acquire the relevant storage with LOC=BELOW. Exit addresses such as EODAD= should be specified via a DCBE to support 31-bit mode. If you really need separate loadable sections in 24-bit and 31-bit storage, just use a separate CSECT and specify the binder option RMODE(SPLIT). Jonathan Scott, HLASM IBM Hursley, UK
CATTR usage
Asking a few questions to see I understand the usage of CATTR Would I uses a CATTR assembler instruction if for example My program CSECT is RMODE 31 And if I am doing I/O in 24 bit mode I would define a class rmode 24 Would the binder take the piece of code and move it to rmode 24 more so how do I revert to the original class name which I think is B_TEXT Would that be by coding CATTR without a name operand ? thanks