Calculates a checksum for a string that contains a number.
CheckNumber :=STRCHECKSUM(String[, WeightString][, Modulus]) |
Parameters
- String
- Type: Text constant or code This string contains the number for which you want to calculate a checksum. You can only enter the numeric characters 0-9 in this string. If you enter anything else, a run-time error will occur. If String is empty, 0 is returned.
- WeightString
- Type: Text constant or code This string contains numbers that you want to use as weights when calculating the checksum. The default value is a string that contains STRLEN(String) '1'-characters. You can only enter the numeric characters 0-9 in this string. If you enter anything else, then a run-time error occurs. If String is longer than WeightString, then a string is concatenated that contains STRLEN(String) - STRLEN(WeightString) '1'-characters to the end of WeightString. If WeightString is longer than String, then a run-time error occurs.
- Modulus
- Type: Integer The number that you want to use in the checksum formula. The default value is 10.
Property Value/Return Value
Type: Integer
The checksum, which is calculated using this formula:
Example
This example shows how to use the STRCHECKSUM function to calculate a checksum.
This example requires that you create the following variables and text constants in the C/AL Globals window.
Variable name | DataType | Length |
---|---|---|
StrNumber | Text | 30 |
Weight | Text | 30 |
Modulus | Integer | Not applicable |
Text constant | ENU value |
---|---|
Text000 | The number: %1\ |
Text001 | has the checksum: %2 |
Copy Code | |
---|---|
StrNumber := '4378'; Weight := '1234'; Modulus := 7; CheckSum := STRCHECKSUM(StrNumber, Weight, Modulus); MESSAGE(Text000 + Text001, StrNumber, CheckSum); |
The formula is:
(7 - (4x1 + 3x2 + 7x3 + 8x4) MOD 7) MOD 7=0
The message window displays the following:
The number: 4378
has the checksum: 0
Example
This example shows how to use the STRCHECKSUM function to calculate a modulus 10 checksum for a bar code.
The STRCHECKSUM function can be used to calculate checksums for 13- and 8-digit European Article Number (EAN) and EAN-compatible bar codes such as a Universal Product Code (UPC) or Japanese Article Number (JAN).
A 13-digit EAN code has the following format:
-
The 12 digits in positions 13 to 2 are used to calculate the checksum at position 1.
-
Starting with position 2, all even values are totaled. The result is then multiplied by three. This value is called Even.
-
Starting with position 3, all odd values are totaled. The result is called Odd.
-
Total=Even + Odd.
-
The modulus 10 checksum is then (10 - Total MOD 10) MOD 10.
This example requires that you create the following variables and text constants in the C/AL Globals window.
Variable name | DataType | Length |
---|---|---|
StrNumber | Text | 30 |
Weight | Text | 30 |
Modulus | Integer | Not applicable |
Text constant | ENU value |
---|---|
Text000 | The EAN code: %1\ |
Text001 | has the checksum: %2 |
Copy Code | |
---|---|
StrNumber := '577622135746'; Weight := '131313131313'; CheckSum := STRCHECKSUM(StrNumber, Weight); MESSAGE(Text000 + Text001, StrNumber, CheckSum); |
The message window displays the following:
The EAN code: 577622135746
has the checksum: 3