project QadFinancials > class BFRWColumnGroup > method UpdateCalculationFormulaWithNewReference

Description

Pre validation method.


Parameters


bcColumnCalculationFormulainput-outputcharacter
icColumnSequenceChangeListinputcharacter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BFRWColumnGroup.CalculateColDetResequence


program code (program1/bfrwcolumngroup.p)

/* ======================================================================================= */
/* Update calculation formula with new column seqeunces                                    */
/* ======================================================================================= */
assign vlIsColReference           = false 
       vcCalcFormulaNew           = ""
       bcColumnCalculationFormula = bcColumnCalculationFormula + " ":U
       viCalcFormulaLength        = length(bcColumnCalculationFormula, "CHARACTER").
       
do viCharIndex = 1 to viCalcFormulaLength:
    
    /* Get currently processed character */
    assign vcCurrCharacter = substring(bcColumnCalculationFormula, viCharIndex, 1, "CHARACTER").
   
    if not vlIsColReference
    /* Parsing everything else then column reference */
    then do:
        assign vcCalcFormulaNew = vcCalcFormulaNew + vcCurrCharacter.
        if vcCurrCharacter = 'c':U
        then assign vlIsColReference  = true
                    vcColumnReference = "":U. 
    end.
    /* Parsing column reference */
    else do:
        if vcCurrCharacter >= '0' and vcCurrCharacter <= '9'
        then assign vcColumnReference = vcColumnReference + vcCurrCharacter.
        else do:
            /* Convert original reference into new one */
            /* First find orignal column sequence in the column sequence change list */
            assign vlIsTranslationFound      = false
                   viColSeqChangeListNumEntr = num-entries(icColumnSequenceChangeList, chr(4)).
                   
            do viCounter = 1 to viColSeqChangeListNumEntr:
                assign vcColumnChangeKey = entry(viCounter, icColumnSequenceChangeList, chr(4)).
                
                if vcColumnChangeKey = "":U or vcColumnChangeKey = ?
                then next.
                
                assign vcOriginalColSeq  = entry(1, vcColumnChangeKey, chr(2))
                       vcNewColSeq       = entry(2, vcColumnChangeKey, chr(2)).
                
                if vcOriginalColSeq = vcColumnReference
                then do:
                    assign vlIsTranslationFound = true.
                    leave.
                end.
            end. /* do viCounter = 1 to num-entries(icColumnSequenceChangeList,chr(4)): */

            /* Update column reference */
            if vlIsTranslationFound
            then assign vcCalcFormulaNew = vcCalcFormulaNew + vcNewColSeq.
            else assign vcCalcFormulaNew = vcCalcFormulaNew + vcColumnReference.
            
            /* Add new character */
            assign vcCalcFormulaNew = vcCalcFormulaNew + vcCurrCharacter
                   vlIsColReference = false.
        end.
    end.
end. /* do viCharIndex = 1 to length(bcColumnCalculationFormula, "CHARACTER"): */

assign bcColumnCalculationFormula = trim(vcCalcFormulaNew).