Range of a labeled USING instruction

For instructions with 12-bit displacements, the maximum range of a labeled USING instruction (called the "labeled USING range", or the "USING range") is the 4096 bytes beginning at the base address specified in the USING instruction. For long-displacement instructions, the maximum range is the addresses between (base_address-524288) and (base_address+524287).

The range for 12-bit displacements may be limited by specifying an end limit address which is less than the end of the maximum range. The range for both types of displacement may be limited by specifying lower and upper limit values.

Addresses that lie within the USING range can be converted from their implicit to their explicit base-displacement form using the designated base registers; those outside the USING range cannot be converted.

Like the ordinary USING range, the labeled USING range is the range of addresses in a control section that is associated with the base register specified in the labeled USING instruction. If the labeled USING instruction assigns more than one base register, the composite labeled USING range is the product of the number of registers specified in the labeled USING instruction and 4096 bytes. The composite labeled USING range begins at the base address specified in the labeled USING instruction. Unlike the ordinary USING range, however, you cannot specify separate labeled USING instructions to establish the same labeled USING range. For example,
IN      USING BASE,10,11
specifies a range of 8192 bytes beginning at BASE, but
IN      USING BASE,10
IN      USING BASE+4096,11
specifies a single labeled USING range of 4096 bytes beginning at BASE+4096.
You can specify the same base address in any number of labeled USING instructions. You can also specify the same base address in an ordinary USING and a labeled USING. However, unlike ordinary USING instructions that have the same base address, if you specify the same base address in an ordinary USING instruction and a labeled USING instruction, High Level Assembler does not treat the USING ranges as coinciding. When you specify an unqualified symbol in an assembler instruction, the base register specified in the ordinary USING is used by the assembler to resolve the address into base-displacement form. Here is an example of coexistent ordinary USINGs and labeled USINGs:
         USING  IHADCB,R10
SAMPLE   USING  IHADCB,R2
         MVC    DCBLRECL,SAMPLE.DCBLRECL

In this MVC instruction, the (unqualified) first operand is resolved with the ordinary USING, and the (qualified) second operand is resolved with the labeled USING.