Transoft Component Adapters (Deployment) 3.40
Release Notice


Contents

Introduction

Welcome to revision 3.40 of Transoft Component Adapters (Deployment).

The Transoft Component Adapters (Deployment) - Installation & Licensing Guide can be found in the base directory of this CD-ROM, along with Microsoft's Word Viewer 97. Install Word Viewer 97.

Note that this release modifies the shared memory format from version 3.31. Please update language components as described in the Language Integration section.

New Features

Unicode support for COBOL components, .NET and Java proxies

TCA introduces the nchar type for Unicode support. Under MF COBOL, this translates as the N(x) type. Java and .NET support Unicode natively, so nchar types will generate String types for those platforms.

The N(x) type in MF COBOL may be either UTF-16 or a DBCS type depending on compilation flags. Also, the byte-ordering is configurable. To configure the Unicode handling for a COBOL component, the following directives may be applied to the beginning of the COBOL source:

     * Use UTF-16 instead of DBCS
     $set nsymbol(national)
     * Use native byte ordering
     $set unicode(native)

Support for document/literal format of SOAP messages

Since SOAP support has been included with the TCA Component Broker, the rpc/encoded method has been the only supported SOAP format. Newer tools are moving towards the document/literal format. Microsoft .NET framework generates this by default, and Apache Axis2 does not support rpc/encoded.

In release 3.40, TCA now supports both document/literal and rpc/encoded. The WSDL macro in the Transoft Development Suite now generates document/literal (but can be changed to rpc/encoded with a simple edit)

Support for WPF browser applications/Silverlight applications

Rich Client applications are sandboxed in such a way that they can only communicate with their originating server. This release includes:

  • An implementation of the .NET C# proxy that tunnels TCA calls through HTTP, while retaining the same interface as the standard .NET proxy
  • An HTTP handler that my be installed on an IIS server to pass those TCA calls to a TCA Component Broker

Code changes to use the new proxy should be limited to a changed connection string (connect to a URL instead of a host/port) for WPF browser applications. For Silverlight applications, the situation is slightly more complex - only asynchronous calls are supported on that platform, so services must be called asynchronously. Instructions for configure and use May be found here

Support for C# ASP.NET StarterForms

The macro CSHARP_ASP is provided with the Transoft Development Suite to build ASP.NET starter forms that build on the CSHARP macro. To use the generated code:

  1. In Transoft Development Suite, Create the C# Proxy and the C# ASP.NET StarterForms proxy
  2. In Visual Studio, create a new filesystem Web Site
  3. Add a reference to tcadotnet20.dll
  4. Add the proxy files to the new Web Site
  5. Edit web.config to point to the correct Component Broker
  6. Run the website (start page is Default.aspx)

Bugs Fixed

  • Long running Components and Asynchronous calls. When using TCA to run components in a 'batch job' style, the following situation could occur:
    • User A connects and Asynchronously starts Service 'S'
    • user A disconnects before 'S' completes
    • User B connects (and obtains the same connection number as user A)
    • Service 'S' completes
    • User B now recieves the context from user A
    This has now been fixed.

Language Integration

When using COBOL, the runtime will need to be linked with the TCA COBOL Application Bus Adapter library. How this is done depends on the platform and version of COBOL required.

Windows

The Windows runtimes make use of the cfacob.dll library. Make sure the TCF_PLATFORM=WIN32 environment variable is set.

  • For ACU COBOL, make sure the CODE_PREFIX environment variable contains C:\WINNT\System32 or wherever your Windows system files reside. Also, make sure that the dll-convention setting is 0 (this is the default)
  • For RM COBOL 7, you cannot use the standard CFACOB.DLL, as RM requires it's extensions to be in a different format. Instead, use the RMCOB7.DLL DLL by adding the option L=RMCOB7.DLL to the command line.

UNIX

When using COBOL under UNIX, the runtime system will need to be rebuilt or enhanced by linking in the COBOL Application Bus Adaptor library (cobcf.a), or by placing a shared object library (libcobcf.so or libcobcf.sl) version in the appropriate directory.

Using shared objects

