Thin Client

The Flexus Thin Client, High Speed Internet Programs Using 100% COBOL

A Brief Summary of Thin Client

The Flexus Thin Client allows you to run a COBOL sp2 or COBOL FormPrint-based application on your server machine and deploy the application’s graphical user interface or printing function to any client machine connected to the server via a TCP/IP network. The operating system on the server may be Microsoft Windows, UNIX, Linux, VAX/VMS or Open VMS.  The operating system on the remote client machines must be Microsoft Windows (32bit).

There are many advantages to this type of architecture.  Among these advantages are:

  • Business logic and data are maintained in a central location for security and ease of maintenance
  • Updates to the business application can be made on a single machine instead of hundreds or thousands of machines
  • High performance and stabile operating systems such as UNIX and Linux may be used for the application, yet end-users can still display the user interface screens on the most popular desktop environment…Microsoft Windows
  • Unlike traditional server-based systems, end users do not have to use character-based terminals

The Thin Client also utilizes a 100% Win32 interface on the client machines.  This provides the end user with a far more robust user interface than if the application were implemented using a web browser user interface.  A Win32 user interface can be designed to be very user-friendly and feature-rich.  Web browser-based systems may be a better choice for end users who tend to be casual users of the application and only require a fairly basic user interface (the Flexus Web Client product allows the development of web browser-based user interface systems in COBOL).

One advantage that a browser-based system has over the Flexus Thin Client is that no special software must be installed on the client apart from the browser itself.  The Thin Client does indeed require a few client machine components to be installed prior to usage.  Therefore, the Thin Client approach is probably better for end users who utilize an application with far greater frequency, where a more robust user interface is advantageous.  In addition, Thin Client-based systems operate at a very high rate of speed.  This is in large part a result of the very small amount of data which needs to pass across the TCP/IP network in order for the Thin Client-based application to run.

In such a situation, the advantages of the Thin Client outweigh the minor inconvenience a few client-side components.  Additionally, most of the problems associated with managing client-side software are easily and quickly solved through the use of the Thin Client Automatic Version Control.

In addition to version control, Thin Client has a number of other features to improve client/server operations. Chapter 4 discusses built in security features including user authentication and data encryption. Chapter 5 discusses data compression, connection and firewall issues, and browser plug-ins. Finally, Chapter 6 discusses a few important programming issues although most sp2-based programs that run in stand alone environment will run unchanged using Thin Client.


The following diagrams depict how the Flexus Thin Client works.

Figure 1  Client machine components are installed on the client machine. These components can be as small as 100 kilobytes, if the Thin Client Automated Version Control feature is turned on by the programmer. The important issue here is that the basic client components are minimal. Client machine component installation may be accomplished via installation media or an automated, self-extracting executable file downloaded from a web site.


Figure 2  The local client machine must be able to communicate across a TCP/IP network.This is accomplished by establishing a standard dial-up networking connection on the client machine.This is obviously not necessary if the client machine connects directly to the application server or if the
client machine has access to the Internet through a local area network.


Figure 3  The end user on the client machine launches the sp2tccli.exe program by clicking on the associated icon on the windows desktop or through the Windows start button. The sp2tccli.exe program reads the sp2tc.ini file to determine the IP Address and port address for the COBOL application on the application server machine. The application server machine can be located anywhere in the world, as long as it is connected to the Internet.


Figure 4  The sp2tccli.exe program submits a socket connection request to the application server machine which has been assigned the IP Address contained in the sp2.ini file. The request is
intercepted by the Flexus Thin Client server daemon running on the COBOL application server. The server daemon is a service on the application server machine which runs 24 hours per day/7 days per week listening on the assigned port.


Figure 5  The server daemon on the application server, establishes a socket connection between the application server machine and the client machine. The server daemon also launches an instance of the COBOL application on the application server machine.


Figure 6  The COBOL application is now executing on the server and eventually attempts to
CALL COBOL sp2 or COBOL FormPrint through the normal CALL USING Statement. The Flexus
server subroutine transfers the COBOL sp2 or COBOL FormPrint CALL block from the
application server machine to the client machine across the TCP/IP network through remote
procedure call technology.


