The invdivdbl() function
The invdivdbl() function divides an interval value by a numeric value.
Syntax
mint invdivdbl(iv, num, ov)
intrvl_t *iv;
double num;
intrvl_t *ov;
- iv
- A pointer to an interval variable to be divided.
- num
- A numeric divisor value.
- ov
- A pointer to an interval variable with a valid qualifier.
Usage
The input and output qualifiers must both belong to the same interval class: either the year to month class or the day to fraction(5) class. If the qualifier for ov is different from the qualifier for iv (within the same class), the invdivdbl() function extends the result (as the invextend() function defines).
The invdivdbl() function divides the interval value in iv by num and stores the result in ov.
The value in num can be either a positive or a negative value.
Return codes
- 0
- The division was successful.
- <0
- The division failed.
- -1200
- A numeric value is too large (in magnitude).
- -1201
- A numeric value is too small (in magnitude).
- -1202
- The num parameter is zero (0).
- -1265
- Overflow occurred on an interval operation.
- -1266
- An interval value is incompatible with the operation.
- -1268
- A parameter contains an invalid interval qualifier.
Example
The demo directory
contains this sample program in the file invdivdbl.ec.
/*
* indivdbl.ec *
The following program divides an INTERVAL type variable by a numeric
value and stores the result in an INTERVAL variable. The operation is
done twice, using INTERVALs with different qualifiers to store the result.
*/
#include <stdio.h>
EXEC SQL include datetime;
main()
{
char out_str[16];
EXEC SQL BEGIN DECLARE SECTION;
interval day to second daytosec1;
interval hour to minute hrtomin;
interval day to second daytosec2;
EXEC SQL END DECLARE SECTION;
printf("INVDIVDBL Sample ESQL Program running.\n\n");
/* Input is 3 days, 5 hours, 27 minutes, and 30 seconds */
printf("Interval (day to second) string = '3 5:27:30'\n");
incvasc("3 5:27:30", &daytosec1);
/* Divide input value by 3.0, store in hour to min interval */
invdivdbl(&daytosec1, (double) 3.0, &hrtomin);
/* Convert the internal format to ascii for displaying */
intoasc(&hrtomin, out_str);
printf("Divisor (double) = 3.0 \n");
printf("-----------------------------------------------------\n");
printf("Quotient #1 (hour to minute) = '%s'\n", out_str);
/* Divide input value by 3.0, store in day to sec interval variable */
invdivdbl(&hrtomin, (double) 3.0, &daytosec2);
/* Convert the internal format to ascii for displaying */
intoasc(&daytosec2, out_str);
printf("Quotient #2 (day to second) = '%s'\n", out_str);
printf("\nINVDIVDBL Sample Program over.\n\n");
}
Output
INVDIVDBL Sample ESQL Program running.
Interval (day to second) string = '3 5:27:30'
Divisor (double) = 3.0
---------------------------------------------
Quotient #1 (hour to minute) = ' 25:49'
Quotient #2 (day to second) = ' 1 01:49:10'
INVDIVDBL Sample Program over.