VariantDiv
(DecimalDiv)
f90VB Modules
f90VBDefs, f90VBVariants
Summary
Returns the result from dividing two variants.
Syntax
| type(VARIANT) function VariantDiv | (VarLeft, VarRight, iRet) |
| type(VARIANT),intent(in):: | VarLeft |
| type(VARIANT),intent(in):: | VarRight |
| integer(HRESULT_KIND),intent(out),optional:: | iRet |
Arguments
VarLeft and VarRight [Input]
Two variant values. Must be initialized variants.
iRet [Output/Optional]
Upon return, iRet contains S_OK or an error code. See comments for more information.
Comments
The function divides the two provided variants using the following rules:
| If: | Function returns a: | |
| Both expressions are of the string, date, character, Boolean type | Division | |
| One expression is a string type and the other a character | Division | |
| One expression is numeric and the other is a string | Division | |
| Both expressions are numeric | Division | |
| Either expression is NULL | Null variant | |
| VarRight is empty and VarLeft is anything but empty | DISP_E_DIVBYZERO | |
| VarLeft is empty and VarRight is anything but empty | Zero(0) of double subtype | |
| Both expressions are empty | DISP_E_OVERFLOW | |
Functions DecimalDiv works exactly the same as VariantDiv, but the arguments and the return value are of type DECIMAL.
Argument iRet
Indicates success or failure of the subroutine. The following codes can be returned in this argument:
| Value returned in argument iRet | Description | |
| S_OK | Success. | |
| DISP_E_BADVARTYPE | One or both of the passed variant types are not a valid type of variant. | |
| DISP_E_TYPEMISMATCH | At least one of the variants could not be coerced to the appropriate type for this operation. | |
| E_INVALIDARG | One of the arguments is invalid. | |
| E_OUTOFMEMORY | Memory could not be allocated for the operation.. | |
Examples
See example for VariantAdd.
Related Topics
| For information about: | See: | |
| Variant integer division | VariantIDiv | |
| Variant multiplication | VariantMul | |