Informix 4GL报告到屏幕 - 反向

时间:2017-02-16 21:13:09

标签: informix 4gl

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

print line_image attribute(reverse)

但这并不奏效。这有可能吗?

2 个答案:

答案 0 :(得分:1)

如果你的意思是"有什么办法可以做到这一点",答案是"是"。如果你的意思是"有一个很好的简单的内置方式来做到这一点",答案" no"。

您需要做的是:

  1. 确定切换到'反向'的字符序列。视频 - 将字符存储在字符串变量brv中(开始反向视频;如果您不喜欢我的名字,请选择自己的名称)。
  2. 确定切换到' normal'的字符序列。 video - 将字符存储在字符串变量erv中(结束反向视频)。
  3. 安排您的打印使用:

    PRINT COLUMN  1, first_lot_of_data,
          COLUMN 37, brv, reverse_data,
          COLUMN 52, erv,
          COLUMN 56, next_lot_of_data
    
  4. 切换时可能需要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[27m终端smso=\E[7mxterm-256color; \E是ASCII ESC或\033)并在brv中使用它们}和erv字符串。请注意,rmso长度为5个字符。

答案 1 :(得分:1)

添加到上一个答案,您可以尝试以下

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

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