2011-11-03 51 views
4

我需要创建一个AS/400命令。根据要求,它有两个参数,比如A和B,它们不能同时填充。当按F4键提示时,两者都会显示,但一次只能填充一个。如果两者都填满了,应该会出现一条错误消息,说这是无效的。有人能告诉我如何创建这样的命令吗?我需要在CMD源文件中指定什么来实现它?如何使用互斥参数创建AS/400命令?

回答

8

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

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) 
+1

上面的来源是否意味着A和B中的一个必须被填充,但不是两个?这是我需要的。不能同时填充,但它们不能一起留空。 –

+0

@God_of_Thunder:这意味着2个参数中的1个必须有一个值,另一个必须是空的。 – jamesallman

+0

@God_of_Thunder如果你想显示一条消息,如果两者都被指定了,那么在'DEP'语句中指定'MSGID(yourmsgid)'。 – WarrenT

0

CMD源只具有执行合法性检查的基本能力。通常,最终用户业务规则由有效性检查程序执行。参见CRTCMD VLDCKR()。 VCP非常类似于CPP,除非命令未通过有效性检查,否则VCP会向调用者发送* DIAG消息,其中包含原因的详细信息,并向调用者发送CPF0002 * ESCAPE消息,告诉它命令没有跑。

+0

如何创建此VCP? –

+2

在这种情况下,VCP是一种过于繁琐的方式来完成上面显示的'DEP'语句容易完成的事情。 – WarrenT

+0

实际上,除DEP语句外,其他代码的数量并不多,除了两个参数的DCL更多地使用它。这只是一个IF声明和一对SNDPGMMSGs。它比* CMD对象本身的编码和DEP语句的使用更为广泛地被理解和接受。 (虽然我会用DEP。) – user2338816