内部函数


内部函数需要在表达式中使用,用于实现数学计算,文本处理,日期时间值的运算等等多种功能。相对于命令来说, 函数使用更简便灵活,且它可以在命令内的选项值表达式中使用,有些功能 也只通过函数的方式提供,比如:三角函数,日期时间计算等等,在很多时候用函数也可以极大的简化命令步骤,如需要输 入一个格式化的文本到当前窗口,如果使用命令,则需要两条命令:

  1. 格式化日期 "2012-12-1 00:00" 并保存到变量 v_datestr
  2. 输入文本 %v_datestr%

如果使用函数,则只需要一条命令即可,如下:

  1. 输入文本 %=format_date("2012-12-1 00:00")%

软件包括以下类别的内部函数:

使用函数

任何可以接受表达式的命令中都可以使用函数。函数使用以下列规则:

  1. 函数只能在表达式中使用。

    函数只能包含在表达式中,也就是必须以 %= 百分号+等于号开始,并且以 % 百分号结束。 如下例:

    输入文本 "20+RAND( 0, 100 )" //RAND函数将不会执行, 20+RAND( 0, 100 )会被当成一段文本

    输入文本 "%=20+RAND( 0, 100 )%" //%=20+RAND( 0, 100 )%是一个正确的表达式

  2. 函数名称不区分大小写。

    在使用函数时,函数名称是不区分大小写的。如:输入文本 %=mid("this is a sample", 4)%输入文本 %=MID("this is a sample", 4)% 都能得到正确的结果。

  3. 除非特别说明,否则可以在函数参数表达式中使用函数。

    如:输入文本 %=UPPER( mid("this is a sample", 4) )% 将得到文本 IS A SAMPLE。

函数定义

使用函数前必须了解函数的定义,也就是函数的名称,需要什么参数,返回的结果是什么类型。本软件中使用下面的方式定义一个函数:

返回值类型 函数的名称( 函数的参数列表 )

例如,对于取文本的函数MID, 它的定义如下:

文本 MID( 文本, 位置, [数量] )

MID函数的定义详解

从左到右顺序 说明
文本 表示这个函数会返回一个文本。
MID 函数的名称为MID。
( 文本, 位置, [数量] ) 这个函数有三个参数,前两个是必须的,第三个参数是可选的(使用方括号括起来)。

函数参数

需要函数处理的数据必须通过参数的方式传入函数,多个参数间以逗号分隔,并且以从左到右的顺序传入函数。参数可以是固定的数据值, 也可以为表达式,这也就意味着可以把一个函数的返回值做为参数传入另外一个函数。如下例:

  • UPPER函数是转换文本为大写,下例是以固定数据值的方式调用:

    UPPER( "This is a sample" ) //输出结果为: THIS IS A SAMPLE。

  • 下例使用变量做为参数

    UPPER( v_txt ) //当v_txt的内容为This时, 输出结果为: THIS。

  • 下例使用LEFT函数的结果做为参数

    UPPER( LEFT( "This is a sample",4 ) ) //输出结果为: THIS。

可选参数 函数的参数分为普通参数和可选参数,普通参数在使用函数时必须提供,可选参数则可以根据情况提供或是不提供,在不提供的时候,函数内部将会以缺省值处理。 在函数的说明里面用方括号[]表示可选参数,如下例:

MID( 文本, 起始位置, [数量] ) -- 此函数含有一个可选参数“数量”

  • MID( "This is a sample", 2, 3 ) //表示取从第2个位置开始,取3个字符,返回结果 s i。
  • MID( "This is a sample", 2 ) //表示取从第2个位置开始到末尾,返回结果 s is a sample。

可变参数个数 对于一些函数来说,参数个数可能是不确定的,在函数定义中只要在最后出现三个点 ... 则表示此函数接受不固定参数个数。如下面的函数:

MAX( 数字1, 数字2, [数字3,...] ) -- 此函数求最大值,允许参数个数不固定,但必须至少两个。

  • MAX( 1, 2 ) //传入两个参数给函数, 返回结果为数字 2
  • MAX( 3, 6, 10, 1, 2 ) //传入五个参数给函数, 返回结果为数字 10

参数数据类型 函数会自动转换参数的数据类型。比如: CHAR函数,它需要一个编码数字,正常调用时需要一个数字,但也可以直接使用文本做为参数,下列的调用例子都是合法的。

  • CHAR( 65 ) //返回文本 "A"
  • CHAR( "65" ) //函数会自动把文本 "65" 转换成数字 65, 最终返回正确的文本 "A"

更多

有关变量和表达式的更多内容,请点击此处

>