Q175375: New Format for Logical Unit of Work Identifier

Article: Q175375
Product(s): Microsoft SNA Server
Version(s): WINDOWS:3.0,3.0 SP1,3.0 SP2,3.0 SP3,3.0 SP4,4.0,4.0 SP1,4.0 SP2
Operating System(s): 
Keyword(s): kbsna300sp1 kbsna300sp2 kbsna300sp3 kbsna300sp4 sna4 kbsna400sp1 kbsna400sp2
Last Modified: 13-JUN-2001

-------------------------------------------------------------------------------
The information in this article applies to:

- Microsoft SNA Server, versions 3.0, 3.0 SP1, 3.0 SP2, 3.0 SP3, 3.0 SP4, 4.0, 4.0 SP1, 4.0 SP2 
-------------------------------------------------------------------------------

SUMMARY
=======

SNA Server versions 3.0 through 4.0 SP2 have a new Logical Unit of Work
Identifier (LUW_ID) instance format for LU 6.2-based conversations. Outlined
below are the changes that have been made:

+------------------------------------------------------+
| SNA Server 3.0      | Previous Versions              | 
+------------------------------------------------------+
| Byte 1- Year (high) | Byte 1- Hundredths of a second | 
+------------------------------------------------------+
| Byte 2- Year (low)  | Byte 2- Seconds                | 
+------------------------------------------------------+
| Byte 3- Month       | Byte 3- Minute                 | 
+------------------------------------------------------+
| Byte 4- Day         | Byte 4- Hour                   | 
+------------------------------------------------------+
| Byte 5- Hour        | Byte 5- Day                    | 
+------------------------------------------------------+
| Byte 6- Minute      | Byte 6- Month                  | 
+------------------------------------------------------+

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SNA Server 4.0 Post-SP2                                                                                                                                                                                                                                                                                                 | 
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Byte 1- Year (high)                                                                                                                                                                                                                                                                                                     | 
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Byte 2- Year (low)                                                                                                                                                                                                                                                                                                      | 
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Byte 3-6- Flipped hexidecimal unsigned long integer containing the number of hundredths of a second in this year (but assuming each month is 31 days). The maximum value of (12/31 23.59.59.99) is 3214079999 or 0xBF92F7FF. If this value clashes with a previously generated value, the number is incremented by one. | 
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

NOTE: The algorithm is changed in SNA Server 4.0 post-SP2 to prevent possible
clashes in the logical unit of work generated by an SNA Server.


MORE INFORMATION
================

The LUW_ID is used to identify conversations that are part of a single Syncpoint
transaction. All conversations with the same LUW_ID are committed (or backed
out) at the same time. SNA Server 3.0 (not 2.11) assigns two LUW_IDs to a
transaction program (TP) when the TP is started. In the case of locally started
TPs, this is when the TP_STARTED verb is issued. The first LUW_ID is the TP's
protected LUW_ID and is used by SNA Server as the LUW_ID for all synclevel
Syncpoint conversations allocated by the TP. When the TP issues an (MC_)Allocate
verb with synclevel Syncpoint, SNA Server generates an Attach containing the
TP's current protected LUW_ID.

The second LUW_ID is the TP's unprotected LUW_ID. It is used on all conversations
allocated by the TP with a synclevel other than Syncpoint.

For remotely initiated TPs, the incoming Attach may contain an LUW_ID for the TP;
it is mandatory if the conversation is synclevel Syncpoint. For synclevel
Syncpoint conversations, SNA Server saves the LUW_ID as the TP's protected
LUW_ID and generates a new unprotected LUW_ID for it. For conversations other
than Syncpoint, SNA Server saves the LUW_ID as the TP's unprotected LUW_ID and
generates a new protected LUW_ID.

SNA Server generates LUW_IDs by concatenating:

- The fully qualified name of the local LU, preceded by a single byte
  indicating its length.

- A 6-byte LUW instance number, generated from the current date and time (see
  above summary).

- A 2-byte LUW sequence number, initialized to 1.

There are times when certain non-Syncpoint-related TPs (host or SNA Server based)
make use of the unprotected LUW_ID for accounting purposes and extract this
field using the GET_TP_PROPERTIES verb. These applications may become confused
if they are not aware of the changes that have been made to the LUW_ID instance
field.

NOTE: COM Transaction Integrator for IMS and CICS (also known as "COMTI") is one
application that commonly uses Syncpoint for 2-phased commit.

Additional query words:

======================================================================
Keywords          : kbsna300sp1 kbsna300sp2 kbsna300sp3 kbsna300sp4 sna4 kbsna400sp1 kbsna400sp2 
Technology        : kbAudDeveloper kbSNAServSearch kbSNAServ300 kbSNAServ400 kbSNAServ300SP3 kbSNAServ300SP1 kbSNAServ400SP1 kbSNAServ400SP2 kbSNAServ300SP2 kbSNAServ300SP4
Version           : WINDOWS:3.0,3.0 SP1,3.0 SP2,3.0 SP3,3.0 SP4,4.0,4.0 SP1,4.0 SP2
Issue type        : kbinfo

=============================================================================