On Thu, 19 Aug 2010 08:48:34 -0600, Paul Gilmartin wrote:
>> If for instance, a DCB crosses base registers and the DCB fields are to be
>> referenced via a based USING on the IHADCB DSECT, the difference between
>> the two matters. It works only if the single USING statement is employed.
>> I have run into this problem during maintenance when data areas are added
>> and a based-upon area then crosses the USING ranges.
>>
>I don't understand.  More information?
>
Given:
         USING DSA,R13,R12
or:
         USING DSA,R13
         USING DSA+4096,R12
with:
         USING (IHADCB,IHADCB+DCBLNGQS),SYSPRINT
         MVC   DCBDDNAM,=CL8'SYSOUT'
...
DSA      DSECT
...
SYSPRINT DCB   ... (generated DCB starts at DSA+4088)
         DCBD  ...

The first USING case will assemble the MVC correctly whereas the second will
generate an error. This is because the based USING will have a range of only
8 bytes in the second case since it starts 8 bytes before the end of the
USING range. The implicit USING range end is 4096 times the number of
registers from the start. Based USING ranges are the intersection between
the range of the based USING and the range upon which it is based.

David

Reply via email to