Why would anyone use the definition of ADDR2 shown below? Why the question arose follows.
A recent problem reported to the z390 project (Don Higgins' z390 assembler project) about an invalid displacement generated in the "L 3,ADDR3" instruction shown below. The problem boiled down to a z390 error processing the statement "ADDR2 DC A(DWD+DWD)", which does contain a complex relocatable expression. Sample source provided by the user reporting the problem follows. CPXRELEX CSECT USING CPXRELEX,15 L 1,ADDR1 L 2,ADDR2 L 3,ADDR3 BR 14 ORG CPXRELEX+X'100' DWD DS D ADDR1 DC A(DWD) ADDR2 DC A(DWD+DWD) Complex relocatable expression ADDR3 DC A(DWD+1) END HLASM correctly assembles the sample source. Running the program on z/OS, with the "BR 14" replaced by "DC H'0'", shows (in the summary dump) registers 1, 2, and 3 set correctly (R1 contains the address of DWD, R2 = 2 * R1, and R3 = R1 + 1). The problem has been fixed in z390. Thanks for any insight.