This document contains rules for address mode selection that apply when dynamically reloadable 3GL programs are called in a Natural application.
This section covers the following topics:
Whether a dynamically reloadable 3GL program is loaded above or below
                       the 16 MB line depends on the keyword parameter PROGMOD
                       for macro BS2STUB.
               
| Parameter | Explanation | 
|---|---|
| PROGMOD=ANY | The program is loaded above or below the 16 MB line. This depends on the application's address mode and on the possible
                                        existence of  | 
| PROGMOD=24 | The 3GL program is always loaded below the 16 MB line. | 
Whether the Natural user thread is created above or below the 16 MB line
                       depends on the keyword parameters NUAADDR for macro
                       NATUTM and on REQMLOC for the macros
                       NAMTIAM and NAMBS2.
               
The following paragraphs give you an overview of which address mode is used in which generation configuration to call dynamically reloadable 3GL programs.
Calling of 3GL programs without using the ILCS or CRTE interface
Calling of openUTM partial programs which are not 31-bit enabled from Natural/UTM driver via PEND PR
 'ILCS=YES' or 'ILCS=CRTE' 
               
| Case | The application was generated with | The 3GL program is called with | 
|---|---|---|
| 1 | PARMOD=31orPARMOD=(31,ABOVE) | AMODE=31 | 
| 2 | PARMOD=24 | AMODE=24 | 
 'ILCS=NO' 
               
| Case | The application was generated with | The 3GL program is called with | |
|---|---|---|---|
| 1 | PARMOD=31The Natural user thread is located above the 16 MB line and the 3GL program is loaded above or below the 16 MB line. | AMODE=31 | |
| 2 | PARMOD=31The Natural user thread and the 3GL program are located below the 16 MB line. | AMODE=24 | |
| 3 | PARMOD=(31,ABOVE)The Natural user thread is located above the 16 MB line and the 3GL program is loaded above or below the 16 MB line. | AMODE=31 | |
| 4 | PARMOD=(31,ABOVE)The Natural user thread is located below the 16 MB line and the 3GL program is loaded below the 16 MB line. | AMODE=24 | |
| 1. | The module BS2GLUEmust be located in the same
                                    library as the loaded 3GL program,or the load module library for module BS2GLUEmust be defined asBLSLIBin theSTARTJOB. | ||
| 2. | If such a configuration exists in the case of a Natural/UTM
                                    application, the keyword parameter KBhas to be defined
                                    asKB=NO. | ||
| 5 | A Natural/UTM application was
                                    generated using PARMOD=31.The Natural user thread is located below or above the 16 MB line
                                        and keyword parameter  | AMODE=31 | |
The application was generated using PARMOD=31 and the
                       keyword parameter SWAMODE for macro NATUM
                       is defined as SWAMODE=YES:
               
Prior to each calling of the openUTM KDCS interface, Natural switches back to the 24-bit address mode, and when control is returned to the openUTM driver, a switch-back occurs to the 31-bit address mode.