I was avoiding wading into this conversation because I'm not quite sure how the 
binder actually works but something I did want to point out is that entry 
points in different CSECTs (as shown by the ALIASES below) CAN have different 
AMODEs.

For example, running an AMBLIST against a load module I maintain:

    MEMBER NAME:  xxxxxx01               MAIN ENTRY POINT:    00000000
    LIBRARY:      LIBIN                  AMODE OF MAIN ENTRY POINT: 31
        ** ALIASES **      ENTRY POINT    AMODE
          xxxxxx02          00xxxxx0        31
          xxxxxx03          00xxxxx0        64
          xxxxxx04          00xxxxx0        31

Eric Rossman

-----Original Message-----
From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On Behalf Of Jon 
Perryman
Sent: Sunday, October 22, 2023 4:00 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: [EXTERNAL] Re: AMODE was: Why do all entry points have to be in the 
same class?

On Sun, 22 Oct 2023 14:55:20 +0000, Peter Relson <rel...@us.ibm.com> wrote:

>>Jon P wrote
>> Mixed AMODE load modules is a bad thing and very rarely needed.
>
>I disagree. It's not a "bad thing".  There's nothing wrong with switching 
>AMODE when needed. 

AMODE switching is not being discussed. The OP is complaining about IBM's 
choice of having 1 and only 1 AMODE when binding a single load module. He 
thinks it makes more sense to have a unique AMODE for each ALIAS.

The bad thing I'm referring to is having AMODE 24 csects included in a load 
module linked AMODE 31. You always link a module to it's lowest csect AMODE. 
  
> it might well have to switch out of AMODE 64 to call something.

Switching AMODEs is essential and I would never say it's bad. To the contrary, 
I've written programs using AMODE switching. For this discussion, we are 
discussing the AMODE that is used when a program starts.

>> I don't think that AMODE 24 in assembler does anything more useful 
>> than tell the binder the program must be linked AMODE 24 (not 31/64)
>It does two things that come to mind:

AMODE specified in the assembler source does not affect the assembly. The value 
is passed to the binder whereas you say, is used to set the default load module 
AMODE however technically the binder simply validates AMODE compatibility and 
that all CSECTs are compatible with the load module AMODE. 

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to 
lists...@listserv.ua.edu with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to