Informix 4GL代码中的字符串格式化程序“ <<<&”是什么意思?

时间:2019-11-20 19:58:07

标签: string-formatting informix 4gl

我正在阅读旧版4GL脚本。在报告部分中,我遇到了以下问题:

int_type_variable USING “<<<&”

我了解这应该使用String格式化程序将整数转换为String。 根据{{​​3}},

<< / strong>:此字符将显示字段中的数字左对齐。它将前导零更改为空字符串。

:此字符用零填充显示字段中否则为空白的任何位置。

int_type_variable通常为4位数字。我很困惑应该做什么。

如果有人可以举例说明,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

它的定义不是很清楚,但是想法是该数字应左对齐,如果为零,则应显示零数字。您提到您在报告中看到了这一点,大概是在PRINT语句中。您可以轻松地使用DISPLAY语句(在报告外部)探索它的作用:

MAIN

    DEFINE i INTEGER

    FOR i = -10 TO 1000 STEP 5
        DISPLAY "==", i USING "<<<&", "=="  # Optionally drop the "==" strings
    END FOR

END MAIN

您可以尝试使用其他格式来查看差异,例如:

  • "<<<<"
  • "-<<<"
  • "-<<&"
  • "####"
  • "###&"
  • "---&"
  • "-##&"
  • "-&&&"
  • "-###"

您可以使用一个DISPLAY语句一次全部尝试这些操作,或者重复编译该程序,或者将格式字符串传递给执行显示功能的函数,或者…

如果必须使用报告进行操作,则可以编写一个简单的报告并进行测试:

MAIN

    DEFINE i INTEGER

    START REPORT test_formats

    FOR i = -10 TO 1000 STEP 5
        OUTPUT TO REPORT test_formats(i)
    END FOR

    FINISH REPORT test_formats

END MAIN

REPORT test_formats(i)

    DEFINE i INTEGER

    OUTPUT
        TOP MARGIN 0
        BOTTOM MARGIN 0
        LEFT MARGIN 0
        PAGE LENGTH 1

    ON EVERY ROW
        PRINT COLUMN  1, "==", i USING "<<<&", "==",
              COLUMN 11, "==", i USING "-<<<", "==",
              COLUMN 21, "==", i USING "-<<&", "==",
              COLUMN 31, "==", i USING "####", "==",
              COLUMN 41, "==", i USING "###&", "==",
              COLUMN 51, "==", i USING "---&", "==",
              COLUMN 61, "==", i USING "-##&", "==",
              COLUMN 71, "==", i USING "-###", "=="

END REPORT

警告:未向I4GL编译器咨询所显示任何代码的有效性!

答案 1 :(得分:1)

对于“做什么”或“为什么”,使用USING的{​​{1}}通常表示开发人员不希望数字与其左侧的内容之间有多余的空间,通常是数字的标题或标签你在看。因此,就您而言,您的报告可能会说...

"<"

相对于说...

Number of Records Found: 1

您可能会说这不是很糟糕,期望最大值为9999,但说期望最大值为99999999999,那么如果您不使用Number of Records Found: 1 ,那么您可能会得到...

"<"

这是数字与其标签之间的巨大空白,并且报表阅读器可能不会将标签解释为属于数字。

如果您希望数字垂直对齐,则不会使用Number of Records Found: 1 。那么您很可能会改用"<"

"#"用于指示值为零时的操作。在这种情况下,就是说如果值为0则显示单个0 ...

"&"

如果您有Number of Records Found: 0 ,则不会显示任何值...

"<<<<"

或者如果您有Number of Records Found: ,那么将显示前导零...

"&&&&"

您的链接也没有指向Informix-4gl参考。您可以在此实例http://4js.com/online_documentation/fjs-fgl-manual-html/#fgl-topics/c_fgl_DataConversions_format_numbers.html中使用Genero链接以获取更多示例。我认为我们没有在该区域的4gl语法中添加任何字符。