« COBOL/Structure du programme » : différence entre les versions

Contenu supprimé Contenu ajouté
Guillpetiot (discussion | contributions)
Guillpetiot (discussion | contributions)
→‎La structure du programme : refonte totale (+pédagogique j'espère)
Ligne 34 :
-----|----|-----------------------------------------------------------|---
 
== La structureStructure du programme ==
 
Un programme est constitué de divisions (4 au total), elles-mêmes constituées de sections. Elles permettent de structurer le programme, par exemple de séparer la définition des variables du reste du code.
 
Les 4 divisions qui composent un programme sont les suivantes :
Le langage COBOL qui date des années 1960-70, nécessite des contraintes de formalisme et de syntaxe beaucoup plus rigoureuses que les langages récents.
 
* IDENTIFICATION DIVISION, obligatoire, stocke les caractéristiques du programme (son nom par exemple). Elle doit obligatoirement contenir la clause PROGRAM-ID suivie du nom que vous donnez à votre programme, ce nom servira à le référencer : d'autres programmes pourront l'utiliser ;
Ainsi un certain nombre de mots-clés identifient les principales parties du programme et sont obligatoires.
* ENVIRONMENT DIVISION, facultative, définit l'environnement dans lequel s'exécute le programme ;
* Les DIVISION
* DATA DIVISION, facultative, sert a définir les variables utilisées par le programme ;
* Les SECTION
* PROCEDURE DIVISION, facultative, contient les instructions du programmes. Ces instructions sont regroupées en paragraphes, un paragraphe est formé d'un nom de paragraphe suivi d'un point, et d'une suite d'instructions, assimilées a des phrases, chaque phrase doit se terminer par un point.
* Les paragraphes
 
L'identifiant du programme, les noms de paragraphes et de variables sont une suite de caractères alphanumériques, pouvant contenir des tirets (pas d'espaces ou autres caractères spéciaux).
# '''IDENTIFICATION DIVISION'''
 
La fin d'un programme est signalée par la phrase END PROGRAM suivie du nom que vous avez donné à votre programme.
Elle permet d'identifier le programme.
Pour mettre fin à l'exécution du programme, vous avez à votre disposition l'instruction STOP RUN, celle-ci doit être la dernière instruction d'une phrase, elle provoque la fermeture de tous les fichiers.
Dans l'exemple ci-dessous les <font color="blue">commentaires sont en bleu</font>, et les <font color="red">mots réservés en rouge</font>.
Vous remarquerez que j'ai commencé par un bloc de commentaire comme tout bon programmeur {{sourire}}.
Elle permet de faire l'historique des évolutions.
 
