This document describes asynchronous Natural processing, a method which is available under all TP monitors supported by Natural.
An asynchronous Natural session is a session which is not associated with any terminal and therefore cannot interact with a terminal user. It can be used to execute a time-consuming task "in the background" without the user having to wait for the task to finish.
The following topics are covered:
Related Topics:
To identify a session as being asynchronous, the Natural system variable
*DEVICE
is assigned the value ASYNCH
.
Note:
The value of *DEVICE
may be modified by
the Natural profile parameter TTYPE
and by any
SET CONTROL
'T=xxxx'
statement; see also profile
parameter TTYPE
in the
Parameter Reference documentation and terminal command
%T=
in
the Terminal Command documentation.
As an asynchronous session is a session that is not associated with any
terminal, this means that any output produced by the session cannot simply be
displayed on the screen; instead, you have to explicitly specify an output
destination. You specify this destination with the Natural profile parameter
SENDER
when invoking Natural. The SENDER
destination applies to
hardcopy output and primary reports; any additional reports are sent to the
destinations specified with the DEFINE PRINTER
statement,
just as in a synchronous online session.
As an asynchronous session can also cause a Natural error, the
destination to which any Natural error message is to be sent must also be
specified; this is done with the Natural profile parameter
OUTDEST
.
This parameter also provides an option to have error messages sent to the
operator console. After an error message has been sent, Natural terminates the
asynchronous session.
The profile parameters SENDER
and
OUTDEST
should be set accordingly to be prepared for
unexpected output by the asynchronous Natural session; otherwise, the
asynchronous Natural session may abend in such a scenario.
An asynchronous Natural session only has the Natural stack to enter the
name of Natural programs and Natural system commands to be executed. If a
Natural program or a Natural system command fails with an unhandled Natural
error or if the entire Natural stack is exhausted and NEXT
mode
would be entered, the asynchronous Natural session is terminated with
termination message NAT9943.
Depending on the TP monitor in use and depending on the
TTYPE
setting, either the CLEAR
key or the
EOF
indicator is passed back to Natural on an INPUT
request by default. This measure helps to prevent error loop situations if a
program unintentionally executes an INPUT
statement. To pass the
ENTER key indicator back, you can issue a SET CONTROL
'N'
statement prior to the INPUT
statement.
Tip:
You can make your application compatible with asynchronous sessions by
evaluating the system variable *SCREEN-IO
accordingly.
The following Natural profile parameters should be considered in the case of an asynchronous Natural session:
Profile Parameter | Comment |
AUTO
|
Asynchronous sessions may have non-alphabetical user IDs. In
this case, AUTO=ON will fail.
|
CM
|
An unwanted input situation may happen if the Natural session
accidentally falls onto the NEXT level. Setting
CM=OFF will terminate the session immediately in such a situation.
In asynchronous mode, the setting of this parameter is forced to
|
ENDMSG
|
The NAT9995 (normal) termination message can be suppressed by
specifying ENDMSG=OFF .
|
IMSG
|
Natural initialization error messages and warnings can be
suppressed by specifying IMSG=OFF .
|
MENU
|
Asynchronous sessions only have the Natural stack
for command inputs; therefore, it is recommended to specify
MENU=OFF and to navigate through Natural by using direct commands.
In asynchronous mode, the setting of this parameter is forced to
|
PC |
In asynchronous mode, the setting of this parameter is forced to
|
PLOG |
Dynamic parameter logging is executed by sending
all parameters line by line to the SENDER destination.
|
PROGRAM
|
If a standard backend program/transaction is defined in your
installation, it should be checked if this program can run asynchronously or if
it is desired to deal with terminal-bound sessions only. Specifying
PROGRAM=0 bypasses the backend logic.
|