文章目录

第112章 Caché 函数大全 $ZPOSITION 函数

返回表达式中可以在指定字段宽度内容纳的字符数。

大纲
$ZPOSITION(expression,field,pitch)

参数

  • expression 字符串表达式。
  • field 指定字段宽度的整数表达式。
  • pitch 可选-指定用于全角字符的间距值的数字表达式。默认值为2。其他允许值为1、1.25和1.5。
描述

$ZPOSITION是CachéObjectScript中提供的DSM-J函数。$ZPOSITION返回可放入字段值的表达式中的字符数。间距值确定用于全角字符的宽度。所有其他字符的默认宽度均为1,并被视为半角。由于半角字符计为1,因此field还表示适合字段的半角字符数。

$ZPOSITION将表达式中字符的宽度逐个相加,直到累积宽度等于字段值或直到表达式中不再有字符。因此,结果是在指定的字段值内可以容纳的字符数,包括不完全容纳的字符的任何小数部分。

注:$ZPOSITION在DSM-J模式下可以缩写为$ZP。此缩写不能在Caché模式下使用。

示例

在下面的示例中,假设变量字符串包含两个半角字符,后跟一个全角字符。

DHC-APP> WRITE $ZPOSITION(",,,",3,1.5)
3

在上面的示例中,字符串中的前两个字符适合指定的字段宽度,只剩下一个字符。字符串中的第三个字符是宽度为1.5(由Pitch参数确定)的全角字符,虽然该字符的三分之二(1/1.5)可以完全适合,但它并不完全适合。结果的小部分表明了这一事实。

在下面的示例中,字符串现在是一个字符串,它包含一个全角字符,后跟两个半角字符。返回结果为2.5:

 WRITE $ZPOSITION(string,3,1.5)

现在的结果不同了。这是因为前两个字符的总宽度为2.5,完全适合剩余的0.5。即便如此,只有一半的第三个字符(0.5/1)适合。

最后,如果字符串是包含三个半角字符的字符串,那么这三个字符将完全(且完全)匹配,结果将是3:

WRITE $ZPOSITION(string,3,1.5)

注意:全角字符是通过检查为Caché进程加载的模式匹配表来确定的。任何具有全角属性的字符都被视为全角字符。特殊的ZFWCHARZ Patcode可用于检查此属性(例如,char?1ZFWCHARZ)