Les différentes sections d'un programme seront détaillées dans les chapitres suivants.
<code><font color="blue">
7 12 72
-----|----|-----------------------------------------------------------|---
*================================================================*
* PROJET : *
* APPLICATION : *
* PROGRAMME : NOM, OBJET *
*================================================================*
* PERIODICITE D'EXECUTION : HEBDOMADAIRE,MENSUELLE,TRIM ETC.. *
* ENTREE : *
* nomtable (TABLE ..........) *
* nomfichier (FICHIER.........) *
* SORTIE : *
* nomtable (TABLE ..........) *
* nomfichier (FICHIER.........) *
* log (COMPTE RENDU D'EXECUTION) *
*================================================================*
* JOURNAL DES MISES A JOUR *
* ------------------------ *
*-------+---------------------------------------+--------+-------*
*DEMANDE! DESCRIPTION ! LE ! PAR *
*-------+---------------------------------------+--------+-------*
* ! CREATION...................... !../../..!.......*
*-------+---------------------------------------+--------+-------*
*================================================================*</font>
<font color="red">IDENTIFICATION DIVISION. </font>
<font color="blue">*----------------------- </font>
<font color="red">PROGRAM-ID.</font> $$$$$$.
<font color="red">AUTHOR..</font> NOM PRENOM.
</code>
 
===Code minimal===
# '''ENVIRONMENT DIVISION'''
 
000001 IDENTIFICATION DIVISION.
Elle décrit l'environnement logique sur lequel va travailler le programme : sur quel type de machine, de fichier(s), etc.
000002 PROGRAM-ID. premier-programme.
000003
000004 PROCEDURE DIVISION.
000005 paragraphe-principal.
000006 STOP RUN.
000007
000008 END PROGRAM premier-programme.
 
Ce programme, appelé premier-programme, ne contient qu'un paragraphe : paragraphe-principal ne contenant lui-même que l'instruction STOP RUN.
On y trouve les deux sections suivantes :
* CONFIGURATION SECTION.
* INPUT-OUTPUT SECTION.
 
===Hello World !===
## '''CONFIGURATION SECTION'''
 
Traditionnellement, quand on vous apprend un langage, on vous fournit un "Hello World !", c'est un programme qui se contente d'afficher cette chaîne de caractères sur la console.
Voici quelques exemples de paramétrage.
En générale, vous devrez utiliser les normes du site.
 
Pour afficher des données sur la sortie standard (la console), vous aurez besoin de l'instruction DISPLAY, elle s'utilise comme suit :
DECIMAL-POINT IS COMMA :
 
DISPLAY identificateur/littéral ... [NO ADVANCING]
- Permet d'indiquer que l'on utilise la virgule au lieu du point décimal lors des éditions.
 
Conformément à tout un tas de conventions d'écriture, ce qui figure entre crochets est optionnel, nous pouvons donc l'utiliser de 2 manières différentes :
CURRENCY SIGN IS "F" :
 
DISPLAY identificateur/littéral ...
- Permet d'indiquer au programme que l'unité monétaire, $ par défaut, sera remplacée par le "F"
DISPLAY identificateur/littéral ... NO ADVANCING
lors des éditions.
La valeur du caractère euros est X'9F'
 
NO ADVANCING est facultatif et permet de garder le curseur positionné immédiatement derrière le dernier caractère écrit.
 
Les identificateurs sont des noms de variables, les littéraux sont des données brutes, manipulées sans l'intermédiaire de variables, par exemple des chaînes de caractères (délimitées par des guillemets) ou des valeurs numériques. Voici donc un exemple de Hello World ! :
## '''INPUT-OUTPUT SECTION'''
 
000001 IDENTIFICATION DIVISION.
L'INPUT-OUTPUT SECTION précise, dans le paragraphe FILE-CONTROL, la description logique des fichiers utilisés dans le programme.
000002 PROGRAM-ID. premier-programme.
 
000003
<code><font color="blue">
000004 PROCEDURE DIVISION.
7 12 72
000005 paragraphe-principal.
-----|----|-----------------------------------------------------------|--- </font>
000006 hello-world.
<font color="red">ENVIRONMENT DIVISION. </font>
000007 DISPLAY "Hello World !".
<font color="blue">*----------------------- </font>
000008 STOP RUN.
<font color="red">CONFIGURATION SECTION.</font>
000009
<font color="red"> DECIMAL-POINT IS COMMA. </font>
000010 END PROGRAM premier-programme.
<font color="red"> CURRENCY SIGN IS</font> X'9F'. </font>
<font color="red">SPECIAL-NAMES.
INPUT-OUTPUT SECTION.
FILE-CONTROL. </font>
<font color="blue">*===============================================================*
* FICHIER ===> C R E X E C (FICHIER COMPTE RENDU) *
*===============================================================* </font>
<font color="red">SELECT</font> CREXEC <font color="red">ASSIGN TO</font> PHY_CREXEC
<font color="red">FILE STATUS IS</font> WW-STATUS1.
<font color="blue">*===============================================================*
* FICHIER ===> F $ $ $ $ $ $ (FICHIER F$$$$$$ ............) *
*===============================================================* </font>
<font color="red">SELECT</font> FICHIER1 <font color="red">ASSIGN TO</font> PHY_FICHIER1
<font color="red">ORGANIZATION IS</font> <font color="green"><type organisation></font>
<font color="red">ACCESS MODE IS</font> <font color="green"><type d'accès></font>
<font color="green"><type de clé></font><font color="red">KEY IS</font> <font color="green"><nom de la clé></font>
<font color="red">FILE STATUS IS</font> WW-STATUS2.
</code>
 
Dans l'exmple ci-dessus, nous definition l'euro comme monnaie et la virgule comme séparateur d'affichage des décimales.
 
Deux fichiers seront utilisés dans le programme.
 
Le fichier logique CREXEC est rattaché à un fichier physique PHY_CREXEC.
Celui-ci sera nommé dans le JCL.
 
Le deuxième fichier logique est FICHIER1.
 
En COBOL, il est possible de traiter plusieurs types de fichier.
C'est ce qui est précisé dans le paragraphe FILE-CONTROL. Les différents types de fichier seront développés dans un prochain chapitre.
 
 
{{Bas de page
| titre = Structure du programme
| idfaculté = informatique
| leçon = [[.../]]
| précédent = [[../Introduction au COBOL/]]
| suivant = [[../Mots Réservé/]]
}}
 
[[Catégorie:COBOL]]