2.5.4.3 Add

The Add function performs an addition calculation.

ABNF:

 Add = val val " _ADD():128"

Required Arguments:

Name: Arg1

Type: vDoubleEx

An argument that specifies the first operand of the calculation.

Name: Arg2

Type: vDoubleEx

An argument that specifies the second operand of the calculation.

Return Value:

Type: vNum, PtgCy, PtgErr

This function returns a vNum or a PtgCy containing the sum of Arg1 and Arg2. The type of the return value is calculated by the following algorithm.

SET returnType = PtgNum

SET returnDimension = 0

SET returnCurrencyID = 0

IF Arg1.Type = PtgCy AND Arg2.Type != PtgCy THEN

            SET returnType = PtgCy

            SET returnCurrencyID = currencyID of Arg1

ELSE IF Arg1.Type != PtgCy AND Arg2.Type = PtgCy THEN

            SET returnType = PtgCy

            SET returnCurrencyID = currencyID of Arg2

ELSE IF Arg1.Type = PtgCy AND Arg2.Type = PtgCy THEN

            SET returnType = PtgCy

            IF currencyID of Arg1 = currencyID of Arg2 OR currencyID of Arg2 = 1 THEN

                        SET returnCurrencyID = currencyID of Arg1

            ELSE IF currencyID of Arg1 = 1 THEN

                        SET returnCurrencyID = currencyID of Arg2

            ELSE

                        SET returnType = PtgErr

            END IF

ELSE IF Arg1.Type = PtgDate THEN

            SET returnType = Arg1.Type

            SET returnDimension = 1

ELSE IF Arg2.Type= PtgDate THEN

            SET returnType = Arg2.Type

            SET returnDimension = 1

ELSE IF Arg1.Unit = PtgNumDft AND Arg2.Unit is a vUnitType THEN

            SET returnType = Arg2.Unit

            SET returnDimension = 1

ELSE IF Arg1.Unit is a vUnitType THEN

            SET returnType = Arg1.Unit

            IF Arg2.Dimension = 0 OR Arg2.Dimension = Arg1.Dimension THEN

                        SET returnDimension = Arg1.Dimension

            ELSE   

                        SET returnDimension = 1

            END IF

            IF (returnType = PtgAcre OR returnType = PtgHectare) AND returnDimension != 2 THEN

                        SET returnType = PtgNumDft

            END IF

ELSE IF Arg2.Unit is a vUnitType THEN

            SET returnType = Arg2.Unit

            IF Arg1.Dimension = 0 OR Arg2.Dimension = Arg1.Dimension THEN

                        SET returnDimension = Arg2.Dimension

            ELSE

                        SET returnDimension = 1

            END IF

           

            IF (returnType = PtgAcre OR returnType = PtgHectare) AND returnDimension != 2 THEN

                        SET returnType = PtgNumDft

            END IF

END IF

IF returnType = PtgCy THEN

            Return type is PtgCy with currencyID = returnCurrencyID

ELSE IF returnType = PtgErr THEN

            Return type is PtgErr with error code of #VALUE!

ELSE IF returnDimension = 0 THEN

            Return type is PtgNum

ELSE IF returnDimension = 1 THEN

            Return type is returnType

ELSE

            Return type is PtgNumMultiDim with unit = returnType and dimension = returnDimension

END IF