Tous les articles par Mr COBOL

Glossaire SQL

A

analyse multidimensionnelle : ensemble des techniques OLAP ou OLTP permettant d’analyser statistiquement des données à partir de valeurs appelées « dimensions » que l’on agrège pour les besoins de l’analyse.

anomalie (transactionnelle) : obtention d’information(s) erronée(s) au cours d’un traitement informatique portant sur des données. Les anomalies se combattent par l’utilisation judicieuse d’un niveau d’isolation des transactions.

API (Application Programming Interface ou interface de programmation) : définit la manière dont un composant informatique communique avec un autre. Le plus souvent, une API consiste en une bibliothèque de composants logiciels, c’est-à-dire d’une liste de fonctions ou procédures considérées comme utiles pour d’autres programmes et exploitables à l’aide de n’importe quel langage de développement informatique.

arbre équilibré (B-Tree ou Balanced Tree) : structure de données arborescente dont la profondeur est constante, c’est-à-dire que toutes les feuilles sont situées au même niveau.

ASCII (American Standard Code for Information Interchange) : norme américaine employée pour le codage des caractères alphanumériques. Elle a été inventée par l’Américain Bob Bemer en 1961, pour l’utilisation des télétypes et pour le codage des littéraux dans les systèmes informatiques.

assertion (affirmation) : dans les bases de données, règle globale (contrainte multitabulaire) qui doit toujours être vérifiée.

association : type de lien ou de relation au niveau conceptuel entre deux ou plusieurs entités ou classes (par exemple, association « achète » entre entités « client » et « produit »). Les associations se déduisent en général des verbes des règles dégagées au cours de la phase d’analyse.

asynchrone (contraire de synchrone) : se dit d’un mécanisme ou d’un traitement découplé d’un autre alors qu’il en est dépendant.

atomique (insécable) : se dit d’un programme qui doit être exécuté en tout ou rien garanti par le biais de transactions. Se dit d’une donnée qui ne peut être subdivisée. Par exemple, un numéro de sécurité sociale n’est pas une donnée atomique. On parle aussi d’atomicité.

attribut : propriété d’une entité dans un modèle, correspondant généralement à une colonne dans une table de la base.

authentification : opération consistant à vérifier les informations d’identification d’un processus tentant d’accéder au serveur. Il est autorisé s’il figure sur la liste d’acceptation.

Azure : solution globale de cloud computing de Microsoft qui propose, entre autres, des services de bases de données SQL Server.

autocommit : validation automatique d’une transaction.

Auto-incrément : donnée numérique dont la particularité est de fournir une nouvelle valeur résultat de la précédente augmentée d’un pas de croissance généralement de 1. La graine d’un auto-incrément est la valeur initiale et peut aussi être définie à la valeur que l’on souhaite. Dans SQL Server, les autoincréments sont définis soit par la propriété IDENTITY associée à une colonne d’une table, soit par le biais de séquence.

autojointure : jointure effectuée d’une table ou d’une vue sur elle-même.

autorisation : concerne la sécurité d’accès des utilisateurs aux bases de données relationnelles.


B

Balanced Tree, voir arbre équilibré.

balayage (ou scan) : technique qui consiste à accéder à une donnée d’une table ou d’un index par lecture de toutes les lignes l’une après l’autre.

balise : élément du langage XML définie par une chaîne de caractères constituant un identificateur et placé entre chevrons, par exemple <uneBalise> .

base de données : ensemble d’informations (données structurées) enregistrées sur des supports persistants, accessibles par un ordinateur, et qui sont destinées à satisfaire simultanément plusieurs utilisateurs de manière sélective et sécurisée et dans un temps opportun. L’interrogation et la mise à jour s’effectuent par l’intermédiaire d’un logiciel, le SGBD.

batch : ensemble de commande SQL ou Transact SQL généralement exécutées en une seule fois. Contrairement à une procédure, un batch n’est pas stocké dans la base et n’admet pas d’arguments. Il peut cependant renvoyer des messages et des jeux de données et encapsuler des transactions. Il est généralement utilisé pour des traitements à usage unique, comme la création des objets d’une base.

BCM (Bulk Changed Map) : page technique particulière d’un fichier de données d’une base SQL Server permettant d’indiquer par un bit à 1 parmi les 63 904 extensions suivantes lesquelles ont été visées par une opération BULK INSERT depuis la dernière sauvegarde complète. benchmark : banc d’essai destiné à étalonner et comparer la performance des systèmes.

BI (Business Intelligence) : ensemble des techniques de l’informatique décisionnelle (OLAP) destinée aux décideurs afin de piloter l’entreprise par la prise de décision découlant de l’analyse et du forage des données.

BIOS (Basic Input Output System) : système élémentaire pour les entrées/sorties. Composant microprogrammé d’un ordinateur destiné à assurer les tâches d’entrée et de sortie de bas niveau pour les périphériques.

Big Data : technique qui consiste à fouiller dans de grandes masses de données à la recherche de tendances. Le terme français « datamasse » est rarement employé.

bitmap (matrice de bit) : un index bitmap recense toutes les valeurs possibles de la clé d’index par une combinaison de bits, ce qui compresse les entrées de l’index.

BLOB (Binary Large OBject), voir LOB.

blocage : empêchement temporaire d’effectuer une action. Les blocages dans les bases de données sont le résultat de l’application des verrous permettant de protéger des accès concurrents intempestifs.

Boot (page Boot) : page particulière dans les fichiers de données de la base contenant des métadonnées essentielles de celle-ci.

B-Tree, voir arbre équilibré.


C

cache (ou mémoire cache) : mémoire qui contient temporairement des copies de données provenant d’une autre source de données, afin de diminuer le temps d’accès d’un matériel informatique. Dans SQL Server, le cache est assuré par l’utilisation de la RAM (voir ce mot).

cardinalité : nombre de lignes d’une table.

casse (en informatique) : forme majuscule (haut de casse) ou minuscule (bas de casse) des lettres.

catalogue (ou catalogue) : collection de schémas SQL. En réalité, ce terme ancien désignait la base de données. Par extension, il définit aussi les informations de métadonnées des bases.

certificat : document électronique destiné à s’assurer de l’identité d’un utilisateur. Un certificat encapsule une clé de cryptage.

CHECKPOINT: commande forçant l’écriture physique des données modifiées de la base.

cherchable : néologisme signifiant qu’un prédicat peut utiliser un index vu que l’accès aux données de l’index s’effectue par une technique dichotomique et non par un balayage de toutes les valeurs.

CHECK : contrainte de ligne de table permettant de valider une ou plusieurs valeurs de colonnes.

chiffrement : cryptage par calcul mathématique.

clause : partie syntaxiquement distincte d’un ordre SQL précisant un fonctionnement particulier (membre d’une commande SQL). Par exemple : clause ORDER BY de l’ordre SELECT.

clé : ensemble de colonnes dont les valeurs permettent de retrouver au plus une seule occurrence des informations d’une table. Dans cette dernière, elle assure l’unicité d’accès à la ligne. Une clé peut être primaire ou alternative.

clé alternative (ou subrogée) : clé pouvant se substituer à l’usage à une clé primaire d’une table. Celle-ci peut contenir plusieurs clés alternatives. Elle se traduit dans la table par la contrainte UNIQUE.

clé candidate : clé pouvant figurer en tant que clé primaire ou alternative.

clé d’index : par extension du concept de clé, ensemble de colonnes qui assurent la recherche dans un index, pas forcément unique.

clé de cryptage (ou de chiffrement) : donnée binaire permettant par le biais d’un algorithme de chiffrement de crypter ou décrypter de l’information en toute confidentialité (chaque clé étant en principe différente).

clé de hachage : donnée sur laquelle est calculée une valeur de hachage.

clé étrangère : ce n’est pas à proprement parler une clé. C’est plus exactement la copie de valeurs d’une clé externe à la table, assurant un lien entre deux tables (lien découlant des associations du modèle relationnel). Composée d’une ou plusieurs colonnes, elle référence les valeurs de la clé primaire ou d’une clé alternative d’une autre table dite « de référence » dans la table courante. Elle se traduit dans la table par la contrainte FOREIGN KEY.

clé primaire : clé composée d’une ou plusieurs colonnes dont les valeurs sont toujours renseignées (non NULL). Une table ne peut avoir qu’une seule colonne clé primaire. Elle se traduit dans la table par la contrainte PRIMAKY KEY.

clé subrogée : synonyme de clé alternative, voir ce mot.

cliché (snapshot) : copie d’un ensemble de données.

cliché de base de données (database snapshot) : captation des données de l’intégralité de la base à un instant donné.

client/serveur (ou C/S) : mode d’interaction en réseau permettant à deux processus, appelés client et serveur, de communiquer entre eux. Dans les SGBDR de type C/S, le client génère les requêtes et les envoie au serveur. Ce dernier exécute les requêtes et renvoie la réponse au client. Le C/S est généralement opposé à la méthode d’accès par partage de fichiers.

CLOB, voir LOB.

cloud computing : solution informatique hébergée proposant des services dont l’emplacement physique est indéfini et « mouvant », afin de rendre le système très hautement disponible (redondance occulte).

cluster (littéralement, emplacement) : pour une instance de serveur SQL, un cluster est un ensemble de machines redondées destinées à assurer un seul et même service par le relais d’une machine de secours en cas de défaillance de celle principale. Les applications clientes ne voient qu’un seul serveur de bases de données.

clustered : pour un index, cette notion indique qu’il est créé « sur place », c’est-à-dire sur la table elle-même. Les index dits « secondaires » (non clustered) sont, quant à eux, des copies d’une partie des données de la table.

clustering : technique de haute disponibilité consistant à générer un serveur « fantôme » qui représente une grappe de serveurs redondants de manière à ce que l’un des participants (appelé « nœud ») puisse être remplacé en cas de défaillance. Dans SQL Server, le clustering peut se faire avec de nombreux nœuds, mais il nécessite de partager les bases de données via un SAN.

cœur (core) : sous-ensemble d’un microprocesseur moderne, constitué d’une UAL (Unité arithmétique et logique) indépendante. Il est présent en plusieurs exemplaires dans le même processeur et destiné à augmenter la puissance de calcul global en permettant le parallélisme.

cohérence : ensemble des liaisons logiques des différents éléments d’une base de données n’offrant aucune contradiction.

collation : littéralement, c’est la comparaison de deux informations afin de vérifier si elles sont identiques. Dans SQL Server, il s’agit d’objets définissant les propriétés de sensibilité à la casse (majuscule/minuscule), aux accents (et autres caractères diacritiques), de kanatypes (japonais) ou encore de la largeur de trait des caractères.

colonne : élément vertical dans une table, présentant un ensemble de valeurs de même type.

columnstore (index) : technique d’indexation de différentes colonnes d’une même table basée sur une structure dite « verticale », rendant uniforme l’accès à l’une des colonnes cherchées.

COMMIT: commande de validation de transaction.

Common Table Expression (CTE) : forme particulière d’écriture de sous-requêtes permettant de définir un ensemble de pseudo-tables utilisées par une requête finale et introduite par le mot-clé WITH.

compression : technique consistant à organiser différemment les données pour en diminuer le volume physique tout en conservant l’usage logique. SQL Server dispose de nombreuses possibilités de compression, pour certaines colonnes (vardecimal, sparse), comme pour les lignes, pages et fichiers de sauvegarde.

concaténation : opération consistant à mettre bout à bout des chaînes de caractères afin d’en former une plus complète.

connexion : phase durant laquelle un processus encore inconnu tente de pénétrer dans le serveur SQL en essayant de s’authentifier.

conteneur : objet destiné à en contenir d’autres. Les principaux conteneurs dans SQL Server sont : l’instance qui contient les bases, la base qui contient des schémas SQL et le schéma SQL qui contient des objets relationnels.

contention : phénomène généralement transitoire par lequel, du fait de blocage, les temps de réponse moyens d’un système commence à s’allonger de façon problématique. Les embouteillages sur la route sont un exemple de contention.

courbe de Lebesgue (ou courbe en Z) : courbe cheminant par un tracé en forme de Z et destinée à assurer le remplissage d’un espace en parcourant tous les éléments qui le pavent.

contrainte : objet d’une base ayant pour objectif de programmer des règles de gestion au niveau des données. Les contraintes agissent soit par barrage, soit par mécanisme de modification automatique. Il existe trois niveaux de contraintes : celle de domaine qui porte sur des valeurs (réalisée par des RULE avec SQL Server), celle de table qui porte sur les données (clé primaire, alternative, étrangère, validation et obligation de valeur : PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK, NOT NULL) et celle générale (dite « d’assertion ») qui porte sur de multiples tables et qui est réalisée généralement par des déclencheurs sinon par des contraintes CHECK appelant des UDF.

