| iiInstanceNr | input | integer | Instance number |
| icClass | input | character | Class shortname. |
| iiCompVersion | input | integer | Public version number of the component. |
| olFirst | output | logical | Indicates if this is the first instance to be added to current transaction. If it is, role-based security check will become mandatory. If it is not, role-based security check is optional. |
| oiReturnStatus | output | integer |
BLF
olFirst = not can-find (first tInstances).
find first tLevels where
tLevels.tiTransactionLevel = viTransactionLevel no-error.
/* Flag vlTransactionActive will be true when method CommitTransaction
or AbortTransaction is running.
At that time, no instances can be added or removed any more. */
if viTransactionLevel <= 0
or vlTransactionActive
or not available tLevels
then do:
<M-1 run SetMessage
(input 'No transaction active.':U (icMessage),
input '' (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'S':U (icType),
input 3 (iiSeverity),
input '' (icRowid),
input 'BLF-415':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in Transaction>
assign oiReturnStatus = -3.
return.
end.
/* Last added = last committed */
assign viFcCount1 = 0
viFcCount2 = 0.
for each tInstances:
if tInstances.tiPriority > viFcCount1
and tInstances.tiPriority < 9999
then assign viFcCount1 = tInstances.tiPriority.
Assign viFcCount2 = viFcCount2 + 1.
end.
If viFcCount2 + 1 > viFcMaxInstancesInTransaction
Then Do:
Assign vcMsg = substitute(#T-19'You reached the maximum number of instances (&1) in an active transaction.':255(978292632)T-19# + " "
+ #T-35'Try to limit the transaction itself, or contact your system administrator, to increase the value of MaximumInstancesInTransaction in the server.xml configuration file.':255(100994751)T-35#,viFcMaxInstancesInTransaction).
<M-2 run SetMessage
(input vcMsg (icMessage),
input '' (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input 'S':U (icType),
input 3 (iiSeverity),
input '' (icRowid),
input 'BLF-416':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in Transaction>
assign oiReturnStatus = -3.
return.
End.
find first tInstances where
tInstances.tiInstanceNr = iiInstanceNr no-error.
if not available tInstances
then create tInstances.
assign tInstances.tiInstanceNr = iiInstanceNr
tInstances.tcInsName = (if icClass begins "ins/":U
then substring (icClass,10,length(icClass,"CHARACTER":U) - 11,"CHARACTER":U)
else icClass)
tInstances.tiTransactionCount = tLevels.tiTransactionCount
tInstances.tiTransactionLevel = viTransactionLevel
tInstances.tiPriority = viFcCount1 + 1.