To use shared objects under UNIX, the (ACU) runtime must call the library libcobcf.so or libcobcf.sl on HP/UX. MicroFocus COBOL must call cobcf.so/cobcf.sl - generated by mflinktca.sh in the cobol subdirectory of the TCA installation (see 'Re-linking the runtime')

Set the environment variable LD_LIBRARY_PATH to point to the lib directory of the TCA installation (LIBPATH on AIX, SHLIB_PATH on HP/UX).

When running under HP/UX, edit the ACU .cfg file to include the line:

    SHARED_LIBRARY_EXTENSION     .sl

It may also be necessary to force the following export to load a dependency:

    export LD_PRELOAD=/usr/lib/libsec.sl

When running under HP/UX, make sure to set the TCF_PLATFORM environment variable (it can be set in the language .ini file) to HPUX

On platforms that support more than one ABI (For example, systems that support 32 and 64-bit binaries, or SCO, which supports the OSR5 ABI and SVR5 ABIs), the shared library ABI must match that of the COBOL runtime binary. Use the file command to show the details of each.

  # ACU
  file /usr/tca/lib/libcobcf.so
  file $ACUDIR/../bin/runcbl

  # MF
  file $COBDIR/lib/cobcf.so
  file $COBDIR/bin/cobrun
Troubleshooting shared objects

The COBOL wrappers include the following section to load the shared object:

       tcf-init section.
       tcf-init-begin.
           display "TCF_PLATFORM" upon environment-name.
           accept w-tcf-platform-name from environment-value.
           evaluate w-tcf-platform-name
               when "WIN32"
                   Set w-tcf-dll to entry "CFACOB.DLL"
               when "HPUX"
                   CALL "cobcf.sl" ON EXCEPTION CONTINUE
               when other
                   CALL "cobcf.so" ON EXCEPTION CONTINUE
           end-evaluate.

           call "CFINIT" using w-tcf-init1 w-tcf-init2.

If there are problems loading shared libraries, remove the ON EXCEPTION CONTINUE clause to generate an error within the COBOL runtime.

Check dependencies required by libcobcf.so are satisfied - use the command ldd libcobcf.so to list dynamic dependencies. On HP/UX, you can investigate the paths used to locate libraries with the chatr command: chatr libcobcf.sl. It may also be useful to check the output of chatr against the COBOL runtime.

Some platforms have environment variables that may be set to debug dynamic linking. Set the variables in the LanguageIniFile:

  • Linux: set LD_DEBUG=files,symbols LD_DEBUG_OUTPUT=tcalink.out
  • Solaris: set LD_DEBUG=basic,files LD_DEBUG_OUTPUT=tcalink.out
  • HPUX: set _HP_DLDOPTS=-warnings -symtab_stat

Additional tracing may be obtained with a system tracing tool - for example truss (Solaris, AIX), strace (Linux) or tusc(HP/UX) - to diagnose system calls used to load shared libs.

Additional configuration options for ACU

The ACU .cfg file has a number of options for handling shared libraries. In particular, the DYNAMIC_FUNCTION_CALLS setting can be used to force calls to be looked up in a shared library (by default, ACU will attempt to load a matching COBOL program before looking up function calls):

  DYNAMIC_FUNCTION_CALLS         CF*

The SHARED_LIBRARY_LIST can be used to force the load of a shared library when the runtime starts:

  SHARED_LIBRARY_LIST            /usr/tca/lib/libcobcf.so

Re-linking the runtime

There is a UNIX shell script within the cobol subdirectory for each COBOL language type supported:

  • aculinktca.sh for ACUCOBOL.
  • mflinktca.sh for Micro Focus COBOL
  • rmlinktca.sh for Liant RM/COBOL

Run the relevant script, and follow any instructions provided.


Additional Notes

Users of the SCO UnixWare client-side library should note that the client timeout feature is not supported under UnixWare and possibly other platforms that use the same binary.


 

Phone: 770-933-1965 (U.S.) or +44 (0) 1753 778000 (U.K.)
Copyright © Computer Software Group Limited 2010. All rights reserved