There are two levels of ESL APPC interfaces: automatic and controlled. Your ESL APPC program indicates which interface it will use when it starts a conversation.
Using the automatic interface cuts down on the number of ESL APPC subroutine calls you need to make in your ESL program to send, receive, or exchange data, and therefore reduces your program’s complexity. With this level of support, ESL performs certain required APPC functions for your program automatically, such as switching the conversation state. The underlying APPC architecture defines a set of states that a conversation can be in; for example, Send state or Receive state. (Conversation state is judged from your program’s point of view.) The conversation must be in Send state in order for your program to send data, and in Receive state for it to receive data.
ESL’s automatic interface changes the conversation state automatically in the following situations, eliminating the need for you to change the state explicitly via an ESL APPC subroutine call:
•When your program indicates it has completed sending data, or that it is ready to receive data.
•When your program, after receiving data, issues an APPCSendString subroutine call.
In this situation, because the partner currently has permission to send, a request to send is issued and the data to be sent is queued until permission is granted. When authority to send is received, the queued data is sent. Note that both partners must cooperate in relinquishing authority to send. A program may continue to send data as long as it is necessary, and the receiving partner must be prepared to process this data for the duration.
•When your program remains inactive for a specified period of time after sending data, and the partner program, after receiving data, indicates that it wants to send. The state is switched automatically as long as all your program’s requests to send data have been satisfied.
Automatic state switching can be disabled in either of two ways:
•During program startup (see the STATE_SWITCH argument in Detailed Subroutine Descriptions and APPCStart Subroutine).
•With an ESL APPC profile value (see the INACTIVITY_TIMEOUT argument in APPCSetInitProfile Subroutine and APPCSetAcceptProfile Subroutine).