couvrant : se dit d’un index dont la composition (listes des colonnes composant la clé d’index et colonnes incluses) suffit à répondre pleinement aux données d’une table pour la requête considérée. Un index couvrant évite la double lecture : recherche dans l’index plus lecture d’informations complémentaires dans la table.

CPU (Central Processing Unit, unité centrale de traitement) : composant essentiel de l’ordinateur qui exécute les instructions machine. Les CPU modernes possèdent plusieurs cœurs.

CTE, voir Common Table Expression.

CU (Cumulative Update) : ensemble de mises à jour, corrections, améliorations cumulatif et testé de correctifs logiciels (voir aussi Service Pack) visant généralement une thématique spécifique (sécurité, composant, fonctionnalité d’un produit…) et, par conséquent, destiné à résoudre un problème particulier.

cryptage (ou crypter) : action consistant à transformer une information naturellement interprétable (claire) en une autre impossible à déchiffrer (opaque) pour celui qui ne connaît pas la méthode employée ou bien ne possède pas les paramètres de celle-ci.

cylindre (disque) : ensemble des pistes des différentes plateaux d’un disque dur informatique ne nécessitant aucun déplacement de la tête de lecture pour en lire les données (celles-ci étant lues par la simple rotation synchrone des plateaux).


D

Database Snapshot, voir cliché de base de données.

DATALINK : type particulier de données que la norme SQL a prévu pour le stockage des fichiers sous le contrôle du SGBDR. Il est représenté dans SQL Server par FILESTREAM.

DBA (DataBase Administrator) : administrateur de bases de données.

DBCC (Database Console Command) : outil interne permettant de piloter le moteur de stockage de SQL Server.

DCL (Data Control Language) : partie du SQL qui traite de la sécurité par mise en place de privilèges sur des objets, accordés aux utilisateurs. Ordre Transact-SQL GRANT, DENY et REVOKE.

DCM(Differential Changed Map) : page technique particulière d’un fichier de données d’une base SQL Server permettant d’indiquer par un bit à 1 parmi les 63 904 extensions qui la suivent, lesquelles ont été mises à jour depuis la dernière sauvegarde complète.

DDL (Data Definition Language) : partie du SQL qui traite de la structuration de la base et permet donc de modifier le schéma de celle-ci. Comprend principalement des ordres SQL CREATE, ALTER et DROP.

DEFAULT: contrainte de colonne de table indiquant qu’une valeur sera donnée à cette colonne en cas d’insertion de ligne ignorant la colonne.

déférable : possibilité de dévolution d’une action. Une contrainte déférable possède une évaluation qui peut être reportée en fin de transaction. On parle aussi de « déférabilité ».

déclencheur (trigger) : routine Transact-SQL attachée à une table ou une vue (déclencheur DML), ou encore une base ou un serveur (déclencheur DDL), exécutée lors de la survenue d’un événement (INSERT, UPDATE, DELETE pour les déclencheurs DML et CREATE, ALTER, DROP, etc., pour les déclencheurs DDL).

degré : nombre de colonnes d’une table.

déni (de privilège) : interdiction de l’octroi d’un privilège.

densité : indice inverse de la sélectivité (voir ce terme).

dépersonnalisation : état permettant à un utilisateur de se faire temporairement passer pour un autre.

diacritique : signe typographique (accent, cédille…) ou forme (ligature…) affecté à une lettre afin de lui conférer une graphie ou une phonie différente. Par extension, on parle de « caractère diacritique » lorsqu’une lettre est, par exemple, accentuée.

diadique : caractérise une fonction ou un opérateur prenant en compte deux éléments en entrée.

différence : opération relationnelle consistant à rechercher les lignes qui n’existent pas d’une table par rapport à une autre. Avec l’opérateur EXCEPT.

DML (Data Manipulation Language) : partie du SQL qui traite de la manipulation des données, en lecture (SELECT) comme en écriture (INSERT, UPDATE, DELETE et MERGE).

DMV (Data Management View, vue de gestion des données) : ensemble de vues système (présentes dans le schéma sys) destinées à fournir des informations sur l’état de l’instance SQL à différents niveaux (serveur, bases, objets…). Ces données ne figurant qu’en mémoire, elles sont perdues en cas d’arrêt du serveur.

doublon : ligne d’une table contenant des données strictement identiques à une autre.

domaine : au niveau conceptuel, ensemble des valeurs possibles d’un attribut. Au niveau SQL : objet d’une base de données permettant de définir un type de données associable à des règles afin de représenter un domaine conceptuel. Les domaines SQL Server sont réalisés par le biais des TYPE.

données géodésiques : données de cartographie prenant en compte la courbure spatiale de l’écorce terrestre, permettant la mesure et la représentation de la surface de la terre.

DTD (Document Type Definition, définition de type de document) : document décrivant un modèle permettant de contrôler le contenu de documents XML notamment. Actuellement en voie de disparition du fait de la proéminence de XML Schema pour assurer cette même fonction.

durabilité : propriété du SGBDR qui assure qu’une transaction informatique validée survit de façon permanente. Elle se traduit généralement par l’écriture des données sur un support physique et durable.

dump (littéralement, « vidage ») : copie de la mémoire vive et des registres d’un processeur, permettant d’avoir un instantané de l’état d’un système. Terme trop souvent confondu avec la notion de sauvegarde. Pour les bases de données, un dump est un fichier contenant une extraction des commandes SQL permettant de reconstituer la base.


E

EBCDIC (Extended Binary Coded Decimal Interchange Code) : mode de codage des caractères sur 8 bits créé par IBM à l’époque des cartes perforées. EBCDIC existe en six versions différentes incompatibles entre elles, et certains caractères de ponctuation ne sont pas disponibles dans toutes les versions. EBCDIC est néanmoins encore utilisé dans les systèmes AS/400 d’IBM ainsi que sur les mainframes sous MVS, VM ou DOS/VSE. Cet encodage de caractères étant très décrié du fait de sa complexité et de son aspect propriétaire, il a tendance à disparaître au profit d’encodages plus standards comme l’ASCII, Unicode ou encore UTF-16.

équijointure : opération de jointure dont le prédicat utilise exclusivement des opérateurs d’égalité entre des colonnes de table.

ensembliste : manipulation d’ensembles de données utilisant le schéma relationnel.

entité : ensemble d’éléments informatifs, cohérents, relatifs à un même concept dans un modèle de données (par exemple, entité « client »). Correspond généralement à une table dans l’univers des bases de données.

ES (ou E/S : Entrée/Sortie, en anglais IO : Input/Output) : opération de lecture ou d’écriture d’une page.

espace de nom (namespace) : lieu abstrait destiné à accueillir des ensembles de termes appartenant à une même famille. Dans les langages informatiques, ce sont souvent des fichiers particuliers, regroupant des définitions d’objets et de méthodes, partagés et utilisés par d’autres programmes. Anciennement « bibliothèque » (library).

exception : condition particulière, généralement non prévue, pouvant survenir du fait d’une défaillance matérielle, d’un bogue logiciel, d’une contrainte violée ou d’une condition la générant.

expansion : mots ou expressions dérivés d’un autre mot ou d’un acronyme (utilisé dans l’indexation textuelle), par exemple Société nationale des chemins de fer au lieu de SNCF.

expression rationnelle : modèle créé via les caractères ASCII, permettant de manipuler des chaînes de caractères à l’aide de motifs (notamment, extraction de portions de la chaîne correspondant au modèle). Ce système est emprunté au système POSIX (système d’exploitation). De nombreux scripts sous Unix l’utilisent.

extension (extent) : ensemble consécutif de 8 pages physiques de données (table ou index) figurant sur le disque.


F

famine : situation dans laquelle un système informatique est engagé dans un traitement où une phase critique ne peut être finalisée avec certitude.

file group, voir groupe de fichiers.

Filestream : technique destinée à stocker des fichiers de toutes natures, sous le contrôle exclusif ou partagé du serveur SQL en faisant croire que les données sont présentes dans une table.

Filetable : type de table particulier permettant de représenter les fichiers et répertoires d’un point d’entrée du système de fichier et d’y effectuer des opérations de fichier (création, modification, suppression…) sous le contrôle exclusif ou partagé du serveur SQL. C’est une extension du concept de Filestream.

flou : élément dont le dessin est incertain. L’indexation textuelle permet des recherches floues.

floutage : rendre flou tout ou partie d’un élément. Dans l’indexation textuelle, permet de réaliser des recherches par approximation.

fonction : routine de code générant une information de sortie constituée d’une seule valeur atomique (scalaire) ou d’un ensemble de données (table). Une fonction admet généralement des paramètres en entrée.

fonction scalaire : fonction renvoyant une seule valeur atomique.

fonction table : fonction renvoyant un ensemble de données. Elle peut être constituée d’une seule instruction SELECT contenant d’éventuels paramètres (fonction table en ligne) ou bien d’une table de sortie dont les données sont alimentées par le biais de commandes INSERT, UPDATE, DELETE (fonction table multi-instruction).

forme fléchie : ensemble des mots dérivés de la racine d’un mot pour ses différents modes (pluriel, singulier), genres (masculin, féminin, neutre) ou temps (conjugaison).

FOREIGN KEY : contrainte de clé étrangère applicable à une ligne de table. Oblige à définir les valeurs de référence par lien à une autre table.

fragmentation (d’index) : présence de « trous », c’est-à-dire d’espaces inaffectés dans les structures d’index. La fragmentation résulte des opérations de mise à jour de données (INSERT, UPDATE et DELETE) affectant les index.

Full Text Search, voir plain text.


G

GAM (Global Allocation Map) : page technique particulière d’un fichier de données d’une base SQL Server permettant d’indiquer par un bit à 1 parmi les 63 904 extensions lesquelles sont vides de toutes données utilisables.

Géodésique, voir données géodésiques.

graphe : ensemble de points connexes (« puits ») reliés les uns aux autres par des chemins (« noeuds »), formant un réseau orienté ou non.

groupe de fichiers (file group) : emplacement logique de stockage des données des tables et index. Correspond aux notions de tablespace d’Oracle. Un groupe de fichiers peut contenir plusieurs fichiers. Une table ou un index peut être placé sur un groupe de fichiers particulier. En cas de partitionnement des données (tables et/ou index), il faut créer autant de groupes de fichiers qu’il y a de partitions.

granularité (de l’information) : ensemble plus ou moins grand de données. Ligne, ensemble de lignes, page, extensions, tables, base et serveur sont les différentes granularités au sein d’une instance SQL Server.

GUID (Globally Unique Identifier) : suite de 16 octets de valeurs arbitraire, générée automatiquement à partir de l’identifiant unique d’un périphérique (adresse MAC d’une carte réseau), de la date et de l’heure en cours et d’une séquence numérique, et dont la valeur s’avère en principe unique dans tout l’univers. En réalité, la collision de deux GUID, c’est-à-dire la possibilité d’obtenir un GUID identique en provenance de deux sources différentes, n’est pas impossible mais très peu probable, même si les adresses MAC ont été recyclées du fait de l’épuisement des valeurs.


H

hachage : mécanisme de conversion d’une donnée d’un type quelconque en une donnée condensée, (entier ou chaîne binaire), par le biais d’une fonction.

Hadoop : outil open source basé sur le langage Java destiné à faciliter la création d’applications distribuées et « échelonnables » (scalables), notamment par le biais d’un algorithme de type MapReduce pour un accès à des données stockées sur une grille de serveur et destiné principalement au Big Data.

haute disponibilité : ensemble de techniques permettant de continuer l’activité du serveur même en cas de défaillance sévère. SQL Server intègre des mécanismes natifs de haute disponibilité comme le log shipping, le clustering, le mirroring ou la technologie AlwaysOn (combinant clustering et mirroring). Certains de ces mécanismes peuvent pallier une perte de données totale d’un des serveurs, sans discontinuité de fonctionnement ni perte de données, et sans que les applications aient à se reconnecter.

hash, voir hachage.

hash join, voir jointure par hachage.

hash aggregate, voir agrégation par hachage.

HTTP (HyperText Transfer Protocol) : protocole de communication client-serveur développé pour le World Wide Web et basé sur des requêtes littérales envoyées sur des contenus web, dont l’adresse est formée d’une URL.

HTTP endpoint, voir point de terminaison.

HSM (Hardware Security Module) : dispositif physique (boîtier électronique) réputé inviolable, placé sur le réseau informatique et stockant les clés et algorithmes de cryptage.

hyperthreading : implémentation dans les processeurs Intel du Simultaneous Multithreading à deux voies qui consiste à simuler dans un seul cœur deux processeurs logiques, par une technique de partage des ressources, en alternance pour certaines, en redondance pour d’autres.


