如何在openvms中读取命令行参数来运行ac程序?

我构建了一个简单的程序,尝试打印命令行参数。

代码如下,我构建了一个可执行文件(TEST.EXE)。

int main(int argc, char *argv[]) { int i; printf("%s\n",argv[0]); for (i = 1; i < argc; i++) printf("argument %d: %s\n", i, argv[i]); exit (EXIT_SUCCESS); } 

我尝试运行TEST.EXE并打印参数但失败。

命令RUN TEST.EXE test1 test2

 %DCL-W-MAXPARM, too many parameters - reenter command with fewer parameters 

我该怎么做才能打印“test1”和“test2”?

此外,如果需要保留参数的大小写,则必须引用这些参数或输入

 $ SET PROCESS/PARSE_STYLE=EXTENDED 

一次在你的过程中和

 $ DEFINE/USER DECC$ARGV_PARSE_STYLE TRUE 

在使用特定的外部命令或使用自动外部命令(DCL $ PATH)运行程序之前。 否则,所有未加引号的参数都将转换为小写字符。

PS:VMS有一种命令语言,即你必须输入命令来运行程序。 默认情况下,文件名不是命令。 通过定义DCL $ PATH,您可以更改此默认行为。

RUN命令不支持任何命令行参数。 定义外部命令并使用它。 来自David Mathog的初学者常见问题解答 :

我该如何开始一个程序?

  • 方法2:使用RUN命令:

    $ run program_name No command line arguments allowed

  • 方法3:为它定义外部命令,然后运行它。 在以下示例中,其中的逻辑名称等同于程序的位置。

    $ new_command :== $where:program_name $ new_command [command line arguments]

根据’a3f’定义一个外国命令是“适当的”方式,虽然有点乏味和两步。

您可能还想尝试MCR’技巧’。 MCR是40多年历史的PDPD-11操作系统RSX的Monitor Command Routine的缩写。

现在MCR默认在SYS $ SYSTEM中查找程序,因此您必须指定当前位置:

 $ MCR dev:[dir]TEST this is a test. 

使用DCL $ PATH还有一个1-1 / 2步骤方法。 这主要类似于Unix和Windows路径,如果输入了未知命令,则提供查找DCL脚本或程序的位置。

例如

 $ DEFINE DCL$PATH SYS$DISK:[],SYS$LOGIN:,SYS$SYSTEM: 

现在输入: TEST this.

海恩