pour InterBase et FireBird | ||
Functions comprises dans FreeAdhocUDF.dll/.so/.dylib : | ||
Fonctions Somme de contrôle | 27 fonctions | |
Algorithme mathématique ordinaire | 4 fonctions | |
Calculs associés | 23 fonctions | |
Lors
du
RETURN: FREE_IT, sauf indication contraire Les TestSQL avec NULL ne sont opérationnels que sous FireBird 2.0 |
Somme de contrôle: algorithme mathématique ordinaire | ||||||||||||
Remarques
préliminaires sur les sommes de contrôle dans Wikipedia
(http://fr.wikipedia.org/wiki/Somme_de_contr%C3%B4le):
Une
somme de
contrôle est une méthode simple de vérification de l’intégrité
des données soumises ou sauvegardées. Pour un simple exemple de
somme de contrôle, voir Wikipedia
(http://fr.wikipedia.org/wiki/Somme_de_contr%C3%B4le):
À
vrai dire,
sans cette technique, des valeurs lues sur des compteurs numériques
donneraient souvent lieu à des erreurs de transmission qui ne
seraient pas reconnues. Les procédés de somme de contrôle qui
attribuent un poids à chaque élément de la somme, sont nettement
plus sûrs envers les modifications accidentelles, comme par exemple
la permutation de chiffres, leur répétition ou leur omission.Ils
sont mis en œuvre par ISBN (International Standard Book Number) et
par les codes GTIN (précédemment code EAN).
Le concept de
somme de contrôle est aussi mis en application dans des systèmes
complexes de calcul qui mettent en œuvre des sommes simples de
valeurs de données, comme par exemple le «Cyclic Reduncancy Check».
Ce système, au lieu d’utiliser une simple addition, emploie une
division polynomiale et est généralement plus fiable dans la
détection d’erreurs accidentelles. Bien que l’usage traditionnel de la somme de contrôle soit utile pour se protéger des modifications accidentelles, il n’offre aucune sécurité contre la manipulation volontaire des données. Pour cette raison, il est souvent nécessaire de faire usage d’algorithmes permettant la cryptographie («hash code»), comme par exemple «Message Digests». On peut trouver une description détaillée de la somme de contrôle dans http://www.pruefziffernberechnung.de/Startseite.shtml |
||||||||||||
F_CROSSSUM | Fonction de adhoc | |||||||||||
Entrypoint | crosssum | Compatibles UTF-8 | ||||||||||
Entrée | INTEGER |
nombre
naturel |
||||||||||
Sortie | INTEGER | Somme
de contrôle de
l’entrée |
||||||||||
La somme de
contrôle est la somme des chiffres
du nombre. Bsp. 12345: 5+4+3+2+1 = 15 Test-SQL SELECT 15 AS ISCORRECT, F_CROSSSUM(12345) FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_CROSSSUM(NULL) FROM RDB$DATABASE; |
||||||||||||
F_CROSSDIFF | Fonction de adhoc | |||||||||||
Entrypoint | crossdiff | Compatibles UTF-8 | ||||||||||
Entrée | INTEGER |
nombre naturel | ||||||||||
Sortie | INTEGER | Différence
de contrôle de
l’entréet |
||||||||||
La somme de
contrôle alternative («cross diff») est obtenue en additionnant et
soustrayant alternativement les chiffres en partant de la droite. Exemples: 12345: 5-4+3-2+1 = 3 Test-SQL SELECT 3 AS ISCORRECT, F_CROSSDIFF(12345) FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_CROSSDIFF(NULL) FROM RDB$DATABASE; |
||||||||||||
F_WEIGHTCROSSSUM | Fonction de adhoc | |||||||||||
Entrypoint | weightcrosssum | Compatibles UTF-8 | ||||||||||
Entrée | INTEGER |
nombre naturel | ||||||||||
Sortie | INTEGER | Somme
de contrôle pondérée
de l’entrée |
||||||||||
On obtient une
somme de contrôle pondérée en multipliant chaque chiffre par la
valeur
de sa position, avant d’effectuer la somme. On commence par le
chiffre
de valeur la plus basse. Exemples: 12345: 5*1 + 4*2 + 3*3 + 2*4 + 1*5 = 35 Test-SQL SELECT 35 AS ISCORRECT, F_WEIGHTCROSSSUM(12345) FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_WEIGHTCROSSSUM(NULL) FROM RDB$DATABASE; |
||||||||||||
F_ITERATECROSSSUM | Fonction de adhoc | |||||||||||
Entrypoint | iteratecrosssum | Compatibles UTF-8 | ||||||||||
Entrée | INTEGER |
nombre naturel | ||||||||||
Sortie | INTEGER | somme
de contrôle itérative
de l‘entrée |
||||||||||
On répète la
somme de contrôle tant que le
résultat comprend plusieurs chiffres. Exemples: 12345: 5+4+3+2+1 = 15 -> 5+1 = 6 Test-SQL SELECT 6 AS ISCORRECT, F_ITERATECROSSSUM(12345) FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_ITERATECROSSSUM(NULL) FROM RDB$DATABASE; |
||||||||||||
Fonctions numériques: sommes de contrôle et calculs associés | ||||||||||||
F_ENCRYPTMD5 | Compatible avec FreeUDFLibC | |||||||||||
Entrypoint | encryptmd5 | Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(128) | Chaîne à encrypter | ||||||||||
Sortie | CSTRING(33) | Encrypté selon l’algorithme MD5 | ||||||||||
Cette
fonction
ne renvoie
jamais <null> car <null> a aussi un code
MD-5 valable. Attention: le md5 de mêmes chaînes d’une base de données ISO N’EST PAS IDENTIQUE au md5 de mêmes chaînes d’une base de données UTF-8! Ce n’est que dans une même base de données que deux chaînes identiques peuvent avoir un md5 valable. TestSQL SELECT 'e7d31845480111fdba3316129e166860' AS ISCORRECT, F_ENCRYPTMD5('Pauline') FROM RDB$DATABASE; SELECT 'd41d8cd98f00b204e9800998ecf8427e' AS ISCORRECT, F_ENCRYPTMD5('') FROM RDB$DATABASE; |
||||||||||||
Remarques
préliminaires sur les nombres GTIN, Wikipedia
(http://de.wikipedia.org/wiki/GTIN): Le Global Trade Item Number (GTIN) est un numéro d’identification utilisé dans le monde entier pour les produits et les emballages. GTIN est un concept qui englobe les codes barres EAN ou UCC ainsi que les numéros de produits électroniques EPC, globalement gérés par GSI. - EAN signifie International Article Number (précédemment European Article Number). - UCC qui signifie Uniform Code Council, s’est spécialisée en normalisation et entre-temps s’est établie en GSI. - UCC a notamment développé le code barre Universal Product Code (UPC). - Le code de prosuit électronique (EPC) permet une identification univoque d’objets, comme par exemple les articles commerciaux ou logistiques, des emballages. - NVE signifie Nummer der Versandeinheit (numéro d’unité d’expédition). - Global Returnable Asset IDentifier (GRAI) s’occupe de l’identification des emballages réutilisables et des moyens de transport. À partir du 1er janvier 2009, l’Allemagne adhère au système d’identification international GSI et de ses codes barres. Ces concepts établis en 2005 sont en usage dans le monde entier et mis en application par plus de 100 organisations GSI.
|
||||||||||||
F_GTIN8CHECK | Fonction de adhoc | |||||||||||
Entrypoint | gtin8check | Compatibles UTF-8 | ||||||||||
F_UPC12CHECK | Fonction de adhoc | |||||||||||
Entrypoint | upc12check | Compatibles UTF-8 | ||||||||||
F_GTIN13CHECK | Fonction de adhoc | |||||||||||
Entrypoint | gtin13check | Compatibles UTF-8 | ||||||||||
F_GTIN14CHECK | Fonction de adhoc | |||||||||||
Entrypoint | gtin14check | Compatibles UTF-8 | ||||||||||
F_NVE18CHECK | Fonction de adhoc | |||||||||||
Entrypoint | nve18check | Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(250) | nombre à contrôler sous forme de chaîne | ||||||||||
Sortie | INTEGER | Nombre de contrôle d’entrée | ||||||||||
Recherche d’un
nombre de contrôle GTIN. Les signes d’espacement, de séparation ou
liaison, ainsi que ceux qui dépassent le maximum autorisé, sont
ignorés. Test-SQL SELECT 0 AS ISCORRECT, F_GTIN8CHECK('1234567') FROM RDB$DATABASE; SELECT 0 AS ISCORRECT, F_GTIN8CHECK('1-2a3b4c5d6e7fxx999') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_GTIN8CHECK(NULL) FROM RDB$DATABASE; SELECT 2 AS ISCORRECT, F_UPC12CHECK('12345678901') FROM RDB$DATABASE; SELECT 7 AS ISCORRECT, F_GTIN13CHECK('762220000460') FROM RDB$DATABASE; SELECT 8 AS ISCORRECT, F_GTIN14CHECK('0123456789012') FROM RDB$DATABASE; SELECT 0 AS ISCORRECT, F_NVE18CHECK('01234567890123456') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_GTIN8CHECK(NULL') FROM RDB$DATABASE; |
||||||||||||
F_GTIN8 | Fonction de adhoc | |||||||||||
Entrypoint | gtin8 | Compatibles UTF-8 | ||||||||||
F_UPC12 | Fonction de adhoc | |||||||||||
Entrypoint | upc12 | Compatibles UTF-8 | ||||||||||
F_GTIN13 | Fonction de adhoc | |||||||||||
Entrypoint | gtin13 | Compatibles UTF-8 | ||||||||||
F_GTIN14 | Fonction de adhoc | |||||||||||
Entrypoint | gtin14 | Compatibles UTF-8 | ||||||||||
F_NVE18 | Fonction de adhoc | |||||||||||
Entrypoint | nve18 | Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(250) | nombre à contrôler sous forme de chaîne | ||||||||||
Sortie | CSTRING(8...18) | Nombre
complet, y compris
le nombre de contrôle |
||||||||||
Sortie complète
d’un nombre GTIN, y compris le nombre de contrôle. Les signes
d’espacement, de séparation ou liaison, ainsi que ceux qui dépassent
le
maximum autorisé, sont ignorés. Test-SQL SELECT '12345670' AS ISCORRECT, F_GTIN8('1234567') FROM RDB$DATABASE; SELECT '123456789012' AS ISCORRECT, F_UPC12('12345678901') FROM RDB$DATABASE; SELECT '7622200004607' AS ISCORRECT, F_GTIN13('762220000460') FROM RDB$DATABASE; SELECT '01234567890128' AS ISCORRECT, F_GTIN14('0123456789012') FROM RDB$DATABASE; SELECT '012345678901234560' AS ISCORRECT, F_NVE18('01234567890123456') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_GTIN8(NULL') FROM RDB$DATABASE; |
||||||||||||
Introduction
au numéro ISDN, Wikipedia (http://de.wikipedia.org/wiki/Internationale_Standardbuchnummer
ou http://en.wikipedia.org/wiki/ISBN): Le numéro international d’identification des livres (International Standard Book Number), en abrégé ISDN, es tun numéro qui identifie les livres sans ambiguïté. De plus d’autres produits tels que multimedia ou logiciels peuvent aussi être identifiés par un ISDN, pour autant qu’ils comportent une partie rédactionnelle. Jusque 2006, le numéro ISDN comportait 10 chiffres, y compris un chiffre de contrôle. Des difficultés sont survenues pour attribuer des numéros en Europe de l’Est et dans les pays anglo-saxons. Un numéro à 13 chiffres ISDN-13 a alors été introduit. On désigne désormais les anciens numéros ISDN sous la dénomination ISDN-10. Depuis le 1er janvier 2007, le ISDN-13 est obligatoire. Les autres formes de publication, telles que les périodiques ou les œuvres musicales ont leur propre système d’identification. - ISAN – International Standard Audiovisual Number - ISMN – Internationale Standard-Music-Number (pour les partitions imprimées ou digitalisées) - ISRC – The International Standard Recording Code - ISRN – International Standard Technical Report Number - ISSN – International Standard Serial Number (numéro international identifiant de manière unique une collection) - ISWC – International Standard Musical Work Code Le système ISBN a été lié au système international de numéros d’articles GTIN (précédemment EAN). De sorte que les livres peuvent être traités dans les surfaces commerciales sans nécessiter une nouvelle identification nationale. Dans ce but, le ISDN-13 des livres est identique au GTIN-13. Les calculs de chiffres de contrôle pour ISDN-10 et ISDN-13 (GTIN-13) sont différents. |
||||||||||||
F_ISBN10CHECK | Fonction de adhoc | |||||||||||
Entrypoint | isbn10check |
Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(250) |
nombre à contrôler sous forme de chaîne | ||||||||||
Sortie | INTEGER | nombre de contrôle recherché pour l’entrée | ||||||||||
F_ISBN10 | Fonction de adhoc | |||||||||||
Entrypoint | isbn10 | Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(250) |
nombre à contrôler sous forme de chaîne | ||||||||||
Sortie | CSTRING(13) | nombre ISBN-10 complet formaté | ||||||||||
Longueur fixe de
10 caractères (13 avec les séparateurs). Les signes acceptés à
l’entrée
sont 0 à 9; tous les autres signes ainsi que ceux qui dépasse la
longueur de 10 sont éliminés. Test-SQL SELECT 3 AS ISCORRECT, F_ISBN10CHECK('3-88229-192') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_ISBN10CHECK(NULL) FROM RDB$DATABASE; SELECT '3-88229-192-3' AS ISCORRECT, F_ISBN10('3-88229-192') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_ISBN10(NULL) FROM RDB$DATABASE; |
||||||||||||
F_ISBN13CHECK | Fonction de adhoc | |||||||||||
Entrypoint | isbn13check |
Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(250) |
nombre à contrôler sous forme de chaîne | ||||||||||
Sortie | INTEGER | nombre de contrôle recherché pour l’entrée | ||||||||||
F_ISBN13 | Fonction de adhoc | |||||||||||
Entrypoint | isbn13 | Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(250) |
nombre à contrôler sous forme de chaîne | ||||||||||
Sortie | CSTRING(17) | nombre ISBN-13 complet formaté | ||||||||||
Longueur fixe de
13 caractères (17 avec les séparateurs). Les signes valables à
l’entrée
sont de 0 à 9. Tous les autres signes ainsi que ceux qui dépasse la
longueur de 13 sont éliminés. Test-SQL SELECT 6 AS ISCORRECT, F_ISBN13CHECK('978-3-88229-192') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_ISBN13CHECK(NULL) FROM RDB$DATABASE; SELECT '978-3-88229-192-6' AS ISCORRECT, F_ISBN13('978-3-88229-192') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_ISBN13(NULL) FROM RDB$DATABASE; |
||||||||||||
F_ISSN8CHECK | Fonction de adhoc | |||||||||||
Entrypoint | issn8check |
Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(250) |
nombre à contrôler sous forme de chaîne | ||||||||||
Sortie | INTEGER | nombre de contrôle recherché pour l’entrée | ||||||||||
F_ISSN8 | Fonction de adhoc | |||||||||||
Entrypoint | issn8 | Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(250) |
nombre à contrôler sous forme de chaîne | ||||||||||
Sortie | CSTRING(9) | nombre ISSN-8 complet formaté | ||||||||||
Longueur fixe de
8 caractères (9 avec le séparteur). Les signes valables à l’entrée
sont
0 à 9. Tous les autres signes ainsi que ceux dépassant la longueur
de
8, sont éliminés. Test-SQL SELECT 9 AS ISCORRECT, F_ISSN8CHECK('0724-867') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_ISSN8CHECK(NULL) FROM RDB$DATABASE; SELECT '0724-8679' AS ISCORRECT, F_ISSN8('0724-867') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_ISSN8(NULL) FROM RDB$DATABASE; |
||||||||||||
F_UPSTNCHECK | Fonction de adhoc | |||||||||||
Entrypoint | upstncheck |
Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(250) |
nombre à contrôler sous forme de chaîne | ||||||||||
Sortie | INTEGER | nombre de contrôle recherché pour l’entrée | ||||||||||
F_UPSTN | Fonction de adhoc | |||||||||||
Entrypoint | upstn | Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(250) |
nombre à contrôler sous forme de chaîne | ||||||||||
Sortie | CSTRING(18) | nombre UPS Tracking-Number complet formaté | ||||||||||
UPS
Tracking-Number (signature) Longueur fixe de 18 caractères. Les signes acceptés à l’entrée sont 0 à 9 et A à Z. Les autres signes ainsi que ceux qui dépassent la longueur de 18 sont éliminés. Test-SQL SELECT 6 AS ISCORRECT, F_UPSTNCHECK('1Z 591580 68 5558773') FROM RDB$DATABASE; SELECT 6 AS ISCORRECT, F_UPSTNCHECK('591580685558773') FROM RDB$DATABASE; SELECT 6 AS ISCORRECT, F_UPSTNCHECK('59158068555877311111111') FROM RDB$DATABASE; SELECT 3 AS ISCORRECT, F_UPSTNCHECK('1Z 0F6915 68 2239322') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_UPSTNCHECK(NULL) FROM RDB$DATABASE; SELECT '1Z 591580 68 55587736' AS ISCORRECT, F_UPSTN('1Z 591580 68 5558773') FROM RDB$DATABASE SELECT '1Z 0F6915 68 22393223' AS ISCORRECT, F_UPSTN('1Z 0F6915 68 22393223') FROM RDB$DATABASE SELECT NULL AS ISCORRECT, F_UPSTN(NULL) FROM RDB$DATABASE; |
||||||||||||
F_2OF5CHECK | Fonction de adhoc | |||||||||||
Entrypoint | twooffivecheck |
Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(250) |
nombre à contrôler sous forme de chaîne | ||||||||||
Sortie | INTEGER | nombre de contrôle recherché pour l’entrée | ||||||||||
F_2OF5 | ||||||||||||
Entrypoint | twooffive | Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(250) |
nombre à contrôler sous forme de chaîne | ||||||||||
Sortie | CSTRING(13) | Nombre 2 de 5 (2 of 5 number) complet formaté | ||||||||||
Nombre 2 de 5 (2
of 5 number) Longueur variable. Les signes valuables à l’entrée sont 0 à 9. Tous les autres signes sont éliminés. Approprié pour les deux 2of5 industry at 2of5 interleaved. Test-SQL SELECT 5 AS ISCORRECT, F_2OF5CHECK('123456') FROM RDB$DATABASE; SELECT 5 AS ISCORRECT, F_2OF5CHECK('ABC123456XYZ') FROM RDB$DATABASE; SELECT 0 AS ISCORRECT, F_2OF5CHECK('1234567') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_2OF5CHECK(NULL) FROM RDB$DATABASE; SELECT '1234565' AS ISCORRECT, F_2OF5('123456') FROM RDB$DATABASE; SELECT '12345670' AS ISCORRECT, F_2OF5('1234567') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_2OF5(NULL) FROM RDB$DATABASE; |
||||||||||||
F_CODE39CHECK | Fonction de adhoc | |||||||||||
Entrypoint | code39check |
Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(250) |
nombre à contrôler sous forme de chaîne | ||||||||||
Sortie | INTEGER | nombre de contrôle recherché pour l’entrée | ||||||||||
F_CODE39 | Fonction de adhoc | |||||||||||
Entrypoint | code39 | Compatibles UTF-8 | ||||||||||
Entrée | CSTRING(250) |
nombre à contrôler sous forme de chaîne | ||||||||||
Sortie | CSTRING(13) | Nombre Code-39 (3 de 9, 3 of 9) complet formaté | ||||||||||
Nombre Code-39
(3 de 9, 3 of 9) Longueur variable. Caractères valables à l’entrée: 0 à 9, A à Z, $ % + - . / ainsi que l’espace; tous les autres signes sont éliminés. Test-SQL SELECT 'K' AS ISCORRECT, F_CODE39CHECK('AB-123') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_CODE39CHECK(NULL) FROM RDB$DATABASE; SELECT 'AB-123K' AS ISCORRECT, F_CODE39('AB-123') FROM RDB$DATABASE; SELECT NULL AS ISCORRECT, F_CODE39(NULL) FROM RDB$DATABASE; |
||||||||||||