I

IAM(Index Allocation Map) : page technique particulière d’un fichier de données d’une base SQL Server permettant d’indiquer, pour un objet particulier stockant des données (table, index, partition…) dans les 4 Go suivant du fichier, quleels sont les extensions utilisées.

identifiant : terme pouvant désigner une colonne servant de clé dans une table, comme un nom d’objet (identifiant SQL).

identifiant SQL : nom d’un objet SQL (table, vue, colonne, contrainte…).

IDENTITY : propriété d’auto-incrémentation d’une colonne d’une table. Ne peut être affectée qu’à une seule colonne au plus par table. À défaut, commence à 1 avec un pas d’incrément de 1. Peut être paramétrée au niveau graine (valeur initiale) et pas. Peut être réinitialisée à tout moment.

impersonnalisation, voir dépersonnalisation.

In Memory : technologie récente destinée à supporter des tables figurant essentiellement en mémoire vive par opposition aux tables habituellement destinées à du stockage physique. Ceci inclut en sus, l’utilisation de procédures stockées compilées en code natif (C).

inclus (index) : se dit lorsque les composantes d’un index (clé plus éventuelle clause INCLUDE) sont incluses dans un autre index.

index : structure de stockage redondante, dotée d’une organisation particulière dont l’agencement permet d’accélérer certaines recherches. Les techniques en jeu dans l’indexation sont toutes basées sur la famille d’algorithme « diviser pour régner ».

indexation : recherche et mise en place des index (voir ce mot) les plus pertinents en vue de diminuer sensiblement les temps de réponse. L’indexation vise à réduire drastiquement le coût des recherches dans une base de données, dès lors que la volumétrie des données pèse sur les temps de réponse.

indexation textuelle : mécanisme d’indexation de littéraux permettant des recherches plain text.

instance : installation d’un serveur (SQL Server) logique. Un même serveur système (Windows) peut accueillir différentes instances (jusqu’à 50) dans différentes éditions/versions. Chaque instance peut avoir des réglages différents, mais chacune entre en concurrence pour les ressources physique du serveur (CPU, RAM, disque, réseau…).

intersection : opération relationnelle consistant à rechercher les tuples communs à deux relations. Se fait avec l’opérateur ensembliste INTERSECT dans le langage SQL.

intégrité : l’intégrité des données au sein d’une base procède par le respect des contraintes.

intégrité référentielle : mécanisme permettant d’assurer dans une table fille que les valeurs d’une clé étrangère soient toujours synchronisées avec celle de la table mère dite de référence. L’intégrité référentielle peut être assurée de manière déclarative (DRI par contrainte FOREGN KEY) ou fonctionnelle par le biais de déclencheurs.

IO (I/O, Input/Output), voir ES.

ISO (International Standardization Organization) : organisme international de normalisation, composé de représentants nationaux. L’ISO produit des normes internationales dans les domaines industriels et commerciaux. Le langage SQL est fortement normalisé. Une norme ne devient ISO, qu’après avoir été norme nationale (le langage SQL a été normalisé pour la première fois par l’ANSI en 1986).

isolation : mécanisme qui prévoit que les modifications de données effectuées au cours d’une transaction ne soient pas atteignables par d’autres utilisateurs. L’isolation est assurée par la pose de verrous plus ou moins forts ou étendus en fonction de force d’isolement demandée.

isolation snapshot : mode d’isolation des transactions agissant par verrouillage optimiste.


J

JDBC(Java DataBase Connectivity) : interface de programmation (API, en anglais) destinée à mettre en relation des bases de données (le plus souvent relationnelles) et des programmes informatiques de gestion (middleware) écrits avec le langage Java. JDBC reprend la spécification ODBC comme référence de son implémentation.

jointure : opération permettant d’associer plusieurs objets de la base par le biais d’un lien logique de données entre les différentes tables ou vues.

jointure par fusion : technique de jointure faisant appel à l’algorithme de tri fusion, c’est-à-dire par rapprochement des valeurs lors de la lecture descendante dans deux listes triées.

jointure par hachage : technique de jointure qui consiste à transformer les données à joindre en données « hachées » (calculées à l’aide d’une fonction de hachage) afin de travailler sur un plus petit ensemble de données mieux ventilé.

jointure par boucle imbriquée : technique de jointure qui consiste à utiliser une boucle externe itérant sur les lignes d’une table, encapsulant une boucle interne itérant sur les lignes de l’autre table.

journal de transaction : outil traçant l’ensemble des opérations de mise à jour des données destiné à la finalisation des transactions, soit par validation (COMMIT), soit par retour arrière (ROLLBACK). Pour ce faire, sont inscrites dans le journal les valeurs des données avant de procéder à la mise à jour. L’annulation entraînant la relecture du journal.

joker : caractère particulier servant à définir un élément de recherche générique, par exemple une lettre quelconque ou une chaîne de caractères de longueur quelconque. Essentiellement utilisé dans l’opérateur LIKE de SQL ou dans la recherche textuelle.


K

kanatype : forme d’écriture des idéogrammes japonais, déclinée en deux graphies : le katakana (à la graphie très anguleuse) et l’hiragana (à la graphie cursive). Le katakana étant plutôt destiné au titrage des documents tandis que l’hiragana est utilisé pour les textes « littéraires ».


L

lecture logique : opération de lecture d’une page de données en mémoire.

Lebesgue, voir courbe de Lebesgue.

lecture physique : opération de lecture d’une page de données sur le disque.

ligne : élément horizontal d’une table, constitué d’une énumération de données de différents types. Unité de stockage logique minimale d’une table.

ligne fantôme : dans les index, ligne ayant été supprimée logiquement, mais dont l’emplacement n’a pas été réutilisé, ce qui conduit à de la fragmentation. Dans les transactions, ligne indésirable apparaissant dans le cadre d’une opération concurrente d’insertion dans une table et nécessitant d’augmenter le niveau d’isolation pour l’interdire afin d’éviter des résultats faux.

LOB (Large OBject) : objet de grandes dimensions stocké dans la base de données. LOB est un terme générique pour désigner les CLOB (Character LOB, grand texte encodé en ASCII), les NCLOB (National Charcater LOB, grand texte encodé en UNICODE), ou encore BLOB (Binary LOB). Ces types de données génériques doivent être réalisés avec respectivement les types de données VARCHAR(MAX), NVARCHAR(MAX) et VARBINARY(MAX) dans SQL Server.

lot, voir batch.

LLD (Langage de définition de données), voir DDL.

LMD (Langage de manipulation de données), voir DML.

LOOKUP, voir recherche éparse.

LUN (Logical Unit Number) : identifiant d’une unité de stockage logique réalisée à partir de disques physiques originellement dans un système disque en SCSI. Aujourd’hui fréquemment employé pour désigner un espace de stockage vu comme un disque, taillé dans un SAN.


M

masquage : (aussi appelé obfuscation) technique consistant à interdire l’accès à certaines informations. Permet, dans SQL Server, de masquer la définition des vues ou le code des routines.

MCD, voir modèle conceptuel.

merge join, voir jointure par fusion.

mémoire virtuelle : extension de la mémoire vive physique représentée par un ou plusieurs fichiers disque sur lequel on effectue des opérations de déchargement ou de chargement au fur et à mesure de l’utilisation des données qui y sont stockées. La mémoire étant organisée en pages, le processus de montage et descente des pages de la RAM vers les disques est appelée pagination, et procède généralement pas échange (swap disque).

métadonnées : données permettant de décrire les données de la base, constituée par des tables dites « système » et accessibles depuis SQL Server 2005 uniquement par des vues représentant la vision logique (schéma SQL de nom INFORMATION_SCHEMA – norme SQL) ou physique (schéma SQL sys -vues spécifiques SQL Server).

mise à jour : toute opération conduisant à une écriture des données : INSERT, UPDATE, DELETE ou MERGE.

mirroring : technique de haute disponibilité consistant à reproduire en permanence, de façon synchrone ou asynchrone, une base de données sur un autre serveur distant ou sur plusieurs autres, par le biais de la couche HTTP.

modèle conceptuel : représentation sémantique d’une base de données à l’aide de structures de données et de règles de description basées sur des « idées » (concepts), donnant lieu à un schéma dit « conceptuel » découlant de l’analyse d’un système. L’acronyme MCD signifie « modèle conceptuel de données ».

modèle externe : représentation « visuelle » d’une base de données (vues, fonctions utilisateur, procédures…), destinée à faciliter la manipulation des données pour les applications externes. L’acronyme MED signifie « modèle externe de données ».

modèle logique : représentation mathématique d’une base de données (relations) découlant de l’application de l’algèbre relationnelle.

modèle physique : représentation physique d’une base de données (tables, vues, liens d’intégrité, déclencheurs, stockage, index…), prenant en compte les spécificités du SGBD. L’acronyme MPD signifie « modèle physique de données ».

modèle relationnel : nom commun donné à une représentation de base de données spécifique à un SGBDR. Voir modèle physique.

monadique : se dit d’une fonction ou d’un opérateur qui n’admet qu’un seul argument. Par exemple, la fonction SQL UPPERCASE, ou encore l’opérateur – (négation).

mot noir : mot vide de sens que l’on évite de considérer dans les requêtes de recherches plain text (par exemple, articles, pronoms, conjonctions de coordination…).

MTBF (Mean Time Between Failures) : moyenne de temps de bon fonctionnement entre mise en route initiale et première panne ou entre deux pannes d’un système.

MPD, voir modèle physique.


N

NAS (Network Attached Storage) : boîtier de stockage en réseau, généralement partagé entre différents ordinateurs. Ne convient généralement pas pour le stockage des bases de données de SQL Server sauf attachement particulier (mais performances moins bonnes).

NCLOB, voir LOB.

niladique : se dit d’une fonction qui n’admet aucun argument (nombre d’arguments nuls). Par exemple, la fonction SQL CURRENT_DATE.

nonclustered : se dit d’un index qui n’est pas clustered. Voir ce dernier mot.

n-uplet, voir tuple.

Nested Loop Join, voir jointure par boucle imbriquées.

nested triggers : déclencheurs imbriqués.

NULL : marqueur d’absence de valeur. Dans SQL Server, ce marqueur est représenté par un bit dans le « slot » représentant la ligne de la table ou de l’index.

NOT NULL : contrainte de colonne indiquant que la colonne ne peut rester vide (valeur obligatoire).

NUMA(Non Uniform Memory Access) : accès mémoire non uniforme – système d’adressage multiprocesseur dans lequel les zones mémoire sont séparées et accessible par certaines processeurs en fonction des différents bus alloués. Le système NUMA a été conçu pour pallier les limites de l’architecture SMP dans laquelle tout l’espace mémoire est accessible par tous les processeurs, ce qui induit de la contention du fait de la concurrence d’accès.


O

occurrence : une ligne particulière valuée dans une table.

ODBC (Open DataBase Connectivity) : interface de programmation (API, en anglais) destinée à mettre en relation des bases de données (le plus souvent relationnelles) et des programmes d’informatique de gestion (middleware). Initié par un comité indépendant (le SQL Access Group), ODBC est devenu populaire grâce à Windows de Microsoft. Il est basé sur l’API CLI de SQL.

octroi (de privilège) : autorisation donnée à un utilisateur de lancer certaines commandes SQL sur certains objets.

offset (décalage) : par extension, désigne une adresse accessible de manière relative.

OLAP (On-Line Analytical Processing) : catégorie de logiciels permettant une analyse d’informations multidimensionnelles stockées dans une base de données dont la structure particulière (décisionnelle) est prévue à cet effet.

OLTP (On-Line Transaction Processing) : type de traitement informatique dans lequel une base de données effectue des transactions (écriture par ajout, modification ou suppression) à la demande de l’utilisateur et par opposition au mode batch.

optimiseur : organe d’un SGBD relationnel destiné à élaborer le plan d’exécution d’une requête le plus adéquat (donc le moins coûteux).

ordre SQL (ou commande SQL) : construction littérale dont la syntaxe répond aux spécificités du SQL et qui intime au moteur de la base de données d’effectuer tel ou tel travail (SELECT, UPDATE, CREATE, ALTER, GRANT, etc.).

OS (Operating System) : système d’exploitation permettant à un ou plusieurs programmes d’utiliser au mieux des périphériques de différentes natures et d’en partager les ressources entre les programmes. Bien qu’installé sur l’OS Windows, SQL Server possède son propre OS de nom SOS pour SQL Server Operating System).

overclocking : surcadencement. Manipulation destinée à faire fonctionner un processeur à une vitesse supérieure à sa vitesse nominale. Ceci diminuant en général le MTBF.


P

page (de données) : unité de base de structuration physique des données (table, index) d’une base de données. Les pages de données sont identiques sur le disque (physique) et en mémoire (logique) et constituent la plus petite unité de lecture/écriture du SGBDR.

partitionnement : technique consistant à scinder les données d’objets volumineux (tables ou index) afin de répartir la charge et diminuer le coût d’accès.

parseur : module d’analyse syntaxique d’une commande SQL permettant d’une part d’en vérifier la syntaxe et d’autre part de la traduire en algèbre relationnelle.

PCA (Plan de continuité d’activité) : ensemble des moyens à mettre en oeuvre afin de pallier une panne en diminuant le plus possible, ou en éradiquant les temps d’indisponibilité (haute disponibilité). La plupart du temps assurée par des outils hardware (redondance) et logiciels (réplication). SQL Server dispose de nombreux moyens internes pour assurer cette tâche (log shipping, clustering, mirroring, AlwaysOn, réplication de données…). Voir aussi PRA.

plain text, voir recherches plain text.

persistance : mécanismes assurant qu’un programme puisse se terminer sans que ses données ou son état d’exécution ne soient perdus. Dans un SGBDR, fonction assurée par la journalisation des transactions.

PFS (Page Free Space) : page technique particulière d’un fichier de données d’une base SQL Server permettant d’indiquer la quantité d’espace résiduel parmi les 8 088 pages qui suivent.

PITR (Point In Time Recovery) : restauration avec arrêt à un point dans le temps. Technique consistant à arrêter une restauration effectuée à partir d’une sauvegarde transactionnelle à une date/heure précise afin de récupérer une base dont l’état des données est à un instant du passé.

plan d’exécution , voir plan de requête

plan de requête : ensemble des opérations unitaires (lecture des données, opérations d’algèbre relationnelle telles que jointures, restriction, union… calcul divers tels que agrégation, tri…) que le SGBDR a prévu d’effectuer en réponse à une requête.

plateau (disque) : composant d’un disque magnétique destiné au support de l’information et constitué d’un disque métallique en rotation à vitesse constante dont la surface est une couche ferromagnétique destinée à recevoir l’information par polarisation magnétique. La plupart des disques possèdent plusieurs plateaux (généralement 3).

point de terminaison : point d’accès permettant l’utilisation du protocole HTTP pour communiquer avec le serveur SQL.

position ordinale : rang d’un élément au sein d’une série, d’une collection. L’emplacement par défaut des colonnes d’une table SQL est défini par leur position ordinale dans le dictionnaire des données (colonne ORDINAL_POSITION de la vue INFORMATION_SCHEMA.COLUMNS).

PRA (Plan de reprise d’activité) : ensemble des moyens à mettre en oeuvre afin de pallier un sinistre majeur en diminuant le plus possible les temps d’indisponibilité (haute disponibilité). La plupart du temps assurée par des outils hardware (redondance) et logiciels (réplication) répartis sur différents sites d’exploitation. SQL Server dispose de nombreux moyens internes pour assurer cette tâche (log shipping, clustering, mirroring, AlwaysOn, réplication de données…). Voir aussi PRA.

prédicat : expression booléenne dont l’évaluation donne Vrai ou Faux. En SQL, du fait de la logique trois états, un prédicat peut prendre trois valeurs : TRUE, FALSE ou UNKNOWN.

PRIMARY KEY : contrainte de clé primaire applicable à une ligne de table.

privilège : possibilité accordée à un utilisateur de lancer telle ou telle commande sur tel ou tel objet.

procédure stockée : routine Transact SQL ou SQL CLR stockée au sein de la base dans une table système, composée de code que l’on peut lancer depuis une application cliente. Une procédure peut lancer tout type de requêtes (DDL, DML, DCL, TCL…), gérer des transactions et exécuter du SQL dynamique. Elle admet des paramètres « scalaires » en entrées (y compris variable table, XML, spatial…) et peut renvoyer des valeurs scalaires et des jeux de données.

processeur : composant électronique central de tout ordinateur, qui exécute les instructions machine des programmes informatiques.

processus : code informatique devant effectuer un traitement exécuté sur un processeur.

profiler (SQL) : outil de trace des activités opérationnelles, notamment transactionnelles, de l’instance dont la vocation est de diagnostiquer par le biais de mesure, les problèmes potentiels, par exemple de performances des requêtes et routines.

projection : opération de l’algèbre relationnelle qui consiste à ne prendre que certains attributs d’une relation en précisant leur nom. Dans le langage SQL la projection se fait dans la clause SELECT de l’ordre SELECT.

propriétaire : par rapport aux objets relationnels, utilisateur SQL particulier ayant créé l’objet considéré ou l’ayant dernièrement modifié.

Proxy : objet non relationnel spécifiquement utilisé par l’agent SQL pour définir un contexte de sécurité dans lequel une étape de travail peut être exécutée lorsqu’elle doit utiliser des ressources externes à l’instance SQL

pseudo-table : table volatile non persistante n’ayant pas d’existence propre en dehors de certains contextes. Les pseudo-tables inserted et deleted ne sont disponible que dans les déclencheurs ou la, clause OUTPUT d’un ordre SQL de mise à jour. Elles empruntent leur structure à la table cible. On peut les considérer comme des vues « volatiles ».


R

RAID (Redundant Array of Independant Disk) : techniques permettant de répartir des données sur plusieurs disques durs afin d’améliorer soit les performances, soit la sécurité ou la tolérance aux pannes de l’ensemble du stockage.

RAM (Random Access Memory) : mémoire à accès aléatoire. C’est la mémoire vive de l’ordinateur, qui sert de cache à SQL Server pour les données, les plans de requête et de nombreuses métadonnées.

RBS (Remote BLOB Storage) : outil permettant de stocker les LOB par le biais de dispositifs de stockages externes aux serveurs SQL

recherche (ou SEEK en anglais) : technique qui consiste à accéder à une donnée par dichotomie dans un index afin d’accélérer la quête de ladite donnée.

recherche éparse (ou LOOKUP en anglais) : technique qui consiste à accéder à diverses données éparses par lancement en parallèle d’autant d’opérations de dichotomie dans l’index afin d’accélérer la quête desdites données.

recherches plain text : possibilité de recherches de mots ou combinaisons de différents mots à l’aide d’opérateurs particuliers opérants à travers des données littérales.

RECOVERY, voir récupération.

récupération : phase pendant laquelle la base ayant redémarrée, rejoue les dernières transactions dont les données n’ont pas fait l’objet d’une écriture physique sur disque.

récursivité : se dit d’un processus qui fait appel à une nouvelle instance de lui-même (réentrant). La notion de récursivité a été introduite par le mathématicien américain Stephen Kleene. En informatique, une fonction qui contient un appel à elle-même est dite récursive. Il est nécessaire qu’elle contienne une condition d’arrêt, sous peine de boucler indéfiniment.

Recursive Triggers : déclencheurs récursifs.

redondance : pour les données, duplication inutile, contre-performante et dangereuse des informations. Pour le hardware, moyen utile destiné à améliorer la fiabilité des systèmes par doublement des équipements afin de prévenir la défaillance de l’un d’entre eux.

relation : objet mathématique porteur de données (voir algèbre relationnelle) contenant des attributs et affecté d’une clé. Toutes les occurrences d’une relation doivent être valuées (pas de “NULL“) et il n’y a pas de doublons (du fait de l’obligation de clé). Une table peut être relationnelle ou non. Elle sera relationnelle à deux conditions : qu’elle possède une clef primaire et que toutes ses colonnes soient NOT NULL.

relationnel[le[s]] : qui se rapporte aux relations. Base de données relationnelle : base de données structurée, contenant des relations (voir ce mot).

requête : demande formulée en vue d’obtenir une faveur, une mesure, un résultat. Dans les bases de données, ordre lancé au serveur afin d’exécuter une tâche ou d’obtenir un résultat.

révocation (de privilège) : retrait d’un privilège précédemment octroyé.

restauration : mécanisme permettant de reconstituer une base de données à partir d’une sauvegarde préalablement effectuée de ladite base. La commande restauration de SQL Server est RESTORE.

restriction : opération de l’algèbre relationnelle qui consiste à ne prendre que certains tuples d’une relation en fonction d’un critère de filtrage. Dans le langage SQL, la restriction se fait principalement dans la clause WHERE.

rôle : collection de privilèges que l’on peut attribuer à un utilisateur.

ROLLBACK : commande d’annulation de transaction.

routine : désigne tout type de programme Transact SQL qu’il soit UDF (fonction utilisateur), procédure, déclencheur ou encore « batch ».


S

SAN (Storage Area Network) : réseau de stockage permettant de mutualiser des ressources disques. Contrairement aux NAS (voir ce mot), les SAN sont directement attachés aux serveurs et ne passent ni par les hubs ni par les switches d’un réseau IP, mais utilise des protocoles spécifiques tel Fibre Channel (norme ANSI X3T11) permettant une connexion haut débit (de l’ordre du gigabit par seconde). SQL Server ne fonctionne de façon optimale que lorsque le serveur utilise un SAN dédié.

Sargable, voir cherchable.

sauvegarde : mécanisme produisant un ensemble de données permettant de reconstitué l’intégralité de la base à un instant donné. SQL Server permet la sauvegarde à chaud de toute base à l’aide de la commande BACKUP et dans différentes modes (complète, différentielle ou transactionnelle) de l’intégralité de la base, d’un fichier ou encore d’un groupe de fichier.

SCAN, voir balayage.

schéma de la base : structure et articulation de l’ensemble des objets relationnels de la base (tables, vues, procédures, contraintes, déclencheurs…). Une opération de modification de schéma impose de lancer une commande du DDL SQL.

schéma SQL : conteneur situé au niveau de la base et destiné à stocker les différents objets relationnels de la base de données. L’idée étant d’organiser différents espaces de stockages logiques afin de ventiler ces objets, par exemples dans des « catégories » fonctionnelles. Dans SQL Server, le schéma par défaut est dbo. Il en existe d’autres comme INFORMATION_SCHEMA et sys.

SEEK, voir recherche.

sécurisable : objet de la base de données relationnelle pouvant être sécurisé (table, vue, procédure…).

sélectivité : indice permettant de déterminer approximativement le nombre de lignes résultant d’une opération de recherche portant sur une valeur précise. Calculée par division du nombre de valeurs sur le nombre de lignes.

séquence : objet de la base, indépendant de toute table et destiné à fournir une numérotation monotone (auto-incrémentation).

serveur : définit un système qui peut indifféremment être une machine physique ou virtuelle (PS, machine Windows) ou bien logicielle (serveur SQL, Web…).

service pack (SP) : ensemble de mises à jour, corrections, améliorations de logiciels livré sous forme d’un package installable. Microsoft fournit régulièrement des « services packs » pour Windows comme pour SQL Server qu’il est nécessaire d’installer la plus rapidement possible. (Voir aussi CU – Cumulative Update)

session : laps de temps pendant lequel un utilisateur ayant réussi à s’authentifier navigue dans le serveur SQL et dans les bases relationnelles pour y effectuer différentes opérations.

SGAM (Shared Global Allocation Map) : page technique particulière d’un fichier de données d’une base SQL Server permettant d’indiquer par un bit à 1 parmi les 63 904 extensions lesquelles sont mixtes et ont au moins une page vides de toutes données utilisable.

SGBD : logiciel permettant à différents utilisateurs de visualiser, créer, maintenir ou supprimer de l’information et des structures de données dans une base de données. Le SGBD peut être relationnel; dans ce cas, on lui donne l’acronyme SGBDR.

SIG (Système d’information géographique, en anglais GIS pour Geographical Information System) : système de gestion de données planaires et spatiales permettant d’élaborer des objets géométriques et géographiques.

signature : donnée ajoutée à un élément informatique (par exemple programme) et vérifiable par le biais d’un certificat, afin d’obtenir une assurance sur l’identité de la source de l’objet.

slammer : célèbre « vers » ayant contaminé de nombreux serveurs SQL 2000 suite à une faille de sécurité qui avait été détectée et corrigée six mois plus tôt, mais dont les administrateurs des serveurs SQL n’avaient pas pris la peine mettre en oeuvre le correctif.

snapshot (voir également database snapshot, isolation snapshot) : cliché, c’est-à-dire captation de données à un instant précis pour copie de travail.

snapshot isolation, voir Isolation snapshot.

SQL (Structured Query Language) : littéralement langage structuré de requêtes. Langage informatique à base d’ordres permettant de créer des structures de données relationnelles, d’y stocker l’information et de la maintenir, d’extraire les données et de gérer des utilisateurs et leurs autorisations. Le langage SQL n’est pas le seul langage opérant sur les bases de données. On peut noter le langage QBE de Zloof ou QUEL à l’origine dans Ingres.

