关于I的宏

23
0

1505121235 数据达人Lv4

发表于2020-5-22 14:06

楼主
1.简介
     关键字:宏、宏引用
     很多地方都借用了"宏"这个工具,它是一个约定的标记,赋予该标记以特定的逻辑含义。在I里面,宏通常用两个百分号,中间加上宏名,来构成一个对该宏的引用。目前宏引用广泛用于表头文字内容等地方,可以方便快捷地获取并显示系统常用信息,如%year%可以获取当前报表期所在年份,%username%可以获取当前报表户的名称,%userid%可以获取当前报表户代码。

2.宏应用的场景

2.1 表头中使用宏
支持文字中出现%宏名%引用任意四种宏(表元宏、计算指标、报表参数和特殊宏)。

2.2 固定表元中使用宏
支持文字中出现%宏名%引用任意四种宏(表元宏、计算指标、报表参数和特殊宏)。

2.3 计算公式汇总使用宏
并不是所有的宏都可以使用在计算公式中,不同的宏引用方式不一样,如
(1)表元宏在计算中是不必要的,直接使用表元名即可。
(2)计算指标可以直接通过%计算指标名%的方式出现在计算公式中。
(3)报表参数通过@报表参数引用宏,而不是%%。
(4)计算公式中不支持形如YEAR/T1等的系统内置特殊宏引用,因为可以直接使用相应的公式。

3.已知是宏,如何解析?
给定宏名和表元名,按如下顺序和规则解析宏(一旦匹配规则,就不再继续其后其他的解析过程):
(1)判断是否是表元名(普通表元或数据型表头),如果是变量表元,取其值(如果是关联了代码组的字符串表元,按其设置显示代码或文字串),如果是固定表元,取其显示内容。
(2)判断是否是计算指标名,如果是,计算出该指标对应的表达式的值。
(3)判断是否是报表参数名,如果是,计算出报表参数表达式对应的值。
(4)特殊宏解析。目前主要是一些关于报表期和报表户的宏,有:%YEAR% %HALFYEAR% %JIDU% %MONTH% %HALFMONTH% %XUN% %WEEK% %DAY% %USERNAME% %USERID% %5DAY% %ABBQ%以及它们的一些简写形式。最近即将加入宏%UPTIME%,表示任务最近一次修改保存的时间。
宏名
返回值示例
含义
备注
别名
YEAR
"2009" "二〇〇九"
当前报表期所在年份
当宏名为YEAR(全大写)时,数字转为大写形式

HALFYEAR
"上" "下"
半年当前报表期报所在半年
返回值串为"上"或"下",仅在半年报时有效

JIDU
"03" "零三"
季报当前报表期所在季度
宏名字母全大写时,数字转为大写形式,仅对季报
JD
MONTH
"06" "十一"
当前报表期所在月份
对月报、13月报、半月报、旬报、周报、5日报、年周报有效

HALFMONTH
"上" "下"
半月报当前报表期所在半月
仅对半月报

XUN
"上" "中" "下"
旬报当前报表期所在旬
仅对旬报

WEEK
"01" "04" "零三"
周报当前报表期所在周
仅对周报,宏名全大写时,数字转为大写

DAY
"02" "29" "30" "三十一"
日报当前报表期所在日
仅对日报,宏名全大写时,数字转为大写

USERNAME
"总局""湖北省局"
当前报表户名称

NAME MC DWMC
USERID
"000000" "42000013210001"
当前报表户代码

ID DM DWDM
5DAY
"1日-5日""11日-15日"
当前报表期在5日报中的序
仅对5日报

ABBQ

分析表的报表期起止范围


UPTIME
"2011-03-07 12:46:39"
任务最近一次修改保存时间
任务每一次修改后保存整个任务时,写当时时间

T1
"2010" "1989"
当前报表期所在年份


T2
"01" "02"
所在月份、季度或半年
季度时表示当前报表期所在季度,半年报时表示所在半年,月报、
13月报、半月报、旬报、周报、日报、5日报、年周报时表示所在月份

T3
"01" "02" "26日-30日"
半月、旬、周,日、5日序
半月报时表示所在半月,旬报时表示所在旬,周报时表示所在周,日报时
表示所在日,5日报时表示所在5日。


4.要注意的情形
(1)定义计算指标时,计算指标名不要与系统已有的默认可解析的宏重名,否则可能导致计算宏的值时出现歧义而产生不了用户希望的结果。
(2)关于报表期相关宏截取以及大小写:一般的,T1/T2/T3以及year等报表期相关的宏都是区分大小的,全都是大写时返回对应的汉字文字通俗描述,否则返回它对应在报表期串中相应部分。








最近看过此主题的会员

小亿

程序小哥哥

0个回答

只看楼主

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

渠道咨询电话:137-0120-6790

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

进群交流、一对一指导

©2020ESENSOFT北京亿信华辰软件有限责任公司版权所有:京ICP备07017321号京公网安备11010802016281号