Informix 4GL 向屏幕报告 - 反向

Posted

技术标签:

【中文标题】Informix 4GL 向屏幕报告 - 反向【英文标题】:Informix 4GL report to screen - Reverse 【发布时间】:2017-02-16 21:13:08 【问题描述】:

我在 Informix 4GL 中生成了一个打印到屏幕的报告。 我需要以反向格式显示一列。 我尝试了以下方法:

print line_image attribute(reverse)

但这不起作用。这可能吗?

【问题讨论】:

【参考方案1】:

在上一个答案的基础上,您可以尝试以下方法

print "\033[7mHello \033[0mWorld"

\033[7m 表示反向打印。并且,\033[0m 意味着回到标准。

【讨论】:

【参考方案2】:

如果您的意思是“有没有办法做到这一点”,答案是“是的”。如果您的意思是“是否有一种很好的简单内置方法可以做到这一点”,答案是“否”。

你需要做的是:

    确定切换到“反向”视频的字符序列 - 将字符存储在字符串变量 brv(开始反向视频;如果您不喜欢我的名字,请选择您自己的名字)。 确定切换到“正常”视频的字符序列 - 将字符存储在字符串变量 erv(结束反向视频)中。

    安排您的打印使用:

    PRINT COLUMN  1, first_lot_of_data,
          COLUMN 37, brv, reverse_data,
          COLUMN 52, erv,
          COLUMN 56, next_lot_of_data
    

切换可能需要 3 或 4 个字符。这些字符将按报告中的列计数代码进行计数。

不同的终端类型会有不同的顺序。这些天来,您可能没有处理 80 年代中期盛行的大量实际绿屏终端,因此您可以将您的发现硬连接到 brverv 字符串。 OTOH,您可能需要做一些花哨的步法才能在运行时为不同的终端找到正确的序列。如果您需要这方面的更多信息,请大声喊叫。

一种可能让您发现相关序列的简单方法是运行一个程序,例如(这在 I4GL 编译器附近还没有——其中可能存在语法错误):

MAIN
    DISPLAY "HI" AT 1,1
    DISPLAY "REVERSE" AT 1,4 ATTRIBUTE(REVERSE)
    DISPLAY "LO" AT 1, 12
    SLEEP 2
END MAIN

将其编译成terminfo.4ge 并运行:

./terminfo.4ge             # So you know what the screen looks like
./terminfo.4ge > out.file

有可能不会使用显示属性。您会看到,如果您运行cat out.file 并且没有看到反向闪现,那么我们必须更加努力。

您还可以查看termcap 文件或terminfo 条目中的终端条目。使用infocmp $TERM(在环境变量中设置正确的终端类型)并寻找smso(进入杰出模式)和rmso(退出杰出模式)功能。破译这些(我有rmso=\E[27msmso=\E[7m 用于xterm-256color 终端;\E 是ASCII ESC 或\033)并在brverv 字符串中使用它们。请注意,rmso 的长度为 5 个字符。

【讨论】:

以上是关于Informix 4GL 向屏幕报告 - 反向的主要内容,如果未能解决你的问题,请参考以下文章

无法运行 Informix 4GL 交互式调试器

在 4GL Informix 中关闭“Wy-60”?

在 Informix 4GL 程序中验证 URL

下午在 Informix 4GL 中显示

如何在 Informix 4gl 中引用 TEXT 类型?

在 informix 中捕获错误