进度UNIX命令和变量行为



我对Progress还是个新手,我有一个关于"Unix"命令的问题。

我有一个存储unix命令的数据库,在这种情况下,它们都是打印命令。我一直在编写一个搜索表单,以查找用户在过去几周内打印的项目。在找到他们想要的项目之后,用户应该能够重新打印作业。它可以工作,直到我重新运行命令。

UNIX SILENT tcp .

将在shell中运行"tCMD",而不是变量的值。也许我在这里遗漏了一些基本的东西,但是我不确定为什么单独的Unix命令似乎不能像我希望的那样工作。

try

UNIX SILENT VALUE(tCMD).

一些上下文:有些东西可以在过程中硬编码,例如输出或输入的文件名,或者unix命令的值(尝试unix ls,即使它不是变量或括在引号中,您也会得到ls结果)。但解释器"知道"你想做什么)。这是其中一个例子。正如我所说,它也适用于输入/输出操作,例如input FROM cMyFile。如果cMyFile是一个变量,那么我应该编写

INPUT FROM VALUE(cMyFile).

查看OS-COMMAND语句而不是UNIX。它将帮助您编写更具可移植性的代码(即使向操作系统发出的实际命令当然需要适合您的特定操作系统)。

还有几个内置的命令,使用它们比通过OS-COMMAND, UNIXDOS发出命令更好(因为兼容性):

To copy a file:
OS-COPY source target
To delete a file:
OS-DELETE file
To rename a file:
OS-RENAME source target
To append a file with another (ie cat):
OS-APPEND source target
To create a directory:
OS-CREATE-DIR directory
To delete a file or directory:
OS-DELETE file [RECURSIVE]
To get an environment variable 
OS-GETENV variable
To list attached drives (windows only):
OS-DRIVES
To list files in a directory you should do:
INPUT FROM OS-DIR directory. 
If an error occurs in an OS-* command you can use OS-ERROR to check for the    
error.

一般来说,这些语句中的文件、目录和命令可以用

来寻址。
file.txt 

VALUE("file.txt").

还可以查看OPSYS函数,它将返回您当前使用的操作系统。

所以如果你想在一个变量中存储一个命令,你可以使用VALUE。我总是倾向于使用VALUE,因为我认为它更具可读性。

DEFINE VARIABLE cCommand AS CHARACTER NO-UNDO.
IF OPSYS = "UNIX" THEN
  ASSIGN 
    cCommand = "ls -l".
ELSE 
  ASSIGN
    cCommand = "dir".
OS-COMMAND VALUE(cCommand).

相关内容

  • 没有找到相关文章

最新更新