2011-07-15 102 views
1

CA的自動化點產品具有嵌入式rexx解釋器。在使用CMS之前,我已經使用其他Rexx解釋器。我試圖訪問外部數據隊列,以允許AP rexx腳本調用並從其他語言的程序中獲取數據。現在,CA已經明確了它不是Object rexx或OORexx,而是「Milstead」(原文如此)rexx。我使用Neil Milsted的Uni-Rexx(如果你正在閱讀的話,是一個很好的Neil),它實現了rxqueue,它可以滿足我的需求。任何人都知道Milsted rexx for windows?開放式REXX?

解析版本名稱水平 說 「REXX是」 名 「和」 水平說 「REXX util的是」 RxFuncQuery( 「SysUtilVersion」) 給出: REXX是REXX:開放式REXX:299:開REXX: ASCII:多線程:DynamicLink和4.00 2008年2月4日

2011年7月15日8點27分十九秒REXX util的是30

我的谷歌福在這裏沒有我,我繼續回來到同一網站。
那麼是否有人知道這個特定的Rexx,以及如何讓它運行非rexx代碼並獲得輸出?我真的不想被寫入臨時文件的I/O限制。

回答

3

如果您想要從外部程序(可執行文件)獲得輸出到REXX中,您可以使用POPEN功能將命令的標準輸出重定向到外部數據隊列中。然後,您可以按以下說明操作隊列:

  • 拉(解析拉) - 從隊列
  • 推頂部拉出數據 - 將數據添加到隊列
  • 隊列的頂部 - 添加數據到隊列
  • 排隊的底部 - 在隊列中返回剩餘的行數

一個簡單的例子:

call popen ('dir /?') 
lines = QUEUED() 

say "Number of output lines:" lines 
do i = 1 to lines 
    pull line 
    say "Line #"||i||":" line 
end 
+0

我一直在使用REXX自1985年以來,從來沒有穿過POPEN絆倒了。這有效,謝謝你 – Wudang

1

更現代的做法,有錯誤診斷的好處是這樣的:

cmd = 'dir /?' 
address COMMAND cmd with output stem cmdout. error stem cmderr. 

if cmderr.0 <> 0 then do /* an error has occurred executing this command */ 
    do i = 1 to cmderr.0 
    say "Error text line" i": '"cmderr.i"'" 
    end 
    end 
else do i = 1 to cmdout.0 /* no error has occurred so just process the output */ 
    say "Line #"i":'"cmdout.i"'" 
    end 
+0

謝謝我應該回來說,我們終於得到管理層的同意,我們可以使用OORexx。感謝地址COMMAND - 我喜歡這個。 – Wudang