2011-11-03 1 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 : 두 매개 변수 중 하나는 값이 있어야하고 다른 하나는 비어 있어야 함을 의미합니다. – 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

실제로 두 개의 parms에 대한 DCL이 더 많은 것을 제외하고는 DEP 문보다 많은 코드가 아닙니다. IF 문과 SNDPGMMSGs입니다. 확실히 CMD 객체 코딩과 DEP 문 사용보다 더 널리 이해되고 받아 들여집니다. (비록 DEP를 사용합니다.) – user2338816