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.
This section covers the following topics:
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.
                         |  
                               
                     
 ENDMSG 
                         |  
                                
                        The error message 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.
                         |  
                               
                     
PLOG |  
                                
                        Dynamic parameter logging is executed by sending
                                    all parameters line by line to the SENDER destination.
                         |  
                               
                     
 PROGRAM 
                         |  
                                
                        If a standard back-end 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 back-end logic.
                         |