project BLF > class BTimeOutDaemonQueue > method CreateTimeOutDaemonQueue

Description

Method to create the TimeOutDaemonQueue records.


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


BLF
method BTimeOutDaemonProcessor.LoadExternalWork


program code (program1/btimeoutdaemonqueue.p)

/* Set default return-status and clear the data */
If oiReturnStatus = 0    
Then assign oiReturnStatus = -98.

<M-5 run ClearData
   (output viFcReturnSuper (oiReturnStatus)) in BTimeOutDaemonQueue>    
if viFcReturnSuper <> 0 
then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 
then Return.
    
/* Find the Budget Daemon-record  */
<Q-6 run DaemonPrim (all) (Read) (NoCache)
          (input {&TIMEOUTDAEMON}, (DaemonName)
           input ?, (DaemonId)
           output dataset tqDaemonPrim) in BBaseDaemon >    
find tqDaemonPrim where
     tqDaemonPrim.tcDaemonName = {&TIMEOUTDAEMON}
     no-lock no-error.
if not available tqDaemonPrim
then do:
    assign vcMsg = trim(#T-1'TimeOut-Daemon record does not exist.':100(8534)T-1#)
           oiReturnStatus = -3.
    <M-7 run SetMessage
       (input  vcMsg (icMessage), 
        input  '' (icArguments), 
        input  '' (icFieldName), 
        input  '' (icFieldValue), 
        input  'E':U (icType), 
        input  1 (iiSeverity), 
        input  '' (icRowid), 
        input  'BLF-225':U (icFcMsgNumber), 
        input  '' (icFcExplanation), 
        input  '' (icFcIdentification), 
        input  '' (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BTimeOutDaemonQueue>        
    Return.
end. /* if not available tqDaemonPrim */
assign viParentDaemonId   = tqDaemonPrim.tiDaemonId
       vcParentDaemonName = tqDaemonPrim.tcDaemonName.                          

/* create daemon queue records */
<Q-13 run FcSessionByAll (all) (Read) (NoCache)
   (input ?, (SessionInstanceId)
    input True, (GlobalSessionNeedsUpdate)
    output dataset tqFcSessionByAll) in BFcSession >
For Each tqFcSessionByAll:
    <M-12 run AddDetailLine
       (input  'fcDaemonQueue':U (icTable), 
        input  ? (icParentRowid), 
        output viFcReturnSuper (oiReturnStatus)) in BTimeOutDaemonQueue>
    if viFcReturnSuper <> 0 
    then assign oiReturnStatus = viFcReturnSuper.
    if viFcReturnSuper < 0 
    then Return.

    assign tfcDaemonQueue.DaemonId                  = tqDaemonPrim.tiDaemonId
           tfcDaemonQueue.DaemonQueueStatus         = {&DAEMONQUEUESTATUS-WAITING}
           tfcDaemonQueue.DaemonQueuePriority       = 1
           tfcDaemonQueue.DaemonQueueRef            = "TIMEOUT" + String(tqFcSessionByAll.tiSessionInstance_ID)
           tfcDaemonQueue.DaemonQueueRefDescription = tqFcSessionByAll.tcGlobalSessionId .
End. /*For Each tqFcSessionByAll:*/    

/* Validate, AddtionalUpdates and Save */
if can-find (first tfcDaemonQueue where 
                   tfcDaemonQueue.tc_Status = "N":U)
then do :
    <M-8 run ValidateBC
       (output viFcReturnSuper (oiReturnStatus)) in BTimeOutDaemonQueue>        
    if viFcReturnSuper <> 0 
    then assign oiReturnStatus = viFcReturnSuper.
    if viFcReturnSuper < 0 
    then Return.
    <M-9 run AdditionalUpdates
       (output viFcReturnSuper (oiReturnStatus)) in BTimeOutDaemonQueue>        
    if viFcReturnSuper <> 0 
    then assign oiReturnStatus = viFcReturnSuper.
    if viFcReturnSuper < 0 
    then Return.
    <M-10 run DataSave
       (output viFcReturnSuper (oiReturnStatus)) in BTimeOutDaemonQueue>
    if viFcReturnSuper <> 0 

    then assign oiReturnStatus = viFcReturnSuper.
    if viFcReturnSuper < 0 
    then Return.
end. /* if can find */
        
/* ========================= */
/* Set return-status = 0     */
/* ========================= */
if oiReturnStatus = -98
then assign oiReturnStatus = 0.