CA Gen 8.6 Java Proxy receives error "TIRM600E:  ERROR TRANSLATING THE COMMON FORMAT BUFFER INTO GURB BUFFER"

book

Article ID: 141478

calendar_today

Updated On:

Products

CA Gen CA Gen - Run Time Distributed

Issue/Introduction

After upgrade from Gen 8.0 to Gen 8.6 Classic Style Java Proxy receive this error executing the proxy:

2019-12-09 16:47:35,082 WARN  [xxxxxx] (main) [xxxx] PStep_Name exception. ......., error: [Function: doPStep_NameOperation]com.ca.gen.jprt.ProxyException: com.ca.gen.jprt.ProxyException:  [Function: doPStep_NameOperation]TIRM030E:   APPLICATION FAILED - UPDATES HAVE BEEN BACKED OUT

TIRM600E:  ERROR TRANSLATING THE COMMON FORMAT BUFFER INTO GURB BUFFER
TIRM046E:   *** TRANSACTION PROCESSING TERMINATED
TIRM602E:  REMOTE COOPERATIVE PROCESSING WAS ACTIVE
TIRM670E:  FROM PROCEDURE STEP
TIRM671E:  TO   PROCEDURE STEP

Cause

Error "TIRM600E: ERROR TRANSLATING THE COMMON FORMAT BUFFER INTO GURB BUFFER" is documented on the Gen 8.6 techdocs page "Configuring Runtime IMS and CICS > Establish Client/Server Support" in section "Customize Code Page Translation":
https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/ca-mainframe-software/devops/ca-gen/8-6/installing/install-ca-gen-on-z-os/configuring-runtime-ims-and-cics/establish-client-server-support.html#concept.dita_23def0bf6ece83d7dfceb321238cb3043a7f90a4_CustomizeCodePageTranslation

===
Note:
If TIRCRUNC and TIRCRUNI do not contain the translation table the client and server are using, the transactions fail with TIRM600E: ERROR TRANSLATING THE COMMON FORMAT BUFFER INTO GURB BUFFER. Use MKCRUN JCL to build a version of TIRCRUNx modules that support the required code page combination.
===

Environment

Release : 8.6
Component : CA Gen Run Time, Proxies

Resolution

With "CMIDEBUG=ON" enabled in the commcfg.properties file the resulting Gen 8.6 trace file showed that outgoing message is sent with code page 1201 while the Gen 8.0 trace file shows that code page 1252 is being used.
The default Gen 8.0 & 8.6 CFBDynamicMessageEncodingExit.java file contains the relevant code to set the client code page (encoding) and,  depending on the underlying OS environment, the value 1201 (UTF-8) is being obtained from the hosting JVM:
===
    public static String serverEncoding( String tran, String encoding ) {
        //if (tran.startsWith("AR")) { /* return transacion specific   */
        //    return "Cp420";          /* encoding.                    */
        if ((encoding != null) && (encoding.length() > 0)) {
            return encoding;           /* Return Selected Encoding.    */
        }
        return System.getProperty("file.encoding");
        //return "UTF-8";              /* Default to Unicode Encoding  */ 
    }
===

The translation table for a client code page of 1252 is in the TIRCRUNC translation tables by default, and the Gen 8.0 user exit CFBDynamicMessageEncodingExit.java has been customised to set the client code page to be Cp1252:
===
   public static String serverEncoding( String tran, String encoding ) {

        return "Cp1252";

   }
===
The value "Cp1252" is then mapped to 1252 by the codepage.properties file and is sent to the server in Gen Common Format Buffer (CFB).

So the Gen 8.6 version of CFBDynamicMessageEncodingExit.java needs to be customised in the same way as the Gen 8.0 version.
After compiling the new CFBDynamicMessageEncodingExit.java to CFBDynamicMessageEncodingExit.class the Gen 8.6 runtime jar file used for deployment then needs to be rebuilt with the mkjavart.bat utility.

Additional Information

NOTE:
User exit CFBDynamicMessageEncodingExit is documented in Gen 8.6 techdocs for the standard Java Proxy but not for the Classic Style Java proxy but it applies to both:
https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/ca-mainframe-software/devops/ca-gen/8-6/distributed-processing/working-with-proxies/java-proxy/preparing-for-executing-a-java-proxy-application.html

https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/ca-mainframe-software/devops/ca-gen/8-6/distributed-processing/working-with-proxies/java-proxy-classic-style/preparing-for-execution-of-java-proxy-classic-style-application.html