calculateChkDigitMod11()

Die Systemfunktion 'sysLib.calculateChkDigitMod11()' stellt eine Modulus-11-Prüfziffer in eine numerische Variable (NUM) oder in eine Zeichenvariable (CHAR), die mit einer Reihe von numerischen Zeichen beginnt.

Syntax

  sysLib.calculateChkDigitMod11(
    Text CHAR | NUM inOut,
    Prüflänge INT in,
    Ergebnis SMALLINT inOut)
Text
Eine Variable vom Typ NUM oder eine Variable vom Typ CHAR, die mit einer Reihe von numerischen Zeichen beginnt. Die Variable muss eine zusätzliche Position für die Prüfziffer enthalten, die unmittelbar rechts von den anderen Zeichen eingefügt wird. Die ersten Zeichen (bis Prüflänge - 1) müssen Ziffern sein. Andernfalls löst EGL eine Laufzeitausnahmebedingung (RuntimeException) aus.
Prüflänge
Eine Variable vom Typ INT, die die Anzahl der Zeichen enthält, die im Parameter Text geprüft werden sollen, einschließlich der Position für die Prüfziffer. Bei NUM-Variablen, die als Parameter Text übergeben werden, werden führende Nullen gezählt, sodass Prüflänge in den meisten Fällen mit der Länge der NUM-Variablen übereinstimmt.
Ergebnis
Eine Variable vom Typ SMALLINT, die einen der beiden folgenden Werte empfängt:
  • 0, wenn die Prüfziffer erstellt wurde
  • 1, wenn die Prüfziffer nicht erstellt wurde

Beispiel

Im folgenden Beispiel wird anhand der Funktion 'sysLib.calculateChkDigitMod11' geprüft, ob eine Kontonummer (acctNo) präzise übertragen wurde:

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' ist 56621865
  end // Ende von 'main'

end  // Ende von 'program'
EGL leitet die Modulus-11-Prüfziffer anhand eines Algorithmus ab. Die Zahl an der Prüfzifferposition wird in keinem Fall berücksichtigt. Der Algorithmus wird mit Bezug auf die Beispielwerte beschrieben:
  1. Multiplizieren Sie die Ziffer an der Einheitenposition der eingegebenen Zahl mit 2, an der Zehnerposition mit 3, an der Hunderterposition mit 4 usw. Hierbei ist 7 die größte Zahl, die als Multiplikator verwendet wird. Hat die eingegebene Zahl mehr als 7 Ziffern, beginnen Sie die Multiplikationssequenz wieder von vorn, indem Sie 2 als Multiplikator verwenden:
      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. Addieren Sie die Produkte des ersten Schrittes und dividieren Sie die Summe durch 11:
      (12 + 24 + 4 + 10 + 36 + 42 + 10) / 11
      = 138 / 11 
      = 12 Rest 6 
  3. Subtrahieren Sie den Rest von 11, um die Prüfziffer zu berechnen:
      11 - 6 = 5

    Ist der Rest 0 oder 1, lautet die Prüfziffer 0.

In diesem Beispiel enthält die endgültige Kontonummer (acctNo) die folgenden Zeichen:
  56621865

Hinweise zur Kompatibilität

Tabelle 1. Hinweise zur Kompatibilität
Plattform Problem
JavaScript-Generierung Die Funktion 'sysLib.calculateChkDigitMod11()' wird nicht unterstützt.

Feedback