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. 입력 숫자에서 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  
  2. 첫 번째 단계의 몫을 더한 후 합계를 11로 나누십시오.
      (12 + 24 + 4 + 10 + 36 + 42 + 10) / 11
      = 138 / 11 
      = 12 remainder 6 
  3. 체크 디지트를 얻기 위해 11에서 나머지를 빼서 자체 체크 디지트를 얻습니다.
      11 - 6 = 5

    나머지가 0 또는 1인 경우 체크 디지트는 0입니다.

이 예제에서 마지막 acctNo는 다음 문자를 포함합니다.
  56621865

호환성 고려사항

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