2011-11-03 68 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