Here are a few more tidbits of information regarding relocatable
address constants (summarized from the disjoint information contained
in SC26-4940-06, High Level Assembler for z/OS & z/VM & z/VSE
Language Reference):

1-byte relocatable constants have never been allowed.

2-byte relocatable constants are allowed and the assembler will
produce message "ASMA066W 2-byte relocatable address constant" unless
assembler option RA2 is specified.  Quoting from "High Level
Assembler for z/OS & z/VM & z/VSE Programmer's Guide Version 1
Release 6" (SC26-4941-08):

"RA2 Instructs the assembler to suppress error diagnostic message
ASMA066W when 2-byte relocatable address constants, such as AL2(*)
and Y(*), are defined in the source program."

Only AD type address constants may have lengths (in bytes) over the
range 5-8 inclusive.

VD type address constants may have lengths (in bytes) of 3, 4 or 8.

The Tachyon z/Assembler correctly assembles (and produces the correct
Relocation Dictionary items) for this slightly modified version of
Dan's test program (I specified RA2 and XOBJ assembler options):

RLDNFG   CSECT ,
A        DC    AD(H)
B        DC    ADL2(G)
C        DC    ADL3(F)
D        DC    ADL4(E)
E        DC    ADL5(D)
F        DC    ADL6(C)
G        DC    ADL7(B)
H        DC    ADL8(A)
         END   ,

I do not have local access to another fairly popular cross-assembler
produced by Dignus (see http://www.dignus.com/dasm/).  However,
Dignus permits the assembly of small source files on their web site
(http://www.dignus.com/dasm/asmit.html).  The assembler version is
DASM V1.95.11.  Unfortunately, their web site doesn't permit
specifying any assembler options and the object code format is the
old OBJ rather than XOBJ/GOFF, so the RLD entries for statements 7
through 10 are incorrect.  Also, the *PROCESS statement does not
permit specifying XOBJ or GOFF, so I cannot correspondingly instruct
the assembler using that method.  Here is the Dignus assembly
listing (I edited the listing a bit to hopefully avoid line wrapping
problems when posting this message to the list server):

Loc    Object Code      Addr1    Addr2    Stmt  Source Statement
                                               1 *PROCESS RA2
00000000                00000000 0000002B      2 RLDNFG   CSECT ,
00000000 0000000000000023                      3 A        DC AD(H)
00000008 001C                                  4 B        DC ADL2(G)
0000000A 000016                                5 C        DC ADL3(F)
0000000D 00000011                              6 D        DC ADL4(E)
00000011 000000000D                            7 E        DC ADL5(D)
00000016 00000000000A                          8 F        DC ADL6(C)
0000001C 00000000000008                        9 G        DC ADL7(B)
00000023 0000000000000000                     10 H        DC ADL8(A)
                                              11          END   ,

                                                 Relocation Dictionary
 Pos.Id   Rel.Id   Address  Type   Action
00000001 00000001 00000000   A 4      +
00000001 00000001 00000008   A 2      +
00000001 00000001 0000000A   A 3      +
00000001 00000001 0000000D   A 4      +
00000001 00000001 00000011   A 1      +
00000001 00000001 00000016   A 2      +
00000001 00000001 0000001C   A 3      +
00000001 00000001 00000023   A 4      +


Bob Raicer

Reply via email to