【发布时间】:2021-09-08 00:57:03
【问题描述】:
我正在寻找一些参数 (ARG),这样代码:
A = 5
B = OCONV(A,'ARG5')
PRINT B
将打印到屏幕上
00005
有人知道可以帮我做这件事吗?
【问题讨论】:
我正在寻找一些参数 (ARG),这样代码:
A = 5
B = OCONV(A,'ARG5')
PRINT B
将打印到屏幕上
00005
有人知道可以帮我做这件事吗?
【问题讨论】:
我正在使用 UniData,但是查看命令参考手册,就 OCONV 的一个简单参数或类似参数而言,我看不到任何正确的东西。不过,我想出了这些(有点笨拙)的替代方案:
NUMLEN=5
VALUE=5
PRINT CHANGE(SPACES(NUMLEN-LEN(VALUE))," ","0"):VALUE
您在这里使用SPACES 函数来创建该数量的空格字符,然后将它们转换为零。
PRINT OCONV(VALUE,"MR":NUMLEN:"(#####)")
这是使用OCONV,但必须定义一个带有“掩码”的字符串以仅显示最后 5 位数字。所以如果 NUMLEN 改变了,那么掩码字符串定义就必须改变。
PRINT OCONV(VALUE,"MR":NUMLEN)[3,NUMLEN]
此版本使用OCONV,但从第 3 个字符开始打印并显示下一个 NUMLEN 个字符,因此去掉了最初的“0”。这是通过使用“MR”参数制作的
【讨论】:
在 Universe 中,我将使用 MR% 转换代码。请注意,它会截断任何长度超过 5 个字符的内容。
A = 5
B = OCONV(A,'MR%5')
PRINT B
当我需要在条件中使用 EVAL 或作为 SQL 或其他 TCL 语句中的聚合函数(例如查找文件中具有最多字段的记录)时,我经常使用它。
SELECT MAX(EVAL "DCOUNT(@RECORD,@FM)") FROM VOC;
SELECT MAX(EVAL "OCONV(DCOUNT(@RECORD,@FM),'MR%8')") FROM VOC;
屏蔽这些通常会在我们的系统上返回 2 个不同的值。
【讨论】:
PADDED.VALUE = VALUE 'R%5' 是最简单的方法。
【讨论】: