【问题标题】:Universe OCONV argument for zero-padding用于零填充的 Universe OCONV 参数
【发布时间】:2021-09-08 00:57:03
【问题描述】:

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

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

将打印到屏幕上

00005

有人知道可以帮我做这件事吗?

【问题讨论】:

    标签: universe u2


    【解决方案1】:

    我正在使用 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”参数制作的

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我以前使用过 PRINT VALUE"R%5",但我看不出它有一个 OCONV 版本,很好。
      【解决方案3】:

      PADDED.VALUE = VALUE 'R%5' 是最简单的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-09
        • 2015-10-16
        • 2017-10-24
        • 1970-01-01
        • 1970-01-01
        • 2021-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多