Figure 7  The sp2tccli.exe program (Thin Client executable) intercepts the COBOL sp2 or COBOL
FormPrint CALL block from the application server machine.  It then passes the CALL block it directly to the COBOL sp2 or COBOL FormPrint dynamic link library for displaying the GUI screen or printing a form on the client machine.


Figure 8  A two-way communication between the COBOL application on the server and the COBOL sp2 or COBOL FormPrint client machine components continues until the end user
terminates the application.What could be simpler?


Powerful Automatic Version Control Features

One of the main problems with traditional client/server systems is distributing software to the clients and keeping that software up to date. Thin Client solves this problem for you because most of the software resides only on the server.  However, before a client machine can be used for the first time, at least some software must be installed on it and that software may need to be updated at a future date. The Automatic Version Control facility makes this task a lot easier.

This facility allows you to install or update files on the client machine using the server as the source. The files that might be updated are as follows:

  • Panel files (screen definition files)
  • Fonts file
  • Icon and graphic image files
  • sp2cli.dll
  • Ancillary dll’s (JPG image file support, Active X support files, etc.)
  • Configuration file (sp2tc.ini)
  • Help files

This means that the only files that have to be on the client machine initially are sp2tccli.exe and sp2tc.ini.

On Demand Version Control

Thin Client offers a special version control feature which is called on demand version control.  While standard version control works fine in most cases, there can be a delay if a panel file which needs to be updated is particularly large. This delay can be annoying, especially if the end user only needs to access a few of the panels in the panel file.

The on demand version control facility supports the ability to uploaded client-side components to the client machine on an as-needed basis rather than at the start of the session.  In addition, individual panels can be uploaded instead of the entire panel file.

Version Control for the Client Executable

Occasionally, a new version of the thin client executable is released and your client machines need to be updated. This process is a little more complex than regular version control because the client executable has to effectively update itself while it is running.  Thin Client supports this capability as well.

Data Compression Option to Minimize Communication Delays

One of the optional switches in the Flexus Thin Client is a data compression switch.  When selected, the data which is passed between the client and server machines is compressed, allowing for even faster throughput and minimal communication delays.

Network Security – Data Encryption Features

Security is of paramount importance in today’s world of hackers and cyber-crime. Thin Client provides facilities to protect the data stream from intrusion and modification (data encryption); to prevent access to systems by unauthorized clients (user authentication); and to allow only certified executables to be invoked on the server (executable file control).

When data encryption is activated in the Thin Client, the data which is passed between the client and server machines is encrypted at a 128 bit level of data encryption so that you don’t have to be concerned about your sensitive data being intercepted and used in an unauthorized fashion.  Encryption takes place on both the client and the server machines before data is passed.

Data encryption is activated by specifying a Key in the encryption section of the server side configuration file.  The value of this key controls how the data stream will be encrypted. In addition, Thin Client offers multiple encryption methods.  All encryption methods available are robust but the more advanced methods offer additional security at the expense of a very slight delay at connection time.

The various data encryption options include:

  • Fixed value data encryption is the most basic method of encryption in which a fixed key is passed to build encryption tables on the server.
  • Dynamically generated key encryption guards against the replay vulnerability.  Instead of specifying a fixed encryption key value, this feature causes a different key to be generated by the server for each session.  Data streams recorded in one session will be meaningless in another session because the data will be encrypted differently. Both the server and client will generate different encryption tables each time the system is used.
  • Independently generated key encryption prevents the dynamically generated key from being intercepted.  The encryption key is calculated independently on the server and client machines so that the key doesn’t have to be passed between the two.  This means that it is impossible to intercept the encryption key actually used because it is never passed (even in encrypted form) across the network. This is achieved using modulus arithmetic which allows the server and client to calculate the key to be used without ever needing to expose it.
  • Standards-based encryption works in the same way as a dynamically generated key in terms of key passing, but uses the publicly available, government approved AES method for actual encryption.  The special encryption code is loaded at runtime.  The code is contained in a special file which must be present on both client and server. For this reason, this method is currently only available on Windows servers.

Network Security – User Authentication Features

Thin Client supports user authentication by displaying a login dialog box prior to the display of any other windows.  Thin Client then verifies the login information on the server. Thin Client also allows you to display your own login window using regular COBOL sp2 function calls and processing user verification in the server-based COBOL application.

