project QadFinancials > class BFRWColumnGroup > method UpdateCalculationFormulaWithNewReference
Description
Pre validation method.
Parameters
bcColumnCalculationFormula | input-output | character | |
icColumnSequenceChangeList | input | character | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
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).