微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

零填充的 Universe OCNV 参数

如何解决零填充的 Universe OCNV 参数

我正在寻找一些参数(ARG),这样这段代码

A = 5
B = OCONV(A,'ARG5')
PRINT B

将打印到屏幕

00005

有人知道可以为我做这件事的东西吗?

解决方法

在 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 个不同的值。

,

我正在使用 UniData,但在查看命令参考手册时,我看不到任何正确的东西,就 OCNV 或类似的一个简单参数而言。不过,我想出了这些(有点笨拙的)替代方案:

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”参数制作的

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。