PRESENTATION DE RDJ Eléments essentiels PRESENTATION DE RDJ Eléments essentiels Assistance Technique Informatique Rédacteur : Bernard NGUYEN © Copyright 2009 - tous droits réservés à UTiGROUP. page 1 Table des matières A. NOTION DE RDJ ET SON UTILITE POUR LE SYSTEME D’INFORMATION .....................................................................3 A1. Formatage des données ...................................................................................................................................................5 A2. Fonctions de contrôle ......................................................................................................................................................5 A3. Constitution de fichiers de données.................................................................................................................................5 A.3.1. Récupération des informations..................................................................................................................... 5 A.3.2. Transcodage des informations ...................................................................................................................... 6 A.3.3. Déduction........................................................................................................................................................ 6 A4. Messages d’erreurs .........................................................................................................................................................6 B. PRINCIPALES COMPOSANTES DU PARAMETRAGE .............................................................................................................7 B1. Format d’entrée...............................................................................................................................................................7 B2. Format de sortie ..............................................................................................................................................................8 B3. Les objets de garnissage................................................................................................................................................10 B.3.1. La composition d’une règle ......................................................................................................................... 14 B.3.2. La table et les appels en table...................................................................................................................... 16 B.3.3. La variable. Les pré-calculs ........................................................................................................................ 17 B.3.4. IF … THEN … ELSE .................................................................................................................................. 17 B4. Normes d’intégrité - dictionnaires.................................................................................................................................21 B5. Le LMD ou Langage de Manipulation des Données .....................................................................................................22 B6. Les fonctions comptables : ............................................................................................................................................33 B7. Les imports : ..................................................................................................................................................................35 C. EXEMPLES D’UTILISATION DE RDJ ........................................................................................................................................36 page 2 Assistance Technique Informatique A. Notion de RDJ et son utilité pour le système d’information RDJ, abréviation de ‘’Règles Du Jeu’’, est un progiciel répondant aux objectifs majeurs suivants : • • • • • permettre l’intégration de solutions comptables dans les systèmes d’information faciliter la justification des écritures comptables (piste d’audit) interpréter (traduire) des actes de gestion en écritures comptables et/ ou autres données alimenter en données les bases comptables et réglementaires assurer un suivi technique et fonctionnel des données d'alimentation traitées, afin de détecter au plus vite les anomalies éventuelles RDJ peut donc prendre en charge les traitements sur les données nécessaires lors de la communication entre les différentes applications du système d'information comptable et/ou réglementaire d'une entreprise. Fonctionnellement, RDJ gère donc les flux de données issus d'une application, les contrôle, les enrichit, les transforme (transcoder, additionner, soustraire, …), avant de fournir les données nécessaires à d'autres applications du système d'information (systèmes de synthèse). Dans le cas de l'ajout d'une nouvelle application dans le système d'information, il n'est pas nécessaire de modifier les applications du système central, pour intégrer cette nouvelle application, car il suffit de paramétrer RDJ pour qu'il assure l'interface entre cette nouvelle application et celles existantes. page 3 Assistance Technique Informatique Voici un exemple d’architecture faisant appel à RDJ pour ‘’normaliser’’ les échanges (source : manuel de référence RDJ) : page 4 Assistance Technique Informatique A1. Formatage des données Le formatage des données, consiste pour le paramétreur à indiquer à RDJ la structure des flux d’entrée et de sortie. Il peut y avoir plusieurs flux d’entrée (suivant le nombre d’applications de gestion) et plusieurs flux de sortie (comptable, réglementaire, statistique,…). Le formatage consiste en fait à définir les ensembles de données utilisées par les différents types de règles qui vont être paramétrés. Un format est composé de champs : c’est un ensemble organisé de champs tels qu'ils doivent être perçus par Règles Du Jeu. Les types de données du format sont : - A : Alphanumérique, N : Numérique, S : Signé, D : Date. A2. Fonctions de contrôle RDJ comporte une fonction d’audit, dont la mise en œuvre permet de fabriquer un historique des déroulements des traitements, afin de pouvoir justifier ultérieurement de l'origine d'un paramétrage donné. Cet historique est mis à la disposition de l’utilisateur, qui doit fabriquer des outils de consultation de cet historique, en fonction de ses propres besoins. L'objectif est, par exemple, de savoir, à partir d’une référence back office contenue dans un flux (fichier) d’entrée à RDJ, quelles données (terme de ME ou Mouvement Elémentaire) ont été fabriquées en sortie de RDJ. Inversement, il permet de retrouver les références back office à partir d’une donnée fabriquée par RDJ. RDJ fait pour cela une photographie des données essentielles d'un enregistrement. Le principe consiste à extraire certains champs (paramétrés pour cette règle) et à les chaîner pour constituer la trace d'audit. RDJ attribue un identifiant de compostage à chaque enregistrement (d'entrée ou de sortie) qui doit être audité. Cet identifiant de compostage permet d'identifier de façon unique la trace qui lui correspond. La règle d'audit est définie par un ensemble de champs à extraire, pour constituer la trace d'audit. Au moins un champ doit être défini pour une version de règle d'audit. A3. Constitution de fichiers de données A.3.1. Récupération des informations RDJ peut récupérer toute information contenue dans un des fichiers d’entrée que l’interface prend en charge, que cette information soit numérique, alphanumérique ou de type date. page 5 Assistance Technique Informatique A.3.2. Transcodage des informations RDJ offre la possibilité de transformer une information du flux d’entrée, en une donnée de valeur différente en sortie de RDJ. La plupart du temps, et pour des raisons de contrôle, ce transcodage se fait à travers d’une table, afin que RDJ puisse signaler une valeur absente en entrée de cette table. Exemple : Table ‘’type d’opération’’ valeur d'entrée achat vente prêt emprunt valeur de sortie 01 02 03 04 Ainsi, lorsque dans une ligne du fichier d’entrée à RDJ, dans le champ « type d’opération », il y aura la valeur ‘’vente’’, RDJ affectera dans le champ de sortie correspondant au type d’opération, la valeur ‘’02’’. A.3.3. Déduction Il s’agit d’une variante plus avancée du transcodage, puisque le paramétreur peut, par exemple, souhaiter mettre une valeur par défaut dans les autres cas, ou appliquer d’autres règles d’alimentation des champs du format de sortie. Pour reprendre l’exemple précédent, on peut très bien demander à RDJ, lorsque le type d’opération n’est pas présent dans la table ‘’type d’opération’’, non pas de rejeter la ligne du fichier d’entrée, mais de mettre une valeur par défaut (par exemple ‘’00’’) ou encore un message d’erreur (voir point A.4). A4. Messages d’erreurs Le moteur de traduction gère, tout au long du traitement l'intégrité des fichiers traités. Cela signifie que les produits résultant d’un traitement sont générés uniquement si aucune anomalie de traitement ou de contrôle n'est décelée au cours du traitement. Ces données sont générées quand toutes les règles du traitement, appliquées à tous les champs, de toutes les lignes (appelés, CRE –compte rendu d’évènement- pour la partie comptable, et CRI –compte rendu d’inventaire- ou CRS -compte rendu de stock- pour la partie gestion) des fichiers et tous les contrôles internes à RDJ, sont sans erreur. Un CRE ou CRS ou CRI est dit « en anomalie de traduction » (traitement RDJ) si au moins une partie de la traduction est en erreur (par exemple, valeur d’entrée inexistante dans la table). Les produits issus des phases sans erreur restent valides et sont générés en sortie. Cet enregistrement doit être recyclé (nouveau traitement, illustré ci-dessous. Source : manuel de référence RDJ), après correction, pour l'application de tous les traitements qui lui sont associés. page 6 Assistance Technique Informatique B. Principales composantes du paramétrage B1. Format d’entrée La première étape dans la mise en place de RDJ consiste à définir les entrées à prendre en compte. Exemple (dans la réalité, le format est beaucoup plus long) : Num Nom libellé Position Longueur 1 CH0001 CDR 1 5 2 CH0002 COMPTE 6 10 3 CH0003 DEVISE 16 3 4 CH0004 TIERS 19 8 5 CH0005 INSTRUMENT 27 9 6 CH0006 REF_BO 36 18 7 CH0007 REF_FO 54 18 8 CH0008 CODE_ISIN 72 18 9 CH0009 REF_MONTAG 90 18 10 CH0010 DATE_NEGO 108 8 Les entrées sont issues de systèmes opérationnels (Système de gestion de Portefeuille, Paie, Gestion des opérations de titres) Les entrées de RDJ sont appelées des CRE, CRI, CRS,… suivant les cas. Chaque enregistrement représente un ensemble d'informations homogènes, rendant compte d'un événement déterminé, survenu dans une application en amont de RDJ. Le format reflète donc l'ordonnancement et la description des données de l'enregistrement telles qu'elles sont perçues par RDJ lors de son exécution. page 7 Assistance Technique Informatique Chaque champ du format est caractérisé par : - un nom, qui permet de l'invoquer dans les phrases de garnissage et les conditions - une nature (numérique, alphanumérique, date) - une longueur B2. Format de sortie La deuxième étape dans la mise en place de RDJ consiste à définir les sorties à renseigner. Exemple (dans la réalité, le format est beaucoup plus long) : Num Nom libellé Position Longueur 1 RP0001 CDR 1 5 2 RP0002 COMPTE 6 10 3 RP0003 DEVISE 16 3 4 RP0004 TIERS 19 8 5 RP0005 INSTRUMENT 27 9 6 RP0006 REFERENCE 36 18 Les sorties vont alimenter des systèmes de synthèses comptables ou financier (comptabilité générale, comptabilité analytique, base réglementaire, …) Les sorties de RDJ sont appelées des Mouvements Elémentaires (ME). Chaque ME représente un ensemble homogène d'informations, à destination d'une application en aval de RDJ. Un ME est composé d'un seul enregistrement. Remarque : Il est possible d’intégrer dans RDJ un format à partir d’un fichier Excel, par exemple (fonction d’import). Ci-dessous, un graphe sur les statuts applicables à un format RDJ (source : manuel de référence RDJ): page 8 Assistance Technique Informatique page 9 Assistance Technique Informatique B3. Les objets de garnissage Le Garnissage est l'ensemble du paramétrage, permettant d'alimenter les champs d'un enregistrement final à partir des champs d'un enregistrement initial. Lors de la traduction, le remplissage des champs de l'enregistrement final suit l'ordre alphabétique des noms de champs. Cet ordre génère automatiquement un numéro, qui repère le champ garni : ce numéro s'appelle l'ordre de garnissage. Le garnissage est l'ensemble des opérations permettant de modifier les champs de l'enregistrement. Seuls les champs qui doivent être modifiés sont à garnir ; la valeur des autres champs est inchangée. La Traduction par RDJ consiste à construire des ME à partir des CRE, CRI ou CRS. Cette construction peut être effectuée grâce aux fonctions suivantes : - l’agrégation, - l’enrichissement, - la transformation. L'agrégation permet de rassembler, en un seul, plusieurs enregistrements de même nature. Elle s'applique sur des enregistrements possédant des critères identiques et permet, selon les options choisies, de calculer des sommes, des moyennes, des dénombrements, ... L'enrichissement (par une Base Tiers par exemple) permet d'apporter des informations supplémentaires à celles déjà contenues dans les enregistrements. La transformation permet de construire un ensemble de ME, à partir des informations contenues dans un enregistrement de CRE, CRI, CRS. Cette construction s'effectue grâce à un langage utilisateur mettant en œuvre des fonctions de calculs arithmétiques, de transferts de données, d'accès à des données extérieures, ... D'autre part, certaines fonctions de suivi de la construction peuvent être mises en oeuvre : - le contrôle, - l’audit. Le contrôle permet de vérifier les enregistrements, pour éventuellement les rejeter afin de les corriger et de les recycler en traduction. L'audit permet de photographier les enregistrements à un instant donné de la traduction. Ces photographies peuvent ensuite être conservées, pour pouvoir témoigner du cheminement d'une traduction exécutée à une date donnée, sur un CRE donné. Le graphique ci-dessous (source : manuel de référence RDJ) illustre la description précédente : page 10 Assistance Technique Informatique page 11 Assistance Technique Informatique De même que les CRE, CRI, CRS sont soumis à des traitements spécifiques, les ME (Mouvements Elémentaires) sont aussi soumis à ses propres traitements, comme le décrit le graphe ci-dessous (source : manuel de référence RDJ). page 12 Assistance Technique Informatique Par ailleurs, certains contrôles appliqués aux flux d’entrée de RDJ, peuvent être appliquées sur les ME générés en sortie, résultats de la traduction de CRE, CRI, CRS: - le contrôle comptable - le contrôle d'équilibre Le contrôle comptable permet de vérifier la correction de certaines données comptables contenues dans les ME. Le contrôle d'équilibre permet de vérifier un équilibre (ou un déséquilibre) sur un ensemble d’écritures comptables, en fonction de certains critères. page 13 Assistance Technique Informatique B.3.1. La composition d’une règle Il existe dans RDJ deux types de règles : Règle de modification : La règle de modification fournit un service d'enrichissement des données d'un enregistrement de CRE, CRI, CRS. Cette mise à jour s'effectue par le Garnissage des champs de l'enregistrement à partir des données contenues dans ce même enregistrement. Ce garnissage est paramétré grâce au langage spécifique à RDJ (LMD ou Langage de Manipulation de Données). Cette règle effectue un enrichissement de l'enregistrement : - soit en renseignant des champs vides, soit en modifiant des champs déjà renseignés. Une règle de modification s'applique sur un seul enregistrement de CRE, CRS, CRI à la fois, pour produire un seul enregistrement modifié à chaque exécution. Règle de traduction : La règle de traduction fournit un service de transformation des données d'un enregistrement de CRE, pour générer un ou plusieurs ME. Cette génération s'effectue par le Garnissage des champs de chaque ME à partir des données contenues dans l'enregistrement de CRE, CRS, CRI. Ce garnissage est paramétré grâce au Langage de Manipulation des Données de RDJ, appelé LMD. Une règle de traduction s'applique à un seul enregistrement de CRE, CRI, CRS à la fois, et produit des ME à chaque exécution en respectant des consignes de génération, appelées schémas. Les ME ou Mouvement Elémentaire : Chaque ME est défini par : - un numéro d'ordre, un et un seul format, une condition de génération (facultative), le garnissage de chacun de ses champs (champs vides par défaut). Le numéro d'ordre d'un ME permet de le citer dans les schémas qui doivent le générer. La condition de génération de ME est un préalable à la création du ME décrit : le ME n'est généré que si la condition de génération est vérifiée. Elle est facultative : lorsque la condition de génération d'un ME n'est pas précisée, le ME est toujours généré (s'il est cité dans le schéma exécuté). Elle s'exprime en utilisant le LMD. Chaque champ (garni ou utilisé pour un garnissage) est identifié par son nom dans le format de l'enregistrement. page 14 Assistance Technique Informatique Le garnissage utilise des champs de l'enregistrement de CRE, CRI, CRS, des contenus de tables et des résultats d'appels externes en les faisant intervenir dans des combinaisons de : - calculs arithmétiques, affectations, concaténations, accès en tables,… Langage de Manipulation des Données : Le Langage de Manipulation des Données est l'outil de codification des garnissages, des schémas et des conditions, utilisé pour renseigner les champs d'un enregistrement final. Chaque phrase de garnissage ou de condition comprend : - des opérandes : noms (ou partie) de champs, constantes, valeurs récupérées dans des tables, des séparateurs : parenthèses, point-virgules, espaces, ... des opérateurs : cités ci-dessous. Les opérateurs proposés par le LMD peuvent être combinés dans les phrases de garnissage ou de condition. Ils offrent les possibilités suivantes : - transfert de champs ou de constantes, concaténation de champs et de constantes, calculs arithmétiques (addition, soustraction, division, multiplication), comparaisons de champs entre eux ou avec des constantes, paramétrage de conditions, extraction de parties de champs ou de dates, fonctions de manipulation de dates : nombre de jours entre 2 dates, extraction du quantième d'une date, prise en compte de la date système, calcul d'une date plus ou moins N jours,… - utilisation de tables, utilisation des valeurs d'environnement de RDJ, activation d'appel externe personnalisé par des fonctions privilégiées mise en anomalie du CRE, CRI , CRS traité par la règle fonctions de reformatage des données. Chacun de ces opérateurs est paramétré par un mot réservé et doit respecter une syntaxe précise, qui est vérifiée lors de la saisie des phrases. page 15 Assistance Technique Informatique B.3.2. La table et les appels en table La structure d'une table contient les colonnes Argument et Valeur. La structure d'une table est définie par : - - son nom, la description de la colonne Argument : • sa nature (Alphanumérique, Numérique, Date), • sa longueur la description de la colonne Valeur : • sa nature (Alphanumérique, Numérique, Date), • sa longueur. Le contenu d'une table est composé d'un nombre variable de postes de table. Chaque poste de table est composé : - d’un argument : c'est la valeur du critère de recherche dans la table, d’un ensemble de valeurs associées à des périodes de validité différentes : l'une d'elle constitue la réponse à la recherche dans la table à une date donnée. Chaque période de validité est définie par une date de début et une date de fin de validité. Un ensemble (argument, date de début de validité, date de fin de validité, valeur) constitue une version de poste de table. Il faut qu'à un argument de recherche, pour une date précise, corresponde au plus une valeur associée. Il est possible de définir pour la table une valeur par défaut, qui sera restituée dans le cas d'une recherche infructueuse. Les fonctions d'utilisation des tables dans le LMD sont les suivantes : - contrôle d'existence d'un argument en fonction de la date selon laquelle les traitements s'effectuent, contrôle d'existence d'un argument en fonction d'une date spécifiée, récupération de la valeur associée à l'argument en fonction de la date selon laquelle les traitements s'effectuent, récupération de la valeur associée à l'argument en fonction d'une date spécifiée, extraction d'une partie de la valeur associée à l'argument en fonction de la date selon laquelle les traitements s'effectuent, extraction d'une partie de la valeur associée à l'argument en fonction d'une date spécifiée. Récupération de la valeur d'un poste $ACCTAB ( TABLEREF ; ZONECRE1 ) Récupération partielle de la valeur d'un poste NBJMOIS $EXTTAB ( DEFMOIS ; "0011002N" ; $MONTH ( DATEMVT ) ) page 16 Assistance Technique Informatique B.3.3. La variable. Les pré-calculs Pour éviter de répéter plusieurs fois la même expression dans les phrases de garnissage, les conditions de génération de ME ou les conditions de schéma, il est possible de gérer des pré-calculs ou des variables pour la règle de traduction. Un pré-calcul de règle de traduction est défini par : - un nom, - une nature (alphanumérique, numérique, date, ...), - une longueur en nombre de caractères, - une phrase de garnissage (obligatoire). La phrase de garnissage d'un pré-calcul est l'expression qui permet de calculer sa valeur. Elle s'exprime en utilisant le LMD. Les pré-calculs définis pour une règle de traduction peuvent être utilisés pour exprimer le garnissage des ME, les conditions de génération de ME, ou les conditions de schémas ; ils sont identifiés par leur nom. Lors de l'exécution de la règle de traduction, les pré-calculs ne seront effectués que si la condition des pré-calculs est vérifiée. Cette condition s'exprime en utilisant le LMD. Elle est facultative. Les variables et pré-calculs, définis par ailleurs peuvent être utilisés (comme un champ d'enregistrement de CRE) ou modifiées : - dans les conditions : • • • • - de schémas, de génération de ME, de modification d'enregistrement, de pré-calculs, dans les garnissages : • • • • de champs de ME, de champs d'enregistrements modifiés, de pré-calculs, de variables. Selon leur fréquence d'initialisation, elles sont réinitialisées à différents moments du traitement. Exemple de variable : @NBR_ME := NB_GENE*2 B.3.4. IF … THEN … ELSE C’est une des syntaxes les plus utilisées dans RDJ. Elle permet de définir une action à partir d’une condition, et l’on peut faire une imbrication de conditions et d’actions. IF ZONECRI = ‘’01’’ THEN ‘’AA’’ ELSE IF ZONECRI = ‘’02’’ THEN ‘’BB’’ ELSE IF ZONECRI = ‘’03’’ THEN ‘’CC’’ page 17 Assistance Technique Informatique page 18 Assistance Technique Informatique Voici un exemple concret de paramétrage RDJ (version française) contenant la condition IF … THEN…ELSE (source : manuel de référence RDJ) : page 19 Assistance Technique Informatique Une fois le paramétrage réalisé, il doit être exporté vers le serveur de test, comme l’illustre le graphe cidessous (source : manuel de référence RDJ) : page 20 Assistance Technique Informatique B4. Normes d’intégrité - dictionnaires Il existe des normes en matière de paramétrage, qui permettent d’avoir une cohérence des données RDJ. - Un objet ne peut être supprimé que s'il n'est pas utilisé par d'autres objets. - Un objet ne peut être utilisé pour décrire un autre objet que s’il n'est pas en cours de modification. Par exemple, un champ du dictionnaire peut être utilisé pour décrire un format seulement si, à cet instant, le champ lui-même et le type de données sur lequel il s'appuie, ne sont pas en cours de modification. - De même, un objet ne peut être modifié que s’il n'intervient pas dans la description d'un objet en cours de modification, et s’il n'utilise pas, dans sa description, un objet en cours de modification. Par exemple, tant qu'une version de règle de traduction est en cours de modification, le format sur lequel elle s'appuie ne peut pas être modifié, mais il peut être visualisé. - Toute modification d'un objet influence automatiquement la description de tous les objets qui lui font référence, directement ou non. Par exemple, l'ajout d'un champ dans une version de format est directement répercuté dans la structure des ME définis sur cette version de format. Dans le même ordre d’idée, l’existence de dictionnaires participe à la normalisation des données. En effet, l'utilisation des dictionnaires de types de données et de champs permet de normer et de centraliser la description des informations de l'entreprise dans le progiciel. Les dictionnaires permettent de décrire l'information une seule fois, pour la rendre utilisable par tous les objets qui en ont besoin, en limitant ainsi les descriptions multiples et incompatibles. Par exemple, plusieurs utilisateurs amenés à décrire la même information dans des formats différents la définissent exactement de la même façon s'ils utilisent le même champ du dictionnaire. L'utilisation du dictionnaire réduit le nombre d'objets décrits, en évitant les répétitions. Une utilisation systématique des dictionnaires garantit la cohérence des descriptions des informations de l'entreprise dans le progiciel. En effet, RDJ répercute automatiquement la modification d'un champ du dictionnaire sur tous les formats qui l'utilisent, ainsi que la modification d'un type de données sur tous les champs, tables et règles de traduction qui l'utilisent. Une fonction du langage est généralement écrite sous la forme : (OPERANDE1) <OPERATEUR> (OPERANDE2) Exemples : CHAMP1 + CHAMP2 CHAMPNUM * 15 Cependant, certaines fonctions (accès en table, recherche ou contrôle par appel externe, calculs de date…) s'écrivent sous la forme : <OPERATEUR> ( PARAMETRE1 ; PARAMETRE2 ) Exemples : $ACCTAB ( TABLE ; ARGUMENT ) $NBDAYS ( DATE ; DATE2 ) $ENV ("SENDER ") page 21 Assistance Technique Informatique B5. Le LMD ou Langage de Manipulation des Données Le LMD (Langage de Manipulation des Données) permet d'exprimer les paramétrages RDJ, destinés à fabriquer les ME (Mouvement Elémentaire) par les règles de traduction ou les enregistrements de CRE, CRI, CRS modifiés par les règles de modification. Chaque fonction du langage est symbolisée par un mot ou un signe réservé, appelé opérateur, auquel sont associés, selon la syntaxe de la fonction : - un ou plusieurs opérandes - un ou plusieurs paramètres Cette syntaxe est ensuite contrôlée par le progiciel RDJ, à l'issue de la saisie des phrases. Dans un garnissage, les relations entre les différentes fonctions sont symbolisées par des séparateurs, comme les parenthèses ou les espaces, qui imposent un ordre d'exécution aux traitements. En l'absence de parenthèses, un ordre implicite est respecté : - de gauche à droite en respectant la priorité arithmétique pour les opérateurs de calcul. La multiplication ( * ) et la division ( / ) sont exécutées avant l'addition ( + ) et la soustraction (- ), - de droite à gauche pour les autres opérateurs. A noter que la longueur maximale d'une phrase est de 1200 caractères (espaces inclus), sauf pour les conditions d'exécution de schémas, où cette longueur maximale est de 455 caractères. La longueur maximale des constantes utilisées dans les phrases est de : - 256 caractères pour un schéma - 356 caractères pour l'ensemble des garnissages associés à un ME. Voici la synthèse des principales fonctions utilisables dans les garnissages (=paramétrages) de RDJ : La concaténation de données : Cette fonction permet d'assembler, bout à bout, plusieurs valeurs initiales. Syntaxe : OPERANDE1 & OPERANDE2 Exemples : ZONECRE3 "LIBELLE1" & CHAMP5 & $ACCTAB (TABLEREF;CHAMP5) ZONECRE3 est le résultat de la concaténation du libellé alphanumérique "LIBELLE1", de la valeur du champ d'enregistrement CHAMP5 et de la valeur de poste associée à la valeur de CHAMP5 dans la table TABLEREF page 22 Assistance Technique Informatique L’extraction d'éléments d'une date : Ces fonctions permettent d'extraire d'un champ date : - la valeur du jour : c'est la fonction $DAY - la valeur du mois : c'est la fonction $MONTH - la valeur de l'année sur 2 caractères (nombre dizaine et unité de l'année) : c'est la fonction $YEAR - la valeur de l'année sur 4 caractères : c'est la fonction $YEAR4. Syntaxe : $DAY (OPERANDE1) $MONTH (OPERANDE1) $YEAR (OPERANDE1) $YEAR4 (OPERANDE1) Les parenthèses sont obligatoires, OPERANDE1 est une date. Paramètres : OPERANDE1 peut être : - un champ d'enregistrement - un pré-calcul. Pour les fonctions $DAY, $MONTH, $YEAR, le type de données de OPERANDE1 doit obligatoirement être D (date) ou N (de longueur compatible avec une date, c'est à dire N(6), N(7) ou N(8)) Pour la fonction $YEAR4, le type de données de OPERANDE1 doit obligatoirement être D(8) ou N(8). Exemples : CHAMPME1 $DAY (DATECRE1) CHAMPCRE2 $YEAR (DATECREBIS) CHAMPME3 $MONTH (DATECRE2) CHAMPME4 $YEAR4 (DATECRE2) Calcul du nombre de jours entre deux dates : Cette fonction permet de fournir le nombre de jours réels entre deux dates (sans notion de jours ouvrés ou ouvrables). Syntaxe : $NBDAYS ( OPERANDE1 ; OPERANDE2 ) Les parenthèses et le point-virgule sont obligatoires, OPERANDE1 et OPERANDE2 sont des dates. Paramètres : Les types de données de OPERANDE1 et OPERANDE2 doivent obligatoirement être D (date) ou N (de longueur compatible avec une date, c'est à dire N(6), N(7) ou N(8)). Exemples : Champ récepteur Garnissage CHAMPME1 $NBDAYS ( DTNAISS ; $SYSDATE ) page 23 Assistance Technique Informatique L’extraction partielle d'un champ : Cette fonction permet d'extraire une partie d'un champ d'enregistrement de CRE, sans avoir à le redéfinir. Syntaxe : l'extraction est définie par les paramètres qui suivent le nom du champ à traiter. CHAMPCRE ("PPPPLLLT") - Les parenthèses et les doubles guillemets sont obligatoires - CHAMPCRE est un champ d'enregistrement de CRE - PPPP est la position dans le champ à partir de laquelle l'extraction doit être effectuée (4 caractères numériques) - LLL est la longueur de la zone à extraire dans le champ (3 caractères numériques) - T est le type de données de la zone à extraire dans le champ (A, N, D). Exemples CODEPOST ADR_VILLE ("0001005N") DPT_NAISS NUMSECU ("0006002N") Les calculs arithmétiques : Ces fonctions permettent d'effectuer des calculs arithmétiques : addition, soustraction, division, multiplication. Syntaxes : Addition : OPERANDE1 + OPERANDE2 Soustraction : OPERANDE1 - OPERANDE2 Division : OPERANDE1 / OPERANDE2 Multiplication : OPERANDE1 * OPERANDE2 OPERANDE1 et OPERANDE2 sont des nombres. Exemple de calcul de MT_ASS : IF TX_ASS <> 0 THEN MT_ASS1 + MT_ASS2 + MT_ASS3 +MT_ASS4 + MT_ASS5 ELSE $ACCTAB ( ASSURANCE ; CATPRET ) Opérateurs logiques et de comparaisons : Ces opérateurs sont utilisables dans toutes les conditions des phrases du langage. Syntaxes : Egalité : OPERANDE1 = OPERANDE2 Différence : OPERANDE1 <> OPERANDE2 Supériorité stricte : OPERANDE1 > OPERANDE2 page 24 Assistance Technique Informatique Infériorité stricte : OPERANDE1 < OPERANDE2 Supériorité : OPERANDE1 >= OPERANDE2 Infériorité : OPERANDE1 <= OPERANDE2 Les opérateurs "différence", "supériorité" et "infériorité" comportent des doubles signes (respectivement <>, >=, <=). Ces doubles signes doivent être obligatoirement collés (sans espace). OPERANDE1 et OPERANDE2 sont des nombres. Inclusion : ( EXPRESSION1 ) AND ( EXPRESSION2 ) Exclusion : ( EXPRESSION1 ) OR ( EXPRESSION2 ) Les expressions doivent obligatoirement être délimitées par des parenthèses lors de l'utilisation de AND et OR. Un espace est obligatoirement requis de chaque côté des opérateurs. EXPRESSION1 et EXPRESSION2 sont des expressions de comparaisons. Exemples de calcul de ZONECREFIN : IF ( CPT <> 963521 ) THEN ZONECRE2&"956AAA" ELSE "963"&ZONECRE2&"XXX" Garnissage conditionnel : Cette fonction permet d'introduire des conditions dans le garnissage d'un champ récepteur. Syntaxe : IF <CONDITION> THEN <EXPRESSION1> ELSE <EXPRESSION2> Paramètres : CONDITION est une expression utilisant les opérateurs de comparaison et les opérateurs logiques, EXPRESSION1 et EXPRESSION2 sont des expressions de garnissage pouvant combiner les différentes fonctions du langage. Leurs types de données doivent être compatibles, puisque destinés à renseigner le même champ récepteur. EXPRESSION1 est appliquée si CONDITION est vraie. EXPRESSION2 est appliquée si CONDITION est fausse. Exemples de calcul de REFME1 : IF $ACCTAB ( TAB03 ; CODEVTRDJ) <> " " THEN $ACCTAB ( TAB03 ; CODEVTRDJ) ELSE CDAINIT Si le poste de table est renseigné, sa valeur est reportée dans le champ récepteur, sinon, la valeur du champ CDAINIT est reportée dans le champ récepteur On peut enchaîner les conditions : IF cond1 THEN expression1 ELSE IF cond2 THEN expression2 ELSE expression3 Les conditions sont testées l'une après l'autre : page 25 Assistance Technique Informatique - expression1 est exécutée si cond1 est vraie - cond2 est testée uniquement si cond1 est fausse - expression2 est exécutée si cond1 est fausse et si cond2 est vraie - expression3 est exécutée si cond1 et cond2 sont fausses. On peut imbriquer les conditions : IF cond1 THEN IF cond2 THEN expression1 ELSE expression2 ELSE expression3 Toutes les conditions sont testées : - expression1 est exécutée si cond1 et cond2 sont vraies - expression2 est exécutée si cond1 est vraie et si cond2 est fausse - expression3 est exécutée si cond1 et cond2 sont fausses. Mise en anomalie du CRE : Cette fonction met en anomalie le CRE en cours de traitement. Son utilisation permet de contrôler l'enregistrement de CRE. Elle est utilisée dans les conditions de garnissage ou de génération pour mettre le CRE en anomalie dans les cas où certaines conditions rencontrées sont remplies, et correspondent à une anomalie de fonctionnement dans le système. Syntaxe : $ERR (EXPRESSION) Les parenthèses sont obligatoires. Paramètres : - Le résultat de EXPRESSION permet de renseigner le message d'erreur associé à la mise en anomalie - La longueur du message d'erreur généré ne peut pas excéder 50 caractères. Si cette limite est dépassée, le message d'anomalie est tronqué. Exemples pour le champ REFME1 : IF REFCRE3 = $ACCTAB ( TABLEREF ; ZONECRE1 ) THEN REFCRE3&ZONECRE1 ELSE $ERR ( "REFERENCE INEXISTANTE : "&REFCRE3 ) Dans le cas où la valeur de REFCRE3 n'est pas référencée en table TABLEREF, le CRE est mis en anomalie avec le message "REFERENCE INEXISTANTE : "associé à la valeur de REFCRE3 Condition de génération de ME ou de modification d'enregistrement : Ces fonctions permettent de définir des conditions de déclenchement de la génération de ME ou de la modification d'enregistrement. Syntaxe : La fonction est implicite. La condition est renseignée dans la fenêtre Condition de la règle de traduction et de modification. Il n'y a qu'une expression, qui est la condition à vérifier pour générer le ME ou pour modifier l'enregistrement. page 26 Assistance Technique Informatique EXPRESSION1 Paramètres : EXPRESSION1 est une expression utilisant les opérateurs logiques et de comparaison. Elle peut utiliser des champs d'enregistrements de CRE, des constantes, des valeurs de tables, des pré-calculs et des variables. Exemples de condition de génération de ME : ( $ACCTAB ( TABLEREF ; CATPRET ) > 310 ) AND (NOMINAL >= 500000 ) Le ME est généré si le résultat d'accès en table est strictement supérieur à 310 et la valeur de NOMINAL est supérieure à 500000. Condition de modification d'enregistrement : (REFCRE1 = " ") OR (REFDEF > 100) L'enregistrement de CRE est modifié si REFCRE1 contient des espaces, ou si la valeur de REFDEF est strictement supérieure à 100. Si la condition de génération de ME n'est pas vérifiée, le ME associé n'est pas créé. La traduction passe à la création du ME suivant dans la liste des ME du schéma. De même, si la condition de modification d'enregistrement n'est pas vérifiée, l'enregistrement de CRE n'est pas modifié et la traduction passe à l'exécution de la règle suivante paramétrée pour le CRE en cours de traitement. Les accès en table : Pour contrôle de l'argument selon la DAR (Date d’Application des Règles) ou une date précise : Cette fonction permet de vérifier l'existence en table d'un argument donné en fonction de la DAR. L'argument est considéré comme existant, s'il existe un poste de table dont la période de validité contient la DAR. Si cet argument existe, sa valeur est fournie en retour de la fonction. Si l'argument n'existe pas, le CRE est mis en anomalie lors de sa traduction. Syntaxe : $CHECKTAB ( NOMTABLE ; OPERANDE1 ) - Les parenthèses et le point-virgule sont obligatoires, - NOMTABLE est le nom d'une table existante, - OPERANDE1 est une expression dont la valeur sert d'argument de recherche dans la table citée. Paramètres : OPERANDE1 peut être : - un champ d'enregistrement, - une valeur constante, - une valeur en table, - un pré-calcul, - une variable. page 27 Assistance Technique Informatique Le type de données de OPERANDE1 doit obligatoirement être identique à celui défini pour l'argument dans la structure de la table. Caractéristiques du champ récepteur : Le type de données du champ récepteur doit être compatible avec celui de la valeur défini dans la structure de la table. Exemple pour le champ ZONEME1 : IF $CHECKTABD ( TABLEREF ; ZONECRE1 ;$SYSDATE ) = ZONECRE1 THEN ZONECRE1&VALDEFCRE Pour récupération de la valeur du poste selon la DAR ou une date précise : Cette fonction permet d'obtenir la valeur d'un poste de table en fonction d'un argument et de la DAR. Le poste sélectionné est celui dont la période de validité contient la DAR. Si le poste existe, sa valeur est restituée. Si le poste n'existe pas, la mise en anomalie du CRE suit les normes définies dans le tableau expliquant les combinaisons de paramétrage. Syntaxe : $ACCTAB ( NOMTABLE ; OPERANDE1 ) - Les parenthèses et le point-virgule sont obligatoires - NOMTABLE est le nom d'une table existante - OPERANDE1 est une expression, dont la valeur sert d'argument de recherche dans la table citée. Exemple pour le champ ZONEME1 : $ACCTAB ( TABLEREF ; ZONECRE1 ) Pour récupération partielle de la valeur du poste selon la DAR ou une date précise : Cette fonction est une variante de la fonction précédente. Elle permet d'obtenir une partie de la valeur d'un poste de table en fonction d'un argument et de la DAR. Le poste sélectionné est celui dont la période de validité contient la DAR. Si le poste existe, une partie de sa valeur est restituée. Si le poste n'existe pas, la mise en anomalie du CRE suit les normes définies dans le tableau expliquant les combinaisons de paramétrage. Syntaxe : $EXTTAB ( NOMTABLE ; "PPPPLLLT" ; OPERANDE1) - Les parenthèses et le point-virgule sont obligatoires - NOMTABLE est le nom d'une table existante page 28 Assistance Technique Informatique - PPPP est la position dans la valeur de table à partir de laquelle l'extraction doit être effectuée (4 caractères numériques) - LLL est la longueur de la zone à extraire dans la valeur de table (3 caractères numériques) - T est le type de données de la zone à extraire (A, N, D) - OPERANDE1 est une expression, dont la valeur sert d'argument de recherche dans la table citée. Exemple pour le champ NMJMOIS : $EXTTAB ( DEFMOIS ; "0011002N" ; $MONTH ( DATEMVT ) ) Utilisation et modification des variables : Les variables définies par ailleurs peuvent être utilisées (comme un champ d'enregistrement de CRE) ou modifiées : - dans les conditions : - de schémas de génération de ME de modification d'enregistrement de pré-calculs dans les garnissages : de champs de ME de champs d'enregistrements modifiés de pré-calculs de variables. Selon leur fréquence d'initialisation, elles sont réinitialisées à différents moments du traitement. Syntaxe : - L'utilisation de la variable s'effectue en préfixant son nom par le caractère @ dans les expressions qui l'utilisent. - La modification de la variable s'effectue par affectation d'une valeur à celle-ci. - L'affectation est symbolisée par les symboles deux points et égalité (:=). Ces deux symboles doivent impérativement être collés (sans espace). - L'affectation de valeur à une variable peut être combinée à un garnissage de champ. Dans ce cas, elle est séparée des instructions de garnissage par une virgule (,). @VARIABLE @VARIABLE := EXPRESSION1 , EXPRESSION2 - VARIABLE est le nom d'une variable existante - EXPRESSION1 est l'expression de garnissage de la variable VARIABLE - L'ensemble (deux-points égalité) est obligatoire pour désigner une affectation de valeur à la variable - La virgule est obligatoire pour séparer l'affectation de variable de l'expression de garnissage. - EXPRESSION2 est l'expression de garnissage du champ récepteur (dans le ME ou l'enregistrement modifié) ou l'expression de condition. Exemple d’une variable REF_CLI : @REF_CLI := IF $ENV ( "FIRSTGROUP" ) = "1" THEN CRECLI , @REF_CLI&NUM_FACT @REF_CLI est renseigné par CRECLI si c'est le début du lot. concaténation de @REF_CLI et NUM_FACT page 29 Assistance Technique Informatique On peut combiner le garnissage d'un champ et la modification d'une ou plusieurs variables. Cela permet de stocker les informations dans les variables exactement au moment où l’on est sûr de la validité des traitements associés. L'affectation de valeurs à une variable lors d'un garnissage de champ se fait invariablement avant ou après ce garnissage, selon les besoins du traitement. L’utilisation de pré-calculs : Un pré-calcul contient le résultat d'une expression réutilisable plusieurs fois dans la création des ME associés à une règle de traduction. Son utilisation se limite à l’application de la règle de traduction, à un enregistrement. Il est symbolisé par un champ dans le format d'appui de la règle (sous réserve de disposer de l'espace suffisant dans la définition du format). Cela signifie que ce format d'appui ne doit pas utiliser la totalité des 4000 caractères autorisés, pour pouvoir déclarer des pré-calculs. Dans le cas contraire, l'utilisation de pré-calculs n'est pas possible. Le pré-calcul défini pour une règle est ensuite utilisé comme un champ normal d'enregistrement de CRE dans les garnissages : - de champs de ME de variables. Syntaxe : Il n'y a pas de syntaxe particulière; le pré-calcul s'utilise comme un champ d'enregistrement. Le garnissage du pré-calcul s'effectue dans l'onglet Expression associé au pré-calcul. On peut définir plusieurs pré-calculs pour une règle. La limite de définition de ces pré-calculs est fixée par l'espace disponible dans le format par rapport au maximum de 4000 caractères. - Si, par exemple, le format d'appui utilise 4000 caractères, aucun pré-calcul ne peut être défini Si, par exemple, le format d'appui utilise 3000 caractères, 1000 caractères sont disponibles pour définir et garnir des pré-calculs. Les séparateurs : Les différents garnissages sont différenciés par des séparateurs réservés, dont l'utilisation dépend du type d'opérateur : l'espace, les parenthèses, le point-virgule, les doubles guillemets, les deux points, la virgule, le caractère @. L'espace est obligatoire dans les cas d'utilisation des mots réservés, pour les isoler des noms de champs utilisés : AND, OR, IF, THEN, ELSE. Dans les autres cas, leur utilisation n'est pas obligatoire. Cependant, elle facilite la compréhension des phrases. page 30 Assistance Technique Informatique Le nombre d'espaces entre deux éléments d'une expression n'a pas d'influence sur la signification de la phrase ; plusieurs espaces consécutifs équivalent à un seul espace séparateur. Cependant, chaque espace est compté comme un caractère de l'expression. Exemples : L'expression A + B occupe 7 caractères. Elle produit le même résultat que l'expression A + B, qui occupe 5 caractères, ou que l'expression A+B, qui occupe 3 caractères. L'utilisation des espaces favorise donc la lisibilité ; par contre, ils peuvent être supprimés dans le cas d'un garnissage particulièrement long, pour gagner de la place. Les parenthèses : Elles sont obligatoires pour délimiter : - - les paramètres des fonctions : d'accès en table comme $ACCTAB de recherche ou contrôle par appel externe comme $SEARCH ou $CHECK de calculs et manipulations de dates comme $DAY, $MONTH d'utilisation des valeurs d'environnement d'une vacation : $ENV de mise en anomalie d'un CRE : $ERR les expressions des conditions (utilisation de AND et OR) : Par exemple : IF ( A <> B ) OR ( A < 28000 ) est une expression correcte IF A <> B OR A < 28000 est une expression incorrecte. Elles sont aussi utilisées pour forcer la priorité de certains traitements : - dans les conditions : IF ( ( MONT1 > 1500 ) OR ( MONT2 < 5000 ) ) AND ( CDDEVISE = "FRF" ) THEN… - dans les calculs arithmétiques : ( A + B ) / 4 Quand elles sont utilisées, le nombre de parenthèses ouvrantes doit être égal à celui des parenthèses fermantes. Si ce n'est pas le cas, l'expression est rejetée lors de son analyse. Les expressions contenant des parenthèses peuvent être imbriquées les unes dans les autres. Ces imbrications sont appelées des niveaux de profondeur de parenthèses. Une expression peut contenir au maximum 20 niveaux de profondeur. Dans les cas où elles ne modifient pas les priorités des opérations, elles sont facultatives. Cependant, leur utilisation peut faciliter la compréhension des phrases. page 31 Assistance Technique Informatique Le point-virgule : Il est obligatoire pour séparer les paramètres, quand ceux-ci sont multiples, pour les fonctions : - d'accès en table - de recherche ou contrôle par appel externe - de calculs et manipulations de dates Les doubles guillemets : Ils sont obligatoires pour délimiter les valeurs constantes de type alphanumérique. Exemple : "LIBELLE DE LA REFERENCE XX111" Les deux points : Associés au signe "égalité", ils sont obligatoires pour désigner une attribution de valeur à une variable. Exemple : @VARIABLE := @VARIABLE + QTECDE La virgule : Elle est obligatoire pour séparer l'attribution de valeur à une variable, d'une phrase de garnissage associée à un champ récepteur. Exemple : @QTE_TOT := @QTE_TOT + QTECDE , QTECDE * ( MTHT + MTTVA ) Le caractère @ : Il est obligatoire pour désigner une variable dans les attributions ou phrases de garnissage. Exemple : @VARIABLE := @VARIABLE+QTECDE , @QTE_TOT * (MTHT+MTTVA) Dans les autres cas, il n'est pas utilisé et ne signifie rien. page 32 Assistance Technique Informatique B6. Les fonctions comptables : L’utilisation systématique de RDJ pour traiter la production des schémas comptables permet une centralisation de l’ensemble des règles comptables retenues par l’entreprise. En conséquence, au delà des aspects techniques liés à l’alimentation des flux comptables, RDJ devient une base de connaissance directement exploitable par les comptables pour produire : - les livres de procédures (aujourd’hui construits manuellement par les services financiers) à partir des règles paramétrées et de jeux d’essais représentatifs des différents cas de gestion. - les journaux comptables justifiant les écritures produites par l’exécution d’une interface - les états de synthèse ou de détail facilitant les travaux des équipes fonctionnelles dans leur travail quotidien. Les restitutions comptables proposées par RDJ sont les suivantes : - un journal comptable standard : il est édité en fin d’exécution d’une vacation ou à l’issue d’une simulation dans l’atelier et s’applique exclusivement aux écritures comptables détaillées (avant agrégation). - une zone d'échange, contentant des données comptables paramétrables, permettant aux utilisateurs de construire des états qui leur conviennent et en particulier un livre des procédures comptables. Les données présentes dans le journal comptable peuvent être paramétrées dans les règles de suivi définies dans Rule Designer, comme l’illustre le graphique ci-dessous (source : manuel de référence RDJ). page 33 Assistance Technique Informatique page 34 Assistance Technique Informatique B7. Les imports : Les imports permettent d'effectuer le lien entre les ERP (comme SAP) et RDJ. Ils permettent d'intégrer dans Rule Designer la description de formats provenant d'applications externes à RDJ. Cette intégration s'effectue à partir de fichiers de définitions spécifiques aux applications externes. Les imports permettent de traiter : - les formats d'accès à Oracle Application - les formats d'accès à SAP - des formats provenant d'un fichier de définition COBOL Les imports sont mis en œuvre dans Rule Designer, via l'utilisation de fonctions d'import. L'import crée automatiquement : - les types de données nécessaires à la création des champs - le dictionnaire des champs (avec vérification de conflits éventuels avec le dictionnaire de champs déjà présent) - les formats. page 35 Assistance Technique Informatique C. Exemples d’utilisation de RDJ Accès en table : $ACCTAB ( TABLE ; ARGUMENT ) Calcul du nombre de jours entre deux dates : $NBDAYS ( DATE ; DATE2 ) Extraction partielle d'un champ (numéro de sécurité sociale) : DPT_NAISS NUMSECU ("0006002N") Calculs arithmétiques : MT_TTC MT_HT ( 1 + TXPAYS ) Opérateurs logiques et de comparaison : IF ( CPT <> 963521 ) THEN ZONECRE2&"956AAA" ELSE "963"&ZONECRE2&"XXX" Garnissage conditionnel : IF $ACCTAB ( TAB03 ; CODEVTRDJ) <> " " THEN $ACCTAB ( TAB03 ; CODEVTRDJ) ELSE CDAINIT Si le poste de table est renseigné, sa valeur est reportée dans le champ récepteur, sinon, la valeur du champ CDAINIT est reportée dans le champ récepteur CHAMPCRE1 IF CDAPPLI = $ACCTAB ( APPLIREF ; REF2 ) THEN REF2 CHAMPCRE1 est renseigné avec la valeur de REF2 si la valeur de CDAPPLI est référencée dans la table APPLIREF. Dans le cas contraire, CHAMPCRE1 contient des espaces. CHAMPME8 IF (CRT3 = "DCC") THEN CRTLETTR ELSE IF (CRT3 = "VIT") THEN CRT8 CHAMPME8 est renseigné avec : - la valeur de CRTLETTR si la valeur de CRT3 est DCC, - la valeur de CRT8 si la valeur de CRT3 est VIT, - des espaces pour toute autre valeur de CRT3. Mise en anomalie du CRE : IF REFCRE3 = $ACCTAB ( TABLEREF ; ZONECRE1 ) THEN REFCRE3&ZONECRE1 ELSE $ERR ( "REFERENCE INEXISTANTE : "&REFCRE3 ) Dans le cas où la valeur de REFCRE3 n'est pas référencée en table TABLEREF, le CRE est mis en anomalie avec le message "REFERENCE INEXISTANTE : "associé à la valeur de REFCRE3. page 36 Assistance Technique Informatique Condition de génération de ME ou de modification d'enregistrement : Ces fonctions permettent de définir des conditions de déclenchement de la génération de ME ou de la modification d'enregistrement. condition de génération de ME ( $ACCTAB ( TABLEREF ; CATPRET ) > 310 ) AND ( NOMINAL >= 500000 ) Le ME est généré si le résultat d'accès en table est strictement supérieur à 310 et la valeur de NOMINAL est supérieure à 500000 condition de modification d'enregistrement (REFCRE1 = " ") OR (REFDEF > 100) L'enregistrement de CRE est modifié si REFCRE1 contient des espaces, ou si la valeur de REFDEF est strictement supérieure à 100 On terminera par deux graphiques (sources : manuel de référence RDJ) résumant les éléments essentiels que l’on peut retenir de cette présentation de RDJ: page 37 Assistance Technique Informatique Ci-dessous enfin un schéma illustrant les enchaînements pour un traitement de traduction RDJ : page 38 Assistance Technique Informatique
© Copyright 2025 ExpyDoc