我正在阅读旧版4GL脚本。在报告部分中,我遇到了以下问题:
int_type_variable USING “<<<&”
我了解这应该使用String格式化程序将整数转换为String。 根据{{3}},
<< / strong>:此字符将显示字段中的数字左对齐。它将前导零更改为空字符串。
&:此字符用零填充显示字段中否则为空白的任何位置。
int_type_variable通常为4位数字。我很困惑应该做什么。
如果有人可以举例说明,我将不胜感激。
答案 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语法中添加任何字符。