SRID (Spatial Reference IDentifier) : identificateurs de référence spatiale. Code correspondant à un système de référence spatial (paramètres) basé sur un ellipsoïde spécifique destinée à fournir une approximation du mappage de la terre sur une zone considérée.

SSAS (SQL Server Analysis Services) : solution Microsoft pour BI incluant un moteur décisionnel pour la création et l’analyse des cubes, y compris avec le data mining et fournit avec les versions Developper, Standard et BI.

SSD (Solid State Drive) : disque électronique dont le support de stockage est constitué de mémoire flash.

SSIS (SQL Server Integration Services) : ETL de Microsoft fournit avec les versions Developper, Standard et BI.

SSMS (SQL Server Management Sudio) : outil client pour la gestion et le développement des applications utilisant une instance SQL Server. Existe en deux versions : Express (allégée) et professionnelle (complète) venant avec les éditions Developper, Standard, BI et Enterprise.

SSRS (SQL Server Reporting Services) : outil de reporting de Microsoft fournit avec les versions Developper, Standard, BI et Express with Advanced Services.

slot : emplacement physique d’une ligne (par réservation d’espace) dans une page de données relatif à une table ou un index.

socket : emplacement de CPU physique.

spatial : ensemble des techniques mises en œuvre pour traiter les données du SIG (voir ce mot), notamment cartographie géodésique.

split (de page) : opération consistant à couper une page d’index en deux lorsqu’elle est pleine, afin d’y ajouter une ligne. Conduit à de la fragmentation.

SMTP (Simple Mail Transfer Protocol) : protocole standardisé de communication utilisé pour le transfert de courrier électronique vers les serveurs de messagerie électronique.

statistiques (sous-jacentes aux index et à certaines colonnes de table) : métadonnées composées d’un échantillon des valeurs de l’index ou de la colonne obtenu par une méthode statistique (sondage ou analyse complète) permettant d’évaluer la distribution et donc la sélectivité d’une recherche dans l’index ou hors index (table).

storage, voir groupe de fichiers.

synchrone : se dit d’un traitement ou d’un mécanisme déclenché systématiquement par un autre de manière simultané ou séquentielle. Les déclencheurs SQL sont activés de manière synchrone aux mises à jour des tables ou des vues. La mise à jour des index d’une base est synchrone avec les modifications de données, sauf pour les index textuel qui peuvent être mis à jour au fil de l’eau ou par batch.

synonymisation : technique consistant à indiquer les synonymes d’un mot.


T

table : structure de données basique contenant une collection de données organisée sous forme de colonnes et formant des lignes.

TDE (Transparent Data Encryption) : technique consistant à crypter le stockage (au niveau des fichiers physiques) et non les données dans les tables.

thesaurus : document d’un index textuel contenant une liste définie de termes et leurs équivalents pour activer la recherche par synonyme ou équivalences.

thêta jointure : opération de jointure des tables qui n’est pas basée sur un critère d’égalité entre colonnes.

thread : littéralement fil d’exécution. Processus allégé ayant sa propre pile d’appel, mais partageant la mémoire. Dans SQL Server, les requêtes pouvant être parallélisées par le lancement de multiples threads, cela permet d’obtenir plus rapidement une réponse à une requête.

TPC (Transaction processing Performance Council) : organisme indépendant des éditeurs mettant en place des benchmarks destinés au SGBDR et recensant les performances de solutions globales.

transaction : ensemble d’actions qui modifient les données d’une base de données, d’un état cohérent à un nouvel état cohérent.

transaction explicite : transaction dont le démarrage (BEGIN TRANSACTION) et la finalisation (par COMMIT ou ROLLBACK) ont été initiés par l’utilisateur ou le code applicatif.

transaction implicite : transaction dont les frontières (démarrage et finalisation) ont été initiées automatiquement par le moteur relationnel.

transact SQL : langage spécifique à Microsoft SQL Server pour la programmation des routines (UDF, procédures stockées, routines ou batch…). À l’origine inventé par Sybase.

trigger, voir déclencheur.

tuple ou n-uplet : occurrences des attributs d’une entité ou d’une association dans le cadre d’un modèle conceptuel. Équivalent à la ligne d’une table ou d’une vue au niveau du modèle physique ou externe (ligne comprenant ou non des valeurs pour chaque colonne).

turbo boost : technologie présente sur les CPU Intel, permettant de désactiver à la volée certains cœurs tout en augmentant la fréquence des autres.


U

UDF (User Defined Function) : fonction utilisateur développée par écriture d’un programme en langage Transact SQL et disponible dans la base pour être utilisée au sein de requêtes comme de routines SQL (UDF, procédure ou déclencheur).

UNIQUE : contrainte (dite d’unicité) représentant une clé alternative. unicité : données vérifiant une contrainte UNIQUE.

unicode : standard informatique développé par le Consortium Unicode, qui vise à donner à tout caractère de n’importe quel système d’écriture de langue (alphabets, idéogrammes, etc.) un identifiant numérique unique, et ce quels que soient la plate-forme informatique ou le logiciel utilisé. Le codage Unicode est basé sur la norme ISO/CEI 10646 et représente un caractère sur 2 octets.

union : opération relationnelle consistant à concaténer les tuples de deux tables relations différentes. Se fait avec l’opérateur ensembliste UNION dans le langage SQL.

unité lexicale : élément de contenance de termes littéraux : mot, phrase, paragraphe, chapitre…

URL (Uniform Resource Locator) : chaîne de caractères utilisée pour accéder à des ressources web (serveur, pages…).

UUID (Universal Unique Identifier), voir GUID


V

verrou : mécanisme destiné à protéger certains modes d’accès à une ressource par d’autres processus que celui qui l’a posé.

verrou mortel (interblocage, étreinte fatale) : problème rencontré lorsque différents processus transactionnels ont posé des verrous sur des objets distincts, et que chacun de ces processus tente d’acquérir un nouveau verrou sur un objet que l’autre a déjà verrouillé. La seule méthode de résolution connue à ce jour consiste à annuler la transaction.

verrou optimiste : technique consistant à vérifier en fin de traitement que la modification repose bien toujours sur le même jeu de données, c’est-à-dire n’ayant subi aucune modification. Pour ce faire, il est nécessaire d’obtenir une version d’entrée des informations et de voir en sortie si elle est toujours d’actualité. Dans le cas contraire, la transaction doit être abandonnée.

verrou pessimiste : technique consistant à verrouiller de manière préventive, c’est-à-dire à placer les verrous avant de commencer le traitement et à les libérer après finalisation de la tâche.

vue : table virtuelle car elle ne nécessite aucune allocation en mémoire pour contenir les données (sauf vue indexée). Seule sa structure est stockée dans le dictionnaire de données. Une vue est créée à l’aide d’une instruction SELECT appelée « requête de définition ». Cette requête interroge une ou plusieurs tables ou vues. Une vue se « recharge » chaque fois qu’elle est interrogée.

vue indexée : se dit d’une vue contenant des données synchrones provenant des tables qui définissent la vue.


X

XML (eXtensible Markup Language) : métalangage de balisage « extensible » destiné à décrire des structures de données, spécialement utilisé sur le Web et dans l’échange de données informatisé. XML est un standard du World Wide Web Consortium (W3C) et sert de base pour créer des langages balisés spécialisés. Les bases de données relationnelles utilisent couramment XML Schéma, un dialecte XML spécialisé dans la gestion des données des bases relationnelles.

XML Schema : sous-ensemble du langage XML déterminant des spécifications de balises destinées à formaliser le contenu de documents XML. XML Schema est donc un métalangage de description de, documents XML. Il est devenu un standard, après avoir été initié par Microsoft.

XPath : langage, non XML, destiné à localiser un fragment de document XML. Il est souvent utilisé conjointement avec XQuery.

XQuery : langage de requête informatique permettant la manipulation de documents XML : extraction, calculs ou encore construction de nouveaux documents ou fragments XML.

XSLT (Extensible Stylesheet Language Transformations) : langage de transformation de document XML permettant de générer d’après un document XML, un nouveau document dans un autre format, notamment pour la génération de pages web.


Z

Z (courbe en Z), voir courbe de Lebesgue.

Au cœur de toutes les banques, le langage Cobol va-t-il manquer de développeurs ?

Aurore Gayte , 17 avril 2020

Qui parle encore le Cobol, l’un des plus vieux langages informatiques ? Majoritairement cinquantenaires, les derniers développeurs partent petit à petit à la retraite, sans qu’ils soient remplacés. Problème : le Cobol est encore utilisé dans des infrastructures critiques, comme les banques.

« Nous sommes en l’an 3000, et l’humanité a enfin trouvé un moyen de ressusciter les personnes qui ont été cryogénisées », commence la blague. « La première femme à être ramenée est une développeuse, et elle n’en revient pas ! Elle pose beaucoup de questions, mais le médecin en chef arrive en courant et la coupe, ‘C’est urgent ! Une question de vie ou de mort ! Est ce que vous savez coder en Cobol ?’  ». Le Cobol, c’est de l’histoire ancienne, résument ceux qui savent encore l’écrire, un des tout premiers langages informatiques, un ancêtre vieux de plus de 60 ans, que peu de gens aujourd’hui maîtrisent.

Pourtant, le Cobol est partout : plus de 220 milliards de lignes de code existent encore aujourd’hui, auxquelles sont ajoutées plusieurs millions d’autres tous les ans. Aux États-Unis, où le Cobol structure la majorité des sites gouvernementaux, le manque d’experts du langage a entraîné de nombreux problèmes. À cause de la pandémie de Covid-19, un nombre record d’Américains se sont connectés sur l’équivalent de Pôle Emploi, faisant crasher le système. Seulement, personne n’a su le remettre en place dans l’immédiat, créant la panique au sein de certaines administrations et retardant de plusieurs semaines l’arrivée des aides financières.

En France, les demandes d’aides financières se sont faites par mail, en fournissant à l’organisme correspondant un formulaire comportant diverses informations. Il n’y a de ce fait pas eu de problèmes de saturation des sites du gouvernement, bien que le site de la sécurité sociale soit programmé en Cobol. La situation pourrait cependant vite devenir problématique : l’âge moyen des développeurs se situe autour de 55 ans.

Un langage universel

Le Cobol, abréviation de « common business-oriented language » et traduisible par « langage courant pour les affaires », est une création de l’armée américaine. En 1959, elle souhaite développer un langage commun aux premiers ordinateurs qui permettrait lui-même d’écrire de nouveaux programmes, ce qui était impossible jusque-là avec les langages existants. Le groupe de travail mis en place souhaite cependant que son utilisation ne soit pas réservée à l’armée et veut doter le Cobol de fonctions lui permettant d’être largement utilisé, et surtout simple à comprendre. La capitaine de l’armée Grace Hopper, qui sera surnommée plus tard la « grand-mère du Cobol », prévoit d’utiliser des commandes basées sur l’anglais plutôt que sur des expressions algébriques, le rendant facile à lire.

« Par exemple, si on veut retrouver un jeu de données en particulier, on utilise SEARCH, et si on veut l’afficher on utiliser DISPLAY, c’est plutôt intuitif », explique Véronique Gianfermi, une développeuse Cobol indépendante qui travaille dans les systèmes bancaires. « C’est un langage simple, efficace et robuste ». Ce sont ces qualités qui feront sa popularité : entre 1960 et 1980, le Cobol est le langage de référence, utilisé par les banques, les assurances, les compagnies aériennes, les impôts… Si sa popularité diminue au fil du temps avec l’arrivée de langages plus modernes, le Cobol reste toujours là, à faire tourner les back offices.

Vous utilisez du Cobol tous les jours sans même le savoir // Source : Unsplash / Jan Kolar

Aujourd’hui encore, plus de 70 % des distributeurs de billets et entre 60 et 80 % des activités des entreprises reposent sur des applications Cobol. « Une personne lambda a recours au moins 8 fois par jour à un système géré en Cobol, sans en avoir conscience », indique Philippe Fraysse, un spécialiste du Cobol qui édite un logiciel de développement pour le langage. C’est tout un écosystème, d’une complexité édifiante, qui a été construit depuis plus de 60 ans et représente aujourd’hui l’un des socles de l’informatique.

La pénurie ?

Alors pourquoi y a-t-il une pénurie de développeurs aux États-Unis ? Parce que le Cobol est dépassé. « Ça fait 30 ans qu’on dit que le Cobol est mort. Il est toujours là, mais ça fait 30 ans que personne ne veut en faire », résume Philippe à Numerama. C’est partout le même son de cloche : « les jeunes ne veulent pas faire ça », faisant que « les cobolistes », comme ils se surnomment, sont en grande majorité cinquantenaires, approchant de la retraite. Et personne ne se bouscule pour prendre leur place.

