如何在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.
海恩