project QadFinancials > class BFRWAnalysisCode > method ValidateComponentPostCalculation


Parameters


icCalculationTextinputcharacter
icSumCharacterinputcharacter
icRowIdinputcharacter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BFRWAnalysisCode.ValidateComponentPost


program code (program1/bfrwanalysiscode.p)

assign viMaxLength = 3.
if icCalculationText matches "*~~" + icSumCharacter + "*" and 
   not (icCalculationText matches "*~~/*" )               and
   not (icCalculationText matches "*~~**")
then do:
    assign viIndex = 1.
    repeat:
       assign vcAnalysisCode = "".
       
       IF viIndex = NUM-ENTRIES(icCalculationText,icSumCharacter) + 1 
       THEN leave.
       
       assign vcAnalysisCode = ENTRY(viIndex , icCalculationText, icSumCharacter)
              viIndex = viIndex + 1.
       
       if trim(vcAnalysisCode) = ""
       then do:
           assign oiReturnStatus = -1.
           return.
       end.
       if vcAnalysisCode matches "(*)" then
       do:
           assign vcAnalysisCode = SUBSTRING(vcAnalysisCode, 2, LENGTH(vcAnalysisCode, "CHARACTER") - 2, "CHARACTER").
           if trim(vcAnalysisCode) = ""
           then do:
               assign oiReturnStatus = -1.
               return.
           end.
       end.
       <M-97 run ValidateComponentPostCalculationSpecialChars
          (input  vcAnalysisCode (icCalculationText), 
           output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
       if viFcReturnSuper < 0 or viFcReturnSuper > 0 and oiReturnStatus = 0 then assign oiReturnStatus = viFcReturnSuper.
       if oiReturnStatus < 0 then return.
    end.
end.
else if icCalculationText matches "*~~/*" or 
        icCalculationText matches "*~~**"
then do:
    /* c1*c2*c3 */
    assign viIndex = 1.
    <M-98 run ValidateComponentPostCalculationSplitEntities
       (input  icCalculationText (icCalculationText), 
        input  '*,/':U (icDelimiterChars), 
        input  icRowId (icRowId), 
        output vcCalculationPart1 (ocCalculationPart1), 
        output vcCalculationPart2 (ocCalculationPart2), 
        output vcCalculationPart3 (ocCalculationPart3), 
        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
    if viFcReturnSuper < 0 or viFcReturnSuper > 0 and oiReturnStatus = 0 then assign oiReturnStatus = viFcReturnSuper.
    if oiReturnStatus < 0 then return.							

    <M-35 run ValidateComponentPostCalculationSpecialChars
       (input  vcCalculationPart1 (icCalculationText), 
        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
    if viFcReturnSuper < 0 or viFcReturnSuper > 0 and oiReturnStatus = 0 then assign oiReturnStatus = viFcReturnSuper.
    if oiReturnStatus < 0 then return.
    
    
    <M-19 run ValidateComponentPostCalculationSpecialChars
       (input  vcCalculationPart2 (icCalculationText), 
        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
    if viFcReturnSuper < 0 or viFcReturnSuper > 0 and oiReturnStatus = 0 then assign oiReturnStatus = viFcReturnSuper.
    if oiReturnStatus < 0 then return.
    
    <M-65 run ValidateComponentPostCalculationSpecialChars
       (input  vcCalculationPart3 (icCalculationText), 
        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
    if viFcReturnSuper < 0 or viFcReturnSuper > 0 and oiReturnStatus = 0 then assign oiReturnStatus = viFcReturnSuper.
    if oiReturnStatus < 0 then return.
end. /* else if icCalculationText matches or  */
else do:
    <M-69 run ValidateComponentPostCalculationSpecialChars
       (input  icCalculationText (icCalculationText), 
        output viFcReturnSuper (oiReturnStatus)) in BFRWAnalysisCode>
    if viFcReturnSuper < 0 or viFcReturnSuper > 0 and oiReturnStatus = 0 then assign oiReturnStatus = viFcReturnSuper.
    if oiReturnStatus < 0 then return.
end.