많은 사이트를 방문했지만 만족스러운 답변을 얻을 수 없었습니다. 제발, 이걸 이해하도록 도와주세요. 나는 프로그램을 만들려고했지만 이해할 수 없었다. 내가 시도 :RPGLE에서 % CHECK()와 % checkr()의 차이점은 무엇입니까?
String = 'AABC1ABD2AB3A';
Pos = %check ('ABCD' : %trim(String));
dsply pos;
많은 사이트를 방문했지만 만족스러운 답변을 얻을 수 없었습니다. 제발, 이걸 이해하도록 도와주세요. 나는 프로그램을 만들려고했지만 이해할 수 없었다. 내가 시도 :RPGLE에서 % CHECK()와 % checkr()의 차이점은 무엇입니까?
String = 'AABC1ABD2AB3A';
Pos = %check ('ABCD' : %trim(String));
dsply pos;
돌아갑니다 5 %의 checkr()를 호출하는 것입니다 예제 코드, 그래서 우리는 많이 도울 수 없다. 표시되는 코드는 String
및 pos
에 대한 정의를 표시하지 않지만 프로그램이 종료되는 방법을 보여주지는 않지만 잘 보입니다. String
의 값은 % CHECK 왼쪽() 다음의 % CHECKR 오른쪽에서()에서 먼저 확인된다
D string S 15
D pos1 S 10 0 inz(0)
D pos2 S 10 0 inz(0)
/free
String = 'AABC1ABD2AB3A' ;
// ^ ^
// The above characters will trigger mismatches for
// %CHECK() and %CHECKR.
Pos1 = %check ('ABCD' : %trim(String)) ;
Pos2 = %checkr('ABCD' : %trim(String)) ;
// Will display the value "1 3"
dsply (%subst(%trim(String): pos1: 1) + ' ' +
%subst(%trim(String): pos2: 1));
*inlr = *on ;
return ;
/end-free
: 여기
보다 완전한 예이다. 선행 공백이나 후행 공백에 히트가 발생하지 않도록 값은 % TRIM()으로 트림됩니다. 그런 다음 테스트는 제공된 테스트 문자ABCD
과 일치하지 않는 문자를 찾습니다. 프로그램은
String
에 테스트 문자 만 포함되도록하고 테스트에 실패한 첫 번째 문자의 위치를 표시합니다.
오류가있는 문자의 색인은 Pos1
및 Pos2
에 저장됩니다. 모든 문자가 검사를 통과하면 0이 반환됩니다.
DSPLY 연산 코드는 일치하지 않는 첫 번째 문자를 출력합니다. 인덱스 값을 사용하여 실패한 문자에 대해 단일 문자 부분 문자열을 가져옵니다. 그들은 String
의 다른 끝에서 시작하기 때문에 % CHECK() 및 % CHECKR()에 대해 다른 문자를 표시합니다.
퍼센트 검사를() (오른쪽 %의 checkr 왼쪽 구문 분석) 왼쪽에서 오른쪽에 구문 분석합니다. 예 감안할 때
% 검사() 당신이 I tried to make a program but could not understand.
당신은 틀린 무슨 말을하지 않습니다 무슨 뜻인지 분명하지 않다 (12)
존 파리 (John Paris)의이 기사를 확인하십시오. http://www.itjungle.com/fhg/fhg022509-story01.html – bvstone