Introduction au développement sous COBOL

Cours introduction au développement sous COBOL, tutoriel & guide de travaux pratiques en pdf.

Architecture d’un programme COBOL sous AS/400

La mise en page

Contrairement à la plupart des autres langages, développer en COBOL nécessite un respect rigoureux de la mise en page de vos programmes.
La colonne 7 peut contenir :
• une * : Pour une ligne de commentaire.
• un tiret : Pour marquer la coupure d’un mot réservé (instruction, etc.), d’une variable, d’un littéral
Le reste du programme ne peut être saisi qu’entre les colonnes 8 et 72. On peut distinguer les deux marges suivantes :
• La marge A (col. 8) : Pour le début des entêtes de division, de section, de fin de programme, les noms de paragraphes, les noms de paragraphes, les indicateurs de niveau tels FD …, les nombres de niveau 77 et 01.
• La marge B (col. 12) : Contient le reste du programme.

Structure d’un programme

Tout programme COBOL comporte quatre divisions. Dans la norme COBOL-85, seule la première division étant obligatoire.
• IDENTIFICATION DIVISION. : Contient le nom du programme (obigatoire), le nom de l’auteur du programme, date de création du programme, …
• ENVIRONMENT DIVISION. : Contient des informations sur l’environnement (matériel et logiciel) dans lequel le programme s’exécute.
• DATA DIVISION. : Contient la description des données qui sont traitées par le programme (variables, fichiers, paramètres, …).
• PROCEDURE DIVISION. : Contient la description des traitements à effectuer par le programme.
Exemple de programme affichant Bonjour tout le monde ! :
IDENTIFICATION DIVISION.
PROGRAM-ID. TESTPGM01.
* Programme TESTPGM01 Version 1.00 : AUTHOR. Faisel Chabli.
ENVIRONMENT DIVISION. CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-AS400.
OBJECT-COMPUTER. IBM-AS400.
DATA DIVISION.
PROCEDURE DIVISION.
DEBUT-PROGRAMME.
*****************
*
DISPLAY « Bonjour tout le monde ! ».
FIN-PROGRAMME.
***************
EXIT PROGRAM.
Les différents instructions de ce petit programme seront expliquées ultérieurement dans cet article.

Les éléments du langage

Les mots sont formés à partir des caractères alphanumériques sans dépasser 30 caractères.
Ces mots sont classés en 4 catégories comme suit :
• Les Mots réservés ou Mots-clés
• Les Mots-utilisateur
• Les Constantes
• Les Opérateurs

Les Mots réservés ou Mots-clés

Ces mots ont une signification précise pour le compilateur (ex. IDENTIFICATION, STOP, DISPLAY, ACCEPT …)

Les Mots-utilisateur

Ces mots sont créés par l’utilisateur et servent à identifier des objets du programme; on distingue :
• Les Noms de données : Ce sont les variables utilisées dans le programme (dans la PRCOEDURE DIVISION) et déclarées dans le WORKING-STORAGE.
• Les Noms-condition : : Précisent les valeurs que peuvent prendre une donnée
• Les noms de paragraphe et Noms de section en PROCEDURE DIVISION : Servent à identifier une séquence d’instructions.

Les Constantes

