Compaq COBOL
Reference Manual
7.31 ORD
Description
The ORD function returns an integer value that is the ordinal position
of the argument in the collating sequence for the program. The lowest
ordinal position is 1.
arg
is an alphabetic or alphanumeric argument one character in length.
Rules
- The type of this function is integer.
- The value returned is the ordinal position of the specified
character in the program collating sequence. (See the information on
the ALPHABET clause in Chapter 4.)
Example
COMPUTE POSITION = FUNCTION ORD (SINGLE-CHAR).
|
If SINGLE-CHAR (an alphabetic or alphanumeric data item) has the value
"A", the integer representing the ordinal position of "A" in the
program collating sequence (66 for native) is the value returned and
stored in POSITION (a numeric integer data item). (The numeric
representation of a character is not the same as its ordinal position.
Numeric representation starts at 0, whereas ordinals start at 1. Thus,
the ordinal value of a character is always 1 greater than its numeric
value.)
7.32 ORD-MAX
Description
The ORD-MAX function returns a value that is the ordinal number of the
argument that contains the maximum value.
arg
is an alphabetic, alphanumeric, integer, or numeric argument.
Rules
- The type of this function is integer.
- The arguments must be all alphabetic, all alphanumeric, all
integer, or all numeric, except that integer and numeric arguments can
be mixed and alphabetic and alphanumeric arguments can be mixed.
- The returned value is the ordinal number that corresponds to the
position of the argument having the greatest value in the argument
series.
- The comparisons used to determine the greatest value are made
according to the rules for simple conditions. (See Chapter 6.)
- If more than one argument has the same greatest value, the number
returned corresponds to the position of the leftmost argument having
that value.
- If there is only one argument, the value returned is 1.
Example
COMPUTE RSULT = FUNCTION ORD-MAX (A, B, C).
|
A, B, and C are alphanumeric data items one character in length. If the
value "A" is in A, "B" is in B, and "C" is in C, the value returned and
stored in RSULT (a numeric data item) is 3, because the third argument,
C, has the greatest value.
7.33 ORD-MIN
Description
The ORD-MIN function returns a value that is the ordinal number of the
argument that contains the minimum value.
arg
is an alphabetic, alphanumeric, integer, or numeric argument.
Rules
- The type of this function is integer.
- The arguments must be all alphabetic, all alphanumeric, all
integer, or all numeric, except that integer and numeric arguments can
be mixed and alphabetic and alphanumeric arguments can be mixed.
- The returned value is the ordinal number that corresponds to the
position of the argument having the least value in the argument series.
- The comparisons used to determine the least value are made
according to the rules for simple conditions. (See Chapter 6.)
- If more than one argument has the same least value, the number
returned corresponds to the position of the leftmost argument having
that value.
- If there is only one argument, the value returned is 1.
Example
COMPUTE RSULT = FUNCTION ORD-MIN (A, B, C).
|
A, B, and C are alphanumeric data items one character in length. If the
value "A" is in A, "B" is in B, and "C" is in C, the value returned and
stored in RSULT (a numeric data item) is 1, because the first argument,
A, has the least value.
7.34 PRESENT-VALUE
Description
The PRESENT-VALUE function returns a value that approximates the
present value of a series of future period-end amounts at a discount
rate. The discount rate is specified by the first argument, and the
future period-end amount(s) by one or more subsequent arguments.
rate
is a numeric argument greater than -1 representing the discount rate.
amt
is a numeric argument representing a future period-end amount.
Rules
- The type of this function is numeric.
- The period-end amounts specified must be for periods of equal
duration, and the discount rate must be the rate per period (for
example, if each period is a year, then use the annual discount rate).
- The returned value is an approximation of the summation of a series
of calculations with each term in the following form:
There is one term for each occurrence of amt. The exponent, n, is
incremented from 1 by 1 for each term in the series. If there are four
arguments (rate, amt-1, amt-2, amt-3), the calculation is as follows:
present-value = amt-1 / (1 + rate) ** 1 +
amt-2 / (1 + rate) ** 2 + amt-3 / (1 +
rate) ** 3
|
Example
COMPUTE RSULT = FUNCTION PRESENT-VALUE (DISCOUNT-RATE, 2000).
|
DISCOUNT-RATE and RSULT are numeric data items. If DISCOUNT-RATE has
the value 0.08, the value returned and stored in RSULT is approximately
1851.85.
7.35 RANDOM
Description
The RANDOM function returns a numeric value that is a pseudo-random
number from a rectangular distribution.
seed
is an optional integer argument with the value of 0 or a positive
integer, used as the seed value to generate a sequence of pseudo-random
numbers. The range of seed values that results in unique sequences of
pseudo-random numbers is 0 through 2147483647.
Rules
- The type of this function is numeric.
- If the optional seed argument is not specified by the first
reference to this function in the run unit, the seed value is 0.
- If any subsequent reference to this function in the run unit does
not specify the seed argument, the value returned is the next number in
the current sequence of pseudo-random numbers.
- If a subsequent reference to this function in the run unit does
specify the seed argument, a new sequence of pseudo-random numbers is
started.
- The returned value is greater than or equal to 0 and less than 1.
- For a given seed value, the sequence of pseudo-random numbers is
always the same.
Example
COMPUTE RSULT-1 = FUNCTION RANDOM (12345).
.
.
.
COMPUTE RSULT-2 = FUNCTION RANDOM.
.
.
.
COMPUTE RSULT-3 = FUNCTION RANDOM (12345).
|
RSULT-1, RSULT-2, and RSULT-3 are numeric data items. Assuming the
three sentences in the example are in the same run unit, the values
returned and stored in RSULT-1 and RSULT-3 are the same. RSULT-2 has a
different value consisting of the next number in the sequence that was
started by the first reference to the function.
7.36 RANGE
Description
The RANGE function returns a value that is equal to the value of the
maximum argument minus the value of the minimum argument.
num
is a numeric or integer argument.
Rules
- The type of this function depends upon the argument types, as
follows:
Arguments |
Function Type |
Integer (all arguments)
|
Integer
|
Numeric (some arguments might be integer)
|
Numeric
|
- The returned value is equal to the greatest value in the series of
arguments minus the least value in the series.
- The comparisons used to determine the greatest and least values are
made according to the rules for simple conditions. (See Chapter 6.)
- If only one argument is specified, the value returned is 0.
Example
COMPUTE RSULT = FUNCTION RANGE (4, 8, 10).
|
The value returned and stored in RSULT (a numeric integer data item) is
6.
7.37 REM
Description
The REM function returns a numeric value that is the remainder of the
first argument divided by the second argument.
arg-1
is a numeric or integer argument.
arg-2
is a numeric or integer argument whose value cannot be 0.
Rules
- The type of this function is numeric.
- The returned value is the remainder of the first argument divided
by the second argument, and is defined as the following expression:
arg-1 -- (arg-2 * FUNCTION INTEGER-PART (arg-1 /
arg-2))
|
(The INTEGER-PART function returns an integer that is the integer
portion of its argument. See Section 7.18. )
Examples
-
COMPUTE RSULT = FUNCTION REM (3, 2).
|
The value returned and stored in RSULT (a numeric data item) is 1.
-
COMPUTE RSULT = FUNCTION REM (4, 2).
|
The value returned and stored in RSULT is 0.
7.38 REVERSE
Description
The REVERSE function returns a character string of exactly the same
length as the argument and whose characters are exactly the same as
those of the argument, except that they are in reverse order.
arg
is an alphabetic or alphanumeric argument at least one character in
length.
Rules
- The type of this function is alphanumeric.
- If the argument is a character string of length n, the returned
value is a character string of length n.
- When 1 is less than or equal to j and j is less than or equal to n,
the character in position j of the returned value is the character from
position (n--j)+1 of the argument.
Example
MOVE FUNCTION REVERSE (STR) TO RSULT.
|
STR and RSULT are alphanumeric data items four characters in length. If
STR contains the value "ABCD" then "DCBA" is the value returned and
stored in RSULT.
If the value "AB" is moved to the four-character data item STR, then
STR will actually contain "AB " with two trailing spaces. Then the
REVERSE function returns the value " BA" with two leading spaces.
7.39 SIN
Description
The SIN function returns a numeric value that approximates the sine of
an angle or arc, expressed in radians, that is specified by the
argument.
angle
is a numeric argument having the value of the measurement in radians of
an angle or arc.
Rules
- The type of this function is numeric.
- The returned value is the approximation of the sine of angle, and
is greater than or equal to -1 and less than or equal to +1.
Example
COMPUTE SIN-RSLT = FUNCTION SIN (X).
|
If the value of X is 3, the approximate sine of an angle of 3 radians
is moved to SIN-RSLT (a numeric data item).
7.40 SQRT
Description
The SQRT function returns a numeric value that approximates the square
root of the argument.
num
is a numeric or integer argument whose value must be 0 or positive.
Rules
- The type of this function is numeric.
- The returned value is the absolute value of the approximation of
the square root of the argument.
Example
COMPUTE RSULT = FUNCTION SQRT (NUM).
|
NUM and RSULT are numeric data items. If NUM has the value 4, the value
returned and stored in RSULT is 2.
7.41 STANDARD-DEVIATION
Description
The STANDARD-DEVIATION function returns a numeric value that
approximates the standard deviation of its arguments.
arg
is a numeric or integer argument.
Rules
- The type of this function is numeric.
- The returned value is the approximation of the standard deviation
of the argument series.
- The returned value is calculated as follows:
- The difference between each argument's value and the arithmetic
mean (average) of the argument series is calculated and squared.
- The values obtained are then added together. This sum is divided by
the number of values in the argument series.
- The square root of the quotient obtained is then calculated. The
returned value is the absolute value of this square root.
- If the argument series consists of only one value, the returned
value is 0.
Example
COMPUTE RSULT = FUNCTION STANDARD-DEVIATION (A, B, C).
|
A, B, C, and RSULT are numeric data items. If A has the value 1, B has
2, and C has 12, the standard deviation of these values (approximately
4.96655) is returned and stored in RSULT.
7.42 SUM
Description
The SUM function returns a value that is the sum of the arguments.
arg
is an integer or numeric argument.
Rules
- The type of this function depends on the argument types, as follows:
Arguments |
Function Type |
Integer (all arguments)
|
Integer
|
Numeric (some arguments might be integer)
|
Numeric
|
- The returned value is the sum of the arguments.
Examples
-
COMPUTE RSULT = FUNCTION SUM (A, B, C).
|
A, B, C, and RSULT are numeric or numeric integer data items. If A has
the value +4, B -2, and C +1, the sum of +3 is the value returned and
stored in RSULT.
-
COMPUTE TOTAL-OUT =
FUNCTION SUM(FUNCTION SQRT(X),
FUNCTION MOD(Y, Z),
A * B,
FUNCTION ACOS(1)).
|
This example shows functions used as arguments to another function. The
data items are all numeric or numeric integer. The value returned and
stored in TOTAL-OUT is the approximate value of the result of adding
the values returned by the functions SQRT, MOD, and ACOS to another
arithmetic expression, A * B.
- The following example shows two arguments that are tables, with
generic (ALL) subscripting, and a third argument that is a literal:
FUNCTION SUM(A(ALL), B(ALL, 2), 4)
|
The number of subscripts shows that A is a one-dimensional table
and B is a two-dimensional table. If A has three occurrences, then
A(ALL) is a set consisting of the elements A(1), A(2), and A(3). If B
has two occurrences in its outer dimension, then B(ALL, 2) is a set
consisting of the elements in B(1, 2) and B(2, 2).
If A has three
elements altogether with the values 2 in A(1), 3 in A(2), and 3 in
A(3), and if B has the values 9 in B(1, 2) and 3 in B(2, 2),
then the value returned is 24---the sum of 2, 3, 3 (from table A), 9, 3
(from table B), and 4 (the third argument).
7.43 TAN
Description
The TAN function returns a numeric value that approximates the tangent
of an angle or arc, expressed in radians, that is specified by the
argument.
arg
is a numeric or integer argument.
Rules
- The type of this function is numeric.
- The returned value is the approximate tangent of the angle
specified.
Example
COMPUTE TAN-RSLT = FUNCTION TAN (X).
|
X and TAN-RSULT are numeric data items. If the value of X is 3, the
approximate tangent of an angle of 3 radians is moved to TAN-RSLT.
7.44 TEST-DATE-YYYYMMDD
Description
The TEST-DATE-YYYYMMDD function tests whether a standard date in the
form YYYYMMDD is a valid date in the Gregorian calendar.
General Format
FUNCTION TEST-DATE-YYYYMMDD ( arg )
|
arg
is an integer.
Rules
- The type of this function is integer.
- If the year is not within the range 1601 through 9999, the
function returns a 1.
Otherwise, if the month is not within the
range 1 through 12, the function returns a 2.
Otherwise, if the
number of days is invalid for the given month, the function returns a
3.
Otherwise, the function returns a 0 to indicate the date is a
valid date in the form YYYYMMDD.
Example
IF FUNCTION TEST-DATE-YYYYMMDD (123456789) = 1
DISPLAY "correct - invalid year (12345)".
IF FUNCTION TEST-DATE-YYYYMMDD (19952020) = 2
DISPLAY "correct - invalid mm (20)".
IF FUNCTION TEST-DATE-YYYYMMDD (19950229) = 3
DISPLAY "correct - invalid dd (29)".
IF FUNCTION TEST-DATE-YYYYMMDD (20040229) = 0
DISPLAY "correct - valid YYYYMMDD".
|
7.45 TEST-DAY-YYYYDDD
Description
The TEST-DAY-YYYYDDD function tests whether a Julian date in the form
YYYYDDD is a valid date in the Gregorian calendar.
General Format
FUNCTION TEST-DAY-YYYYDDD ( arg )
|
arg
is an integer.
Rules
- The type of this function is integer.
- If the year is not within the range 1601 through 9999, the
function returns a 1.
Otherwise, if the number of days is invalid
for the given year, the function returns a 2.
Otherwise, the
function returns a 0 to indicate the date is a valid date in the form
YYYYDDD.
Example
IF FUNCTION TEST-DAY-YYYYDDD (12345678) = 1
DISPLAY "correct - invalid year (12345)".
IF FUNCTION TEST-DAY-YYYYDDD (1995366) = 2
DISPLAY "correct - invalid ddd (366)".
IF FUNCTION TEST-DAY-YYYYDDD (2004366) = 0
DISPLAY "correct - valid YYYYDDD".
|