Known limitations and differences between WebClient and Thin Client
This chapter lists the features that are currently not supported by WebClient as well as behaviors that are different between running as a standard COBOL application and running as a web application.
The list is updated to the date this document has been written.
Most of these differences and limitations are related to the more complex architecture required for the WebClient. In a Thin Client environment, there are only two machines involved: the user's PC and the application server, both using isCOBOL products. But in a WebClient environment, there are three machines involved, the web server, the web client, and the application server. The machine previously known as the user's PC becomes a web server, with no isCOBOL products installed. Instead the PC uses a web browser to interact with the web server. This means that when the COBOL application looks for client resources, it will find the web server’s resources, not the resources on the end user’s PC.
Printing
By default there is only one printer available, its name is “WebPrintService” and it’s a PDF printer. When a print operation is performed on WebPrintService, the browser automatically opens the resulting PDF in a new tab at the end of the print job. This is the suggested way of dealing with print jobs in WebClient environment. In the rare case your application needs to interact with the printers installed on the web server, enable
Allow Server Printing in the configuration of the application.
The WebPrintService printer is not recognized as default printer by the Win$Printer functions that return printer information (e.g. WINPRINT-GET-CURRENT-INFO).
Library Routines
Unless differently specified in the library routine documentation, every routine that access client resources in a WebClient environment works on the server where the WebClient service is running and not on the end user PC where the web browser is running. This rule applies to routines called via CALL CLIENT as well as routine functions that access to the client machine (e.g. C$COPY when one of the parameters start with "@[DISPLAY]:").
The C$DESKTOP and C$EASYOPEN routines trigger the download of the file instead of opening it with the associated application.
The J$GETFROMLAF routine is not supported. Calling it will return unpredictable results.
The W$MENU routine is not able to manage the tray icon.
The $WINHELP routine is not supported. Calling it may cause a crash of the application.
The W$CAPTURE routine is not supported. Calling it will return unpredictable results.
The WIN$PLAYSOUND routine plays the sound on the web server machine where WebClient is running.
User Interface
The windows decoration is driven by an internal theme and differs from the decoration of your current Java Swing Look & Feel.
The default Web-Browser implementation (DJBrowser) doesn’t work. Use the JavaFx implementation by setting iscobol.gui.webbrowser.class=com.iscobol.fx.JFXWebBrowser in the COBOL configuration.
The copy and paste of text on character-based screens is not supported.
Function Keys
Function keys are caught by both browser and COBOL application.
If the F5 key is caught by the COBOL program, then the browser will not refresh the page.
Debug
In order to debug a program running under WebClient, the Remote Debugger should be used.
Set iscobol.rundebug to “1” or “2” in the COBOL configuration and ensure that the classes loaded by the isCOBOL Server are compiled in debug mode.
Start the application in your web browser.
Launch the Debugger on your PC, the same where you’re executing the browser and connect it to the port where the Remote Debugger is listening (usually 9999) on the machine where isCOBOL Server is running.