Two Different Ways to Display Your Client Machine User Interface Screens

We recognize that, although the Thin Client offers a powerful Win32 GUI interface for display of your COBOL application user interface screens, some of your end users will insist that the application must run within a world wide web browser.

That is why we have also implemented the Flexus Thin Client components in the form of a Netscape-style plug-in as well as a Microsoft Internet Explorer Active X control.  The advantage of having this flexibility allows you to offer your end users the alternative of displaying your application user interface screens within a web browser.

You still achieve the significant efficiencies of the Thin Client high speed screen display, and can offer your end users exactly what they want.

Please note:  Flexus also offers another solution called the Web Client/X which allows you to implement your COBOL sp2 GUI user interface as a pure web browser-based client.  This also utilizes the web browser as the user interface display device, but has the added advantage of allowing your end users to display your COBOL application GUI screens on a Linux or Macintosh client because the user interface is displayed using dynamically created, interactive web pages using automatically created JSON, AJAX and Javascript.  Please contact Flexus if you would like to receive additional information on the Flexus Web Client/X.

Server Daemon Can Execute on a Windows Server or Run as a Service on a Windows Server

Sometimes it is preferable to have the Thin Client Server Daemon running as a service under windows.  Thin Client supports the ability to install the server components to run as an executable or as a Windows service on Windows-based server platforms.

Supported Server Platforms Include Windows, UNIX, Linux, VAX/VMS or Open VMS Server

Although Windows is the overwhelming choice for the user interface environment on the desktop, the power, stability and reliability of UNIX servers is unsurpassed.  Because of this fact, in addition to our support for Windows-based server machines, the Flexus Thin Client can support the ultimate client/server platform…a UNIX server connected to remote Windows PC client machines.

Flexus offers this support to provide you with the ability to choose the server platform which best suits your needs.  And because we provide you with encrypted source code, you can implement the Flexus Thin Client on virtually any UNIX or Linux server imaginable……even mainframe Linux servers.  Flexus has been offering UNIX-based solutions since 1987.  We have a wealth of UNIX experience and have yet to find a UNIX platform which we are unable to support.

Many companies still use the very powerful and reliable VMS based operating system.  Flexus also supports this server platform with Thin Client.

Active X Controls Supported for the Remote Client Machine User Interface

The Flexus COBOL sp2 Graphical User Interface Development System is the most powerful and flexible COBOL GUI tool available.  One of the reasons for this is our support of embedded Active X Controls which can open up a world of user interface and non-user interface capabilities for your COBOL application.  For more information on this very powerful feature, please contact Flexus for more information on COBOL sp2.

We have extended this capability to include support for Active X Controls in our Thin Client solution as well.  This allows you to develop very robust user interface systems for your COBOL application and still be able to run your user interface across a TCP/IP network.  Because the Active X Controls reside and execute on the remote Windows client machine, this capability can even be implemented using a UNIX, Linux or VMS-based server platform.

Thin Client Supports Recognition and Recovery from Connection Errors

All networks are subject to connection problems and Thin Client supports various ways to deal with these problems.  You can specify that Thin Client writes the error condition to an error log and terminates the connection.  This feature can also be very useful when debugging your Thin Client application.

If connection termination isn’t desirable, because it is necessary to control the shutdown of the application, Thin Client can be configured to return an error code to the program when a problem occurs.

If the physical data line is affected, it may not be possible for an error message to be sent to the server.  That’s why Thin Client supports a keep-alive feature.  Keep-alive causes the server to periodically poll the client to check that it is still running. If a response is not received in a certain amount of time, an error is returned.

If a network connection is lost, Thin Client also allows you to specify that the client should try to reconnect and the server application should continue to run as if nothing wrong had occurred.

Thin Client also supports the ability to use a new connection for every client send.  This is another helpful feature which is very beneficial if the network is unreliable.

Thin Client Provides a Connection Status Log File

The Thin Client connection status log file is different than the error log file.  The connection status log file records current Thin Client network connections which you can use to monitor system usage.

HTTP Tunneling

If a client is located behind a firewall or connected to the network via a proxy server, it may be necessary to open up a port to allow communications with the application server. Moreover, this port needs to be enabled for all TCP/IP traffic rather than a particular protocol. To avoid the need for opening up a port, or at least opening up a port to all traffic, Thin Client provides an HTTP tunneling feature.

