Brevet FR2776090A1 — publié le 19990917

Procédé de traitement de dates dans un équipement informatique et équipement pour la mise en oeuvre du procédé. Dans certains logiciels de traitement de données travaillant sur des données de temps, comme des dates, celles-ci sont exprimées sous une forme tronquée, pour laquelle le millénaire et la centaine d'années n'apparaissent pas car c'est implicitement le 20e siècle qui est concerné. Le préfixe ou radical 19 est donc sous- entendu. Ces logiciels concernent les applications les plus diverses. On peut citer par exemple la facturation de services, tels que le téléphone, les cartes bancaires à puce, la distribution d'eau et de gaz, ou encore de suivi de comptes-clients et d'échéanciers de remboursements de prêts. Bref, tout ce qui est lié à l'écoulement de la vie quotidienne. S'il faut composer ensemble deux dates d'années appartenant à deux siècles différents, pour par exemple calculer une durée entre un jour de l'année 1998 et un jour de l'année 2000, le calculateur comportant le logiciel est programmé par celui-ci pour soustraire la plus ancienne date de la plus tardive, ce qui donne donc un résultat positif. Cependant, le passage au 21e siècle va faire retomber à zéro les deux chiffres d'années utilisés, d'unités et dizaines, si bien que les années 2000 et suivantes vont paraître antérieures aux dernières années du 20e siècle. Les calculateurs vont donc trouver une durée négative dans l'exemple cidessus et détecter ceci comme étant un défaut de saisie et rejeter celle-ci. Le problème se pose encore lorsqu'il faut déterminer une date future par addition d'une durée à une date, ce qui peut aboutir à une date postérieure à l'année 1999. Une solution consiste à récrire tous les logiciels, pour y ajouter au moins un chiffre de centaines d'années. Un tel travail est considérable et le coût en est donc énorme. La présente invention vise en particulier à résoudre ce problème de passage au 21e siècle, ou au moins à en atténuer l'ampleur, et tout problème de même nature, sans devoir récrire les logiciels ci-dessus. A cet effet, l'invention a pour objet, tout d'abord, un procédé de traitement d'une pluralité de données de temps pouvant être représenté par un nombre constitué d'un bloc, de taille prédéterminée, d'au moins un chiffre de poids faible et d'un bloc complémentaire d'au moins un chiffre de poids fort, procédé dans lequel on traite les données dans un équipement agencé pour traiter les blocs de poids faible, à l'exclusion de tout poids fort, procédé caractérisé en ce que, dans une étape préparatoire au traitement, on applique les blocs de poids faible à des moyens de décalage et on commande ceux-ci de façon à décaler, d'une même constante déterminée, les valeurs des blocs de poids faible des temps qui représentent des dates, de façon à ramener ces dernières dans une plage de temps exploitable par l'équipement, correspondant à une valeur unique des poids forts. On remarquera tout d'abord qu'il n'est pas revendiqué un procédé de présentation d'informations en tant que tel. En effet, d'une part, le décalage met en oeuvre des moyens matériels de décalage, qu'il faut donc commander. En particulier, les nombres d'origine, qui, outre le bloc de poids faible, nécessiteraient au moins un poids fort pour être différenciés, sont maintenant représentés sans ambiguïté par leur seul bloc de poids faible, et sont alors ainsi exploitables puisqu'ils ont été raccourcis au format prévu, ce qui résout le problème matériel lié à la limitation de la taille des données qui peuvent être traitées dans l'équipement. En d'autres termes, le changement de codage des nombres, par le décalage, aboutit à un changement du volume de matériel nécessaire pour les traiter, ce qui est un résultat industriel. D'autre part, et de façon superfétatoire, c'est l'ensemble des étapes revendiquées, préambule et partie caractérisante, qui est ici à prendre en compte, et le traitement de données, en pratique essentiellement des additions et soustractions puisqu'il s'agit de temps, est avec certitude autre chose qu'une simple modification de présentation d'informations et fournit un résultat industriel. Ainsi, le procédé de l'invention permet en particulier de prolonger la durée de vie des logiciels comportant des dates à seulement deux chiffres et ne nécessite qu'un seul type d'opération, de décalage, ce qui en limite le coût et réduit grandement les risques d'erreur lors de la mise à niveau des logiciels. L'invention a aussi pour objet un équipement de traitement de données représentant des dates, pour la mise en oeuvre du procédé de l'invention, comportant des moyens de traitement pour traiter les valeurs de données exclusivement dans une plage prédéterminée d'une suite continue et ordonnée de valeurs de dates, caractérisé en ce qu'il comporte des moyens de décalage de la valeur des dates à traiter, agencés pour recevoir et décaler, jusqu'à ladite plage, les dites valeurs de dates d'une constante déterminée et les fournir ensuite aux moyens de traitement. L'invention sera mieux comprise à l'aide de la description suivante d'une forme de mise en oeuvre préférée du procédé de l'invention, en référence au dessin annexé, sur lequel: - la figure 1 est un schéma par blocs d'un ensemble de calcul pour la mise en oeuvre du procédé de l'invention, et - la figure 2 est un schéma par blocs de sous-ensembles. Sur la figure 1, un calculateur 1 est alimenté en une pluralité de données par un équipement 2 d'entrée de données, ici un clavier de saisie, commandant un dispositif 3 de décalage de la valeur de données 3 alimentant en données une mémoire de données 13 du calculateur 1. Ce dernier comporte en outre une base de temps 10 séquençant le fonctionnement d'une unité centrale 11 reliée à un bloc mémoire 12 contenant un logiciel de traitement de données. Dans cet exemple, il s'agit d'un logiciel de facturation de consommation d'eau, utilisé par une société ayant un réseau de distribution d'eau desservant les abonnés d'une agglomération. L'unité centrale 11 commande une imprimante 5, d'édition de factures pour les abonnés, à travers un dispositif 4 de recalage de la valeur des données à imprimer. Le logiciel 12 n'est capable de traiter, en ce qui concerne les données de temps, que le(s) poids faible(s) des nombres représentant des temps, c'est-à-dire des dates et des durées, le(s) poids fort(s) étant ignorés (pas de place prévue), c'est-à-dire ici non saisis (2). Le logiciel 12 ne traite que les poids faibles, à l'exclusion de tout poids fort. Plus précisément, dans cet exemple, seuls les chiffres de dizaines et d'unités d'années sont traités. Ainsi, le nombre à quatre chiffres décimaux représentant l'année 1999 est tronqué à gauche par suppression, ou non prise en compte, de ses deux chiffres de poids forts: 19, et est traité sous la forme de la représentation de ses seuls poids faibles, ou suffixe: 99, constituant le complément des poids forts pour former le nombre à quatre chiffres. Un relevé de compteur d'eau d'un abonné au premier novembre 1999, ayant été saisi au clavier 2, apparaît sous la forme des trois nombres décimaux d'année, de mois et de jour: 99 11 01 en mémoire 13, dans le cas o le dispositif 3 est transparent, à décalage nul. Une telle représentation permet ainsi de traiter des factures sur le 20e siècle, donc entre le début l'année 1900 et la fin de l'année 1999, la succession naturelle des années successives 1900 à 1999 étant représentée par une succession dans le même ordre des nombres entiers successifs 00 à 99. Le radical formé des poids forts supprimés, ici le nombre de millénaires et siècles dans le calendrier utilisé, est le même pour les années 1900 à 1999 et les deux poids faibles décimaux suffisent à différencier ces cent années. On peut donc composer deux dates d'années différentes et par exemple calculer par différence une période de temps séparant deux relevés de compteur d'eau ou encore additionner une durée d'abonnement à la date courante pour obtenir la date de fin d'abonnement, dans la mesure toutefois o celle-ci ne dépasse pas l'année 1999. Par contre, le passage à l'année 2000 fait repasser par 00 la représentation tronquée des années 2000 et suivantes, qui apparaissent comme étant les années 1900 et suivantes. Si l'on saisit, quatre mois après le premier relevé, un nouveau relevé de compteur d'eau au premier mars 2000, représenté par les trois nombres décimaux 00 03 01, il apparaît comme étant plus récent que celui de 1999. Le calculateur 1 effectuant par exemple un calcul de temps entre relevés successifs par différence de dates, en retranchant celle en mémoire 13 de celle qui vient d'être saisie, va donc trouver une durée négative de 99 ans et 8 mois. Il va alors déceler ce résultat comme étant une erreur de saisie de date et s'interrompre pour l'indiquer. La représentation à deux chiffres des dates permet donc de travailler sur une plage fixe de temps de durée 100 ans et tout débordement positif ou négatif est interdit, car le logiciel 12 ne peut commander, faute de place mémoire, la mémorisation d'une retenue de débordement. Pour résoudre le problème de traiter les données dans l'équipement 11, 12 agencé pour traiter les blocs de poids faible, à l'exclusion de tout poids fort, selon le procédé de l'invention, dans une étape préparatoire au traitement, on applique les blocs de poids faible au dispositif de décalage 3 et on commande celui-ci de façon à décaler, d'une même constante déterminée, les valeurs des blocs de poids faible des temps qui représentent des dates, de façon à ramener oes dernières dans une plage de temps exploitable par l'équipement 11, 12, correspondant à une valeur unique des poids forts, ici la valeur 19. Le dispositif 3 effectue un décalage, d'une valeur déterminée sur les dates qui lui sont fournies par le clavier 2 et le dispositif 4 effectue un recalage, de même amplitude que le décalage ci-dessus mais en sens opposé, sur les résultats, lorsque ce sont des dates, issus de l'unité centrale 11 à partir des données provenant du clavier 2 ou déjà en mémoire 13. Par contre, les durées, calculées par différence entre deux dates décalées de la même constante, ne sont donc pas affectés par celle-ci et n'ont donc pas à être recalées. L'amplitude du décalage et son signe sont choisis tels que, si l'on doit composer ensemble deux dates décalées, elles se trouvent sur la plage de temps exploitable, ici de 100 ans, sur laquelle il n'y a pas ambiguïté sur la date réelle à partir de la date tronquée. Lorsqu'une date est à composer avec une durée, on prend en compte la durée, pour choisir le décalage, afin que le résultat de la composition soit dans la plage exploitable. Pour que le logiciel reconnaisse correctement les dates, il y a donc une bijection entre les 100 nombres complets d'années du siècle, à quatre chiffres, et leurs représentations tronquées à deux chiffres formant une suite continue et ordonnée de valeurs de dates, avec maintien de l'ordre des années et de l'espacement (progression unitaire). En pratique, sur la plage de 100 ans du 20e siècle, on peut considérer, par exemple, que les 64 premières années sont inutilisées, les consommations d'eau n'ayant pas été saisies de cette façon, faute du logiciel 12 à l'époque, et une saisie a posteriori étant sans intérêt. Le dispositif 3 est de ce fait agencé pour retrancher jusqu'à 64 ans et de préférence au moins 10 ans, par exemple 32 ans ici, à toutes les dates saisies, y compris celles déjà en mémoire 13. L'année 2000 devient, pour le calculateur 1, l'année 1968, représentée par 68, donc avec un radical implicite 19, tout comme l'année 1999, représentée par 67. La soustraction entre dates de relevé de l'exemple ci-dessus devient alors, dans ce nouveau calendrier: 68 11 01 - 67 03 01 = 4 mois. A ces deux dates sont associés deux relevés respectifs de compteur d'eau, dont la différence fournit le montant à facturer, associé à la date du second relevé. D'une façon générale, il suffit donc de décaler, d'une même valeur, deux dates à composer ensemble, d'un décalage tel que toutes deux aient, après décalage, un même bloc de poids forts, c'est-à-dire soient sur la même plage de temps, définie par celui-ci, qui, passant d'explicite à implicite, n'a plus besoin d'être pris en compte dans les calculs de traitement. Le décalage peut être obtenu par une addition ou une soustraction, puisque le décalage est pris en compte modulo la longueur de la plage de temps. Dans cet exemple, on peut donc ajouter 68 ans, modulo 100 ans, et éliminer le ou les chiffres de siècles éventuels. D'une façon générale, convient, pour effectuer ce décalage, toute transformation conservant l'ordre des années et la linéarité de l'espacement entre les représentations tronquées successives. Pour retrancher 20 ans, on peut par exemple multiplier par 0,99 le nombre à 4 chiffres des années et arrondir chaque résultat à l'unité la plus proche, par exemple par addition de 0,5 puis suppression des décimales. On supprime en outre le radical 19. Le décalage ci-dessus, de recentrage des dates sur la plage de temps relatif utilisable, peut être effectué, avec la même valeur de décalage, sur toutes les dates, c'est-à- dire s'appliquer à tous les abonnés. Il peut cependant être prévu que certains logiciels ou des dates liés à certaines applications soient associés à des décalages différents d'autres logiciels. Ainsi, un logiciel traitant des événements remontant plus haut dans le siècle, par exemple 1940, sera associé & des dates décalées au plus de - 40 ans. On détermine ainsi un tronçon de temps utile pour le logiciel, sensiblement lié au temps courant, et on le décale, ou fait glisser, pour que sa représentation tronquée se trouve en entier dans la plage utilisable. Les années 1900 et 1999 ont la représentation binaire suivante, pour leur nombre décimal à 4 chiffres: Poids 1024 512 256 128 64 32 16 8 4 2 1 1900 1 1 1 0 1 1 0 1 1 0 0 1999 1 1 1 1 1 O 0 1 1 1 1 et elles sont respectivement converties en 2 chiffres décimaux d'unités et dizaines pour leurs représentations tronquées 00 à 99. On retranche donc 1 1 0 1 1 0 0 (poids 1 à 64 de l'année 1900), soit 108 (en base 10), au nombre décimal à 4 chiffres, ce qui donne: Poids 1024 512 256 128 64 32 16 8 4 2 1 1900 1 1 1 0 0 0 0 0 0 0 0 1999 1 1 1 0 1 1 0 0 0 1 1 L'élimination des quatre poids forts binaires, 128 à 1024, fournit alors des nombres tronqués, non décalés, à sept bits allant de 0 0 0 0 0 0 0 à 1 1 0 0 0 1 1 (00 à 99 en décimal) pour les années 1900 à 1999. Si, comme dans cet exemple, on ne saisit au clavier 2 que les deux chiffres décimaux d'unités et dizaines d'années, les représentations tronquées ci-dessus sont directement obtenues, après un simple transcodage des deux représentations des deux chiffres, en décimal codé en binaire à 4 bits, d'unité et dizaine saisis, en le nombre binaire à 7 chiffres ci-dessus, pouvant aller de 00 à 99 en décimal. Dans des cas pour lesquels, pour la commodité du calcul, on choisirait un décalage de taille modulo le décalage final voulu, il conviendrait alors de traiter le ou les bits de débordement positif ou négatif, pour ensuite ajouter ou retrancher par simple élimination, le multiple de 100 qui convient pour obtenir un résultat situé dans la plage 00 à 99. Si le décalage est négatif et risque de fournir un résultat intermédiaire négatif, on peut prévoir d'ajouter préalablement une constante positive aux nombres d'années, par exemple le nombre de siècles: 19 ou 20. Pour la mise en oeuvre, le dispositif 3 peut être transparent jusqu'à la fin de l'année 1999, puis activé, en considérant que les dates alors saisies concernent les années 2000 et suivantes. En même temps, les dates tronquées, stockées en mémoire 13 (ou éventuellement entières mais utilisées (12) dans l'unité centrale 11 après troncature) sont transcodées par le dispositif 3, sous la commande de l'unité centrale 11 et mémorisées à nouveau, sous cette forme. Si le logiciel 12 comporte lui- même des dates tronquées, comme par exemple des paramètres, elles sont de même décalées comme les dates de données à traiter. La base de temps 10 est de même décalée, par commande classique au clavier 2, si la valeur de l'instant ou date courant qu'elle fournit est prise en compte dans le logiciel 12. Ainsi, tout le calculateur 1 fonctionne avec un temps local homogène entre toutes les entités de calcul et antérieur au temps réel. Pour l'édition des résultats, ici le montant de consommation d'eau facturé associé à la date du second relevé, 01 mars 2000, le dispositif 4 effectue un recalage temporel opposé au décalage du dispositif 3 et l'annulant, et donc ajoute 32 ans à l'année tronquée 68 ci-dessus, pour repasser dans le calendrier classique. Si le résultat à obtenir est simplement une durée, sans date associée, le recalage (4) est inutile. Le dispositif 3 peut cependant être activé avant l'année 2000, avec toujours le décalage concomitant des dates déjà présentes dans le calculateur 1. Dans ce cas, il faut saisir les dates en entier, pour pouvoir reconnaître celles du 21e siècle, ou alors décider que toute date saisie ayant un 0 pour la dizaine d'années est en fait une date de 2000 à 2009, qu'il convient alors de décaler modulo 100 ans, c'est-à- dire d'y ajouter 100 - 32 = 68 ans dans l'exemple retenu. Cette anticipation, sur l'année 2000, du décalage permet par exemple de traiter des données par addition d'une date, courante par exemple, à une durée déterminée, dont le résultat est une date du 21e siècle. C'est par exemple le cas pour traiter une carte bancaire, dont la date de fin de validité est calculée par addition de sa date de mise en service avec la durée de validité. Les dispositifs 3 et 4 peuvent en pratique être intégrés au calculateur 1 et par exemple comporter respectivement une mémoire de programme de décalage 32 et une mémoire de recalage opposé, ou complémentaire, non représentée, des dates entrantes et sortantes, mémoires associées à une unité arithmétique (ALU) 111 de l'unité centrale 11, qu'elles utilisent en partage de temps. On remarquera d'ailleurs que, si le logiciel 12 est incapable de traiter des dates entières, l'ALU 111 peut cependant traiter des nombres dépassant 99 en décimal et peut donc effectuer les calculs de décalage - recalage susceptibles de produire temporairement une retenue. La figure 2 illustre la structure du dispositif 3, celle du dispositif 4 étant de même nature. Le logiciel de la mémoire 32 comporte des instructions pour appliquer, à des entrées de commande de l'ALU 111, un jeu de bits pour, dans cet exemple, la faire fonctionner en soustracteur. La constante de décalage est appliquée à des premières entrées de données 113 de V'ALU 111, qui reçoit les dates à traiter sur des secondes entrées de données 114. Pour cela, chaque date est mémorisée temporairement en entrée du dispositif 3 dans un tampon 31 et un séquenceur 117 de l'unité centrale 11 lit séquentiellement (liaison 115) les dates pour les appliquer à l'ALU 111 et commande ensuite (liaison 116) à chaque fois la mémorisation de la date décalée dans la mémoire 13. La mémoire homologue du dispositif 4 commande de même l'ALU 111 en addition. On conçoit que la présente invention s'applique à toute autre variable que le temps qui serait susceptible de déborder d'une plage de valeurs prévue. En variante, si V'ALU 111 est de taille trop limitée (7 ou 8 bits), le décalage peut ne porter que sur un nombre entier de dizaines. On place alors le chiffre des dizaines d'années (4 bits) dans la position des unités de V'ALU 111, pour effectuer le décalage - recalage, et on dispose alors, dans V'ALU 111, de la position des dizaines pour y loger un chiffre de débordement. On comprendra que l'invention n'est pas limitée à l'exemple numérique cidessus et qu'elle s'applique à tous nombres de deux chiffres ou plus, qui peuvent donc être tronqués, ceci dans n'importe quelle base. Le nombre peut en outre représenter toute variable autre que le temps. Lorsque le traitement des dates fait intervenir aussi les jours, il peut alors être nécessaire de prendre en compte l'influence des années bissextiles. Dans ce cas, au lieu d'utiliser une table classique, ou l'algorithme permettant de l'obtenir, pour déterminer les années bissextiles, on détermine une table d'années bissextiles décalées du décalage (3) et on traite ensuite (11, 12) les données en fonction de la table. De préférence, on décale les dates d'un multiple entier de quatre ans, ici 32 ans, c'est-à-dire que le dispositif de décalage 3 retranche une constante représentant un multiple entier de quatre ans aux données de date à traiter. De ce fait, seules les années de centenaire et celles de millénaire sont éventuellement affectées par une correction. Dans le cas de l'exemple, l'année 2000 est bissextile, si bien qu'il n'y a pas à prévoir de correction. REVENDICATIONS 1. Procédé de traitement d'une pluralité de données de temps pouvant être représenté par un nombre constitué d'un bloc, de taille prédéterminée, d'au moins un chiffre de poids faible et d'un bloc complémentaire d'au moins un chiffre de poids fort, procédé dans lequel on traite les données dans un équipement (11, 12) agencé pour traiter les blocs de poids faible, à l'exclusion de tout poids fort, procédé caractérisé en ce que, dans une étape préparatoire au traitement, on applique les blocs de poids faible à des moyens de décalage (3) et on commande ceux-ci de façon à décaler, d'une même constante déterminée, les valeurs des blocs de poids faible des temps qui représentent des dates, de façon à ramener ces dernières dans une plage de temps exploitable par l'équipement, correspondant à une valeur unique des poids forts. 2. Procédé selon la revendication 1, dans lequel, lorsqu'une date est à composer avec une durée, on prend en compte la durée, pour choisir le décalage, afin que le résultat de la composition soit dans la plage exploitable. 3. Procédé selon l'une des revendications 1 et 2, dans lequel, lorsque le résultat de la composition comporte une date, on applique à celle-ci un recalage temporel (4) annulant ledit décalage (3), avant d'exploiter le résultat. 4. Procédé selon l'une des revendications 1 à 3, dans lequel on détermine une table d'années bissextiles décalées dudit décalage et on traite ensuite les données en fonction de la table. 5. Procédé selon l'une des revendications 1 à 4, dans lequel on décale les dates d'un multiple entier de quatre ans. 6. Équipement de traitement de données représentant des dates, pour la mise en oeuvre du procédé de la revendication 1, comportant des moyens de traitement (11, 12) pour traiter les valeurs de données exclusivement dans une plage prédéterminée d'une suite continue et ordonnée de valeurs de dates, caractérisé en ce qu'il comporte des moyens (4) de décalage de la valeur des dates & traiter, agencés pour recevoir et décaler, Jusqu'à ladite plage, les dites valeurs de dates d'une constante déterminée et les fournir ensuite aux moyens de traitement (11, 12). 7. Équipement selon la revendication 6, dans lequel il est prévu des moyens (4) de recalage de valeurs de dates, agencés pour recevoir les données traitées et pour restituer les dates de celles-ci après y avoir appliqué un recalage temporel annulant le décalage des moyens de décalage (3). 8. Équipement selon l'une des revendications 6 et 7, dans lequel les moyens de décalage (3) et les moyens de recalage (4) comportent un bloc arithmétique (111) utilisé en partage de temps. 9. Équipement selon l'une des revendications 6 à 8, dans lequel les moyens de décalage (3) retranchent une constante allant de dix à soixante-quatre ans aux données de date à traiter. 10. Équipement selon la revendication 9, dans lequel les moyens de décalage (3) sont agencés pour retrancher une constante représentant un multiple entier de quatre ans aux données de date à traiter.