On distingue :
• Les Constantes figuratives : Certaines valeurs spécifiques ont des noms spéciaux et qui peuvent être
attribuées aux variables (exemples : ZERO, ZEROS, SPACE, SPACES, HIGH-VALUE, LOW-VALUE …
• Les Constantes littérales : Composées des Numériques (Chiffres de 0 à 9, signe + ou -, point décimal) et Non-numériques (Tous les caractères écrits entre  » « )

Les Opérateurs

On distingue :
• Les opérateurs arithmétiques : + – * / **
• Les opérateurs relationnels : >, >=, EQUAL TO , GREATER THAN …
• Les opérateurs logiques : AND, OR, NOT

Quelques notions importantes

La déclaration de variables

Définition de la variable en DATA DIVISION, WORKING-STORAGE SECTION ; 3 possibilités selon qu’on a affaire à une donnée élémentaire (niveau 77 ou 01), une donnée structurée (niveau 01), un nom-condition (niveau 88).
Exemple :
77 FIRSTNAME PIC XXXXXXXXXX.
01 77 LASTNAME PIC X(10).
AGE PIC 99 . VALUE « A TEST ».
77 VARIABLE PIC A(20)
77 QTE PIC 9(5) VALUE ZERO USAGE BINARY.
77 PI PIC 9V9(4) VALUE 3.1416 USAGE COMP.
77 JUSTESPACE PIC X(80) VALUE SPACES.
77 TRAIT PIC X(80) VALUE ALL « -« .
Les données alphabétiques (PIC A) et alphanumériques (PIC X) sont normalement alignées à gauche, alors que les données numériques (PIC 9) sont alignées à droite.

Les instructions de base

DISPLAY (Afficher)

Cette instruction permet l’affichage de littéraux et/ou du contenu de nom-données. 2 formats sont disponibles : le 2ème format permet le positionnement à l’écran mais il ne permet l’affichage que d’une donnée à la fois.
FORMAT 1 : DISPLAY donnée1 donnée2 … [WITH NO ADVANCING]
FORMAT 2 : non implémenté sur tous les compilateurs.
Exemple :
• DISPLAY « Hello  » LASTNAME
• DISPLAY « Entrez votre nom :  » NO ADVANCING
• DISPLAY « Azerty » AT 0514 WITH HIGHLIGHT
• DISPLAY « Menu du jour » AT LINE ligne COL colonne WITH BLANK SCREEN

ACCEPT (Saisir)

Permet d’introduire des données provenant généralement du clavier dans une variable utilisateur.
FORMAT 1 : ACCEPT MAVARIABLE
FORMAT 2 : Permet le transfert des date et heure-système dans une variable utilisateur :
ACCEPT nom-donnee FROM
• DATE : variable d’image 9(6) : date système au format AAMMJJ
• DAY : variable d’image 9(5) : date système au format AAJJJ (JJJ = n° jour dans l’année)
• DAY-OF-WEEK : variable d’image 9 : n° du jour dans la semaine (1=lundi, …, 7=dimanche)
• TIME : varibale d’image 9(8) : HHMMSSCC (Heures, minutes, secondes, centièmes)
4.2.3 – MOVE (instruction d’affectation)
La clause VALUE déjà vue permet d’affecter une valeur initiale (initialisation) à une variable lors de la déclaration en WORKING-STORAGE SECTION; mais pour affecter une valeur à une donnée en cours de programme il faut utiliser l’instruction MOVE.
Exemple :
MOVE MAVARIABLE1 TO MAVARIABLE2 [MAVARIABLE3 …]
Pour que l’instruction MOVE fonctionne correctement, il faut que l’élément émetteur et l’élément récepteur soient de types compatibles ; attention aux troncatures quand les images respectives ne sont pas de même longueur ; voici quelques exemples d’affectation.

Les instructions de calcul

Dans ces instructions de calcul (à part le MODULO), les données doivent toujours être des données numériques, et non pas des données d’édition (voir plus loin), sauf après GIVING.

ADDITION

On peut procéder des manières suivantes :
a. ADD MAVAR1 MAVAR2 … TO MAVAR-N
Exemple :
ADDX Y TO Z
Comme résultat : Z = Z + X +Y
b. ADD MAVAR1 MAVAR2 … GIVING MAVAR-N
Exemple :
ADD X Y GIVING Z
Comme résultat : Z = X +Y
SOUSTRACTION
On peut procéder des manières suivantes :
a. SUBTRACT MAVAR1 MAVAR2 … FROM MAVAR-N
Exemple :
SUBTRACT X Y 10 FROM Z
b. SUBTRACT MAVAR1 FROM MAVAR2 GIVING MAVAR-N
Exemple :
SUBTRACT X FROM Z GIVING Y
Comme résultat : Y = Z – X

MULTIPLICATION

On peut procéder des manières suivantes :
a. MULTIPLY MAVAR1 BY MAVAR-N
Exemple :
MULTIPLY MAVAR1 BY MAVAR2
b. MULTIPLY MAVAR1 BY MAVAR2 GIVING MAVAR3
Exemple :
MULTIPLY X BY Y GIVING Z
Comme résultat : Z = X * Y

DIVISION

On peut procéder des manières suivantes :
a. DIVIDE MAVAR1 BY MAVAR2
Exemple :
DIVIDE X BY Y
Comme résultat : Y = X / Y
b. DIVIDE VAR1 BY VAR2 GIVING VAR3
Exemple :
DIVIDE X BY Y GIVING Z
Comme résultat : Z = X / Y
c. DIVIDE VAR1 INTO VAR2
Exemple :
DIVIDE X INTO Y
Comme résultat : Y = Y / X
Les 4 instructions de calcul peuvent être terminées par la clause ROUNDED (arrondi).

COMPUTE

le COMPUTE est utilisé comme suit : COMPUTE VAR1 [ROUNDED] = expression mahématique
Exemple :
COMPUTE VAR1 = (VAR2 * VAR3)/VAR4

MODULO

L’instruction MOD peut être obtenue directement en COBOL grâce à l’instruction DIVIDE suivi de la clause REMAINDER (reste).
Exemple :
VAR1 VAR2 MOD VAR3
ça revient à faire :
DIVIDE VAR2 BY VAR3 GIVING VARX REMAINDER VAR1
La variable VARX doit être déclarée même s’elle ne sert à rien dans ce cas.

Les instructions de fin

L’instruction de fin de programme : STOP RUN

Cette instruction obligatoire provoque l’arrêt de l’exécution du programme et rend le contrôle au système d’exploitation; il n’est pas interdit d’utiliser plusieurs instructions STOP RUN dans un même programme, mais cette pratique est fortement déconseillée.

L’en-tête de fin de programme : END PROGRAM nom-programme

Cette en-tête (ce n’est pas une instruction) facultative sert à délimiter la fin du programme identifié dans le paragraphe PROGRAM-ID. nom-prog. Cet en-tête sert principalement à délimiter des sous-programmes imbriqués.

L’instruction de sortie de sous-programme : EXIT PROGRAM

Cette instruction indique la fin logique d’un sous-programme ou procédure appelée; elle rend le contrôle au programme appelant.

Les clauses de fin d’instruction : END-instruction[]

La plupart des instructions du COBOL 85 sont munies d’une clause facultative de fin d’instruction.
Exemple :
READ fichier AT END MOVE 1 TO fin-fich
DISPLAY « Fichier vide »
END-READ
Dans les anciennes versions COBOL, les clauses de fin d’instruction n’existaient pas; il était de règle de terminer chaque instruction par un point. Avec la version 85, il est possible d’écrire toute PROCEDURE DIVISION sans utiliser le point (sauf cas obligatoires : STOP RUN., marques de §, …). Nous utiliserons une syntaxe intermédiaire, commune, consistant à terminer les instructions par un point, sauf si elles constituent un bloc d’instructions incluses entre un nom-instruction et END-nom-instruction.

Les variables structurées

En algorythmique, on peut déclarer une variable strcuturée comme suit :
Var
VEHICULE : struct
NUM_IMMAT : struct
NUM1 : entier
NUM2 : chaîne(3)
DEPT : entier
fin-struct
MARQUE : chaine(30)
MODELE : chaine(30)
DATE_ACHAT : struct
JOUR : chaine(2)
MOIS : chaine(2)
AN : chaine(2)
fin-struct
fin-struct
Le nom de donnée FILLER permet de définir, dans une donnée structurée, une donnée élémentaire à laquelle il est prévu de ne pas avoir accès; évite d’avoir à imaginer un nom de variable à laquelle on n’aura pas à faire référence dans le programme (intéressant pour l’édition).
La structure principale est toujours considérée comme étant de type alphanumérique, même si les variables élémentaires qui la constituent sont de type numérique !

I – Introduction
II – Configuration de l’environnement de travail
2.1 – Présentation
2.2 – Architecture de l’environnement de travail
2.2.1 – Description de l’environnement utilisé
2.2.2 – Création des différents objets prérequis
III – Architecture d’un programme COBOL sous AS/400
3.1 – La mise en page
3.2 – Structure d’un programme
3.3 – Les éléments du langage
3.3.1 – Les Mots réservés ou Mots-clés
3.3.2 – Les Mots-utilisateur
3.3.3 – Les Constantes
3.3.4 – Les Opérateurs
IV – Quelques notions importantes
4.1 – La déclaration de variables
4.2 – Les instructions de base
4.2.1 – DISPLAY (Afficher)
4.2.2 – ACCEPT (Saisir)
4.2.3 – MOVE (instruction d’affectation)
4.3 – Les instructions de calcul
4.3.1 – ADDITION
4.3.2 – SOUSTRACTION
4.3.3 – MULTIPLICATION
4.3.4 – DIVISION
4.3.5 – COMPUTE
4.3.6 – MODULO
4.4 – Les instructions de fin
4.5 – Les variables structurées
4.6 – Les tableaux
4.7 – Les instructions de manipulation des chaînes
V – Exemple de programme simple
5.1 – Création du programme
5.2 – Codage du programme
5.3 – Compilation et exécution du programme
VI – Exemple de programme plus avancé
6.1 – Création du programme
6.2 – Codage du programme
6.3 – Compilation et exécution du programme
VII – Conclusion

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *