Microsoft KB Archive/810956

= FIX: A new feature in the COM Transaction Integrator gives the client program full control over a TRM request and lets the client program process the TRM reply =

Article ID: 810956

Article Last Modified on 9/27/2005

-

APPLIES TO


 * Microsoft Host Integration Server 2000 Standard Edition
 * Microsoft Host Integration Server 2000 Service Pack 1

-





SUMMARY
Using the Microsoft Component Object Model (COM) Transaction Integrator (COMTI) to access Customer Information Control System (CICS) programs on the mainframe over TCP/IP involves first sending a Transaction Request Message (TRM) and then receiving a TRM reply from the mainframe before exchanging the program data. Previously, the COMTI runtime automatically formatted the TRM request and then processed the TRM reply. This meant that the client program had no control over the TRM request and could not receive the contents of the TRM reply. COMTI now includes a new feature that gives the client program full control of the TRM request and lets the client program process the TRM reply. For more information about how to use this new feature, see the &quot;More Information&quot; section.



Service pack information
This feature is available in the latest service pack for Microsoft Host Integration Server 2000. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

328152 How to obtain the latest service pack for Host Integration Server 2000

Hotfix information
The English version of this hotfix has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in Coordinated Universal Time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.   Date         Time   Version    Size     File name 04-Jun-2003 14:01  5.0.0.915   37,136  Capture.dll 04-Jun-2003 14:01  5.0.0.915  323,856  Cedrmsgs.dll 04-Jun-2003 14:01  5.0.0.915   33,040  Comticontext.dll 04-Jun-2003 14:01  5.0.0.915  147,728  Convert.dll 04-Jun-2003 14:01  5.0.0.915   74,000  Convertprim.dll 04-Jun-2003 14:01  5.0.0.915   33,040  Dpl1.dll 04-Jun-2003 14:01  5.0.0.915  823,568  Dtcob390.dll 04-Jun-2003 14:01  5.0.0.915   37,136  Playback.dll 04-Jun-2003 14:01  5.0.0.915   78,096  Readlib.dll 04-Jun-2003 14:01  5.0.0.915  123,152  Tadtlb.dll 04-Jun-2003 14:01  5.0.0.915  114,960  Tagen.dll 04-Jun-2003 14:01  5.0.0.915   82,192  Tranlu62.dll 04-Jun-2003 14:01  5.0.0.915  110,864  Trantcp.dll 04-Jun-2003 14:01  5.0.0.915   49,424  Turnaround.dll 04-Jun-2003 14:01  5.0.0.870  950,272  Componentbuilder.exe 28-Mar-2003 06:15             838,423  Comticb.chm 28-Mar-2003 06:15             812,988  Resnapin.chm

Note Because of file dependencies, the most recent fix that contains these files may also contain additional files.



MORE INFORMATION
Information for the TRM request or the TRM reply, or both, is passed to the COMTI runtime through an optional parameter that contains an array of data. Formatting for the TRM request and the TRM reply is defined within the user-defined type definitions in the COMTI type library. The name of the user-defined type must start with the characters TRMIN for the TRM request and TRMOUT for the TRM reply. This prefix is case sensitive. TRM requests and TRM replies may have multiple user-defined type definitions. For example, you may have the following user-defined type definitions:
 * TRMINExample1
 * TRMINExample2
 * TRMINExample3
 * TRMOUTSample

The format must match with the format that is used in the Concurrent Server program or Concurrent Server programs on the mainframe.

COMTI includes sample Concurrent Server programs that use the default format that the COMTI runtime will process automatically. You can use the Mscmtics.cbl program with the TCP/IP Link model. You can modify the Tcpcdrbk.cbl sample, the Tcpcgtac.cbl, and the Cicscs.cbl sample for use with the Concurrent Server (non-Link) model. The example in this section uses the TRM request format that is programmed in the Mscmtics.cbl sample and calls the sample cedrbank method that is used in the CedarBank tutorial that is included with COMTI.

When sending the TRM request, the IBM listener expects a four-byte string with the CICS Transaction Name for the Concurrent Server program and then a one-byte FILLER that typically contains a comma. Then, in the Mscmtics.cbl sample, the format of the TRM request after the fifth byte is the following: 01 CLIENT-IN-DATA                   PIC X(35). 01 FILLER REDEFINES CLIENT-IN-DATA. 05 CID-USERID                    PIC X(8). 05 CID-PASSWORD                  PIC X(8). 05 CID-LINK-TO-PROG              PIC X(8). 05 CID-COMMAREA-LEN              PIC S9(4) COMP. 05 CID-RESERVED                  PIC X(9). To give the client program full control over the data that is sent in the TRM request, you must add the following user-defined type to the COMTI type library: UDT Name: TRMINSample (where 'Sample' can be any text) UDT Members (the Member names that are specified here are for sample purposes): TranID – String – PIC X(4) CommaDelim – String – PIC X  MyUserID – String – PIC X(8) MyPassword – String – PIC X(8) LinkProg – String – PIC X(8) CommLen – Integer – PIC S9(4) COMP (with a Trailing FILLER of 9 on the COBOL Definition tab for CommLen) As soon as the COMTI type library is saved and installed into a COM+ application package, you must enable the TRM reply feature in the client program. To do this, follow these steps:

Note This code sample is in Microsoft Visual Basic .NET.  In your Visual Basic .NET project, add a COM reference to the following file:

\Program Files\Host Integration Server\System\Comticontext.dll

 Add a COM reference to the COMTI type library. To do this, run the Assembly Registration tool (Regasm.exe) against the Interop. .dll file that is created in the Bin folder for the project. This registers the interop assembly in the global assembly cache. To do this, follow these steps:  Click Start, point to All Programs, point to Microsoft Visual Studio .NET 2003, point to Visual Studio .NET Tools, and then click Visual Studio .NET Command Prompt. Open the Bin directory for the project, and then run the following command:

regasm interop. .dll

 </ol>

In the Visual Basic .NET project, the following code is used: Dim objCedar As New COMTI.TRMSample Dim ctxArray As Object Dim objCOMTIContext As New COMTICONTEXTLib.ContextObject Dim udtTRMIN As COMTI.TRMINSample

' Fill the user-defined type with the values to send to the mainframe. udtTRMIN.TranID = &quot;MSCS&quot; ' Transaction to execute on the Host. udtTRMIN.CommaDelim = &quot;,&quot; udtTRMIN.MyUserID = &quot;MFUSERID&quot; udtTRMIN.MyPassword = &quot;PASSWORD&quot; udtTRMIN.LinkProg = &quot;CEDRBANK&quot; ' The CICS Link to the program name. udtTRMIN.CommLen = 41 ' The number of bytes in the COMMAREA.

' Write the user-defined type to the COMTI Context Array. ' First parameter: string with the exact name of the typelib user-defined type. ' Second parameter: the Visual Basic user-defined type that contains the data. ' Third parameter: the array object to write the data to. objCOMTIContext.WriteContext(&quot;TRMINSample&quot;, udtTRMIN, ctxArray)

Dim Name As String Dim Acc As String Dim Bal As Decimal Name = &quot;Jane&quot; Acc = &quot;1234&quot; Bal = 0

' Make the COMTI method call. The last parameter is the optional ' COMTI Context Array parameter. objCedar.cedrbank(Name, Acc, Bal, ctxArray) To view the TRM reply, a user-defined type must be defined in the COMTI type library with a user-defined type name that begins with TRMOUT. You must define a variable within the Visual Basic project for that user-defined type and you must call the WriteContext method with the following three parameters:
 * The exact user-defined type name in the COMTI type library (case sensitive)
 * The Visual Basic variable for the user-defined type
 * The context array object

When the COMTI method call is made with the optional context array parameter, the data from the TRM reply is passed back to the program in the Visual Basic variable for the user-defined type. For the TRMOUT user-defined type, the format may include a first data item that is numeric. This indicates the length of the message. In the COMTI Component Builder properties for the TRMOUT user-defined type, you can choose one of the following three options if the first data item is numeric:
 * No length specifier present
 * Length specifier includes self
 * Length specifier excludes self

Additional query words: HIS HIS2000

Keywords: kbinfo kbqfe kbhis2000fix kbprb kbhotfixserver KB810956

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.