Algori...M10_008(3pm)

πŸ“¦
version 1.3.6 Β· 5 versions
, in ubuntu noble, ubuntu resolute, ubuntu stonking

πŸ’– CheckDigits::M10_008 β€” the SEDOL check digit situation πŸ’–

okay bestie so this is CheckDigits::M10_008, a Perl module in the User Contributed Perl Documentation section (that's 3pm if you're keeping score πŸŽ€). Lowkey it's the one that computes check digits for Sedol (GB) and honestly? it ate. Let's get into it πŸ¦‹


✨ NAME ✨

CheckDigits::M10_008 β€” compute check digits for Sedol (GB). no cap, that's the whole job πŸ’…


🌸 SYNOPSIS 🌸

the vibe check, in code form:

use Algorithm::CheckDigits;

$sedol = CheckDigits('sedol');

if ($sedol->is_valid('0123457')) {
      # do something
}

$cn = $sedol->complete('012345');
# $cn = '0123457'

$cd = $sedol->checkdigit('0123457');
# $cd = '7'

$bn = $sedol->basenumber('0123457');
# $bn = '012345'

so iconic, so clean, she does exactly what she says on the tin πŸ’œ


πŸ¦‹ DESCRIPTION πŸ¦‹

okay so history moment, because context is everything bestie ✨

Prior to March 2004, SEDOL codes solely consisted of numbers. Since March 2004, SEDOL codes are a 7 character alphanumeric code. the glow-up was real 😭

The structure of the alphanumeric SEDOL codes is: one alpha character followed by 5 alphanumeric characters followed by the numerical check digit.

  • Alpha characters are B-Z excluding vowels.
  • Alphanumerical characters are 0-9, B-Z excluding vowels.
  • Numerical Characters are 0-9.

No SEDOL code will be issued without the first alpha character. Active numerical SEDOL codes issued prior to March 2004 remain valid. the OGs are grandfathered in, periodt πŸ‘‘


πŸ‘‘ ALGORITHM πŸ‘‘

here's the lore, step by step 🧚

  1. All characters are assigned a numerical value from 0 to 35 where the characters '0' to '9' get 0 to 9, 'B' to 'Z' get 11 to 35 with the position of the vowels kept empty (for instance 'D' gets 13, 'F' gets 15).
  2. Beginning left all numbers are weighted with 1,3,1,7,3,9 and 1 (checkdigit)
  3. The sum of all products is computed.
  4. The check digit is the difference of the sum from step 3 to the next multiple of 10.
yeah it says "step 3" inside step 3, that's just how the original rolls, we don't question the lore πŸ™ˆ the math still slaps.

πŸŽ€ METHODS πŸŽ€

is_valid($number)

Returns true only if $number consists solely of numbers and the last digit is a valid check digit according to the algorithm given above.

Returns false otherwise,.

complete($number)

The check digit for $number is computed and concatenated to the end of $number.

Returns the complete number with check digit or '' if $number does not consist solely of digits and spaces.

This function always returns the SEDOL code in upper case.

basenumber($number)

Returns the basenumber of $number if $number has a valid check digit.

Return '' otherwise.

This function always returns the SEDOL base number in upper case.

checkdigit($number)

Returns the checkdigit of $number if $number has a valid check digit.

Return '' otherwise.


🌈 EXPORT 🌈

None by default. nothing, zero, zilch, she's mysterious like that 😌


πŸ’– AUTHOR πŸ’–

Mathias Weidner, "<mamawe@cpan.org>" β€” legend behavior, we love to see it 🫢


⭐ SEE ALSO ⭐

  • perl
  • CheckDigits
  • www.londonstockexchange.com Masterfile technical specifications V7.0.

and that's the whole page bestie!! πŸ’…βœ¨ documented for perl v5.36.0, dated 2022-10-13 β€” stay slay, stay valid, and may your check digit always be correct πŸ¦‹πŸ’œ πŸŽ€

πŸ“¦ where this page comes from