Command 如何创建具有互斥参数的AS/400命令?

Command 如何创建具有互斥参数的AS/400命令?,command,ibm-midrange,Command,Ibm Midrange,我需要创建一个AS/400命令。根据要求,它有两个参数,即A和B,不能同时填写。当按F4进行提示时,两者都将显示,但一次只能填充一个。如果两者都已填写,则会出现一条错误消息,说明这是无效的。有人能告诉我如何创建这样的命令吗?我需要在CMD源代码中指定什么来实现它?使用命令定义语句来控制参数 CMD PROMPT('TEST') PARM KWD(A) TYPE(*CHAR) PROMPT('A') PARM KWD(B) TYPE(*CHAR) PROMPT('B') DEP CTL(*ALWA

我需要创建一个AS/400命令。根据要求,它有两个参数,即A和B,不能同时填写。当按F4进行提示时,两者都将显示,但一次只能填充一个。如果两者都已填写,则会出现一条错误消息,说明这是无效的。有人能告诉我如何创建这样的命令吗?我需要在CMD源代码中指定什么来实现它?

使用命令定义语句来控制参数

CMD PROMPT('TEST')
PARM KWD(A) TYPE(*CHAR) PROMPT('A')
PARM KWD(B) TYPE(*CHAR) PROMPT('B')
DEP CTL(*ALWAYS) PARM(A B) NBRTRUE(*EQ 1)

CMD源代码只有执行有效性检查的基本能力。通常,最终用户业务规则由有效性检查程序强制执行。请参阅CRTCMD VLDCKR()。VCP与CPP非常相似,除非命令未通过有效性检查,否则VCP会向调用者发送一条带详细原因的*DIAG消息,并向调用者发送一条CPF0002*ESCAPE消息,告诉调用者命令未运行。

上述来源是否意味着必须填充a和B中的一个,但不能同时填充这两个?这就是我需要的。不能同时填充,但也不能同时留空。@God_of_Thunder:这意味着两个参数中的一个必须有值,另一个必须为空。@God_Thunder如果要显示消息,如果两个参数都指定了,那么在
DEP
语句中指定
MSGID(yourmsgid)
。在这种情况下,VCP是一种非常麻烦的方法,可以用上面所示的
DEP
语句轻松完成任务。实际上,它的代码并不比DEP语句多多少,除了两个parm的DCL会把它弄得更糟。这只是一个IF语句和几个sndpgmmsg。它肯定比*CMD对象本身的编码和DEP语句的使用更为广泛地理解和接受。(尽管我会使用DEP)