Formation avancé de langage Cobol
1 Programmation structurée
1.1 Concepts
La programmation structurée est un style de programmation dans lequel la structure du programme est construite de la façon la plus claire que possible.
Cette clarté est due à la restriction des séquences logiques de contrôle aux trois structures suivantes : la séquence :
En absence du contraire, les instructions sont exécutées selon leurs ordre d'écriture.
L'alternative :
Avec cette structure une décision est faite. Si la réponse à la question est vrai, alors un chemin est suivi; quand la réponse est égale à Faux, le chemin correspondant au sinon est choisi.
La répétitive :
Cette structure est un mécanisme pour la création et le contrôle d'une boucle.
Objectifs
Les principaux objectifs de la programmation structurée sont les suivants :
- le développement modulaire du programme;
- la facilité du codage;
- la rapidité du codage;
- la facilité du déboguage;
- la facilité de la maintenance.
En programmation structurée, toute sorte de logique est exprimée par les trois structure : la séquence, l'alternative et la répétitive.
2 Introduction au langage COBOL
Le langage COBOL est né du double souci de:
1. Créer un langage adapté aux problèmes de gestion et de traitement de données.
2. Rendre ce langage aussi indépendant que possible du matériel sur lequel doivent être exécutés les programmes.
- En 1960, le comité CODASYL (COnference on DAta SYstems Languages) réuni à l'initiative de la défense nationale américaine, a défini les spécifications d'un langage commun de traitement de problèmes de gestion: COmmon Business Oriented Language; d'où COBOL-60. Caractéristiques commun: à tous les constructeurs d'ordinateurs modulaire:modules de fonctionnement (division,section)
page 1/70
proche du langage courant: les mots et les phrases, en langue anglaise, pouvant être compris par un non informaticien.
Exemple
MULTIPLY prix-unitaire BY quantite GIVING total
Standardisation
L'un des objectifs des efforts de standardisation vise la création d'un langage portable sur la plupart des systèmes existants (1974, 1983, 1985) par l'American National Standards Institute
(ANSI)
3 STRUCTURE D'UN PROGRAMME COBOL
Un programme COBOL peut être considéré comme un ensemble hiérarchisé d'éléments. En décomposant cet ensemble, en partant du niveau le plus élevé, on retrouve:
1. Quatre (4) divisions:
IDENTIFICATION DIVISION
ENVIRONMENT DIVISION
DATA DIVISION
PROCEDURE DIVISION
2. Des sections
3. Paragraphes
page 2/70
1. IDENTIFICATION DIVISION
C'est la première division d'un programme COBOL. Elle permet d'identifier:
- le nom de programme
- l'auteur
- la date d'écriture et de compilation
2. ENVIRONMENT DIVISION
Cette division définit l'environnement matériel dans lequel le programme tournera.
- sur quelle machine le programme sera compilé et exécuté.
- définit les fichiers utilisés dans le programme.
. noms des fichiers
. organisations
3. DATA DIVISION
Description détaillée des fichiers utilisés:
. le nom du fichier;
. enregistrements, champs, etc.
ainsi que les variables (simples et composées) manipulées dans le programme.
4. PROCEDURE DIVISION
Dans cette division on retrouve les instructions du programme.
4 Syntaxe d’un programme COBOL
4.1 Alphabet lexicographique
L'alphabet lexicographique de COBOL est constitué des éléments suivants:
- Les caractères alphanumériques:
. les chiffres: 0,1,2,....,9
. les lettres: A, B, C, D,..., Z et l'espace (blanc)
- Les caractères de ponctuation : . virgule (,), pt. virgule (;), point (.), cote (') . double cote ("), parenthèse dte et gche ) (.
- Les caractères de comparaison :
. supérieur (>), inférieur (<), égal (=)
- Les caractères arithmétiques
. +, -, /, *, $
4.2 Les mots COBOL
page 3/70
Un mot COBOL est une suite de 30 caractères au plus.
Chaque caractère est choisi dans l'ensemble des chiffres (0..9), des lettres (A..Z) et du tiret (-) (le tiret ne peut être ni le premier ni le dernier caractère d'un mot).Les mots usuels: définis par le programmeur Exemple :
CHAINE-DE-CARACTERES
000-debut
1000-traitement
9999-fin
Var-1
Var-2
1000 (nom d’un paragraphe) mais-ceci-n-est-pas-un-mot-valide-pourquoi
Les mots réservés: mot COBOL appartenant à une liste précise, pouvant être utilisé dans le programme, mais n'étant pas défini par le programmeur lui même.
Exemple :
Les nom des divisions et des sections (PROCEDURE, SECTION,
IDENTIFICATION, DATA, etc..) .
Les mots clés (SELECT, FD, EQUAL, MOVE, PERFORM, etc..).
5 Règles d'écriture d'un programme COBOL
Pour pouvoir être soumis à un ordinateur, un programme COBOL doit être décrit en respectant un certain format. Ce format, matérialisé en général par un bordereau de codification, servira de guide pour la rédaction du programme.
La plupart des compilateurs COBOL utilisent des lignes de 80 caractères, une tradition qui date depuis l'ère des cartes perforées.
La colonne 7 est appelée indicateur. Elle indique par un "*" ou "-" que la ligne a une interprétation spéciale.
* : à la colonne 7 indique que c'est une ligne de commentaire.
- : Si la ligne précédente s'arrête au milieu d'un mot, le caractère - à la colonne 7 de la ligne suivante, indique la suite du mot dans la zone B.
Les ordres COBOL commencent à la colonne 8 et se terminent à la colonne 72.
Les colonnes 8 à 11 constituent la marge A.
page 4/70
En règle générale, tous les entêtes de divisions, de sections, et de paragraphes, ainsi que les indicateurs de niveau devront débuter dans la zone A.
Les colonne 12 à 72 constituent la marge B. Les noms de données et les phrases commencent dans la marge B.
C O L O N N E S | ||||
123456 | 7 | Marge A Marge B : 12 72 811 | 73 80 | |
IDENTIFICATION DIVISION. | ||||
* | Ceci est un commentaire : une étoile à la colonne 7 | |||
PROGRAM-ID. Multiplication. AUTHOR. Imed Jarras. DATA DIVISION. WORKING-STORAGE SECTION. 01 LesEntrees 02 Num1 PIC 9 VALUE 0. 02 Num2 PIC 9 VALUE ZEROS. 77 Produit PIC 99 VALUE ZERO. PROCEDURE DIVISION. 000-debut. | ||||
DISPLAY "Entez la premiere valeur : " WITH NO ADVANCING. ACCEPT Num1. DISPLAY "Entez la deuxième valeur : " WITH NO ADVANCING. ACCEPT Num2. MULTIPLY Num1 BY Num2 GIVING produit. DISPLAY "Produit = ", PRODUIT. STOP RUN. | ||||
page 5/70
6 IDENTIFICATION DIVISION
C'est la première division d'un programme COBOL.
Format général
IDENTIFICATION DIVISION.
PROGRAM-ID. nom-du-programme.
[AUTHOR. commentaire]
[INSTALLATION. commentaire]
[DATE-WRITTEN. date-d'écriture]
[DATE-COMPILED. date-de-compilation]
[SECURITY. commentaire de sécurité]
DATE-COMPILED: à la compilation la date du jour est insérée par le système.
[ ] : paragraphe optionnel.
ENVIRONMENT DIVISION
Environnement matériel du programme (Ordinateur et fichiers utilisés).
Format général
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. ordinateur.
OBJECT-COMPUTER. ordinateur.
[INPUT-OUTPUT SECTION.
FILE-CONTROL.
..... ]
I-O-CONTROL. ......]
Exemple
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-370.
OBJECT-COMPUTER. IBM-370.
7 DATA DIVISION
Déclaration et description détaillée des structures utilisées (variables, constantes, vecteurs, fichiers).
page 6/70
Format général
DATA DIVISION.
[FILE SECTION.
description des fichiers] [WORKING-STORAGE SECTION.
déclaration et description des variables, constantes, vecteurs, etc..]
7.1 LES VARIABLES ÉLÉMENTAIRES
Les variables élémentaires ne sont pas décomposables en constituants.
Elles peuvent exister soit isolément, soit comme constituants d'une variable structurée.
Quatre éléments sont nécessaires à la description d'unevariable élémentaire:
1. le nom de la variable
2. le type de la variable
3. le nombre maximum de caractères
4. le mode de représentation en mémoire
Exemple de variables élémentaires
77 NOM PIC X(20) USAGE IS DISPLAY.
77 PRENOM PICTURE X(15).
Exemple de variable structurée
01 IDENTITE.
05 NOM PICTURE X(20). 05 PRENOM PIC X(15).
SYNTAXE DE LA DESCRIPTION D'UNE VARIABLE
Une donnée élémentaire sera décrite dans la WORKING-STORAGE SECTION de la DATA DIVISION.
1 Numéro de niveau
Le numéro de niveau doit commencer en zone A.
Il doit être le premier élément de la description d'une donnée.
Il peut avoir la valeur 77 qui indique une donnée élémentaire dans la WORKINGSTORAGE SECTION.
2. Nom de donnee
page 7/70
Le nom de la donnée doit être un mot COBOL: de 1 à 30 caractères pris parmi les lettres [A..Z], les chiffres et le tiret, non entièrement numérique, et ne commençant ni finissant par un tiret.
Il ne doit pas être un mot réservé.
Il doit commencer en zone B.
Exemple
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NOM-DE-DONNEE .............
77 NOM-1 ...........
3. PICTURE
La clause PICTURE (ou PIC) permet de décrire les caractéristiques générales de la donnée: le type et la longueur. Ces éléments sont fournis sous la forme d'une chaîne de caractères.
3.1 les types de données Les données pourront être :
alphabétiques: le symbole permettant de définir des donnée alphabétique (de [A..Z] + espace) sera la lettre A.
Chaque occurrence de la lettre A de la chaîne de caractères de picture représentera une position de caractère de la donnée pouvant contenir une lettre ou un espace.
alphanumériques: Elles pourront contenir une combinaison quelconque du jeu de caractères de l'ordinateur.
Le symbole X caractérisera une donnée alphanumérique.
numériques: Elles pourront alors contenir une combinaison de chiffres (0..9) et éventuellement un signe algébrique.
Le symbole permettant de définir une donnée numérique sera le chiffre 9.
Une donnée numérique comprend un maximum de 18 chiffres significatifs.
3.2 la longueur des données
C'est la répétition des symboles caractérisant le type de données (A, X, 9) qui fournira la longueur de la donnée élémentaire. Deux notations pourront être employées:
répétition: Par exemple, PIC XXX indiquera une donnée alphanumérique de 3 caractères.
mise en facteur: PIC X(3) ou PIC X(03), décrivent de la même manière une donnée élémentaire alphanumérique de 3 caractères. Exemples de PICTURE
page 8/70
77 NOM PIC | A(20). | |||||
77 NOM PICTURE Définit une donnée alphabétique occupant 20 caractères. | A(20). | |||||
77 ADRESSE PIC Définit une donnée alphanumérique occupant 40 caractères. | X(40). | |||||
77 AGE PIC | 9(2). | |||||
77 AGE PIC Définit une donnée numérique occupant 2 positions. | 99. | |||||
PICTURES | SIGNIF. | VALIDE | N.VALIDE | |||
XXX | 3 caractères | A$% | ||||
X(3) | 3 caractères | B52 | ||||
99999 | 5 chiffres | 16754 | AH767 | |||
9(5) | 5 chiffres | 00000 | ttttt | |||
AAAA | 4 caractères alphabétiques | AB D | A-C1 | |||
AA99 | 4 caractères | AC01 | 01AC | |||
99XA | 4 caractères | 15-X | CD11 | |||
4. USAGE
La clause USAGE indique le mode de représentation des données à l'intérieur de l'ordinateur.
USAGE IS DISPLAY
C'est le mode de représentation utilisé par défaut.
Il indique en pratique que chaque caractère occupe un octet. L'usage ne peut être DISPLAY que si l'élément de donnée est: alphanumérique: PIC X(n) alphabétique: PIC A(n) numérique: PIC 9(n), utilisé à but d'identification et non pas de calcul.
Exemple:
77 NOM Est équivalent à: | PIC | A(20) USAGE IS DISPLAY. |
77 NOM | PIC | A(20). |
USAGE IS COMPUTATIONAL (COMP)
Pour les données numériques qui seront utilisées pour des calculs. COMP: seulement si la donnée est numérique et utilisée dans des calculs.
page 9/70
Exemple:
77 PRIX-UNIT PIC 99 COMP.
77 QTE-STOCK PIC 9(3) USAGE IS COMPUTATIONAL.
5. LES NUMERIQUES
Le symbole 9 décrit une donnée numérique.
Trois autres symboles sont nécessaires.
Le symbole V
Indique la présence d'un point décimal fictif (n'est pas réellement représenté).
Utilisé en conjonction avec le symbole 9.
Représente une marque décimale implicite qui ne compte pas dans la longueur de la donnée.
Figure une seule fois dans la description de la donnée.
Utilisé avec le USAGE DISPLAY et le USAGE COMP.
Exemple
77 TAUX-HORAIRE PIC 99V99.
TAUX-HORAIRE sur 4 positions dont deux après la virgule. (08,25)
77 PRIX-UNIT PIC 9(3)V99 COMP.
PRIX-UNIT sur 5 positions dont deux après la virgule. (002,28).
Le symbole S
Il indique la présence d'un signe.
Il doit être écrit le plus à gauche de la chaîne de caractères de picture.
Il ne compte pas dans la taille de la donnée.
Sans le symbole S, l'ordinateur génère toujours le signe + pour le nombre: sa valeur absolue.
Exemple
77 SOLDE PIC S9(3)V9(2).
77 BALANCE PIC S9999V99.
6. LES CARACTERES D'EDITION
Les caractères d'édition (B Z . , $ * ...) de la clause PICTURE sont inutilisables dans des calculs.
Toutefois, ils peuvent recevoir des résultats de calcul.
Ne jamais utiliser le USAGE COMP ou COMP-3 dans une clause PICTURE de caractères d'édition.
N.B: Dans la suite, le caractère b désigne un espace. 6.1 Le caractère B (blanc ou espace)
page 10/70
Représente la position d'un caractère espace.
Reformate les données lorsqu'elles sont affectées à une variable qui comporte ce picture d'édition.
Élément | Picture | Élément édité |
325 | 9B9B9 | 3b2b5 |
PERSONNE | ABBABA(6) | PbbEbRSONNE |
SOLDE-2 | XBXBXBXBX(3) | SbObLbDbE-2 |
Le caractère d'édition B sera insérer dans la chaîne de caractères.
Le caractère Z
Représente la position d'un caractère poids fort, caractère remplacé par un espace lorsqu'il s'agit d'un zéro non significatif.
Le caractère Z ne doit jamais être précédé par des caractères 9, espace ou zéro.
Élément | Picture | Élément édité |
120 | 9(4) | 0120 |
9(3) | 000 | |
120 | Z9(3) | b120 |
ZZ9 | bb0 | |
ZZZ | bbb | |
13 | ZZ9(2) | bb13 |
Le point décimal (.)
Représente la position d'un point décimal réel dans un champ.
Remplace le point décimal fictif (V).
Il ne peut jamais être le dernier caractère dans une clause picture.
Le caractère point décimal (.) entouré de deux caractères Z ne s'imprime pas si les deux Z représentent des zéros en tête.
Élément | Picture | Élément édité |
234 | 999.99 | 234.00 |
13,25 | ZZ.99 | 13.25 |
bbbbb | ||
0.01 | ZZ.99 | bb.01 |
page 11/70
La virgule
Représente le caractère virgule, qui sépare les chiffres d'un nombre par tranches de trois chiffres, de la droite vers la gauche.
Une virgule placée entre deux Z est aussi remplacée par un blanc si les deux Z représentent des zéros de tête.
Une virgule est remplacée par un blanc s'il n'y a que des blancs à sa gauche.
Élément | Picture | Élément édité |
36425 | 99,999 | 36,425 |
128 | ZZ,999 | bbb128 |
265,32 | ZZ,ZZZ.99 | bbb265,32 |
ZZ, | bbbbbbbbb | |
0.02 | ZZ,ZZZ.99 | bbbbbb.02 |
Le caractère $
Représente à l'édition de la donnée, lorsqu'il est unique et placé dans la position d'extrême gauche, un caractère signe $ dans cette position.
Élément | Picture | Élément édité |
123 | $999 | $123 |
013 | $999 | $013 |
30 | $ZZ9 | $b30 |
12.45 | $Z,ZZZ.99 | $bbb12.45 |
3265.12 | $Z,ZZZ.99 | $3,265.12 |
Lorsque plusieurs signes $ consécutifs sont placés à l'extrême gauche, $ flottant, un seul signe est édité, celui qui est placé à gauche du caractère le plus significatif du nombre.
Élément | Picture | Élément édité |
12 | $$9 | $12 |
4.12 | $$,$$$.99 | bbbb$4.12 |
0.01 | $$,$$$.99 | bbbbb$.01 |
Le caractère Astérisque (*)
page 12/70
Représente un caractère de protection à gauche, c'est-à-dire la suppression des zéros non significatifs et remplacement de chaque zéro par un astérisque.
Élément | Picture | Élément édité |
12 | ***9 | **12 |
3612.48 | $*,***,***.99 | $****3,612.48 |
0.00 | $*,***.** | $*****.** |
Le caractère zéro (0)
Représente un caractère zéro à insérer dans la position indiquer par le picture.
Élément | Picture | Élément édité |
138 | ZZ9000 | 138000 |
1280 | 999900 | 128000 |
3225 | $ZZ,ZZZ.00 | $b3,225.00 |
1 | $ZZ,ZZZ.00 | $bbbbb1.00 |
1 | $$$,$$$.00 | bbbbb$1.00 |
Le caractère (/)
Réserve un octet (le caractère /) dans le résultat édité.
Représenter la date.
Élément | Picture | Élément édité |
270194 | 99/99/99 | 27/01/94 |
Caractères de signe (+ -)
Le signe + à la fin de la chaîne picture entraîne toujours l'impression du signe du nombre qu'il soit positif ou négatif.
Le signe - n'est imprimé que lorsque la valeur éditée est négative. Les signes + et - peuvent être utilisés de manière flottante comme le signe $.
Élément | Picture | Élément édité |
-215.8 | ZZZ.9+ | 215.8- |
-215.8 | +ZZZ.9 | -215.8 |
2.1 | ++,+++.9 | bbbb+2.1 |
++,++9 | bbbb+0 | |
2.1 | --,---.9 | bbbbb2.1 |
32.4 | -ZZ.9 | b32.4 |
32.4 | ZZ.9- | 32.4b- |
-32.4 | -ZZ.9 | -32.4 |
page 13/70
-32.4 | ZZ.9- | 32.4- |
Les caractères de signe (DB CR)
Les symboles CR et DB (Crédit et Débit) peuvent être utilisés à droite d'une valeur numérique pour indiquer une valeur négative.
Élément | Picture | Élément édité |
12.48 | $Z,ZZZ.99CR | $bbb12.48bb |
13.28 | $Z,ZZZ.99DB | $bbb13.28bb |
-12.48 | $Z,ZZZ.99CR | $bbb12.48CR |
-13.28 | $Z,ZZZ.99DB | $bbb13.28DB |
8 LES VARIABLES STRUCTUREES
Les variables étudiées jusqu'à présent ont une caractéristique importante: l'indivisibilité de leurs valeurs.
Chaque valeur est manipulée comme un tout.
Lorsque les éléments de l'ensemble sont des variables élémentaires et que l'ensemble porte un nom collectif, on a une variable structurée sur laquelle on peut opérer soit obligatoirement soit au niveau de ses composants.
Les composants d'une variable structurée peuvent être des variables de type structurée et il est possible d'y accéder directement, quelle que soit leurs places dans la structure.
Pour définir une variable structurée, il faut préciser:
1. Son mode de structuration
2. Le ou les types de variables intervenant dans la structure.
EXEMPLE
01 LIGNE-EDITION.
1. numéro-de-niveau
Le numéro de niveau montre la hiérarchie des données.
Il pourra prendre une valeur allant de 01 à 49.
Le numéro de niveau 01 servira à identifier la première rubrique de chaque description d'une structure. Il devra commencer en zone A.
Les numéros de niveau des données dépendantes prendront des valeurs comprises entre 02 et 49, en permettant ainsi de refléter la hiérarchie des données.
Ils devront commencer en zone B.
page 14/70
2. nom-de-donnée
Le nom de donnée indiquera le nom attribué à la donnée décrite.
Ce sera le seul élément de description d'une donnée structurée.
Une donnée structurée a toujours une définition implicite:
1. Elle est alphanumérique.
2. Elle a pour longueur la somme des longueurs des données qui en dépendent.
3. Les données élémentaires d'une donnée structurée ne devront être décrites que dans l'ordre de leur apparition.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NOM PIC X(20).
77 PRENOM PIC X(15).
77 AGE PIC 99.
77 NUM-RUE PIC 9(3).
77 RUE PIC X(20). 77 VILLE PIC X(15).
77 CODE-POSTAL PIC X(6).
77 PAYS PIC X(15).
DATA DIVISION.
WORKING-STORAGE SECTION.
01 PERSONNE.
page 15/70
05 IDENTITE.
10 NOM PIC X(20). 10 PRENOM PIC X(15).
10 AGE PIC 99.
05 ADRESSE.
10 NUM-RUE PIC 999.
10 RUE PIC X(20). 10 VILLE PIC X(15). 10 CODE-POSTAL PIC X(6).
10 PAYS PIC X(15).
3.3 INITIALISATION DES DONNEES
3.3.1 VALUE
Le mot réservé VALUE suivi d'une valeur (littéral numérique ou alphanumérique, constante figurative) permet de définir une constante.
Exemple1
DATA DIVISION.
WORKING-STORAGE SECTION.
77 PI PIC 9V9(5) VALUE 3.14159.
77 TITRE PIC X(21) VALUE "BULLETIN".
Le littéral ou la constante figurative spécifiés après l'ordre VALUE devraient être de même type que la variable déclarée.
Exemple2
AGE <---- 05.
PRENOM <---- "JEANbbbbbbbb"
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DETAILS.
05 AGE PIC 99 VALUE 5.
05 PRENOM PIC X(12) VALUE "JEAN".
mots réservés = { IS ZEROS, IS SPACES, ZERO, SPACE, ALL caractère}
Exemple1
VALUE IS ZEROS.
VALUE SPACES.
page 16/70
VALUE ZERO.
VALUE ALL "*".
VALUE ALL "*-".
3.3.2 FILLER
Le mot réservé FILLER permet de définir, dans une variable structurée, une variable élémentaire à laquelle il est prévu de ne pas avoir accès.
Exemple1
DATA DIVISION.
WORKING-STORAGE SECTION.
01 ENTETE.
05 FILLER PIC X(5) VALUE "NOM: ". 05 FILLER PIC X(10) VALUE SPACES.
05 PIC X(8) VALUE "ADRESSE:".
05 FILLER PIC X(10) VALUE ALL "*". 05 PIC X(5) VALUE "TEL: ".
05 FILLER PIC X(10) VALUE SPACES.
9 PROCEDURE DIVISION
C'est la division de traitement. C'est dans cette division que l'algorithme sera traduit en instructions exécutables. Elle est constituée de sections et/ou de paragraphes.
Format général
PROCEDURE DIVISION. [NOM-DU-PARAGRAPHE.] INSTRUCTION-1.
INSTRUCTION-2.
...... ......
[APPEL PARAGRAPHE-2.]
......
......
INSTRUCTION-n.
STOP RUN.
[PARAGRAPHE-2.]
page 17/70
INSTRUCTION-1.
INSTRUCTION-2.
......
INSTRUCTION-n.
PROCEDURE DIVION
L'indicatif de cette division, PROCEDURE, doit être frappé dans la zone A.
NOM-DU-PARAGRAPHE
Nom du paragraphe principal (programme principal).
Optionnel.
LES INSTRUCTIONS
Les instructions du programme devraient commencer à la colonne 12 (zone B).
Chaque ligne comprendra une seule instruction.
STOP RUN
Indique la fin du programme principal.
Elle doit être tapée à partir de la colonne 12 (zone B).
Aucune autre instruction du programme principal ne doit être écrite après l'ordre STOP RUN.
PARAGRAPHE-2
Indique un bloc d'instructions.
Correspond à une procédure non paramètrée.
Exemple
PROCEDURE DIVISION.
DEBUT.
ADD 1 TO NOMBRE. PERFORM P-CUMUL VARYING CPT FROM 1 BY 1 UNTIL CPT = NOMBRE.
DISPLAY SOMME.
STOP RUN.
P-CUMUL.
ADD CPT TO SOMME.
REMARQUES:
Les noms de paragraphes devraient commencer dans la zone A.
Une seule instruction par ligne.
Décaler les instructions qui prennent plus qu'une ligne.
Ne pas oublier l'ordre STOP RUN à la fin du programme principal (dans la zone B).
page 18/70
10 LES INSTRUCTIONS D'ENTREE/SORTIE
Leur exécution provoque un transfert de données entre la mémoire centrale d'une part et les
unités d'entrée/sortie d'autre part.
ACCEPT
C'est l'ordre COBOL qui permet d'entrer des données dans la mémoire centrale à partir d'un terminal (CONSOLE) ou d'un fichier spécial (SYSIN).
Format1
ACCEPT nom-variable
ACCEPT NOMBRE FROM TERMINAL.
ACCEPT NOMBRE FROM CONSOLE.
Format2
ACCEPT nom-variable [ FROM { DATE, DAY, TIME, } ]
Cette instruction transfère dans la variable désignée la date, le jour ou l'heure.
Les données transférées sont de type numérique 9(n).
Elles sont représentées sur six (6) octets pour la date, cinq (5) octets pour les jours et huit
(8) octets pour l'heure.
Exemple1
DATA DIVISION.
page 19/70
WORKING-STORAGE SECTION.
77 DATE-DU-JOUR PIC 9(6).
PROCEDURE DIVISION.
ACCEPT DATE-DU-JOUR FROM DATE.
Par exemple, la date 25 Janvier 1993 sera représentée sous la forme: 930125.
Exemple 2
DATA DIVISION.
WORKING-STORAGE SECTION.
77 JOUR PIC 9(5).
PROCEDURE DIVISION.
ACCEPT JOUR FROM DAY.
Le système d'exploitation place la date julienne dans la variable JOUR. Elle sera représentée sous la forme AAJJJ ( JJJ >= 1 et JJJ <= 365).
25 janvier 1993 --> 93025
2 Février 1993 --> 93033
Exemple3
DATA DIVISION.
WORKING-STORAGE SECTION.
77 HEURE PIC 9(8).
PROCEDURE DIVISION.
ACCEPT HEURE FROM TIME.
L'heure du jour est un numérique sur 8 positions sous la forme HHmmsscc.
page 20/70
5H25mn3s25c (p.m) --> 17250325
DISPLAY
C'est l'ordre COBOL qui permet de transférer des données de la mémoire centrale au terminal (CONSOLE) ou à un fichier SYSOUT.
Format général
DISPLAY {constante, littéral, variable} [{constante, littéral, variable } … ]
Exemple1
PROCEDURE DIVISION.
DISPLAY "EXEMPLE DE TEST" .
DISPLAY TOTAL. DISPLAY "TOTAL = " TOTAL .
page 21/70
11 L'INSTRUCTION D'AFFECTATION MOVE
L'instruction d'affectation permet de transférer une donnée d'une zone de la mémoire centrale dans une autre zone.
L'instruction MOVE permet de copier le contenu d'une variable (élémentaire ou structurée) dans une ou plusieurs variables.
Le contenu de la variable émettrice reste inchangé par l'exécution de l'instruction
MOVE.
Le contenu des variables réceptrices sera remplacé par celui des variables émettrices.
L'exécution de l'instruction MOVE dépend du type (PICTURE) de la variable émettrice et réceptrice, du mode de représentation en mémoire (USAGE) et de la taille des variables.
Format général
{variable}
MOVE {littéral} TO variable1 [variable2 ...].
{constante}
4.2.1 Transfert des données élémentairesExemple1: Alphanumérique/Alphanumérique | |
77 A PIC X(5) VALUE | "CHAMP". |
77 B PIC X(5) VALUE | "DANS". |
77 C PIC X(6) VALUE | "NOMBRE". |
77 D PIC X(3) VALUE | "STR". |
-Les deux données ont la même longueur:
A= "CHAMP", B= "DANS"
MOVE A TO B.
A= "CHAMP", B= "CHAMP"
-Les deux données sont de longueurs différentes:
Longueur de la donnée émettrice est supérieur à celle de la donnée réceptrice.
C= "NOMBRE", D= "STR"
MOVE C TO D
C= "NOMBRE", D="NOM".
Longueur de la donnée émettrice est inférieur à celle de la donnée réceptrice.
D= "STR", C= "NOMBRE"
MOVE D TO C.
D= "STR" C= "STRbbb".
Exemple numérique/numérique édité
77 A PIC S9(4)V99 VALUE +2451.33.
page 22/70
77 B PIC S9(6)V99 VALUE +000431.75.
77 C PIC $$$,$$$.99-.
77 D PIC $***,***.99.
1.MOVE A TO C.
C= b$2,451.33b.