Calling Dynamically Reloadable 3GL Programs in a Natural Application

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:


Storage Allocation Rule

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 AMODE or RMODE statements in the 3GL program to be loaded.

PROGMOD=24 The 3GL program is always loaded below the 16 MB line.

Thread-Creation Rule

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.

Address-Mode Dependencies

The following paragraphs give you an overview of which address mode is used in which generation configuration to call dynamically reloadable 3GL programs.

  1. Calling a 3GL program using the ILCS or CRTE interface

  2. Calling of 3GL programs without using the ILCS or CRTE interface

  3. Calling of openUTM partial programs which are not 31-bit enabled from Natural/UTM driver via PEND PR

1. Calling a 3GL program using the ILCS or CRTE interface

'ILCS=YES' or 'ILCS=CRTE'

Case The application was generated with The 3GL program is called with
1 PARMOD=31 or PARMOD=(31,ABOVE) AMODE=31
2 PARMOD=24 AMODE=24

2. Calling of 3GL programs without using the ILCS or CRTE interface

'ILCS=NO'

Case The application was generated with The 3GL program is called with
1 PARMOD=31

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
2 PARMOD=31

The 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 BS2GLUE must be located in the same library as the loaded 3GL program,
or the load module library for module BS2GLUE must be defined as BLSLIB in the STARTJOB.
2. If such a configuration exists in the case of a Natural/UTM application, the keyword parameter KB has to be defined as KB=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 CALLM31 for macro NURENT is defined as CALLM31=YES.

AMODE=31

3. Calling of openUTM Partial Programs which are not 31-bit enabled from Natural openUTM driver via PEND PR

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.