有人知道 Windows 版 Milsted rexx 吗?开放雷克斯?

发布于 2024-11-23 16:59:24 字数 573 浏览 0 评论 0原文

CA 的自动化点产品具有嵌入式 rexx 解释器。在回到 CMS 上的原始解释器之前,我已经使用过其他 Rexx 解释器。我正在尝试访问外部数据队列,以允许 AP rexx 脚本调用其他语言的程序并从中获取数据。现在 CA 明确表示它不是 Object rexx 或 OORexx,而是“Milstead”(原文如此)rexx。我使用 Neil Milsted 的 Uni-Rexx(如果你正在阅读的话,这是一个不错的 Neil),它实现了 rxqueue,它可以满足我的需要。

解析版本名称级别 说“rexx 是“名称”和“级别” 说“rexx util 是” RxFuncQuery("SysUtilVersion") 给出: rexx 是 REXX:Open-REXX:299:Open-REXX:ASCII:MultiThread:DynamicLink 和 4.00 2008 年 2 月 4 日

07/15/2011 08:27:19 rexx util 是 30

我的 google-fu 在这里让我失败,我继续来返回相同的网站。
那么有人知道这个特定的 Rexx 以及我如何让它运行非 rexx 代码并获取输出吗?我真的不想在写入临时文件时受到 I/O 限制。

CA's automation point product has an embedded rexx interpreter. I've used other Rexx interpreters before back to the original on CMS. I'm trying to access the external data queue to allow the AP rexx scripts to invoke and get data back from programs in other languages. Now CA have made it clear it's not Object rexx or OORexx but "Milstead" (sic) rexx. I use Neil Milsted's Uni-Rexx (nice one Neil if you're reading) which implements rxqueue which does what I need.

parse version name level
say "rexx is " name " and " level
say "rexx util is " RxFuncQuery("SysUtilVersion")
gives:
rexx is REXX:Open-REXX:299:Open-REXX:ASCII:MultiThread:DynamicLink and 4.00 04 Feb 2008

07/15/2011 08:27:19 rexx util is 30

My google-fu is failing me here and I keep coming back to the same websites.
So does anyone know this specific Rexx and how I can get it to run non-rexx code and get output back? I really don't want to be I/O-bound writing to temp files.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南薇 2024-11-30 16:59:24

如果您想要将外部程序(可执行文件)的输出获取到 REXX 中,您可以使用 POPEN 函数,它将命令的标准输出重定向到外部数据队列。然后可以使用以下指令操作队列:

  • pull(解析pull) - 从队列顶部拉出数据
  • Push - 将数据添加到队列顶部
  • queue - 将数据添加到队列底部
  • queued - 返回数量队列中剩余的行

一个简单的例子:

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

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

If what you want is to get output from an external program (executable) into REXX you can use the POPEN function which redirects the standard output of a command into the external data queue. You can then manipulate the queue using the following instructions:

  • pull (parse pull) - pull data from the top of the queue
  • push - add data to the top of the queue
  • queue - add data to the bottom of the queue
  • queued - returns number of remaining line in the queue

A simple example:

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

say "Number of output lines:" lines
do i = 1 to lines
   pull line
   say "Line #"||i||":" line
end
小草泠泠 2024-11-30 16:59:24

具有错误诊断附加优点的更现代的方法是:

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

The more modern approach which has the added benefit of error diagnosis is this:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文