TS/MP Pathsend and Server Programming Manual (G06.24+, H06.03+)

Designing Your Application
NonStop TS/MP Pathsend and Server Programming Manual132500
2-15
Clients Using RSC and POET
Clients Using RSC and POET
The RSC (Remote Server Call) product facilitates client/server computing, allowing
workstation applications to access Pathway server classes and Guardian processes.
The RSC product supports a number of different transport protocols and workstation
platforms. For detailed information about the supported platforms and protocols, refer
to the Remote Server Call (RSC) Programming Manual.
Transactions are transmitted from the workstation application (the client) to a Pathway
application running on a Tandem NonStop system (the server) by means of a supported
communications protocol, such as NETBIOS, TCP/IP, or an asynchronous connection.
RSC includes a process called the Transaction Delivery Process (TDP), which resides on
the Tandem NonStop system. The TDP is a multithreaded process that can handle
multiple workstations. It routes request messages from workstations to Pathway server
Example 2-1. Sample Pathsend Requester Program Structure
Declare program variables.
TMFError := BEGINTRANSACTION( TransactionTag ): Begins TMF transaction.
Allocate buffer for request
and reply messages.
PathmonName:=[“$PM”] Set SERVERCLASS_SEND_ parameters.
PathmonNameBytes :=3;
ServerClass:=[“ASERVER”]
ServerClassBytes =7;
Timeout := -1D; Specifies no timeout.
Flags := 1; Specifies nowait send.
SendError := SERVERCLASS_SEND_( PathmonName, Performs send operation.
PathmonNameBytes, ServerClass, ServerClassBytes,
RequestBuffer, RequestBufferBytes, MaxReadCount,
CountRead, Timeout, Flags, SCSendOpNum, Tag);
IF( SendError ) THEN Nowait send request failed.
BEGIN
InfoError := SERVERCLASS_SEND_INFO_ Gets Pathsend and File errors.
( PSError, FSError ); Perform application-dependent
. error logic.
.
.
END;
Filenum:=SCSendOpNum
CALL AWAITIOX ( FileNum, Countread, Tag, -1D ); Wait for completion of send
operation
CALL FILEINFO ( FileNum, SendError ); and get the resulting send error.
IF( SendError ) THEN
BEGIN
INFOERROR := SERVERCLASS_SEND_INFO_ ( PSError, FSError );
.
.
.
END;
TMFError :=RESUMETRANSACTION( TransactionTag ); Resumes TMF transaction.
IF( ReplyError ) THEN Perform application-dependent
. error logic, which may include
. aborting transaction.
.
ELSE
TMFError :=ENDTRANSACTION;