COBOL: L’ECRITURE D’UN PROGRAMME AVEC REGLES DE CADRAGE
Cours et tutoriel Cobol / tuto Cobol en ligne / formation Cobol
Bienvenue à ce nouveau cours cobol (Cobol des années 70 pour apprendre la théorie et la logique de la programmation)
GENERALITES COBOL
Nous avons vu qu’il existe dans un programme des divisions, des sections, des paragraphes et des ordres Cobol.
Généralement les noms de division doivent commencer dans 1’une des colonnes 8 ã l1 inclus (cette zone s’appelle zone A) et être suivis du mot DIVISIØN et d’un point. Ils doivent être seuls sur la 1i-gne. Certains compilateurs sont plus restrictifs et imposent que les noms de divisions soient codés en colonne 8.
Les noms de section doivent commencer en colonne 8, et être suivis du mot SECTIØN et d’un point. Ils doivent être seuls sur la ligne.
Les noms-procédure doivent commencer en colonne 8 et être suivis d’un point et d’un blanc. Un ordre Cobol peut figurer sur la même 1i-gne en suivant les règles d’écriture qui lui sont propres.
L’ordre COBOL peut commencer ã partir de la colonne 12 jusqu’ã la colonne 72 incluse.
Remarque.
Dans le cas où l’écriture d’un littéral alphanumérique doit se poursuivre sur la ligne suivante, un trait d’union doit bien sûr figurer en colonne 7(colonne suite) mais une apostrophe doit être répétée avant d’écrire la suite du littéral, et ne peut pas figurer avant la colonne 12.
IDENTIFICATION DIVISION
Cette division, qui doit toujours être présente, est la première
D’un programme COBOL. Elle a pour rôle de 1’identifier. Cette division
Comprend une expression obligatoire contenant le nom du programme donné par le programmeur. C’est par ce nom que le système identifie le programme. Elle peut également contenir des expressions facultatives.
qui permettent de donner des renseignements sur 1’objet du programme et rendent plus aisée la lecture de celui-ci. En effet, ce sont des expressions optionnelles dont le compilateur ne tient pas compte, mais
qui apparaissent sur la liste du programme source. Lorsqu’elles sont utilisées, leur écriture doit être conforme au format décrit ci-dessous.
Cette division ne comprend que des paragraphes. Chaque paragraphe est composé d’un nom de paragraphe et d’un commentaire (nom du programme ou phrase) obéissant aux règles d’écritures définies précédemment.
La forme générale est:
IDENTIFICATIØN DIVISIØN.
PRØGRAM-ID.nom-du-programme.
AUTHØR.Zibellé.]
INSTALLATIØN.Libellé.]
DATE-WRITTEN.libellé.]
DATE-CØMPILED.libellé.]
SECURITY. libellé.]
REMARKS.libelé.]
Cobol: EXPRESSIONS OBL IGATOIRES
programme : c’est-a-dire PRØGRAM-ID.
Les règles de formation du nom de programme varient avec chaque constructeur.
a. CDC de la série 6000.
Le nom du programme est formé de 1 à 30 caractères alphanumériques, dont le premier doit être alphabétique. Le système ne prendra en compte que les sept premiers pour identifier le programme objet.
Exemples.
PRØGRAM-ID.ESSAI4523.
PRØGRAM-ID.A321.
Dans le premier cas, le compilateur affecte au programme objet le nom ESSAI45.
Remarque.
Lorsqu’il existe des sous-programmes auxquels fait appel le programme principal, les six premiers caractères des noms des sous-programmes doivent constituer une suite de caractères différente de celle formée par les six premiers caractères du nom du programme principal.
b. IBM de la série 360.
Le nom du programme est formé de l à 8 caractères alphanumériques dont le premier doit être alphabétique. De plus, le nom du programme doit être mis entre des guillemets ou apostrophes.
Exemple.
PRØGRAM-ID. ‘ESSAI45’.
c. UNIVAC de la série 1108.
Le nom du programme est formé de 5 à 30 caractères alphanumériques nt le premier doit être alphabétique. Seuls les 5 premiers sont pris en considération par le compilateur.
Le nom du programme esr formé d’au moins B caractères alphanumériques, le premier devant être alphabétique. Seuls les 8 premiers caractères sont pris en compte par le compilateur.
HONEYWELL BULL de la série GE 600
Le nom du programme est forme de l a 6 caractères alphanumériques dont un quelconque est obligatoirement alphabétique.
EXPRESSIONS OPTIONNELLES
Ces expressions n’affectent en rien 1’identification du programme. Ce sont des commentaires. Elles donnent des renseignements sur :
-1’auteur;
-1’installation sur laquelle est exploité le programme;
– la date d’écriture du programme;
– le but et éventuellement les conditions d’utilisation et de diffusion du programme.
L’option DATE-CØMPILED est traitée de façon particulière au moment de la compilation. En effet, la phrase qui suit cette expression est remplacée automatiquement par la date du jour. Ceci permet de classer chronologiquement les listes de mise au point du programme.
Exemple.
DATE-CØMPILED.QUEL JØUR SØMMES NØUS.
Après compilation sur la liste du programme figure :
DATE-CØMPILED.26/04/70.
(si le programme est compilé le 26 avril 1970).
Remarque.
Toutes ces expressions optionnelles sont identiques chez tous les constructeurs.
D’UNE IDENTIFICATION DIVISION / PROGRAMME COBOL
ENVIRONMENT DIVISION
C’est la seconde division d’un programme COBOL. Elle décrit les programmes source et pour exécuter le programme objet.
Cette division doit donner être modifiée, voire réécrite complète-quand on veut exécuter un programme sur un ordinateur diffèrent de celui pour lequel il a été écrit.
L’Environnement Division est divisée en deux sections, comprenant chacune différents paragraphes. Ce sont:
ENVIRØNMENT DIVISIØN.
CØNFIGURATIØN SECTIØN.
SØURCE-CØMPUTER. nom-d’ordinateur.
ØBJECT-CØMPUTER.nom-d’ordinateur.
SPECIAL-NAMES.clauses.1
La plupart des paragraphes de cette division peuvent contenir plusieurs clauses, qui, si on le désire, peuvent dans le programme être séparées par une virgule.
Elle est obligatoire et peut contenir au maximum trois paragraphes. c’est dans cette section que le programmeur décrit le calculateur utilisé et qu’il assigne des noms mnémoniques aux organes périphériques nécessaires ã 1’exécution du programme.
Ce paragraphe, également obligatoire, indique sur quel ordinateur le programme généré par le compilateur, c’est-ã-dire le programme objet, sera exécuté.
Généralement, la compilation et 1’exécution du programme se font sur le même ordinateur. Aussi, les noms d’ordinateurs figurant dans ces deux paragraphes sont-ils identiques.
Parfois, cependant, la compilation se fait sur un ordinateur et l’exécution se fait sur un autre. Il faut bien entendu que 1’ordinateur qui fait la compilation génère un programme objet dans le langage machine binaire de l’ordinateur qui exécutera le programme objet. Dans la pratique ceci se fait, le plus généralement, pour un ensemble d’ordinateurs d’un même constructeur. Aussi, les noms d’ordinateurs figurant dans ces deux paragraphes seront-ils différents.
C’est le dernier paragraphe de la Configuration Section. I1 n’est pas obligatoire, permet de donner des “noms spéciaux” ã certains fichiers du système, ã des caractères particuliers de contrôle d’impression, et de changer certaines conventions préétablies dans le système.
Ce paragraphe est assez différent d’un constructeur à 1’autre:
[ Littéral-non-numérique」 IS mnémonique1]…
[CONSOLE IS mnémonique3]
[CURRENCY SIGN IS Littéral]
[DECIMAL-POINT IS CØMMA]
Explications de ces clauses
Cette clause va permettre de définir un mnémonique (nom-donnée) représentant un littéral non numérique. Ce littéral non numérique est un caractère placé entre apostrophes. Ce caractère sert de caractère de contrôle dans un ordre d’écriture. Son utilité est expliquée dans le chapitre Procédure Division.
Cette clause permet de donner un mnémonique (nom-donnée) ã la console ou à un équipement périphérique déterminé. Les mnémoniques ainsi définis sont employés dans la Procédure Division dans des ordres particuliers d’entrée-sortie (ACCEPT et DISPLAY).
Le nom-hardware1 utilisé, ne pourra pas être employé dans une autre partie de 1’Environment Division.
Remarque:
Chez certains constructeurs CØNSØLE n’est pas considéré comme un hardware. On trouve alors la clause CØNSØLE IS mnémonique3 qui permet d’affecter à la console un nom-mnémonique.
symbole monétaire.
différent qui jouera exactement le même rôle que lui.
Cette clause est employée lorsque 1’on veut utiliser un symbole monétaire tel celui du franc par exemple. On pourra alors remplacer le signe $ par la lettre F.
Le symbole monétaire indiqué dans CURRENCY SIGN se substitue au $ à la fois dans 1’écriture des PICTURE (voir chapitre Data Division) et sur les états de sortie.
Nous avons vu en étudiant les littéraux-numériques que, suivant 1’usage anglo-saxon, c’est un point qui sépare la partie entière de la partie décimale d’un nombre. Dans cette écriture il s’agit donc d’un point décimal.
En utilisant la clause ci-dessus, on se soustrait ã la convention anglo-saxonne et 1’on revient ã la convention française. Ainsi, la virgule prend-elle la signification qu’a habituellement le point, celui-ci n’ayant plus alors de rôle particulier.
Notons toutefois, que les rôles du point et de la virgule ne sont pas changés en ce qui concerne la ponctuation.
Exemple:
Cette section n’est pas obligatoire, son nom ne figure que si l’on souhaite utiliser le paragraphe FILE-CØNTRØL ou 1’ensemble des paragraphes de cette section.
Elle va permettre de décrire éventuellement certaines caractéristiques des entrées et des sorties de l’information pour le programme considéré.
Les deux paragraphes qu’elle peut contenir sont FILE-CONTRØL et I-Ø-CONTRØL.
FILE-CØNTRØL
Ce paragraphe assigne à chaque fichier utilisé dans le programme un nom-hardware qui correspond ã l’équipement périphérique nécessaire et donne divers renseignements sur le mode d’enregistrement de ce fichier.
On devra donc trouver dans ce paragraphe autant de phrases qu’il y a de fichiers. Chaque phrase a la forme suivante :
SELECT
C’est le premier mot de la phrase écrite pour chaque fichier, et il est obligatoire. Cette phrase doit se terminer par un point,nom-fichier1 qui suit, est le nom-fichier choisi par le programmeur. Ce fichier est décrit ensuite dans la Data Division. A chaque phrase SELECT doit correspondre une description de fichier dans la Data Division et une seule, et inversement à tout fichier utilisé doit correspondre une phrase SELECT.
Cette clause indique que le Fichier dont il s’agit, n’est pas toujours nécessaire à l’exécution du programme. 11 s’agit toujours, dans ce cas, d’un flchier utilisé en lecture et dont le support est une bande magnétique, est une bande de magnétique présente ou non au moment de L’exécution du programme, qul indiquera si le fichier est présent ou ne
REMAINING
11 arrive assez souvent que deux fichiers d’un même programme soient identiques A tous points de vue, leurs noms seuls étant différents, Cela se produit, par exemple, dans le cas de mise ã jour d’un fichier séquentiel.
Cette clause va permettre de 1’indiquer et i1 suffira alors de ne décrire qu’un seul fichier dans la Data Division.
SELECT nom-fichier, RENAMING nom-fichier2
Cette clause va permettre de 1’indiquer et i1 suffira alors de ne décrire qu’un seul fichier dans la Data Division.
indique que le fichier, et le fichier, ont même description mais des supports physiques distincts, bien que de même nature. Cette clause Implique que le fichier ait été décrit précédemment par une autre phrase SELECT et que la description logique du fichier, ne se trouve pas dans la Data Division.
Cette clause n’existe pas chez tous les constructeurs.
ASSIGN
Ce verbe obligatoire est suivi d’un nom-hardware qui indique quel équipement est assigne au fichier. Chez quelques constructeurs, ce nom-hardware doit être complète par certaines spécifications permettant de préciser de quel type d’équipement il s’agit.
- VI.2.1.5. MULTIPLE REEL
Cette clause facultative ne s’applique qu’aux fichiers sur bandes magnétiques contenus sur plusieurs bobines. Elle n’a qu’une valeur de documentation pour le système et n’affecte en rien le code généré par le compilateur.
Nous avons vu que chaque fichier est formé d’enregistrement logiques groupés en enregistrements physiques(blocs).
Le verbe REBERVE permet de réserver plusieurs “buffers” supplémentaires (ALTERNATE AREAS).
entier indique le nombre de “buffers” supplémentaires, de taille identíque au “buffer” que réserve le compilateur.
RESERVE NØ indique qu’on ne réserve pas de “buffers” supplémentaires (1 seul “buffer” est alors réservé).
Remarque.
Lorsque la clause RESERVE est omise les compilateurs réservent généralement deux “buffer8”.
Quand cette clause n’est pas spécifiée dans la description du fichier, elle est considérée comme existant implicitement. Elle signifie que 1’on utilise un fichier ã organisation séquentielle ou, s’il s’agit d’un fíchier à organisation séquentielle indexée, qu’on va 1’utiliser en accès séquentiel. Il ne sera pas possible d’y avoir accès d’une autre façon dans le programme considéré.
VI.2.1.8. ACCESS MODE IS RANDØM
Cette clause doit obligatoirement être présente pour indiquer que le fichier est accessible en mode aléatoire. Elle doit être suivie d’une ou plusieurs autres clauses qui préciseront 1’organisation du fichier sur le disque magnétique.
qui permet a un fichier å organisation séquentielle indexée d’âtre accessible séquentiellement et aléatoirement dans le même programme.
La clause la plus utilisée en complément de la clause ACCESS NODE IS RANDOM est ØRGANIZATION MODEIS option.