« Il n’y a cependant pas encore de pénurie en France », rassure Alain Dubois. Âgé de 71 ans, ce développeur admet cependant que son profil est recherché, et qu’il n’a jamais eu de mal à trouver du travail, malgré son âge. Véronique confirme : si elle n’a « jamais été accueillie comme le messie  » en arrivant dans une entreprise, les missions Cobol sont légion. Ils ont tous les deux été formés au Cobol lors de son âge d’or, quand la « demande explosait et qu’on formait des gens en masse pour y répondre  ».

POUR SE FORMER, IL FAUT DANS LA PLUPART DU TEMPS « APPRENDRE SUR LE TAS ».

Beaucoup de jeunes ayant suivi des études scientifiques, comme des biologistes ou des chimistes n’arrivant pas à trouver du travail à la sortie se tournent vers ces formations, dispensées de manière expéditive en seulement quelques mois. Encore un avantage du Cobol : grâce à sa syntaxe intuitive, pas besoin d’avoir au préalable de « bagage en informatique », détaille Véronique.

Aujourd’hui, les écoles ne dispensent plus de formation en Cobol. Pour se former, il faut dans la plupart du temps « apprendre sur le tas ». « Lors de mon apprentissage dans une filiale du Crédit Agricole, on m’a mis sur une mission d’archivage de relevé bancaire », raconte Momar Ndiaye. « Tous les systèmes déjà mis en place étaient en Cobol, du coup j’ai été obligé de m’y mettre ». Aujourd’hui âgé de 29 ans, il travaille comme consultant chez LCL et estime que les profils juniors sont une minorité, représentant seulement «  10 % des personnes connaissant le langage ».

Comme un minitel

« Personne ne veut travailler sur des missions Cobol en sortie d’école », déclare-t-il, «  ils veulent des postes plus intéressants, sur du développement web ou des applications ». Il faut dire que le Cobol souffre d’une mauvaise image. «  Ceux qui ne travaillent pas directement avec le langage sont persuadés que c’est un truc de vieux, que ce n’est pas une compétence d’avenir  ». L’interface Cobol leur donne raison. Police de caractères austère, vert fluo sur fond noir, pas de souris… « L’aspect minitel refroidit les potentiels étudiants  », reconnaît Serge Gueguen, un formateur Cobol depuis 20 ans.

De plus, «  les missions Cobol ne sont pas mises en avant sur les sites de recrutement », reprend Momar, « parce que ce n’est pas un boulot tendance ». Les missions proposées peuvent sembler rébarbatives. Beaucoup de mises à jour, peu de développement, ou alors sur des projets de back-office bancaires… On ne peut pas créer de « trucs cool  » en Cobol. « Mon fils commence déjà à me dire que Java est dépassé, qu’il veut travailler sur des langages développés par Google, alors le Cobol… », complète Véronique.

Momar a cependant fait le choix de continuer. « Je me suis vite dit que c’était intéressant de parler ce langage. Les banques ont beau développer de nouvelles applications en Java, la base reste en Cobol. Tout le monde a besoin de ce langage, les gens ne se rendent pas compte de l’étendue qu’il a dans la vie de tous les jours  ». S’il a décidé de poursuivre, c’est également par calcul. « Pour l’instant, les missions Cobol sont mal payées, mais les développeurs vieillissent. Dans 10 ans, il n’y aura plus personne, et à ce moment-là, les banques seront prêtes à payer une fortune pour mes compétences ».

Du code en Cobol // Source : COBOLnotCOBALT sur YouTube

Des formations existent toujours, mais ne séduisent pas

Si les écoles ne forment plus au Cobol, il existe encore des formations disponibles pour les nouveaux cobolistes. Ils ne sont souvent pas là par choix. « On remarque que certaines entreprises recrutent des gens sans leur dire qu’ils vont faire du Cobol », annonce Serge. « On les affecte sur ces projets par surprise, forcément ils n’apprécient pas du tout ». Il travaille également avec beaucoup de particuliers en reconversion, « profils scientifiques à bac +5, qui décident de se mettre à l’informatique, mais qui n’ont aucune expérience préalable ». Comme beaucoup de leurs prédécesseurs, formés dans les années 80.

Mais ce n’est cette fois-ci pas parce que la demande explose, au contraire. « Nous avons moins de demandes depuis à peu près 5 ans. En 2019, nous avons formé 6 personnes. En 2018, personne  ». Le peu de personnes formées est ensuite majoritairement embauché par des ESN (Entreprises de Service Numériques, anciennes SS2I), qui placent ensuite leurs cobolistes dans des banques afin d’assurer des mises à jour ponctuelles ou de nouveaux projets de développement. « On ne voit pas vraiment les nouveaux formés remplacer ceux qui partent à la retraite ».

Formés, mais pas experts

C’est justement là que le bât blesse : « les entreprises ont pris conscience du problème et forment leurs ingénieurs, mais ce sont des formations express, au rabais », explique Serge. La relative facilité d’apprentissage du Cobol cache un autre problème : la complexité de tout l’écosystème construit autour de ses applications. Chaque entreprise ayant son organisation propre, « un développeur très compétent met tout de même près de 4 ans à être optimal sur un autre système, qui aura d’autres règles de fonctionnement  ».

De vieilles structures, construites sur des dizaines d’années par couches successives, des développeurs différents (« qui laissent parfois des passages codés de manière dégueulasse », nous confie l’un d’eux), et sans documentation. « La situation est pire lorsqu’il y a eu des rachats et des fusions. Les systèmes sont empilés de manière très complexe, avec beaucoup d’interactions entre eux  », détaille François Chaix, qui développe des applications pour les institutions financières et côtoie le Cobol depuis plus d’une dizaine d’années . « Les systèmes informatiques, c’est le carbone 14 des banques ».

« QUAND TOUT LE MONDE TE DIT QU’UN LANGAGE EST MORT, ÇA NE MOTIVE PAS À RESTER  »

Pour certains environnements très complexes, François reconnaît qu’il ne reste parfois « qu’un seul coboliste qui s’y connaît, mais pour d’autres il y en a 50 de disponibles  ». « Le manque se situe seulement sur des parties très spéciales. Pour l’instant, je n’ai jamais vu quelqu’un qui ne savait pas vers qui se tourner », tempère-t-il. « Mais ça pourrait peut-être changer ».

Il est difficile de garder les gens sur des missions Cobol. Les profils juniors veulent autre chose, il y a beaucoup de turn over. Au total, les projets comptent en moyenne 8 ans de retard, selon François. « Quand tout le monde te dit qu’un langage est mort, ça ne motive pas à rester  », résume Momar.

Le Cobol, un langage de la préhistoire de l’informatique ? // Source : Illustration de Lucie Benoit pour Numerama

Trop compliqué de migrer

Alors, pourquoi continuer en Cobol ? Migrer l’ensemble des données d’une banque vers un nouveau système informatique présente plusieurs problèmes d’envergure. Tout d’abord, le prix : « une opération comme ça coûterait plusieurs dizaines de millions d’euros, voire des centaines », estime François. Un changement de système nécessiterait en effet au préalable des années de travail, et représenterait un casse-tête. Serge est d’ailleurs catégorique, ces migrations sont extrêmement risquées. « Ce sont de vieilles lignes de codes, très peu documentées : il suffit qu’on oublie de remplacer une petite partie pour que tout soit perdu ».

En 2018, la banque anglaise TSB en a fait l’expérience. Après une erreur, près de 1,9 million de clients n’ont pas eu accès à leurs comptes pendant presque un mois, d’autres n’ont pas pu d’utiliser leurs cartes bancaires, tandis que certains ont eu accès pendant plusieurs jours aux comptes d’autres personnes. Une catastrophe, qui a coûté à TSB 330 millions de livres et plus de 80 000 clients.

«  LA MÊME CHOSE VA ARRIVER À JAVA D’ICI 20 ANS  »

Enfin, « pourquoi changer une méthode qui marche ?  », demande Véronique. « Le Cobol est ultra robuste, quand tu as besoin de traiter des millions d’informations rapidement, c’est super solide et très rassurant ». Une machine de guerre, qui marche toujours 60 ans après sa conception. «  La technologie peut sembler vieillotte, mais sur les nouvelles applications que nous développons, à chaque fois qu’il y a un problème, ça vient de la partie Java. Jamais du Cobol  ».

Destiné à mourir, mais toujours vivant, le Cobol est un code à part entière chez les développeurs, à mi-chemin entre créature mythique et Renault 4L. « À un moment où à un autre, il n’y aura plus suffisamment de développeurs Cobol  », confie Caroline Couturier, qui travaille à la direction informatique de LCL, «  on s’y prépare ». « Il y a 5 ans, tout le monde disait que la pénurie arriverait maintenant. Nous y sommes, et tout va bien pour l’instant », déclare Serge, avant de lancer : « La date est impossible à prévoir, mais elle arrive ».

Peut-être pas aujourd’hui, ni demain, mais sûrement. « C’est normal, c’est le progrès. La même chose va arriver à Java d’ici 20 ans  », prophétise-t-il.

Article rédigé par
Aurore Gayte , 17 avril 2020


Article récupéré du site :
Numerama


Le futur du Cobol, c’est maintenant

Josh Fruhlinger – 06 Décembre 2020

Le déficit en compétences Cobol n'est ni aussi extrême ni aussi simple que l'on pourrait le penser. Pour maintenir leurs systèmes Cobol, les entreprises peuvent choisir entre la formation de ressources internes ou le recours à des consultants spécialisés. Ce qu'il faudrait savoir avant de franchir le pas.
Créé en 1950, Cobol a été spécialement conçu pour permettre à des non-spécialistes de programmer les ordinateurs qui commençaient à arriver dans le monde des échanges commerciaux. (Crédit : Microfocus)

Les besoins en compétences en Cobol se font périodiquement ressentir dès qu’une application installée depuis quelques décennies doit être modifiée. Des incidents qui défraient quelquefois la chronique comme c’est arrivé dans l’Etat du New Jersey lorsque l’administration n’a pas pu, au début de la pandémie, incorporer les dispositions du CARES Act apportant un complément financier aux personnes sans emploi. Le problème remonte à plus de 20 ans et les programmes Cobol sont toujours à l’oeuvre dans de nombreux systèmes d’information, à moitié compris par les entreprises qui continuent à s’appuyer sur eux après l’échec de coûteux projets engagés pour les remplacer. Et maintenant, de nombreux experts réfléchissent à de nouvelles façons d’aborder le problème et de développer des compétences pour travailler avec Cobol.

L’un des problèmes dans ce contexte, c’est que l’on suppose souvent l’existence de profils spécifiques comme si Cobol était quelque chose de bien différent du reste du monde de la programmation. Ce n’est pas le cas. Pour Mark Cresswell, PDG de LzLabs, c’est une fausse piste. Il rappelle que Cobol est juste une syntaxe pour exprimer des règles métiers. « La plupart des programmeurs sont polyglottes. Vous pouvez avoir une spécialisation ou être meilleur dans tel ou tel langage, mais vous ne vous direz pas que vous n’allez pas faire de C++ parce que vous êtes un programmeur Java. Comme tous les autres langages, Cobol a ses propres particularités ». Il faut garder en tête que Cobol signifie « Common business-oriented language », c’est un langage écrit pour les problématiques de gestion d’entreprise. Créé en 1950, il a été spécialement conçu pour permettre aux non-spécialistes de programmer les ordinateurs qui commençaient à arriver dans le monde des échanges commerciaux. « Il est censé être facile à lire et à comprendre », rappelle Emad Georgy, CTO de Georgy Technology Leadership. « Je pense qu’il y a cette énorme peur autour de lui parce qu’il fait fonctionner des systèmes assez critiques, mais en fait, en tant que programmeur, il est très facile à apprendre ».

Expertise sur IMS et CICS également requise

Cobol n’est pas construit autour d’une programmation orientée objet et manque de fonctionnalités d’héritage, de sorte que ceux qui se sont fait les dents sur les systèmes modernes auront en fait plus de facilités à le prendre en main que le contraire. Bien qu’il existe néanmoins des versions orientées objet de Cobol, elles ne sont pas utilisées dans les anciens systèmes qui utilisent Cobol en production tels qu’on peut les trouver le plus souvent. En réalité, quand on parle de « pénurie de compétences Cobol », c’est plutôt un raccourci pour désigner quelque chose de plus compliqué. On pourrait, par exemple, télécharger GnuCobol et commencer à jouer avec du code qui pourrait tourner ensuite sur une machine Linux familière, mais cela ne préparerait pas à l’expérience de travailler avec du code Cobol tel qu’il est utilisé en production dans son contexte d’origine. 

