calculateChkDigitMod11()
sysLib.calculateChkDigitMod11() 시스템 함수는 일련의 숫자로 시작하는 문자 변수 또는 NUM 변수에 모듈 11 체크 디지트를 배치합니다.
구문
sysLib.calculateChkDigitMod11(
text CHAR | NUM inOut,
checkLength INT in,
result SMALLINT inOut)
- text
- 일련의 숫자로 시작하는 NUM 변수 또는 CHAR 변수입니다. 변수는 다른 문자의 오른쪽에 바로 배치되는 체크 디지트의 추가 위치를 포함해야 합니다. 첫 문자(최대 checkLength - 1)는 숫자여야 하며 그렇지 않으면 EGL이 RuntimeException을 예외 처리(throw)합니다.
- checkLength
- 체크 디지트에 사용되는 위치를 포함하여 text 매개변수에서 확인할 문자의 수가 들어 있는 INT 변수입니다. text 매개변수로 전달되는 NUM 변수의 경우 선행 제로(0)가 계수되므로 대부분의 경우 checkLength는 NUM 변수의 길이와 같습니다.
- result
- 다음 두 값 중 하나를 수신하는 SMALLINT 변수입니다.
- 0: 체크 디지트가 작성된 경우
- 1: 체크 디지트가 작성되지 않은 경우
예제
다음 예제에서는 sysLib.calculateChkDigitMod11을 사용하여 계정 번호가 정확히 전송되었는지 확인합니다.
program CheckDigit11 type BasicProgram
acctNo CHAR(10) = "56621869";
len SMALLINT = 8;
result SMALLINT = 0;
function main()
sysLib.calculateChkDigitMod11 (acctNo, len, result);
if (result != 0)
sysLib.writeStdout("Check digit not created");
end sysLib.writeStdout(acctNo);
// acctNo is 56621865
end // main
end // program
EGL에서는 모듈 11 체크 디지트를 도출하기 위해 알고리즘을 사용합니다. 모든
경우 체크 디지트 위치에 있는 숫자는 고려되지 않습니다.
예제의 값으로 알고리즘을 설명합니다.
- 입력 숫자에서 1의 자리 숫자에 2를 곱하고
10의 자리에 3을 곱하며 100의 자리에 4를 곱하는 식으로
승수로 사용되는 가장 큰 수인 7까지 곱합니다. 입력 숫자가
7자리를 넘는 경우에는 2를 승수로 사용하여 시퀀스를
다시 시작하십시오.
6 x 2 = 12 8 x 3 = 24 1 x 4 = 4 2 x 5 = 10 6 x 6 = 36 6 x 7 = 42 5 x 2 = 10 - 첫 번째 단계의 몫을 더한 후 합계를 11로 나누십시오.
(12 + 24 + 4 + 10 + 36 + 42 + 10) / 11 = 138 / 11 = 12 remainder 6 - 체크 디지트를 얻기 위해 11에서 나머지를 빼서 자체 체크
디지트를 얻습니다.
11 - 6 = 5나머지가 0 또는 1인 경우 체크 디지트는 0입니다.
이 예제에서 마지막 acctNo는 다음
문자를 포함합니다.
56621865
호환성 고려사항
| 플랫폼 | 문제 |
|---|---|
| JavaScript 생성 | sysLib.calculateChkDigitMod11() 함수는 지원되지 않습니다. |