project BLF > class Persistence (Progress) > method AddNumber

Description

Add the reference to a reserved number into the instance data. This information will be used by housekeeping to release this number when necessary.

PreCondition

This method is to be used by the BNumber class only.


Parameters


iiInstanceIdinputinteger
icClassNameinputcharacter
icNumberDatainputcharacter


Internal usage


unused


program code (program1/progress.p)

put-string(vat,1) = icNumberData.

if not (valid-handle(vhInstanceQuery) and
        viInstanceUID = vhInstanceQuery:unique-id)
then do:
    create buffer vhInstanceBuffer for table "fcInstance":U in widget-pool "persistent".
    create query vhInstanceQuery in widget-pool "persistent".
    vhInstanceQuery:forward-only = yes.
    vhInstanceQuery:set-buffers(vhInstanceBuffer).
    vhInstanceQuery:private-data = "Persistent".    /* do not ever delete this query */
    viInstanceUID = vhInstanceQuery:unique-id.
end.

/*
For better performance, immediately create the record without checking for uniqueness.
*/
viiiseq = time + random (10000,99999).
repeat transaction on error undo, retry:
    viiiseq = viiiseq + 1.
    vhInstanceBuffer:buffer-create().
    assign vhInstanceBuffer::Instance_ID       = iiInstanceId
           vhInstanceBuffer::InstanceSeq       = - viiiseq
           vhInstanceBuffer::InstanceData      = vat
           vhInstanceBuffer::InstanceIsInUse   = no
           vhInstanceBuffer::InstanceClassName = icClassName no-error.
    if vhInstanceBuffer::InstanceSeq = 0
    then vhInstanceBuffer:buffer-delete().
    else leave.
end.
vhInstanceBuffer:buffer-release().