This is actually a workshop sample of TCP/IP Socket API training materials provided by NSI. This sample is also included in one of NSI's Advanced Rexx training materials. Author then lauched it as a freeware although it still used as a part of both training materials.
zBogor version 1.0.0 is a very simple or tiny HTTP server for z/OS. It fully coded in Rexx and runs as an STC under TSO/E environment. The main purpose of this program is to demonstrate how Rexx Socket API handles data stream traffic in the TCP/IP network environment or internet following the HTTP interaction protocol. As it just for leraning purposes, it uses only GET method to show how to transport text/html, image/jpeg and image/gif between EBCDIC machine and ASCII machine.
As Rexx does not support multitasking facility among exec routines, design of zBogor logic construction is an iterative server, instead of simultanous (concurrent) server as normally used in most of servers. Actually GIVESOCKET and TAKESOCKET functions are provided by Rexx Socket API to allow server runs on multiple TCBs. Inter Rexx exec TCBs, however, each needs to run on separate address space as a separate job. One job as port listener to serve connection requests and the rest are workers to serve the data traffic. Port listener must up first and each worker must only be brought up whenever port listener has accepted a connection request from client and issued GIVESOCKET function. For long-session-type application, such mechanism is quite okay. Moreover when zJOS-XDI or zCBT or SYSREXX is available, port listener can issue console START command to bring worker job up everytime GIVESOCKET is issued or place worker job stay up to wait for GIVESOCKET is issued by port listener. Unfortunately, HTTP transaction is too short and no zJOS-XDI nor zCBT nor SYSREXX is assumed,. Hence the best way to anticipate the situation, both listening port and handling data traffic are done in a single TCB task.
As an iterative server, zBogor serves client serially. It can only serve a client at a given amount of time and other clients have to wait until current connection is closed. That is why, zBogor needs not unblocking I/O either. SEND and RECV functions will be held until data traffic completely done or interrupted by certain exceptions.
zBogor requires z/OS V1R9 or later with availability of TCP/IP Socket API on TSO/E environent. It must have ordinary access to several USS and TCP/IP resources.
|zBogor version 1.0.0
|Rexx Socket API application
|TSO/E, USS and TCP/IP on z/OS V1R9 or later
|Non-sensitive, user-level programming
|This product is a part of NSI's training materials