2013-10-02 70 views
1

我需要編寫一個Progress 4gl程序來解析來自STDIN的輸入,以便進行一些處理並將答案打印回屏幕。Progress 4gl(Openedge ABL)能夠讀取STDIN並輸出到STDOUT?

例如

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

  • 這是可能的進展4gl語言?
  • 如果不能使用該語言,請不要訴諸購買Progress中的該模塊。告訴我這是不可能的。
  • 進度版本是10.1b。

我一直認爲這是不可能的。我將不得不說服我的經理們,我們需要擺脫Progress 4gl。

+1

這是完全可能的。見Tim的答案。 –

+0

嘗試讀/寫特殊文件'/ dev/stdin','/ dev/stderr','/ dev/stdout'。儘管如果可能的話,肯定會轉儲進度。你的[無用的'cat'](http://en.wikipedia.org/wiki/Cat_(Unix)#Useless_use_of_cat)可以被重寫爲'$ DLC/_progres

+0

這是一個好主意!我認爲這將解決我的問題。我用貓的例子只是爲了說明我需要的東西。謝謝! – Ricardo

回答

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 <的infile> OUTFILE

或(舉例來說):

cat cat.p | _progres -1 -b -p cat.p | grep unformatted

+0

完美的作品!謝謝! – Ricardo

1

1)可以使用進度的「批處理」模式。查看「bpro」或「mpro -b」012)另一種可能性是輸入 - 輸出 - 這允許Progress與外部二進制進行通信,並將其作爲輸入讀回。另外,OUTPUT THROUGH會將輸出發送到外部程序的STDIN。

3)您想將Progress作爲平臺轉儲,因爲它無法執行管道I/O?這不是一個很好的理由將平臺轉移到其他無疑與Progress相關的其他缺陷。

+1

我我已經在使用bpro/mpro。 INPUT-OUTPU THROUGH的問題是通信由4gl啓動。我需要的是從管道或其他程序調用4gl程序。我想拋棄Progress的原因是因爲它不是一個與世界其他地方一樣好的開放技術。該語言非常有限。 I/O是你可以用任何語言做的最基本的事情之一,但是我沒有看到它的一個例子。文檔很難找到,尋找進展的開發人員幾乎是不可能的。 – Ricardo

+0

所以用cat some/file/name.txt | mbpro -p progname.p |更多 - 這將工作得很好。 WRT找到開發人員 - 現在有兩位資深人士正在與您交談。至於I/O - 我不知道你在說什麼,因爲我一直在做I/O。你有什麼特別的I/O問題? –

相關問題