%SUBST(获取子串)
%SUBST(string:start {:length {: *NATURAL | *STDCHARSIZE }})
%SUBST 返回参数字符串的一部分。 它也可以 用作具有 EVAL 操作码的赋值的结果。
start 参数表示子串的起始位置。
length 参数表示子串的长度。 如果未指定,那么长度是字符串参数的长度减去起始值加 1。
该字符串必须是 字符,图形或 UCS-2数据。 起始位置和长度可以是任何数字值或小数位数为零的数字表达式。 起始位置必须大于零。 长度可以大于或等于零。
当字符串参数为可变长度时,将根据当前长度而不是最大长度来检查其他参数的值。
第三个或第四个参数可以是 *NATURAL 或 *STDCHARSIZE ,以覆盖语句的当前 CHARCOUNT 方式。 如果指定了此参数,那么它必须是最后一个参数。
- 指定 *NATURAL 以指示 %SUBST 以 CHARCOUNT NATURAL 方式运行。 起始位置和长度以字符计,而不是以字节或双字节计。 例如,如果基本字符串是值为 "ábç12" 的 UTF-8 字符串,那么 3 的起始位置表示 "ç" ,因为它是第三个字符。
- 指定 *STDCHARSIZE 以指示 %SUBST 在 CHARCOUNT STDCHARSIZE 方式下运行。 在上一个示例中,使用 CHARCOUNT STDCHARSIZE 方式时, 3 的起始位置引用 "b" ,因为它是第三个字节。 字符 "á" 和 "ç" 是 2 字节字符。
注: 由于 /CHARCOUNT 编译器伪指令或 CHARCOUNT 控制关键字, %SUBST 还可以在 CHARCOUNT NATURAL 方式下运行。
当指定为定义规范关键字的参数时,这些参数必须是字面值或表示字面值的命名常量。 当在自由格式计算规范上指定时,参数可以是任何表达式。