A Natural user exit is an object that is invoked by Natural, a subcomponent or a subproduct. Usually, a sample user exit is delivered in source form. The instructions contained in the user exit have to be written or adjusted by the user. The purpose of a user exit is to manipulate data or make decisions. Most user exits take advantage of the Natural programming language; a small subset has to be written in Assembler language.
This document describes the following Natural user exits:
Other Natural user exits and application programming interfaces are described in the relevant places in the Natural subcomponent or subproduct documentation (Natural RPC, TP Monitor Interfaces, Utilities, add-on products, etc.).
The user exit NATUEX1
is called whenever a user session is
activated. It can be used to determine whether or not the user is authorized to
use Natural. The security data used to determine this can be retrieved from the
security system being used (for example, RACF or ACF2).
NATUEX1
is called using standard calling conventions:
Register | Contents |
---|---|
15 | Entry address of NATUEX1 |
14 | Return address of Natural |
13 | Address of a save area of 18 words |
1 | Address of a parameter list |
The parameter list contains five addresses:
Address | Points to an 8-byte field containing the value which is used to fill the Natural system variable |
---|---|
1 | *INIT-USER |
2 | *ETID |
3 | *INIT-ID |
4 | *INIT-PROGRAM |
5 | *USER (Note that this system
variable will be overwritten during a Natural Security logon.)
|
These five values can be modified by the user exit.
For normal completion, the user exit must return control with Register
15 set to 0
. If Register 15 does not contain 0
, the
Natural session is terminated with the condition code equal to the value in
Register 15.
NATUEX1
can be linked to the environment-independent
nucleus or to an environment-dependent nucleus. It is also possible to link it
to an alternative Natural
parameter module, or as a separate module if you are running with
profile parameter RCA
.
An example of the user exit is available as member XNATUEX1
in the Natural source library.
For CICS: See also NCIUIDEX - User ID Exit Interface in the Natural TP Monitor Interfaces documentation.
Natural provides two user exits for sort processing:
NATSREX2
and NATSREX3
.
The two user exits can be used with Natural's own sort program as well
as with an external sort program. The exits are activated automatically when
they are linked to the nucleus and so their addresses get resolved. Since,
under z/OS and z/VSE, many external SORT
programs already supply
several exit functions, the exits NATSREX2
and
NATSREX3
may especially be used either with Natural's internal
sort program or with external SORT
under BS2000/OSD.
NATSREX2
is always called when Natural passes a record to
the sort program. NATSREX3
is called when the sort program, upon
completion of the sort run, passes a record to Natural. The example delivered
shows how you can establish your own collating sequence for a
SORT
.
When the user exits are activated, the following register conventions must be adhered to:
Register | Contents |
---|---|
15 | Entry addresses of NATSREX2 and
NATSREX3 |
14 | Return address of Natural |
13 | Address of the 18-word save area |
1 | Address of the sort record |
3 | Length of the sort record |
The user exits have to secure the Natural registers and restore them upon returning control to Natural.
As the sort exit module is linked to the module NAT2SORT
,
programming has to be reentrant. The format and structure of the sort records
must not be modified.
Some national languages contain characters which are not sorted in the
correct alphabetical order by a sort program or database system. With the
system function SORTKEY
you can convert
such "incorrectly sorted" characters into other characters that
are "correctly sorted" alphabetically.
When you use the SORTKEY
function in a Natural program, the
user exit NATUSKnn
will be invoked -
nn
being the current language code
(that is, the current value of the system variable
*LANGUAGE
).
You can write a NATUSKnn
user
exit in any programming language that provides a standard CALL
interface. The character string specified with SORTKEY
will be
passed to the user exit. The user exit has to be programmed so that it converts
"incorrectly sorted" characters in this string into corresponding
"correctly sorted" characters. The converted character string is
then used in the Natural program for further processing.
For the conversion, NATUSKnn
may
use the translation table NTUTAB1
of the configuration module
NATCONFG
; this means
that NTUTAB1
may have to be adjusted accordingly.
NATUSKnn
is called using
standard calling conventions:
Register | Contents |
---|---|
15 | Entry address of
NATUSKnn
|
14 | Return address of Natural |
13 | Address of a save area of 18 fullwords |
1 | Address of a parameter list |
The parameter list contains the following addresses:
Offset | Address of |
---|---|
+0 | The character string passed from Natural. |
+4 | The length of the character string (fullword). |
+8 | The character string resulting from the conversion. |
+12 | The length of the result string (fullword). |
+16 | The translation table NTUTAB1 .
|
NATUSKnn
has to secure all
registers, except 14 and 15, and restore them upon returning control to
Natural.
For normal completion, the user exit must return control with Register 15 set to Return Code 0. If Register 15 does not contain "0", a corresponding Natural error will be issued.
The following sample user exits are provided in source code form:
Program | Function |
---|---|
NATUSK01 |
Applies to English and converts all English lower-case letters in the character string to upper-case. |
NATUSK02 |
Applies to German and converts the German umlauts ä, ö, ü, and ß into their corresponding replacement characters ae, oe, ue, ss in order to provide a different sort sequence. |
NATUSKnn
can be linked to the
environment-independent nucleus or to an environment-dependent nucleus. It is
also possible to link it to an alternative Natural parameter
module, or as a separate module if you are running with profile
parameter RCA=NATUSKnn
.
For linkage and loading conventions, see also the
CALL
statement in the
Natural Statements documentation.
The NATPM
module is used to support inverse direction
terminals. It contains the user exit routine for field and line conversion
which is called by Natural at terminal I/Os if for some fields the print mode
(profile parameter PM
) has been set to
I
.
PM=I
indicates inverse direction and is used to support
languages writing from right to left (for example, bi-directional languages);
see also the description of the profile parameter
PM
.
The module NATPM
is delivered as a source module and can be
modified if required.
Natural provides a user-exit routine which is called for each field
where the resulting attribute is PM=I
and for each line to be
printed via hardcopy, additional report and primary batch output. This exit is
called with three parameters:
the source field to be inverted,
the target field to receive the inverted data,
a length field specifying the length of the source and target fields.
As this user exit routine is available in source code to all users, it
might be used as an explicit field exit triggered by the PM=I
attribute. The user is then able to check and modify line contents or field
contents.
The user exit in NATPM
will be called for every field
where the attribute PM=I
is set.
This attribute can be set by the Natural programmer, or is
automatically set for numeric fields when the global print mode is set to
PM=I
. It does not matter whether the output is generated for the
terminal, for hardcopy, for additional reports or for the primary output in
batch.
For printing devices, Natural does not expect automatic inversion from
the hardware, but calls NATPM
again for the complete line. This
feature can be used in countries where the field inversion is not required to
establish interface logic with Natural based on a field attribute.
NREXPG
is a user exit for
Natural Remote Job Entry
(NATRJE
). After the job is complete, each JCL card is passed to
the exit before it is submitted to the operating system. The following data are
available to the exit:
the JCL card to be submitted,
a return code field,
the name of the Natural program currently being executed,
the Natural user identification,
a 240-byte work area.
After each call, the exit passes a return code to NATRJE
indicating one of the following events:
Code | Explanation |
---|---|
0 |
Submission: the card is submitted; the exit may modify the card before submission. |
4 |
Termination: the card is submitted; the exit is disabled for further cards of the current job. |
8 |
Insertion: the card is skipped based on the assumption that it contains only an insert character, for example, the percent sign (%); additional specified cards are submitted. |
10 |
Deletion: the card is not submitted. |
12 |
The current job is flushed. |
An example of the user exit, called NREXPG
,
is available as member XNATRJE
in the Natural source library. The
exit can be assembled and linked according to the rules of programs specified
as CSTATIC
. However, a CSTATIC
entry for
NREXPG
is not required.
The user exit routine USR0070P
enables you to modify the
parameter settings for the Natural program editor or data area editor in the
default profile SYSTEM
.
For further information on the editor profile, see General Information in the Editors documentation.
USR0070P
provides a list of all parameters which are to
receive a default setting.
With this user exit, you can also determine whether editor profiles are
to be stored in the FNAT
system file, the FUSER
system file or the scratch-pad file.
In addition, USR0070P
considers DBCS support and sets the
editor profile options Editing in Lower Case
and Dynamic
Conversion of Lower Case
correspondingly.
An example of this user exit routine is available in the library
SYSEXT
on the
FNAT
system file, both in object and source form. Information on
how to use it is contained in the text object USR0070T
.
The user exit routine USR2002P
can be used to customize the
text strings for the Current Natural Message window that
is invoked by pressing the Help key while the cursor is on the message line.
The object USR2002P
itself contains the text strings used
within the Current
Natural Message window, for example, the window title and the
descriptive texts, such as, the field names Sh
(short message),
Tx
(long message), Ex
(explanation) and
Ac
(action).
An example of this user exit routine is available in the library
SYSEXT
on the
FNAT
system file, both in object and source form. Information on
how to use it is contained in the text object USR2002T
.
The user exit routine USR2003P
can be used to customize the
following settings for the
Natural Main
Menu and its subordinate menus:
position and color of the message line,
position and color of the PF key lines.
An example of this user exit routine is available in the library
SYSEXT
on the
FNAT
system file, both in object and source form. Information on
how to use it is contained in the text object USR2003T
.