Paul,

Thank you for pointing out the very illuminating web page. It states that AD 
constants of 2-8 bytes are supported, so I changed the A constants to ADs. As 
shown below, z390 still doesn't recognize 5-, 6-, or 7-byte ADs, and even 
though the listing shows the correct length of 2, 3, 4, and 8-bytes in the RLD 
entries, the actual object code doesn't properly indicate an 8-byte relocation.

Keven,

Having retired 2¾ years ago, I have no access to a mainframe, and I'm just 
noodling around at home with an emulator. So, I can't compare what HLASM 
produces, but I'm confident that it gets it right.  The z390 listing (with AD 
constants) is as follows; the interpreted object code follows thereafter.

19:55:42 rldnfg2   MZ390 START USING z390 V1.5.06 ON J2SE 14.0.1 07/02/20
AZ390I Copyright 2011 Automated Software Tools Corporation
AZ390I z390 is licensed under GNU General Public License
AZ390I program = C:\Users\Dan\Documents\IBM\Assembler\rldnfg2
AZ390I options = sysmac(C:\PROGRA~2\AUTOMA~1\z390\mac+.) 
  syscpy(C:\PROGRA~2\AUTOMA~1\z390\mac+.)
External Symbol Definitions
 ESD=0001 LOC=00000000 LEN=00000028 TYPE=CST NAME=RLDNFG
Assembler Listing
000000                                        (1/1)1 RLDNFG   CSECT 
000000 1C                                     (1/2)2 A        DC    ADL1(H)
000001 0015                                   (1/3)3 B        DC    ADL2(G)
000003 00000F                                 (1/4)4 C        DC    ADL3(F)
000006 0000000A                               (1/5)5 D        DC    ADL4(E)
00000A 0000000006                             (1/6)6 E        DC    ADL5(D)
00000F 000000000003                           (1/7)7 F        DC    ADL6(C)
000015 00000000000001                         (1/8)8 G        DC    ADL7(B)
00001C 0000000000000000                       (1/9)9 H        DC    ADL8(A)
000024                                      (1/10)10          END 
Relocation Definitions
 ESD=0001 LOC=00000001 LEN=2 SIGN=+ XESD=0001
 ESD=0001 LOC=00000003 LEN=3 SIGN=+ XESD=0001
 ESD=0001 LOC=00000006 LEN=4 SIGN=+ XESD=0001
 ESD=0001 LOC=0000001C LEN=8 SIGN=+ XESD=0001

Symbol Table Listing

 SYM=A        LOC=00000000 LEN=00000001 ESD=0001 TYPE=REL  XREF=2 9 
 SYM=B        LOC=00000001 LEN=00000002 ESD=0001 TYPE=REL  XREF=3 8 
 SYM=C        LOC=00000003 LEN=00000003 ESD=0001 TYPE=REL  XREF=4 7 
 SYM=D        LOC=00000006 LEN=00000004 ESD=0001 TYPE=REL  XREF=5 6 
 SYM=E        LOC=0000000A LEN=00000005 ESD=0001 TYPE=REL  XREF=6 5 
 SYM=F        LOC=0000000F LEN=00000006 ESD=0001 TYPE=REL  XREF=7 4 
 SYM=G        LOC=00000015 LEN=00000007 ESD=0001 TYPE=REL  XREF=8 3 
 SYM=H        LOC=0000001C LEN=00000008 ESD=0001 TYPE=REL  XREF=9 2 
 SYM=RLDNFG   LOC=00000000 LEN=00000028 ESD=0001 TYPE=CST  XREF=1 

Literal Table Listing

AZ390I total mnote warnings = 0
AZ390I total mnote errors   = 0
AZ390I max   mnote level    = 0
AZ390I total mz390 errors   = 0
AZ390I total az390 errors   = 0
19:55:42 rldnfg2   MZ390 ENDED   RC= 0 SEC= 0 MEM(MB)= 38 IO=61

Interpreted object code

rldnfg2.OBJ 7/2/2020
  0: 02 C5 E2 C4 40 40 40 40 40 40 00 10 40 40 00 01 .ESD      ..  ..
 10: D9 D3 C4 D5 C6 C7 40 40 00 00 00 00 07 00 00 28 RLDNFG  .......(
 20: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
 30: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
 40: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 

 50: 02 E3 E7 E3 40 00 00 00 40 40 00 10 40 40 00 01 .TXT ...  ..  ..
 60: 1C 00 15 00 00 0F 00 00 00 0A 00 00 00 00 06 00 ................
 70: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
 80: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
 90: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 

 A0: 02 E3 E7 E3 40 00 00 10 40 40 00 10 40 40 00 01 .TXT ...  ..  ..
 B0: 00 00 00 00 03 00 00 00 00 00 00 01 00 00 00 00 ................
 C0: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
 D0: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
 E0: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 

 F0: 02 E3 E7 E3 40 00 00 20 40 40 00 04 40 40 00 01 .TXT ..   ..  ..
100: 00 00 00 00 40 40 40 40 40 40 40 40 40 40 40 40 ....            
110: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
120: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
130: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 

140: 02 D9 D3 C4 40 40 40 40 40 40 00 08 40 40 40 40 .RLD      ..    
150: 00 01 00 01 04 00 00 01 40 40 40 40 40 40 40 40 ........        
160: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
170: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
180: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 

190: 02 D9 D3 C4 40 40 40 40 40 40 00 08 40 40 40 40 .RLD      ..    
1A0: 00 01 00 01 08 00 00 03 40 40 40 40 40 40 40 40 ........        
1B0: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
1C0: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
1D0: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 

1E0: 02 D9 D3 C4 40 40 40 40 40 40 00 08 40 40 40 40 .RLD      ..    
1F0: 00 01 00 01 0C 00 00 06 40 40 40 40 40 40 40 40 ........        
200: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
210: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
220: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 

230: 02 D9 D3 C4 40 40 40 40 40 40 00 08 40 40 40 40 .RLD      ..    
240: 00 01 00 01 00 00 00 1C 40 40 40 40 40 40 40 40 ........        
250: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
260: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
270: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 

280: 02 C5 D5 C4 40 00 00 00 40 40 40 40 40 40 00 00 .END ...      ..
290: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
2A0: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
2B0: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40                 
2C0: 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40         

Note that in the 4th RLD entry (for the ADL8 constant), the RLD flag byte (at 
offset X'244' is zero). According to the HLASM Programmer's Guide, this 
indicates an A-type constant with a length of one byte.

Summary: Avoid using AD constants with a length of 5, 6, or 7. If you plan on 
linking your object code on a real mainframe, avoid AD constants with a length 
of 8.

Reply via email to