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. 입력 숫자에서 1의 자리 숫자에 2를 곱하고 오른쪽에서 왼쪽으로 이동하면서 하나씩 건너뛴 숫자마다 2를 곱합니다.
      8 x 2 = 16
      4 x 2 = 8
      7 x 2 = 14
  2. 몫의 숫자(1,6,8,1,4)를 2를 곱하지 않은 입력 숫자(1,3,2)에 더하십시오.
      1 + 6 + 8 + 1 + 4 + 1 + 3 + 2 = 26   
  3. 체크 디지트를 얻기 위해 0으로 끝나는 두 번째로 높은 숫자에서 위의 합계를 뺍니다.
      30 - 26 = 4

    빼기 결과가 10이면 체크 디지트는 0입니다.

이 예제에서 함수는 acctNo의 원래 문자를 다음 문자로 변경합니다.
  1734284

호환성 고려사항

표 1. 호환성 고려사항
플랫폼 문제
JavaScript 생성 sysLib.calculateChkDigitMod10() 함수는 지원되지 않습니다.