Caché ObjectScript Reference
$ZPOSITION
|
|
Returns the number of characters in an expression that can fit within a specified field width.
Synopsis
$ZPOSITION(expression,field,pitch)
$ZPOSITION returns the number of characters in
expression that can fit within the
field value. The
pitch value determines the width to use for full-width characters. All other characters receive a default width of 1 and are considered to be half-width. Because half-width characters count as 1,
field also expresses the number of half-width characters that fit in
field.
$ZPOSITION adds the widths of the characters in the
expression one at a time until the cumulative width equals the value of
field or until there are no more characters in
expression. The result is thus the number of characters that will fit within the specified
field value including any fractional part of a character that would not completely fit.
Note:
$ZPOSITION can be abbreviated as $ZP in DSM-J mode. This abbreviation cannot be used in Caché mode.
In the following example, assume that the variable
string contains two half-width characters followed by a full-width character.
WRITE $ZPOSITION(string,3,1.5)
returns 2.6666666666666666667.
In the above example, the first two characters in
string fit in the specified field width with one left over. The third character in
string, a full-width character with a width of 1.5 (determined by the pitch argument), would not completely fit, although two thirds (1/1.5) of the character would fit. The fractional part of the result indicates that fact.
In the following example,
string is now a string that contains a full-width character followed by two half-width characters. The result returned is 2.5:
WRITE $ZPOSITION(string,3,1.5)
The results are now different. This is because the first two characters, which have a combined width of 2.5, would completely fit with .5 left over. Even so, only half of the third character (.5/1) would fit.
Finally, if
string is a string that contains three half-width characters then all three characters would completely (and exactly) fit, and the result would be 3:
WRITE $ZPOSITION(string,3,1.5)