The HTTP tunneling feature is causes Thin Client to use only HTTP protocol for data transmission which allows a proxy server to perform security checks on the data. It is also possible to use the regular HTTP port (usually 80) so that another port doesn’t even have to be opened.

Execute Program

Thin Client also allows you to automatically start up a new client/server process from your COBOL application using the execute program feature.


Sometimes it is necessary to launch a client-side executable program from the server.  This is a powerful feature of Thin Client which allows you to start an external application on the client machine in order to affect complete control over the client-side environment.

Copy Files from the Server to the Client and from the Client to the Server

Thin Client also allows you to copy files from the server to the client or from the client to the server.

Retrieve the Command Line Used to Invoke the Thin Client Session

Thin Client also allows you to retrieve the client command line used to invoke the current Thin Client session. This allows you to set up different client icons to start different programs. For example, if the icon is given a command-line of “sp2tccli acctpay”, to launch an accounts payable application, the default server program for this specific icon will be invoked. Through a simple function call, the program can extract the command-line parameter (in this case “acctpay”) and call the accounts payable module.

Retrieve the Client IP Address

Sometimes it is also necessary to know the specific client IP address.  Thin Client supports this capability as well.

Run BOTH the Thin Client and Web Client with the Same Application

Figure 9  Sometimes your application has to be available in BOTH a Thin Client mode for high speed, efficiency and user interface robustness as well as a Web Client mode for universal access from any client machine with Internet access and a web browser installed. Flexus has a great solution for these situations as well. Flexus COBOL Tools allow you to  run both Web Client and Thin Client in the same application.  It makes perfect sense, works flawlessly and it’s all done using 100% COBOL source

The Type of COBOL Programmer Who Should Use Thin Client

COBOL programmers who fit the following criteria would benefit greatly from the use of Thin Client.  This includes programmers who are interested in:

  • Maintaining a single set of source code and running is stand-alone or across a TCP/IP environment
  • Increasing their productivity
  • Developing client/server systems without learning a new language
  • Adding Internet capabilities to their COBOL applications
  • Reducing future maintenance efforts
  • Migrating their COBOL user interface to other operating systems
  • Having the greatest amount of flexibility in a COBOL client/server tool
  • Getting away from the high expense and high overhead of Citrix-based applications

The Benefits of Using Thin Client

  • For the COBOL sp2 user, Thin Client supports virtually instant support for TCP/IP-based programs
  • Dramatically less overhead and expense than using Citrix or Terminal Server
  • Supports the stability of UNIX server environments combined with the popularity of Windows desktop clients
  • Supports the ability to run the same COBOL application with a Win32 interface as well as a web browser interface across TCP/IP
  • Supports the ability to switch COBOL compilers without changing screen-handling source, screen definitions, print-management source or form definitions

The Hazards of Using Visual BASIC, C++ or Java for GUI Implementation

COBOL was designed to make business applications easier for large programming staffs to maintain. The acronym COBOL stands for “COmmon Business Oriented Language.” The C language was developed by system software experts for developing system software. The C language is generally considered a lower level language. Most large companies have worked very hard to avoid the use of lower level languages in application development because of maintenance difficulties.

The Acronym, BASIC stands for “Beginners All-purpose Symbolic InstruCtion Language.” Your programs must meet the demands of a mission critical application. It doesn’t make sense to use a “beginners” language for the user interface in a professional application.  In addition, Microsoft has a rich history or requiring programmers to re-write substantial portions of a Visual Basic application when upgrading from one version of Visual basic to the next.  You should never be forced to re-write your business application simply because a programming tool vendor decides to make dramatic changes to their programming tools.

Java is very similar in nature to C++.  It is event driven, far more cryptic than COBOL and interpretive.

Using C, C++ Java or Visual Basic with COBOL results in the same headaches as using API code with COBOL. For example:

  • Using C, C++ Java or Visual Basic with COBOL results in “mixed language” maintenance and debugging headaches.
  • Your mixed language source program may not be as portable as your COBOL source program.
  • C, C++ Java and Visual Basic compilers use event driven methodologies, not using procedural methodologies.
  • Using C, C++ Java or Visual Basic for your user interface will result in extensive and costly staff re-training.