« Apprendre Cobol est facile, mais ses applications requièrent une expertise rare avec les technologies plus anciennes telles que les systèmes de base de données IMS et CICS d’IBM », indique Michael Yurushkin, CTO et fondateur de BroutonLab. « Le principal défi n’est pas d’apprendre le langage, mais de disposer d’une expertise sur des technologies qui ont plusieurs décennies d’existence ». Mark Cresswell, de LzLabs, met en évidence le fait que les outils modernes utilisés ces dernières années par les développeurs ne s’appliquent tout simplement pas aux environnements mainframes. « Si je veux compiler et tester un programme, je n’appuie pas sur la petite flèche verte de la barre d’outils », fait-il remarquer. « J’exécute quelque chose qui s’appelle un travail par lots [batch job] qui fait une compilation et un lien. Lorsqu’il s’agit de configurer un environnement de test, je ne peux pas simplement lancer un container sur mon poste de travail pour tester mes modifications. Je dois parler aux administrateurs systèmes pour configurer des partitions avec des sous-système et des configurations. Tout cela allonge le cycle de développement et c’est tellement spécifique qu’il est très difficile de s’y retrouver pour quelqu’un qui est habitué à développer à la vitesse d’Internet sur des plateformes cloud ».

Démêler la logique du programme

Lorsque l’on a affaire à une application critique qui tourne depuis longtemps, démêler la logique du programme peut devenir le principal défi. « Tous ces systèmes ont été conçus au fil des décennies », souligne Ben Stevens, ingénieur en chef et architecte solution chez Art+Logic, qui a travaillé pendant des années dans des administrations gouvernementales qui s’appuyaient sur Cobol. « Si vous ne connaissez pas les tenants et les aboutissants, savoir programmer en Cobol ne servira pas à grand chose. Cela finit par devenir un projet de rétro-ingénierie sur lequel on agit en tant qu’archéologue. Même si vous connaissez le langage, c’est un peu comme si vous lisiez des textes anciens sans aucun contexte : d’accord, je peux traduire ce mot par tel mot, mais qu’est-ce-que cela signifie ? ».

Prenons le cas d’une entreprise qui utilise une base de code Cobol pour une application critique. Comment peut-elle s’assurer d’avoir accès aux compétences dont elle a besoin – tant en termes d’environnement de programmation et mainframe qu’en termes de logiques métier sous-jacente –  pour maintenir son système opérationnel, au moins à court terme ? L’une des stratégies possibles consiste à travailler sur le développement de compétences en interne. Cela ne signifie pas de recruter de nouveaux programmeurs Cobol dès leur sortie de l’école (puisque cela n’existe pas). Cela ne signifie pas nécessairement non plus de retenir les anciens collaborateurs à temps complet alors qu’ils préféreraient prendre leur retraite. « Mon objectif pour mon équipe ne serait pas de leur apprendre Cobol, ce serait de leur apprendre mon système », expose Emad Georgy. « Le contexte est essentiel. Vous voulez qu’ils apprennent Cobol juste ce qu’il faut. Vous n’allez sans doute pas lancer de nouveaux projets en Cobol, il faudra donc investir au bon niveau de façon judicieuse ». L’une des façons de le faire est d’associer des développeurs internes intéressés aux ressources dont on dispose, en se concentrant sur les besoins métiers. Cela peut impliquer d’avoir des développeurs plus âgés qui ont travaillé sur l’application en question – peut-être toujours dans l’effectif ou peut-être rappelés en tant que sous-traitants – pour encadrer les plus jeunes. 

Résoudre un problème spécifique en équipe

« J’aime avoir des cas d’usage ou des problèmes très spécifiques que nous essayons de résoudre avec l’apprentissage », explique M. Georgy. Par exemple en faisant travailler une équipe avec un collaborateur retraité qui vient quelques heures par semaine en leur disant : « Notre objectif d’ici la fin du mois, c’est de résoudre ce bug ». Bien sûr, les développeurs devront suivre une formation plus générale en Cobol et en programmation mainframe pour compléter ce qu’ils apprennent sur leurs propres systèmes. IBM a un intérêt évident à maintenir une masse critique de programmeurs Cobol sur le marché et propose un ensemble de ressources pédagogiques tels que des cours de programmation Cobol gratuits et des certifications de programmation mainframe. Ces temps de formation mobiliseront les équipes mais il est probable que l’investissement en vaut la peine. « Nos clients doivent également se rappeler que les applications critiques qui ont été optimisées sur les dernières décennies nécessitent elles aussi une maintenance », indique Barry Baker, vice-président logiciel sur l’activité IBM Z. S’imaginer que l’on peut le faire dans l’à peu près et sans investir dans des talents, c’est simplement une recette qui peut conduire au désastre, prévient-il.

Ne pas hésiter à demander de l’aide 

Néanmoins, on peut se retrouver dans une situation où l’on ne dispose tout simplement pas des ressources internes pour surmonter son problème Cobol. Dans ce cas, on peut vouloir se tourner vers des consultants externes spécialisés dans les interventions sur les systèmes Cobol. C’est ce que fait une entreprise comme Chetu et les situations dans lesquelles elle est amenée à intervenir sont souvent assez désespérée. « Il y a eu de nombreux cas où le développeur principal de la plateforme legacy n’était plus dans l’entreprise », explique Pravin Vazirani, vice-président des opérations de Chetu. « Et la maintenance du système était faite par un développeur qui n’avait qu’une connaissance limitée du système et avait acquis juste assez d’expertise pour parvenir à faire fonctionner correctement les applications Cobol. On le voit généralement dans des endroits où l’on fait tourner des plateformes existantes avec peu ou pas de documentation appropriée ».

Pravin Vazirani pense que de nombreuses organisations, en particulier les plus petites, réaliseront des économies à long terme en recourant à des entreprises spécialisées comme la sienne. « L’expertise en développement Cobol n’est pas aussi courante en dehors des entreprises spécialisées dans les développements personnalisés, donc, à bien des égards, faire appel à l’une de ces firmes peut être moins coûteux et plus efficace plutôt que de recruter et de développer des talents internes », estime-t-il. « Et de nombreuses entreprises pourraient envisager de quitter leurs applications Cobol à plus ou moins long terme, de sorte que l’accent pourrait être davantage être mis sur l’acquisition de talents internes pouvant répondre aux besoins futurs de l’entreprise tandis qu’un tiers s’occuperait du système actuel ».

Article rédigé par
Josh Fruhlinger / Infoworld (adapté par Maryse Gros)


Article récupéré du site :
Le Monde Informatique


Cobol : un vieux langage terriblement à la mode

Serdar Yegulalp –31 Mai 2020

Le langage de programmation Cobol a beau avoir 60 ans, il fait tourner une grande partie des systèmes d'entreprise les plus critiques dans le monde. Et la demande en programmeurs Cobol ne faiblit pas.
Dans les années 60, les programmes Cobol étaient encodés sur des cartes perforées (Photo sous licence Creative Commons CC0 de l’architecte logiciel Rainer Gerhards).

Certaines technologies ne meurent jamais, elles se fondent simplement dans le décor. Evoquer Cobol – Common Business Oriented Language – avec le développeur moyen vous vaudra d’être regardé comme si vous parliez du papier carbone, de l’essence au plomb ou du disque 78 tours. Comparé aux langages modernes tels que Go ou Python, ou même Pascal ou C, Cobol semble massif, verbeux, démodé. Mais il a résisté. Loin d’être une technologie obsolète que nous aurions abandonnée, Cobol est devenu une institution. Des bases de code Cobol massives sont toujours utilisées à travers le monde, nombre d’entre elles fonctionnant presque exactement comme elles le faisaient lorsqu’elles ont été créées. Donc, oui, Cobol est toujours pertinent et opportun, il l’est même douloureusement en fait. Ces derniers mois, Cobol a réintégré la conscience publique quand des états comme le New Jersey ont lancé un appel aux programmeurs pour les aider à transférer leurs applications Cobol dans le 21ème siècle. Qu’est-ce qui fait que ce langage se démarque encore aujourd’hui et qu’est-ce qui le rend si tenace ?

Petit historique

Cobol est apparu à la fin des années 1950 et au tout début des années 1960. Son développement était un projet soutenu par le département américain de la Défense (DoD) qui incluait un consortium de fournisseurs informatiques dont IBM, Honeywell, Sperry Rand et Burroughs. L’objectif était de créer un langage de programmation ayant les attributs suivants. Premièrement, une portabilité entre systèmes informatiques afin de faciliter la migration du logiciel à la fois entre les générations de matériels et entre les fabricants de matériels. Deuxièmement, une syntaxe plus proche de l’anglais que les autres langages de l’époque (par exemple le Fortran) pour encourager une plus large audience à y recourir, même si cela devait se faire au détriment d’une certaine vitesse opérationnelle. Troisièmement, il devait pouvoir s’adapter aux changements. 

Les premières spécifications officielles sont sorties en 1960. Durant la décennie suivante, et à la consternation de ses détracteurs, Cobol devint de choix par défaut pour écrire les applications commerciales. Sa rapide propagation a résulté d’un effet de réseau. IBM, l’un des collaborateurs d’origine sur le langage, l’a adopté de façon précoce et vigoureuse et sa présence dominante dans le monde de l’informatique a contribué à l’adoption de Cobol. A cause de ses avantages de conception et de l’énorme soutien industriel dont il bénéficiait, Cobol a survécu, et de loin, aux systèmes pour lesquels il avait été élaboré à l’origine. Selon diverses estimations, en 1970, Cobol était le langage de programmation le plus utilisé dans le monde. En 1997, il devait faire tourner près de 80% des applications d’entreprise.

Le langage lui-même

Les concepteurs de Cobol ont rompu avec la syntaxe lapidaire des autres langages du moment (Fortran, encore lui). L’idée était qu’il puisse être lu et compris par des non-programmeurs, en particuliers des professionnels de la comptabilité, de la finance, de l’assurance et d’autres métiers. Prenons l’exemple d’une simple séquence « Hello World » écrite dans un des premiers dialectes de COBOL :

Pour des développeurs actuels habitués à la concision de langages tels que Python, ce code est verbeux. Mais la verbosité de Cobol vient du fait que le code est lu bien plus souvent qu’il n’est écrit, il doit donc être écrit pour être lisible. Une séquence similaire dans une version plus moderne de Cobol pourrait ressembler à cela :

Alors que cet exemple est plus concis, les mêmes principes de base s’appliquent : le code s’efforce d’être explicite sur ce qui se passe à chaque étape. Cobol a des règles strictes sur la syntaxe et sur l’organisation interne des programmes. Un programme Cobol est explicitement divisé en sections, ou divisions, qui aident à trouver et à comprendre ses composants d’un seul coup d’oeil :

– Identification division : essentiellement une section de métadonnées, contenant des détails sur le programme, son auteur, etc.

– Environnement division : contient des détails sur l’environnement de runtime, par exemple les alias pour les équipements externes, qui peuvent avoir besoin d’être modifiés lorsque le programme est exécuté sur un matériel différent. Cela aide à la portabilité entre systèmes quand, par exemple, les entrées/sorties peuvent être gérées de façon totalement différente.

– Data division : contenant les sections file et working storage, la division Data décrit les fichiers et les variables utilisés dans le programme.

– Procedure division : c’est ici que l’on trouve le véritable code du programme, séparé en unités logiques appelées sections, paragraphes, sentences et statements. Il est tentant de rapprocher, par analogie, aux modules ou fonctions, parce qu’elles remplissent à peu près les mêmes fonctions (elles divisent le code en blocs avec des contraintes sur les entrées et les sorties), mais elles sont beaucoup moins flexibles.

Des règles de formatage très strictes

Cobol a également des règles de formatage extrêmement strictes pour le code, allant jusqu’au nombre d’espaces précédant une commande. (Les utilisateurs de Python ne seront pas dépaysés) Certaines de ces restrictions sont un corollaire du passage à l’âge adulte de Cobol pendant l’ère mainframe des années 60, quand les programmes étaient encodés sur des cartes perforées et qu’il était important de respecter le respect du formatage à 80 colonnes. Mais les autres restrictions de formatage renforce la lisibilité.

Carte perforée provenant d’un réel programme Cobol mis au point pour un système Univac 90/30. (Photo sous licence Creative Commons CC0 de l’architecte logiciel Rainer Gerhards qui rappelle qu’en l’absence de numéros de lignes sur les cartes, il pouvait être assez problématique de les remettre dans l’ordre lorsqu’on en laissait tomber accidentellement un jeu). Agrandir l’image.

