2.5.4.28 Div

The Div function performs a division calculation.

ABNF:

 Div = val val " _DIV():128"

Required Arguments:

Name: Arg1

Type: vDoubleEx

An argument that specifies the first operand of the division operation.

Name: Arg2

Type: vDoubleEx

An argument that specifies the second operand of the division operation.

Return Value:

Type: vNum, PtgCy, PtgErr

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

SET returnType = PtgNum

SET returnError = #VALUE!

SET returnDimension = 0

SET returnCurrencyID = 0

IF Arg2.Value = 0 THEN

            SET returnType = PtgErr

            SET returnError = #DIV/0

ELSE 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

                        SET returnError = #VALUE!

            END IF

ELSE IF Arg1.Unit is a vUnitTypeAND Arg2.Unit is not a vUnitType THEN

            SET returnType = Arg1.Unit

            SET returnDimension = Arg1.Dimension

ELSE IF Arg1.Unit is not a vUnitType AND Arg2.Unit is a vUnitType THEN

            SET returnType = Arg2.Unit

            SET returnDimension = Arg2.Dimension

ELSE

            IF Arg1.Unit = PtgNumPctAND Arg2.Unit = PtgNumPct THEN

                        SET returnDimension = 1

            ELSE IF Arg1.Unit = PtgNumPct THEN

                        SET returnDimension = -Arg2.Dimension

            ELSE IF Arg2.Unit = PtgNumPct THEN

                        SET returnDimension = Arg1.Dimension

            ELSE

                        SET returnDimension = Arg1.Dimension – Arg2.Dimension

            END IF

            IF Arg1.Unit is a vUnitType THEN

                        SET returnType = Arg1.Unit

            ELSE   

                        SET returnType = Arg2.Unit

            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 returnError

ELSE IF (returnType = PtgAcreOR returnType = PtgHectare) AND returnDimension != 2 THEN

            Return type is PtgNumMultiDimwith unit = PtgNumDftand dimension = returnDimension

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