![]() |
Copyright © TIBCO Software Inc. All Rights Reserved |
In USREXTPL, if a pointer (except for the one for the Initialization exit) is 0 or has the high‑order bit turned on, the corresponding exit routine is not invoked during Data Object Broker processing. You turn the high‑order bit off to enable the exit. You can use this to dynamically control which exits are taken. If you use this technique, you must take care to ensure correct serialization of the user exits.This is a map of USREXTPL, the general parameter list of the user exits (all fields default to zero):
Pointer to shared storage acquired by Initialization exit. Pointer to the File Management Checkpoint user exit.
Half-word maximum number of concurrent messages being processed. Half-word maximum number of pages per checkpoint. Half-word maximum number of transactions per checkpoint. Half-word number of resident pages requested. The redolog has two distinct formats. To determine the applicable format, look at the first two bytes.If the first two bytes of the intent list are X'0001', the intent list is in format 1, which is described in the following tables.
Offset Length • “ ” (X'40') retain locks• “R” (X'D9') release locks (end of transaction)
Length of the update segment (does not include itself).
R1PARMS contains the table parameter values in variable format if they are required for the table being updated. The entries consist of a 1-byte length field (the maximum length of an individual parameter is 127) followed by the data for each parameter.
R1BF1L and R1BF1V are repeated for each field in the table. If the high-order bit of R1BF1L is on for a field, this length field is two bytes long and the actual data length can be obtained by turning off this high order bit.
If the first two bytes of the intent list are not X'0001', the intent list is in format 2, which is described in the following tables.
Length of the Intent-list data (includes itself, is 2 bytes shorter than the length passed as the second parameter to the Redolog-1, Redolog-2, and Recovery exits). “ ” (X'40') retain locks“R” (X'D9') release locks (end of transaction)
Length of the update segment (ignore the high-order bit). “ ” (X'40') retain locks“R” (X'D9') release locks (end of transaction)
R2BOPARM, if non zero, contains an offset from the start of this Intent body to the parameter data for this request. The parameter values are in variable format if they are present for the table being processed. The entries consist of a 1-byte length field (the maximum length of an individual parameter is 127) followed by the data for each of the parameters. For a MOVTAB request, this field is overlaid with the segment number to which the table is to be relocated.
R2BOMISC, if non-zero, contains an offset from the start of this Intent body to the name of the key to be used for a Secondary Index Build or Delete. The Key value is 16 bytes long with the key padded with blanks on the right if necessary.
The RLBLOCK# and the x'40' bit in the RLTYPE field can be ignored. These are used internally by TIBCO Object Service Broker when it splits intents across multiple 4-KB records in its redolog data set. Only Intent-list entries are seen by the user-exit processing. The field RLTYPE for these entries is either x'20' or x'60'. The Redolog-1 and Redolog‑2 exits are passed the complete Intent-list entry once for each commit request.
For an Intent-list entry, the field RLSEQ# is a number between x'00000001' and x'00FFFFFE' that is incremented for each Commit transaction processed by the Data Object Broker. For Intents passed to the Redolog-1 and Redolog‑2 exits, this number is incremented sequentially and wraps back to 1 when the maximum possible value is reached. Under certain circumstances, it is possible for this value to be incremented by more than 1 for consecutive intents passed to the Redolog-1 and Redolog‑2 exit processing.
The following samples are produced on entry to the Redolog-1 user exit. For the SIXBUILD and SIXDELETE samples, the length of field DATA is reduced to 127.This is a format-1 intent list produced by adding two rows to the EXIT_SAMPLE table for the 'P1','P2','P3','P4' instance with keys of 1 and 2. The data field of the second row is padded with the character “X” to illustrate a two-byte length field.
This is a format-1 intent list produced by deleting the row of key 1 of the two rows added by the previous sample and replacing the row of key 2. The data field of the second row is padded with the character “Z” to illustrate a two-byte length field.
*FIELD.ZZZZZZZZZ* This is a format-2 intent list using $CLRTAB to clear the 'P1','P2','P3','P4' instance of EXIT_SAMPLE.
This is a format-2 intent list using SIXBUILD to build a secondary index on field DATA of EXIT_SAMPLE.
The definition length of field DATA is reduced from 256 to 127 for this sample so that the SIXBUILD can proceed.
This is a format-2 intent list using SIXDELETE to delete a secondary index on field DATA of EXIT_SAMPLE.
The definition length of field DATA is reduced from 256 to 127 for this example so that the SIXDELETE can proceed.
This is a format-2 intent list using MOVTAB to move table EXIT_SAMPLE to segment 2 from segment 1.
![]() |
Copyright © TIBCO Software Inc. All Rights Reserved |