L’objectif de cette discipline stricte est de rendre les programmes Cobol aussi auto-documentés que possible. Après tout, ils allaient probablement rester en place pendant des années ou des décennies. L’intention (même si le résultat final ne l’atteignait pas toujours) était de faire de chaque programme Cobol un artefact que tout développeur Cobol pourrait comprendre, même des années plus tard, sans l’aide de celui qui l’avait créé.

Les challenges de Cobol

La permanence – et l’inertie – de Cobol vient en grande partie du fait que les applications qu’il a permis de générer, ont tendance, une fois écrite, à rester en place indéfiniment, avec juste quelques modifications mineures. Plus l’application est grosse et critique pour l’activité d’une entreprise, moins on cherche à la perturber. Les mainframes, centrés aujourd’hui sur l’offre d’IBM, jouent un rôle clé. Ils ont été construits pour être hautement rétrocompatibles et pour exécuter les logiciels existants tels que les applications Cobol sur plusieurs générations de machines avec des modifications minimales. Il en résulte que des milliards de lignes de code Cobol fonctionnent depuis des décennies, pratiquement sans aucun changement.

Au fil des années, Cobol a néanmoins évolué, même si ce fut lentement. Il existe même une variante orientée objet, OO-Cobol, qui inclut le support de fonctionnalités modernes telles que Unicode, des paramètres régionaux, et des types de données plus avancées au-delà des strings (chaînes de caractères) et integers (entiers). Mais il a farouchement conservé sa rétrocompatibilité. Donc, même ces améliorations et extensions collent à cette mission visant à continuer à faire fonctionner les applications Cobol existantes. Les choix de conception retenus n’ont pas tous été populaires auprès des programmeurs Cobol. Certains ont conduit à des programmes trop complexes qui se sont révélés difficiles à comprendre ou à déboguer, et ont découragé les réécritures ou les améliorations. La commande Go To, comme son équivalent en C, a permis aux programmeurs de se déplacer librement au sein un programme et ainsi d’écrire des applications plus puissantes. Mais l’utilisation indisciplinée de Go To peut transformer un programme Cobol en noeud de références croisées difficiles à suivre.

Programmer en Cobol aujourd’hui

Cobol survit aujourd’hui dans quelques incarnations. IBM maintient activement ses propres mises en oeuvre Cobol et gère de nombreuses applications qui les exploitent. Micro Focus Cobol est une édition commerciale qui s’exécute sur Windows de Microsoft, compile les applications Cobol vers Java et .Net et se déploie même dans des environnements clouds comme Azure. On trouve aussi des mises en oeuvre open source de Cobol, telles que GnuCobol, qui est disponible gratuitement et compile vers le code machine source. Toutefois, elles peuvent ne pas disposer des fonctionnalités de déploiement ou de débogage les plus avancées des Cobol commerciaux. Bien que Cobol reste largement utilisé, les expertises approfondies sur le langage deviennent de plus en plus difficiles à trouver au fil des années.

Il en résulte que de nombreux programmeurs Cobol à la retraite sont sollicités pour faire basculer les anciennes applications dans le 21ème siècle. Souvent, ce ne sont pas les connaissances dans le langage proprement dit qui sont les plus importantes, mais la compréhension intime des environnements mainframe dans lesquels Cobol s’exécute. De nombreuses applications fonctionnent étroitement avec des technologies telles que la base de données hiérarchique IMS et le gestionnaire de transactions CICS d’IBM, qui requièrent une expertise de plus en plus rare. Ainsi, aussi vieux jeu que Cobol peut apparaître, le besoin d’expertise pour ce langage et son environnement de développement s’est accru d’année en année. Les offres d’emploi qui recherchent ce type d’expertises abondent. En mars 2020, l’état américain du New Jersey a lancé un appel d’urgence aux programmeurs Cobol pour l’aider à améliorer les systèmes de prestations chômage en pleine crise de Covid-19. 

Apprendre Cobol

Compte-tenu de la demande croissante dont bénéficie Cobol, les développeurs modernes qui veulent se familiariser avec ce langage inoxydable ont plusieurs options. En Irlande, l’Université de Limerick propose un cours complet de programmation Cobol en ligne, avec l’aimable autorisation de son département des sciences informatiques et systèmes d’informations. Ce cours n’est pas aussi à jour que d’autres ressources, mais étant donné le peu de changement intervenu sur Cobol avec le temps, ce n’est pas nécessairement un défaut.

L’Open Mainframe Project propose également des ressources Cobol dont un cours de programmation complet, co-sponsorisé par IBM. Celui-ci est bien sûr plus actuel que le cours de l’Université de Limerick et il est adapté à la mise en oeuvre de Cobol sur zOS ( système d’exploitation des mainframes du constructeur) qui constitue une version largement déployée du langage. Cobol est un incontournable de l’informatique d’entreprise depuis des décennies et la demande de profils le connaissant ne cesse de croître. Si le maintien ou la modernisation des programmes Cobol vous intéresse, c’est plus que jamais le bon moment pour vous y mettre.

Article rédigé par
Serdar Yegulalp, Infoworld (adapté par Maryse Gros)


Article récupéré du site :
Le Monde Informatique


16. LA LINKAGE SECTION

Le programme principal et le sous-programme COBOL étant compilés séparément, il est nécessaire que la description des zones de données communes apparaisse dans les DATA DIVISION respectives des programmes.

Mais il est exclu de réserver 2 fois ces zones en mémoire centrale, c’est pourquoi une LINKAGE SECTION a été créée en DATA DIVISION.

Une zone de données commune “TRANSFERT” sera donc décrite normalement dans le programme principal soit en FILE SECTION soit en WORKING-STORAGE SECTION, et sa correspondance dans le sous-programme en LINKAGE SECTION.

L’ordre d’appel de sous-programmes CALL, aura donc pour effet d’attribuer les mêmes adresses mémoire à ces deux zones de données.

Remarque : rien n’oblige le programmeur à utiliser des descriptions de zones rigoureusement identiques entre le programme principal et le sous-programme. Les noms ne doivent pas être les mêmes ainsi que les descriptions de données.

La terminaison d’un sous-programme :

Dans un sous-programme, la terminaison est réalisée par GOBACK.

15. LES SOUS-PROGRAMMES EXTERNES

Le branchement du traitement depuis le programme principal COBOL vers les sous-programmes est réalisé par l’instruction CALL.

CALL 'Nom du sous programme' USING nom de donnée1 …

CALL 'Nom du point d'entrée' USING nom de donnée1 …


‘Nom du sous programme’ : désigne le nom du sous-programme appelé, nom doit être de maximum 8 caractères de long.

‘Nom du point d’entrée’ : désigne une adresse d’entrée dans un sous-programme, son nom doit être différent de celui du sous-programme et doit correspondre à un ENTRY.

Exemple :
CALL "SOUSPROG" USING ZON1 ZON2.
CALL "ENTREE" USING ZON1

LE SOUS-PROGRAMME COBOL

Le sous-programme en COBOL est construit comme tout programme COBOL avec ses 4 Divisions.
La différence avec le programme principal réside dans l’introduction de clauses USING et de la LINKAGE SECTION nécessaire à l’établissement d’une liaison entre les variables du programme principal et du sous-programme.

Cette correspondance est établie au moyen du USING (sous-programme) et du CALL (programme).

La clause USING dans le sous-programme :

PROCEDURE DIVISION USING nom-de-donnée-1 nom-de-donnée-2 …

Au moment de l’appel du sous-programme la correspondance entre les nom-de-donnée-1, nom-dedonnée-2 … est établie et le sous-programme démarre en utilisant les valeurs transférées par le programme principal.

Si l’entièreté du sous-programme ne doit pas être utilisée, nous disposons d’une option ENTRY pour indiquer au sous-programme l’endroit ou le sous-programme doit débuter.

Format :
ENTRY "nom-symbolique" USING nom-donnée-1 nom-donnée-2

Le même système opératoire sera activé et les nom-donnée-1 nom-donnée-2… seront mis en correspondance.

14. LES DECLARATIVES

Cobol a prévu un traitement particuliers en cas d’erreurs des E/S sur les fichiers. Ces traitements doivent être réalisés sous forme de séquences indépendantes regroupées dans une section de la PROCEDURE DIVISION sous le nom de DECLARATIVES.

Les DECLARATIVES sont importantes dans le cas où le programmeur n’aurait pas prévu de traitement dans le cas des erreurs d’E/S. En effet le système d’exploitation de l’ordinateur mettra fin à l’exécution du programme.

Forme générale :

PROCEDURE DIVISION.
DECLARATIVES.
Nom-de-section SECTION. USE ………….
Nom-de-paragraphe.
      Instructions Cobol
END DECLARATIVES.

Les DECLARATIVES commencent toujours par le mot DECLARATIVES, immédiatement après PROCEDURE DIVISION, sont toujours dans une SECTION et se terminent toujours par END DECLARATIVES.

FORMAT :

Si nom-de-fichier est spécifié les DECLARATIVES ne s’appliquent que pour ce ou ces fichiers.

INPUT indique que la section DECLARATIVES sera utilisée pour tous les fichiers ouverts en lecture.

OUTPUT indique que la section DECLARATIVES sera utilisée pour tous les fichiers ouverts en écriture.

I-O indique que la section DECLARATIVES sera utilisée pour tous les fichiers ouverts en lecture et en écriture.

L’instruction USE indique que le branchement n’a lieu qu’après que les routines du système d’exploitation aient été effectuées.

L’option AFTER peut être remplacée par BEFORE.

13. L’INSTRUCTION SET

Syntaxe de l’instruction SET :

SET

Un nombre entier est un entier numérique > 0 et non signé.
Les index-names sont définis par des clauses INDEXED BY.

Cette instruction signifie :

METTRE nom-index-1 A LA VALEUR CORRESPONDANT A index-name-3 avec le numéro d’occurrence nombre entier

Nombre entier représente un numéro d’occurrence de l’élément qu’on désire repérer.

Exemple : SET INDEX1 TO 5, signifie que nous voulons utiliser le 5ème élément de la table. Ce n’est pas la valeur 5 que nous retrouverons dans INDEX1 mais l’adresse correspondant au déplacement de l’élément par rapport au début de la table.
Lorsque index-name-3 est utilisé, il a ajustement de index-name-1 index-name-2 … sur indexname-3 et COBOL traduit le contenu de index-name-3 en occurrence avant de calculer les valeurs de index-1 index-2.

   01 TABLE.
      02 T1 OCCURS 20 INDEXED BY IND1.
         03 T2 OCCURS 30 INDEXED BY IND2.
            04 T3 OCCURS 40 INDEXED BY IND3 PIC 9.

Pour utiliser T3 (5,6,5),    SET IND3 TO 5
                      SET IND1 TO IND3
                      SET IND2 TO 6

Format 2 :

Cette instruction permet avec UP BY d’augmenter ou de diminuer DOWN BY la valeur de indexname-1 et de index-name-2 d’une valeur de nombre ou de index-3. INDEX-3 ne doit pas appartenir à la table de index-1 ou index-2 car le COBOL traduit sa valeur en nombre d’occurrences.

Il est à prévoir que durant l’exécution du programme nous devions retenir une valeur particulière d’index. Dans ce cas nous serons amenés à déclarer une zone particulière d’usage réservé aux INDEX.

01 INDEX-DE-RESERVE USAGE IS INDEX.

Cette clause est utilisée à n’importe quel niveau en DATA DIVISION. Il ne sera pas fait usage de la clause PICTURE puisque cette donnée contiendra une adresse pour notre index.
Lorsque cette clause est spécifiée pour un groupe, ce sont toutes les zones élémentaires du groupe qui sont considérées comme d’usage index.

Pour sauvegarder la valeur de IND2 :
SET INDEX-DE-RESERVE TO IND2

Pour lui retourner sa valeur plus tard :
SET IND2 TO INDEX-DE-RESERVE

12. L’INSTRUCTION STOP

Syntaxe de l’instruction STOP :

STOP RUN

Le format 1 indique la fin du traitement dans un programme puis à rendre le contrôle au superviseur. Il peut y avoir plusieurs STOP RUN dans un même programme mais en programmation structurée un seul est suffisant.

11. L’INSTRUCTION EXIT

Syntaxe de l’instruction EXIT :
Nom-de-paragraphe. EXIT.

Cette instruction sert à fournir un point unique de fin d’une série de paragraphes appelés par PERFORM. Ce paragraphe sert de délimiteur de fin et peut donc être utilisé par un GO TO éventuel à l’intérieur de ce bloc.

Le nom-de-paragraphe sera donc placé après l’option THRU du PERFORM.

Exemple :
    PERFORM P1 THRU P2.

P1.
    IF A > B GO TO P2.
P2. EXIT.

Si la logique du programme demande de sortir de P1 avant la fin de l’ensemble des instructions, le fait de passer via P2 ne rompt pas les liens de notre PERFORM.