GENERALITES COBOL-L’ECRITURE D’UN PROGRAMME SUR LE BORDEREAU
Tutoriel cobol ( issu des débuts de l’informatique et destiné aux chercheurs sur l’histoire de la technologie) : REGLES DE CADRAGE POUR L’ECRITURE D’UN PROGRAMME SUR LE BORDEREAU DE PERFORATION
Tutoriel Cobol … Comment était l’informatique des années 70 ?
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.
Cobol: 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’identifié. 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.Zibellé.]
DATE-CØMPILED.Zibellé.]
SECURITY. libellé.]
REMARKS.Zibelé.]
EXPRESSIONS OBLIGATOIRES
programme : c’est-à-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.
d.CII de la série IRIS 50.
Le nom du programme en format d’au moins B caractères alphanumériques sont pris en compte par le compilateur.
e.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.
Cobol : EXEMPLE RECAPITULATIF D’ECRITURE D’UNE IDENTIFICATION DIVISION
PROGRAMME COBOL
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-125-1024x484.png)
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-126-1024x125.png)
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 donc ê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’Environnent Division est divisée en deux sections, comprenant chacune différents paragraphes. Ce sont:
-Configuration Section.
-Input-Output Section.
Seule la première est obligatoire.
La forme la plus générale de 1’Environment Division est la suivante:
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
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-127.png)
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.
Cobol / CØNFIGURATIØN SECTIØN
Elle est obligatoire et peut contenir au maximum trois paragraphes. C’est dans cette section que le programmeur décrit le calculateur et qu’il assigne des noms mnémoniques aux organes périphériques nécessaires ã 1’exécution du programme.
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-128.png)
Ce paragraphe obligatoire indique quel ordinateur est utilisé pour compiler le programme. I1 s’agit d’une information purement documentaire. Nous avons par exemple:
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-129.png)
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.
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-130.png)
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 a 1’autre.
[ Littéral-non-numérique」 IS mnémonique1]…
Cobol / Explications de ces clauses
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-131.png)
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 Procedure Division.
VI.1.3.2. nom-harduare1 IS mnémonique2
Cette clause permet de donner un mnémonique (nom-donnée) ã la con-sole ou à un équipement périphérique déterminé. Les mnémoniques ainsi définis sont employés dans la Procedure Division dans des ordres parti-culiers 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 per-met d’affecter à la console un nom-mnémonique.
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-132.png)
Symbole monétaire.
Différent qui jouera exactement le même rôle que lui.
0123456789
ABCDEJKLPRSVXZ
+-*,•;()’blanc
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.
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-133.png)
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 vir-gule 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 :
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-134.png)
VI.2. INPUT-ØUTPUT SECTIØN
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 paragra-phes de cette section.
Elle va permettre de décrire éventuellement certaines caractéris-tiques des entrêes et des sorties de l’information pour le programme considere.
Les deux paragraphes qu’elle peut contenir sont FILE-CONTRØL et I-Ø-CONTRØL.
VI.2.1.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 fi-chier.
On devra donc trouver dans ce paragraphe autant de phrases qu’il y a de fichiers. Chaque phrase a la forme suivante :
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-135-896x1024.png)
Nous avons voir la signification de chacun des termes utilisés.
VI.2.1.1. 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 Divi-sion et une seule, et inversement à tout fichier utilisé doit corres-pondre une phrase SELECT.
SELECT nom-fichier, RENAMING nom-fichier2
indique que le fichier, et le fichierg ont même description mais des aupporta phyaiques distincts, bien que de même nature. Cette clause Implique que le fichierg 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.
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-137.png)
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 complete 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.
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-138.png)
Nous avons vu que chaque tichier est forme d’enregistremente o moire centrale pour ce buffer.
verbe REBERVE permet de resérver plusieurs “buffers” supplementaires (ALTERNATE AREAS).
entter 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”.
VI.2.1.7. ACCESS MØDE IS SEQUENTIAL
Quand cette clause n’est pas spécifiée dans la description du fi-chier, elle est considérée comme existant implicitement. Elle signifie que 1’on utílise 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 au-tre 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.
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-139.png)
On ne la trouve que chez les constructeurs ayant plunieurs modes d’organisation en accès alêatoire et elle indique, dans ce can, le mode choisi pour l’organisation des fichiers.
Il est necessaire de se reporter au manuel de référence des cons-tructeurs pour connaître 1’emploi exact de la clause ØRGANIZATIØN chez chacun d’eux.
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-140.png)
Cette clause est obligatoire lorsque la clause ACCESS MØDE IS RANDØM est presente.
Suivant le mode d’organisation utilisé, une ou plusieurs clauses de ce type sont nécessaires pour un seul fichier.
Les options ACTUAL, RECØRD, SYMBØLIC, sont obligatoires et defi-nissent le type de clé. Elles ont des significations différentes chez chaque constructeur et il est, lầ aussi, nécessaire de se reporter aux manuels de référence spécifiques. Les exemples donnés à la fin de ce chapitre illustrent les particularités chez CDC et IBM.
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-141.png)
Ce paragraphe facultatif a un contenu et une forme três variable suivant les constructeurs. Il permet le plus souvent les fonctions sui-vantes:
1) Utilisation en commun de buffers, par plusieurs fichiers.Ceci permet une meilleure utilisation de la mémoire centrale, mais n’est possible que si les différents fichiers sont utilisés l’un aprês l’au-tre, et jamais simultanément.
3) Indication de points de reprise et des conditions s’y rappor tant pour un fichier donné.
Pour les programmes longs, qui nécessitent beaucoup de tempe ma-raenemoire centrale, ainsi que d’autres renseignements nécessaires de En effet, ceci est couramment utilisé lorsque le programmeur pense eisque de se produire des incidents dans la suite du traitement. e ce fait, si de tels incidents arrivent, il ne sera pas nécessairet de recommencer le programme dês le début mais seulement a partir de endroit où 1’on a realisé la sortie des renseignements (point de re prise). Les points de reprise sont conditionnés, la plupart du temps, par le nombre d’enregistrements traités pour un fichier donné.
Remarque.
Les fonctions décrites ci-dessus n’existent pas obligatoirement chez tous les constructeurs mais sont toutefois les plus usuelles. Certains constructeurs peuvent aussi en avoir d’autres.
VI.3. EXEMPLE RECAPITULATIF D’ECRITURE D’UNE ENVIRØNMENT DIVISION
Nous nous proposons d’écrire 1’Environment Division d’un programme qui doit traiter 6 fichiers.
Fichiers d’entrée
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-142.png)
Ces fichiers ont été préalablement créés et sont ã la disposition de 1’utilisateur.
Fichiers de sortie
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-143.png)
Sur tous ces fichiers de sortie,on désire que le point décimal soit remplacé par la virgule, et que, de plus, le signe $ soit rempla-cé par la lettre F.
Remarque.
– Nous desirons également entrer ã l’aide de la console certaines valeurs lors de l’exécution du programme, ce qui implique d’affecter dans l’Environment Division un nom-hardware ã la console.
– D’autre part, le fichier FICH-ENTREE étant constitué de plu-sieurs bandes magnétiques, nous voulons prévoir des reprises dans le programme ã chaque fin de bande. Ceci est explicité dans le paragra-phe I-Ø-CONTRØL.
Nous donnons ici deux exemples d’écriture de 1’Environment Divi-sion pour ce problême. L’un est relatif ã l’ordinateur CDC 6600, 1’au-tre à l’ordinateur IBM 360/50.
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-144-1024x366.png)
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-145.png)
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-146.png)
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-147.png)
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-148.png)
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-149.png)
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-150.png)
V1.3.1.Explications de Pesemple CDC 6600,
651
Carten n° 001010 3 001070
Carte n” 001110
Carte n” 001130
Carte n”001150
Carte n” 001210
Carte n”001230
Carte n” 001250
Carte n”001270
Carte n° 002010
Carte n° 002030
Carte n° 002050
Carte n° 002070
Carte n° 002090
1definition de ‘ordinateur utilise pour ls eompilation du progranme et son exe-
affectation do nom-hardware CLAVIER A la console.
remplacement du point decimal par la virgule.
I remplacement du signe $ par la lettre F.
affectation au fichier de sortie systeme (qui, chez CDC, a pour nom-réservé MUTPUT) du fichier de sortie LISTE-SØR-TIE.
:affectation au dérouleur de bande de nom-hardware BANDEI, du fichier d’entrée FICH-ENTREE.
:indique que le fichier est constitué de plusieurs bobines.
: permet de réserver un buffer de lecture 5 fois plus grand que celui normalement prévu par le systême, afin de rendre la lecture plus rapide.
: affectation ã une zone du disque magne-tique de nom-hardware DISQUE1,du fi-chier de sortie FICHIER-1.
: indique que le fichier contient au maxi-mum 100 articles.
: indique que ce fichier est ã organisa-tion ã accês direct.
: indique que la clé est numérique de va-leur nécessairement comprise entre 1 et 100 et ne figure pas dans l’article lui-même. C’est le mot ACTUAL qui signifie numérique. Le nom-donnée VALEUR qui doit être défini dans la WØRKING-STØRAGE SECTIØN devra recevoir la valeur de la clé de 1’enregistrement avant que ce dernier soit écrit sur le disque.
: affectation à une zone du disque magné-tique de nom-hardware DISQUE2,du fi-chier d’entrée FICHIER-2.
Carte n° 002090
1definition de ‘ordinateur utilise pour ls eompilation du progranme et son exe-
affectation do nom-hardware CLAVIER A la console.
remplacement du point decimal par la virgule.
I remplacement du signe $ par la lettre F.
affectation au fichier de sortie systeme (qui, chez CDC, a pour nom-réservé MUTPUT) du fichier de sortie LISTE-SØR-TIE.
:affectation au dérouleur de bande de nom-hardware BANDEI, du fichier d’entrée FICH-ENTREE.
:indique que le fichier est constitué de plusieurs bobines.
: permet de réserver un buffer de lecture 5 fois plus grand que celui normalement prévu par le systême, afin de rendre la lecture plus rapide.
: affectation ã une zone du disque magne-tique de nom-hardware DISQUE1,du fi-chier de sortie FICHIER-1.
: indique que le fichier contient au maxi-mum 100 articles.
: indique que ce fichier est ã organisa-tion ã accês direct.
: indique que la clé est numérique de va-leur nécessairement comprise entre 1 et 100 et ne figure pas dans l’article lui-même. C’est le mot ACTUAL qui signifie numérique. Le nom-donnée VALEUR qui doit être défini dans la WØRKING-STØRAGE SECTIØN devra recevoir la valeur de la clé de 1’enregistrement avant que ce dernier soit écrit sur le disque.
: affectation à une zone du disque magné-tique de nom-hardware DISQUE2,du fi-chier d’entrée FICHIER-2.
160
Carte n° 002110
Carte n°002130
Carte n° 002150
Carte n° 002170
Carte n° 002190
Carte n° 002210
Carte n° 002230
Carte n° 002250
Carte n° 002270
Carte n° 003030
ENVIRONMENT DIVISION
:indique que le fichier contient au maxi. mum 50 articles.
: indique que ce fichier est a organisa-tion ã accês direct.
:indique que la clé est alphanumerique et ne figure pas dans l’article lui me-ne. c’est le mot SYMBOLIC qui signifie alphanumérique. Le nom-donnée LIBELLE qui doit être défini dans la WORKING-STØRAGE SECTIØN devra recevoir la va-leur de la clé de 1’enregistrement avant que ce dernier soit lu sur le disque.
: affectation ã une zone du disque magne-tique, de nom-hardware DISQUE3, du fi chier de sortie FICHIER-3.
:indique que ce fichier est à organisa-tion séquentielle indexée.
:permet de réserver un buffer de lecture 20 fois plus grand que celui normalement prévu par le systême.
: affectation ã une zone du disque magné-tique de nom-hardware DISQUE4 du fichier d’entrée FICHIER-4.
:indique que ce fichier est à organisa-tion séquentielle indexée.
: permet de réserver un buffer de lecture 25 fois plus grand que celui normalement prévu par le systême.
:permet de faire des points de reprise à chaque fin de bande. C’est le système qui définit le nom des fichiers qui con-tiendront les renseignements nécessai-res ã l’exécution de ces reprises.
Remarque 1.
Chez CDC la gestion des fichiers ã organisation séquentielle in-dexée se fait par un ensemble de sous-programmes du systême, auxquels on a accês par des instructions de la Procedure Division. C’est la rai-son pour laquelle on ne définit pas la structure des clés dans 1’En-vironment Division.
Remarque 2.
Dans la File Section, on se spécifie pas si les fichiers affectés aux bandes magnétiques ou aux disques magnétiques, sont utilisés en entrée ou en sortie. Ces informations ne sont précisées que dans la Procedure Division, dans les instructions d’ouverture des fichiers.
![](https://lecoursgratuit.com/wp-content/uploads/2022/08/image-151.png)