【问题标题】:Is Progress 4gl (Openedge ABL) Able to read STDIN and output to STDOUT?Progress 4gl (Openedge ABL) 是否能够读取 STDIN 并输出到 STDOUT?
【发布时间】:2013-10-08 23:44:38
【问题描述】:

我需要编写一个 Progress 4gl 程序来解析来自 STDIN 的输入,以便进行一些处理并将答案打印回屏幕。

例如

cat file_with_text.txt | $DLC/_progres -p .p | grep ...

  • progress 4gl 语言可以做到这一点吗?
  • 如果无法使用该语言,请不要建议从 Progress 购买此模块。告诉我这是不可能的。
  • progress 版本为 10.1b。

我开始认为这是不可能的。我必须说服我的经理我们需要放弃 Progress 4gl。

【问题讨论】:

  • 完全有可能。请参阅蒂姆的回答。
  • 尝试读/写特殊文件/dev/stdin/dev/stderr/dev/stdout。无论如何,如果可能的话,肯定会转储进度。您的 useless use of cat 也可以重写为 $DLC/_progres < file_with_text.txt | grep ...
  • 这是个好主意!我认为这将解决我遇到的问题。我的 cat 示例只是为了说明我需要什么。谢谢!

标签: linux progress-4gl openedge


【解决方案1】:

详细说明:

/* cat.p
 *
 */

define variable xline as character no-undo.

do while true:
  import unformatted xline.
  put unformatted xline skip.
end.

然后像这样运行它:

_progres -1 -b -p cat.p 输出文件

或(例如):

猫猫.p | _progres -1 -b -p cat.p | grep 无格式

【讨论】:

    【解决方案2】:

    1) 可以使用进度的“批处理”模式。查找“bpro”或“mpro -b”

    2) 另一种考虑的可能性是 INPUT-OUTPUT THROUGH - 这允许 Progress 与外部二进制文件通信,并将其输出作为输入读回。此外,OUTPUT THROUGH 会将输出发送到外部程序的 STDIN。

    3) 仅仅因为 Progress 不能进行管道 I/O,您就想将 Progress 作为一个平台转储吗?这不是一个很好的理由将平台转移到其他毫无疑问相对于 Progress 存在其他缺陷的平台上。

    【讨论】:

    • 我已经在使用 bpro/mpro。 INPUT-OUTPU THROUGH 的问题是通信是由 4gl 发起的。我需要的是从管道或另一个程序调用的 4gl 程序。我想抛弃 Progress 的原因是因为它不是一种与世界其他地方兼容的开放技术。语言极其有限。 I/O 是任何语言都可以做的最基本的事情之一,但我还没有看到一个例子。文档很难找到,开发人员几乎不可能找到进展。
    • 所以使用 cat some/file/name.txt | mbpro -p progname.p |更多 - 这将完全正常。 WRT 寻找开发人员——你现在有两个资深的人在和你说话。至于 I/O——我不确定你在说什么,因为我一直在用它做 I/O。您遇到的具体 I/O 问题是什么?
    猜你喜欢
    • 2012-03-19
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多