Risks Associated with Purchasing Client/Server Tools from Your COBOL Compiler Company

The primary reason you should purchase Thin Client instead of a client/server tool from your COBOL compiler company issue is that your compiler company specializes in COBOL compilers, not the associated toolsets. Flexus has always specialized in COBOL development tools, NOT compilers.  Most people wouldn’t ask their attorney to perform surgery nor would they allow their surgeon to represent them in court.  Why would you rely on a company which specializes in COBOL compilers to provide you with the best development tools?  

If you use a client/server enabling tool from your compiler company and then need to switch COBOL compilers at a later date, you will probably be required to rewrite a substantial amount of code.  Can you afford to re-write a considerable amount of your COBOL source program next year, when your compiler company changes to a completely different client/server tool?  Compiler companies have also come and gone.  One company, for example, started selling a COBOL compiler a few years ago, and eventually discontinued it.  The company then licensed a compiler from a second company and sold it.  Eventually that COBOL compiler was also discontinued.  If you buy a client/server tool from your compiler company, you are locked into their compiler. Can you take that risk?

Flexus designs and develops tools for PC, Mini and Mainframe COBOL programmers. We focus 100% of our energies on offering the best tools available to the COBOL programmer. COBOL tools are the only thing we do, so we have to do them better than anyone else. COBOL compiler companies specialize in what they know best… COBOL compilers. We specialize in what we know best… add on tools which are 100% COBOL oriented.

Flexus…In Business Since 1983 and Still Going Strong

Flexus was incorporated in 1983, so we’ve been around for a while and intend to be around for a long time. Flexus has thousands of licensees in over 30 countries around the world.

No Need to Re-write Your Source When a New Environment Becomes a Standard

Nobody can provide you with a guarantee that their system won’t become obsolete. Flexus has the best track record in the COBOL tools business against source program obsolescence.

Flexus offers the most portable, adaptable COBOL tools available. Some compiler companies have introduced user interface tools only to discontinue support for those tools later. That means their customers were forced to re-create all of their source programs and screen definitions. We don’t do that to our customers.  Any COBOL program developed with any version of our COBOL development tools has always been upwardly compatible and adaptable:

  • across operating systems,
  • across text to graphical user interfaces
  • across COBOL compilers.

Flexus, an Uninterrupted History of Continuous Software Upgrades

Ever since our first COBOL programming tool was released back in 1986, Flexus has provided a continuous stream of major enhancements and major version changes each and every year.  In addition, Flexus has always provided an upward migration path for our customers so that it is unnecessary to expend time and money in major source code re-writes.

NO OTHER COBOL tool vendor can make the same claim! Some COBOL tool vendors waited for many years to release new versions of their products. Others performed a complete re-write of their COBOL tools which required their customers to completely re-write their source code.  We believe that customers should NOT have to wait years for major new enhancements, nor should they ever be forced to re-write their applications to take advantage of a new environment.

Thin Client has been continually enhanced to provide new features

Future Upgrades and Enhancements to Existing Client/Server Features

Flexus has always taken great pride in continually offering COBOL programmers real solutions for modern COBOL application development challenges.  Flexus has been a technological leader in providing new features to COBOL programmers and supporting the latest operating systems and environments. All Flexus products have constantly evolved to offer advanced capabilities to the COBOL programming community.

Flexus Technical Support Services Programs

We offer great technical support services…..just ask any of our customers.  The following services are included in our standard license fee and available for renewal for a fixed annual maintenance fee 12 months after the initial; purchase:

  • unlimited e-mail technical support services
  • an online community of our customers which we refer to as the Flexus Forum
  • an FTP server to allow you to download the latest version of our software 24 hours per day, 7 days per week

We believe that a software product is only useful if technical support is excellent. Ask any of our customers. They’ll tell you that we offer high-quality technical support.  We’re also on East Coast time……so you don’t have to wait until the afternoon for our technicians to respond to your e-mail inquiries.  You can usually get an e-mail reply from us very quickly. We always make every effort to respond to your technical support inquiries as quickly as possible during the normal Monday through Friday work week.

Please give us a call, send a fax or E-Mail if you have additional questions that we didn’t answer here.