On 06/03/2017 13:39, Thomas David Rivers wrote:
Paul Gilmartin <[email protected]> wrote:
On 2017-03-05, at 14:40, Martin Truebner wrote:
... to have heard from either of the two commerical vendors of
HLASM compatible cross-assemblers.
Now I have seen one. What is the other (is there one?) ?
Dignus, Tachyon, (does MicroFocus have one?), and the non-commercial
z390.
A while back, I discovered that:
X EQU X'7FFFFFFF'
USING R2,X
LA R3,-X
Resolves to the equivalent of:
LA R3,2(,R2)
... where I believe it should say:
ASMA307E No active USING for operand 2
I surmise it improperly ignored an overflow as it tried to resolve.
This matters little for AMODE 24 or AMODE 31; much for AMODE 64.
Does this behavior persist? Cross-assemblers?
I fleshed this into an example to assemble:
R2 EQU 2
R3 EQU 3
FOO CSECT
X EQU X'7FFFFFFF'
USING R2,X
LA R3,-X
END
then I ran it thru HLASM v1.6 and got these messages:
7FFFFFFF 4 X EQU X'7FFFFFFF'
5 USING R2,X
** ASMA029E Incorrect register specification - X
** ASMA435I Record 5 in RIVERS.ASM.SOURCE(T) on volume: DAVE
00000000 0000 0000 00000000 6 LA R3,-X
** ASMA028E Invalid displacement
** ASMA435I Record 6 in RIVERS.ASM.SOURCE(T) on volume: DAVE
7 END
and I ran it thru the Dignus assembler and got these messages:
5 USING R2,X
** DASM029E Incorrect register specification
** DASM435I Record 5 in t2.asm
00000000 0000 0000 00000000 6 LA R3,-X
** DASM028E Invalid displacement
** DASM435I Record 6 in t2.asm
7 END
It seems HLASM and Dignus match.
But - I'm not sure that matches your description?
We have a substantial test suite for matching HLASM's USING vagaries;
so we should line-up very well. Just a few months ago we went thru
an audit of that.
- Dave Rivers -
--
[email protected] Work: (919) 676-0847
Get your mainframe programming tools at http://www.dignus.com
Your USING should be USING X,R2
Then, you get this with HLASM (z/OS 2.2)
00002 1 R2 EQU 2
00003 2 R3 EQU 3
000000 00000 00004 3 FOO CSECT
FFFFFF 4 X EQU X'7FFFFFFF'
R:2 FFFFFF 5 USING X,R2
000000 4130 2002 00001 6 LA R3,-X
7 END