# Code universel des produits

Le code universel des produits (CUP, en anglais : Universal Product Code : UPC) est le premier système d'identification numérique largement utilisé aux États-Unis et au Canada, pour les articles vendus en magasin.

## Historique

Il a été inventé dans les années 1970 par George Laurer, ingénieur chez IBM, et adopté en mai 1973.
Laurer, après avoir obtenu son diplôme à l'Université du Maryland en 1951, fut engagé chez IBM. En 1969, il se vit attribuer la tâche de créer un code et son symbole d'identification des produits pour le Uniform Grocery Product Code Council. Sa solution, l’Universal Product Code, changea radicalement le monde de la distribution. Il a ensuite amélioré le code en lui ajoutant un 13e caractère créant ainsi EAN 13.
Laurer a pris sa retraite en 1987. Il détient 25 brevets et est inscrit au tableau d'honneur de l'Université A. James Clark School of Engineering.

## Construction

Il est encodé sous la forme de code-barres afin de permettre sa lecture par un lecteur optique dans les commerces.
Depuis 2003, le CUP est intégré à EAN.
Le CUP, officiellement désigné par EAN.UCC-12, est composé de douze chiffres décimaux. Dans la suite de l'article, le terme CUP réfère seulement à cette série de chiffres. Sa représentation graphique la plus communément utilisée est un code à barres.
Un code à barres contient le CUP, lequel est séparé en deux blocs qui sont à leur tour encadrés par trois barres de garde : DLLLLLLMRRRRRRF, où D (pour début) et F (pour fin) sont composés des bits 101, M (pour milieu) est composé des bits 01010 (D, M et F sont les barres de garde), et où L (pour left) et R (pour right) sont des chiffres composés de sept bits chacun.
Le code-barres contient 95 bits en tout. Les séquences de bits qui correspondent à chaque chiffre et aux barres de garde sont conçues de façon à minimiser les risques de collision lors de la lecture. Chacune de celles-ci ne peut contenir plus de quatre 0 ou 1 de suite. Ces deux contraintes permettent une bonne reconnaissance optique lors de la lecture des codes-barres.
Le CUP ne contient que des chiffres. Le premier caractère L vaut :
* 0, 1, 6, 7, 8 ou 9 pour les articles ordinaires ;
* 2 pour usage interne au commerce, pour les produits vendus au poids : par exemple un paquet de viande hachée, LLLLL est le numéro d'article et _RRRR est soit le poids ou le prix.
* 3 pour les produits pharmaceutiques ;
* 4 réservé à l'usage interne souvent pour des coupons ou des cartes de fidélité (carte de points)
* 5 pour les coupons-rabais, le code du fabricant est LLLLL et les 3 premiers R le code de famille (fixé par le fabricant) et les 2 prochains R un code de coupon. Ces 2 avant-derniers chiffres déterminent le montant de la réduction selon une table établie par le GS1. Et le dernier le chiffre de validation.
Les caractères L restants constituent le code du fabricant. Les premiers cinq chiffres R constituent l'identificateur assigné par le fabricant au produit. Le dernier R sert à valider l'ensemble du CUP (check digit, ou clé de contrôle), ce qui permet de détecter les erreurs lors de l'identification optique ou de la saisie manuelle.
Dans le système UPC-A, cette validation est ainsi faite :
* additionner les chiffres apparaissant aux ordres impairs (premier, troisième, cinquième, etc.) ;
* multiplier par trois ;
* ajouter les chiffres apparaissant aux ordres pairs (deuxième, quatrième, sixième, etc.) au résultat ;
* soustraire le résultat du prochain multiple de dix qui lui est supérieur ;
* La réponse est le chiffre de validation (check digit).
Par exemple, pour le code-barres UPC-A « 03600029145X », où X est le chiffre de validation, celui-ci se calcule ainsi :
* additionner les chiffres à des indices de position impaires (1er chiffre, 3e,...) : 0+6+0+2+1+5, ce qui donne 14 ;
* multiplier par trois, 14 × 3, ce qui donne 42 ;
* ajouter les chiffres à des indices de position paires (2e chiffre, 4e,...) : 42+3+0+0+9+4, ce qui donne 58 ;
* soustraire du prochain multiple de dix qui lui est supérieur : 60 - 58 = 2 ;
* Le chiffre de validation, X, est 2.
Aux États-Unis, les chiffres non utilisés du CUP sont réservés aux sociétés pharmaceutiques pour l'identificateur délivré par le National Drug Control. Les articles vendus au poids en magasin, tels que la viande, les fruits frais et les légumes frais, reçoivent un CUP maison s'ils sont emballés sur place. Dans ce cas, les chiffres LLLLL constituent le code d'identification de l'article, alors que les chiffres _RRRR signifient le poids ou le prix, avec le premier R indiquant s'il s'agit d'un poids ou d'un prix. De la même façon, les coupons-rabais devraient avoir un CUP où les chiffres LLLLL constituent leur code d'identification, le montant à réduire se trouvant dans _RRRR, avec le premier R indiquant s'il s'agit d'un pourcentage ou d'un montant.

## Représentation

Dans le code-barres, chaque chiffre est représenté par un agencement de barres et d'espace, au nombre de sept en tout. Selon que le chiffre se trouve parmi les L ou parmi les R, sa représentation diffère. Cette différence a pour but de permettre la reconnaissance du produit, que la lecture soit faite de gauche à droite, ou vice-versa.
Selon le système d'encodage retenu pour un code-barres, chaque chiffre se représente de quatre façons différentes. Par exemple, le chiffre 6 se présente ainsi :
* 0101111 (partie gauche du code-barres UPC-A)
* 1010000 (partie droite du code-barres UPC-A)
* 0000101 (code-barres EAN)
* 1111010 (inutilisé)
Les deux premières façons sont des compléments à 1, tout comme les deux derniers.
La forme L de UPC-A pour les dix chiffres est :
* 0 : 0001101
* 1 : 0011001
* 2 : 0010011
* 3 : 0111101
* 4 : 0100011
* 5 : 0110001
* 6 : 0101111
* 7 : 0111011
* 8 : 0110111
* 9 : 0001011
Tel qu'expliqué ci-dessus, la forme R de UPC-A est le complément à 1 de la forme L. Les chiffres L sont impairs, alors que les chiffres R sont pairs.
L’European Article Numbering-Uniform Code Council assigne les identificateurs aux fabricants. Selon la taille de l'entreprise, la longueur de l'identificateur varie.

## Prolongement

L'EAN 13, en ajoutant un chiffre additionnel au début du CUP, le prolonge et l'étend. Ce prolongement permet de l'utiliser sur la planète au complet. À la position du préfixe, le chiffre 0 est réservé pour le CUP. L'organisme de réglementation Uniform Code Council oblige tous les systèmes commerciaux de reconnaissance de code-barres à reconnaître le CUP et l'EAN dès la fin de 2004. Les manufacturiers pourront donc apposer une série de 13 chiffres sur leurs produits sans se soucier de maintenir un double système d'identification. Cette décision permet d'augmenter de 50 % le nombre de CUP disponibles pour les États-Unis et le Canada.

## Anecdote

Officiellement, le premier article identifié par un lecteur de code-barres est un paquet de chewing-gums de marque Wrigley. Cela se passait à Troy en Ohio, le 24 juin 1974 dans un supermarché Marsh.