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

What does String formatter "<<<&" in Informix 4GL code mean?

我正在阅读遗留的 4GL 脚本。在报告部分,我遇到了以下内容:

int_type_variable USING “<<<&”

我知道这应该使用字符串格式化程序将整数转换为字符串。 根据IBM Informix page,

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

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

int_type_variable一般为4位。我很困惑它应该做什么。

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

定义不是很明确,但思路是数字应该左对齐,如果是零,就显示零位。您提到您在报告中看到了这一点,大概是 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 编译器!

对于 What 或 Why,使用 "<"USING 通常表示开发人员不希望数字与其左边的任何内容之间有任何多余的 space,通常是您正在查看的号码的标题或标签。所以在你的情况下,你的报告可能会说......

Number of Records Found: 1

而不是说...

Number of Records Found:    1

您可能会说,预期最大值为 9999 并没有那么糟糕,但如果您说预期最大值为 99999999999,那么如果您不使用 "<",那么您最终可能会得到 ...

Number of Records Found:           1

号码与其标签之间的差距很大 space,并且报告 reader 可能不会将标签解释为属于号码。

如果您希望数字垂直对齐,则不会使用 "<"。那么您很可能会改用 "#"

"&" 用于指示如果值为零时要做什么。在这种情况下,它表示如果值为 0 则显示单个 0 ...

Number of Records Found: 0

如果您有 "<<<<" 则不会显示任何值...

Number of Records Found:

或者如果您有 "&&&&" 则将显示前导零...

Number of Records Found: 0001

您的 link 也不是 Informix-4gl 参考。您可以使用 Genero link in this instance http://4js.com/online_documentation/fjs-fgl-manual-html/#fgl-topics/c_fgl_DataConversions_format_numbers.html 来获取更多示例。我不认为我们在这方面向 4gl 语法添加了任何字符。