calculateChkDigitMod10()
sysLib.calculateChkDigitMod10() 시스템 함수는 일련의 숫자로 시작하는 문자 변수 또는 NUM 변수에 모듈 10 체크 디지트를 배치합니다.
구문
sysLib.calculateChkDigitMod10(
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: 체크 디지트가 작성되지 않은 경우
예제
program CheckDigit10 type BasicProgram
acctNo CHAR(10) = "1734289";
len SMALLINT = 7;
result SMALLINT = 0;
function main()
sysLib.calculateChkDigitMod10 (acctNo, len, result);
if (result != 0)
sysLib.writeStdout("Check digit not created");
end sysLib.writeStdout(acctNo);
// acctNo is now 1734284
end // main
end // program
모듈 10 체크 디지트를 도출하기 위해 알고리즘이 사용되며
모든 경우에 체크 디지트 위치에 있는 숫자는 고려되지 않습니다.
예제의 값으로 알고리즘을 설명합니다.
- 입력 숫자에서 1의 자리 숫자에 2를 곱하고 오른쪽에서 왼쪽으로
이동하면서 하나씩 건너뛴 숫자마다 2를 곱합니다.
8 x 2 = 16 4 x 2 = 8 7 x 2 = 14 - 몫의 숫자(1,6,8,1,4)를 2를 곱하지 않은
입력 숫자(1,3,2)에 더하십시오.
1 + 6 + 8 + 1 + 4 + 1 + 3 + 2 = 26 - 체크 디지트를 얻기 위해 0으로 끝나는 두 번째로 높은 숫자에서
위의 합계를 뺍니다.
30 - 26 = 4빼기 결과가 10이면 체크 디지트는 0입니다.
이 예제에서 함수는 acctNo의 원래 문자를
다음 문자로 변경합니다.
1734284
호환성 고려사항
| 플랫폼 | 문제 |
|---|---|
| JavaScript 생성 | sysLib.calculateChkDigitMod10() 함수는 지원되지 않습니다. |