Module A206 Programmation fichiers – COBOL Chapitre 1

Transcription

Module A206 Programmation fichiers – COBOL Chapitre 1
Campus International e-mi@ge
Module A206 : Programmation fichiers - COBOL
Campus International e-mi@ge
Module A206 : Programmation fichiers - COBOL
Introduction au module - version V3
Sommaire :
Module A206
(version V3)
Mise en garde
Présentation
Plan
Participants
Notations
Bibliographie
Cours Web
Outils
En guise de conclusion... provisoire
Mise en garde
Programmation fichiers – COBOL
Chapitre 1
Ce module en est à sa troisième version. L'essentiel de nos interventions entre la V1 et la V2 s'était concentré sur
la production de solutions aux exercices, devoirs... C'est ainsi que, maintenant, tous les exercices d'application
(ils constituent la section 2 du chapitre 6) et les épreuves en temps limité (ils constituent la section 5 de ce même
chapitre 6) disposent d'une solution en ligne. L'apport de la version V3 concerne essentiellement COBOL et les
bases de données. Dans cette version, nous donnons (enfin !) du contenu au chapitre 4, prévu depuis l'origine de
ce module mais pas encore rédigé. Cette lacune est maintenant corrigée.
Par contre, comme dans la V1, les travaux dirigés et les travaux pratiques n'ont toujours pas de solution en ligne.
Ceci est volontaire. Nous persistons, en effet, dans notre approche de l'enseignement à distance, qui consiste à
contraindre l'apprenant à contacter les tuteurs avant de voir les solutions. Ceux-ci ont reçu comme consigne de
ne pas fournir de corrigé avant d'avoir obtenu des étudiants une réponse aux problèmes posés. C'est ce que nous
appelons le "Work for View".
Introduction
Nous avons aussi, dans la version V2.4, ajouté quelques informations relatives aux organisations de fichiers et
avons notablement amélioré les versions imprimables de ce cours. Dans la version V2.5, nous avons ajouté une
rubrique Avis des lecteurs permettant à tous de se faire une opinion. La version suivante, la V2.6, contient
plusieurs photos (de carte perforée, d'une trieuse, d'une perforatrice, d'un bordereau de saisie d'un programme...).
Celles-ci permettent de se faire une idée de ce qu'était la "vie" des programmeurs COBOL de cette époque.
Quelques erreurs résiduelles ont également été corrigées.
La version V3, nous l'avons déjà dit, est consacrée aux bases de données. Elle comprend, après un bref rappel
des notions essentielles des bases de données et du code SQL, une présentation des techniques à appliquer pour
insérer des instructions SQL dans un programme COBOL. Nous avons aussi corrigé les quelques erreurs que
nous avons pu trouver ou que vous nous avez signalées. Nous avons, enfin, revu la présentation des vieux
"matos" et ajouté un paragraphe qui explique comment marchaient les "perfos" (c'est ainsi que nous appelions
ces machines perforatrices).
Alain Vailly
[email protected]
Bien que représentant un plus par rapport à la première version, ce module est encore imparfait. Des
améliorations sont encore possibles. Nous travaillons sur certaines. C'est aussi, pour nous, une première
expérience d'enseignement à distance. Il y a donc sans doute des transmissions de connaissances à revoir. Aussi,
nous demandons à tout lecteur de ne pas hésiter à prodiguer remarques et conseils aussi bien sur le fond que sur
la forme.
Document rédigé par Alain VAILLY, le 16/10/12 à 15:10
Page 1 / 8
Document rédigé par Alain VAILLY, le 16/10/12 à 15:10
Page 2 / 8
Campus International e-mi@ge
Module A206 : Programmation fichiers - COBOL
Campus International e-mi@ge
Module A206 : Programmation fichiers - COBOL
Présentation
Ce module est dédié au langage COBOL. Il peut paraître surprenant de trouver ici, dans un dispositif moderne
d'enseignement destiné à la formation d'informaticiens, un module consacré à un langage âgé de près de quarante
années. Au rythme des changements de technologies informatiques, COBOL est un véritable dinosaure. Il
convient toutefois de réaffirmer avec force que, si le langage est ancien, des programmes COBOL sont encore
exécutés tous les jours dans les entreprises. Nombre de nos étudiants ont déjà repris des applications vieillottes
(le passage de l'an 2000, à cet égard, a été significatif). Gageons que les promotions à venir le feront également.
Or, et "l'ancien" que je suis le déplore, COBOL a disparu de beaucoup de programmes de formations
universitaires et/ou scolaires. Il est certes évident qu'on peut l'apprendre tout seul, sur le tas, avec une brochure
constructeur ; c'est toutefois plus facile lorsque l'on dispose d'un cours rédigé, d'exercices, de corrigés...
Ayant enseigné ce langage il y a ... des lustres, et l'enseignant encore en Licence MIAGE à l'Université de
Nantes, il me revenait tout naturellement la tâche de transmettre ce savoir, ces pratiques, aux étudiants actuels et
futurs et également à nos jeunes collègues. Ce module a donc aussi comme objectif le passage de témoin entre le
"vieux" que je suis et les "petits jeunes". Puisse-t-il remplir ce rôle.
Plan
Après un rapide retour arrière permettant de (re)situer ce langage dans le temps et de préciser les enjeux de la
maîtrise de sa pratique, le langage lui-même est présenté.
Un langage, quel qu'il soit, n'étant qu'un outil de communication, la programmation répondant à un objectif
précis (celui de faire exécuter par un ordinateur une succession ordonnée d'actions), COBOL est ensuite étudié
au travers du filtre de la manipulation de fichiers (qu'il s'agisse de fichiers séquentiels ou de fichiers indexés).
Divers problèmes courants sont abordés, comme le parcours d'un fichier séquentiel ou indexé -ce dernier
pouvant être effectué "sur" la clé primaire ou "sur" une clé secondaire-, la mise à jour d'un fichier séquentiel ou
indexé...
Les bases de données étant incontournables, les programmes COBOL y étant "confrontés", nous montrons
comment l'on fait, dans un programme COBOL, pour "attaquer" une base de données. Ce langage est
suffisamment "souple" pour pouvoir embarquer du code étranger (i.e. rédigé dans un autre langage). Appliqué
aux bases de données, cela se traduit par du code SQL inséré dans du code COBOL.
La programmation est un acte relevant du Génie logiciel. Il est donc naturel d'évoquer, dans un enseignement
relatif à un langage de programmation, quelques "trucs et astuces" pour bien programmer, qu'il s'agisse de
normes de programmation ou d'utilisation de bibliothèques de modules de lignes COBOL.
Des exercices, quelques sujets d'examen, une bibliographie complètent ce module, dont il faut rappeler ici le
caractère provisoire et inachevé. Dans la plupart des cas, des solutions sont fournies, avec un accent mis sur
l'algorithme.
La structure de ce cours peut être schématisée ainsi :
Plusieurs de ces parties peuvent être "sautées" en fonction des objectifs des apprenants. Le minimum minimorum
correspond à la section 2, dans laquelle la syntaxe du langage lui-même est abordée. Le reste (ie. les autres
sections) seront choisies en fonction des besoins.
Participants
Responsable du module : Alain Vailly (IUP-MIAGE de Nantes)
Participants : Alain Vailly (IUP-MIAGE de Nantes), Alain Bidault (IUP-MIAGE de Nantes) et Jean-Marie
NORMAND (Université de Nantes). Ce dernier a bien volontiers pris un peu de son temps de moniteur pour
créer, à partir des pages Internet, une version pdf du cours qui se révèle fort utile aux étudiants et donc fort
appréciée par eux.
Document rédigé par Alain VAILLY, le 16/10/12 à 15:10
Page 3 / 8
Document rédigé par Alain VAILLY, le 16/10/12 à 15:10
Page 4 / 8
Campus International e-mi@ge
Module A206 : Programmation fichiers - COBOL
Campus International e-mi@ge
Module A206 : Programmation fichiers - COBOL
Remerciements à Marc Bensmaine, ancien collègue de travail, ayant pendant de nombreuses années assuré cet
enseignement à l'IUP MIAGE de l'Université de Nantes, parti depuis à la retraite et à Marc Guyomard pour sa
contribution à la définition propre de l'algorithmique de fichiers. Le cours qu'il a dispensé dans les années 198090, au département Informatique de l'IUT de Lannion, et le polycopié qu'il a pris la peine de rédiger ont servi de
bases au chapitre consacré à la cinématique de fichiers. Remerciements, enfin, à tous les étudiants qui ont "subi"
cet enseignement et qui nous ont fait la grâce de ne pas trop s'en plaindre.
Bibliographie
Notations
Des livres traitant du langage COBOL, il y en a plein. Le site http://www.grandsysteme.com/ en recense un
certain nombre (il fournit aussi une série de liens sur des sites proposant des livres COBOL). Le site
http://www.programmingtutorials.com/cobol.aspx en recommande six, tous en anglais.
Décrire un langage, quel qu'il soit, requiert ce qu'il est convenu d'appeler un métalangage, un langage pour
décrire le langage. Celui que nous utilisons ici est classique. En voici un exemple, explicitant l'ordre WRITE qui
sert pour écrire une ligne dans un fichier séquentiel :
NB : cette rubrique a été rédigée en mai 2004. Les informations qu'elle contient, notamment celles résultant de
recherches sur Internet, sont datées, c'est-à-dire qu'elles correspondent à ce que nous avions trouvé sur le Net à
cette époque. Ces données numériques auront sûrement changé lors de votre consultation.
Le COBOL Center Bookstore répertorie soixante dix-huit livres, tous en anglais, classés en neuf catégories :
Aide aux informaticiens cherchant du travail (sic !), COBOL pour débutants, COBOL pour programmeurs
confirmés, Bases de données, Programmation structurée, Gros systèmes, CISC et IMS, PC et client/serveur,
Objets.
Le site Internet de vente en ligne de livres Amazon.fr recense 111 titres français "autour" de COBOL. Sur ces
111, moins d'une dizaine étaient disponibles en mai 2004. Le même site fournit pas moins de 789 références
d'ouvrages anglais. Celui qui figure en page d'accueil est le suivant :
Il est publié aux Éditions Eyrolles, en est à sa quatrième édition -un gage de succès- et contient un compilateur
Fujitsu 4.0. Il coûtait, en mai 2004, moins de quarante euros.
Voici la symbolique utilisée :
•
•
•
•
•
un mot souligné est un mot obligatoire ;
un [bout de phrase entre crochets] correspond à un morceau optionnel ;
un mot en MAJUSCULES est un mot réservé COBOL ;
un mot Capitalisé est une variable. Le programmeur doit l'instancier.
un groupe de mots ou un groupe de groupes de mots entre {accolades} -en général, ils vont par pairescorrespond à un choix à faire.
7A
C. LAMONTAGNE, COBOL : du PC au mainframe, Loze-Dion éditeur Inc, Montréal (Québec), 1998,
ISBN n° 2-291180-52-9.
L.R. NEWCOMER, Programmation en COBOL structuré, Série SCHAUM, Mac Graw Hill, Paris, ISBN 27042-1107-8, 1992
Voici quelques instructions WRITE conformes à ce que nous avons écrit précédemment :
1
Pour rédiger ce cours, nous avons utilisé les ouvrages suivants :
B
WRITE LIGNE
S.M. BERNARD, System 360 Cobol, Prentice Hall, inc. Englewoods Cliffs, New Jersey, 1968
WRITE LIGNE FROM ZONE
R.L. JONES, Fundamental Cobol for IBM system/360, Prentice Hall, inc. Englewoods Cliffs, New Jersey, 1969
WRITE LIGNE AFTER 3
Y. TALLINEAU, Cobol, langage simple de programmation, Editions Sedes Informatique, Paris, 1970
WRITE LIGNE BEFORE ADVANCING PAGE
J.L. GROBOILLOT, M.A. LEBLANC et J. CICUREL, Cobol initation pratique, Collection L'informathèque,
Ent. moderne d'édition, Paris, 1970
Mario V. FARINA, Cobol simplified, Prentice Hall, inc. Englewoods Cliffs, New Jersey, 1968
C. BONNIN, Le COBOL A.N.S avec exercices pratiques et corrigés, Editions Eyrolles, 1984
Document rédigé par Alain VAILLY, le 16/10/12 à 15:10
Page 5 / 8
Document rédigé par Alain VAILLY, le 16/10/12 à 15:10
Page 6 / 8
Campus International e-mi@ge
Module A206 : Programmation fichiers - COBOL
Les références en gras sont celles qui ont été plus particulièrement utilisées pour la construction de ce cours.
Cours Web
Lorsque nous terminions ce cours, en mai 2004, nous avons été faire un tour sur la toile. Nous avons lancé
Google, le moteur de recherche bien connu, et lui avons fourni le mot-clé COBOL. 0,42 secondes plus tard, il
nous donnait pas moins de 1 160 000 références de sites contenant ce mot. Afin de réduire (un peu !) le champ
de nos recherches, un second mot-clé lui a été donné, langage. En 0,73 secondes, Google produisait 23 500
adresses de sites contenant COBOL et langage.
La matière est donc en abondance. Nous n'avons pas exploité la totalité des liens proposés. Nous avons
néanmoins trouvé de très nombreux cours en ligne. Plus exactement, nous avons trouvé beaucoup d'annonces de
cours en ligne. Pour en avoir le coeur net, nous avons relancé Google et lui avons fourni un mot-clé
supplémentaire, cours. Le résultat fut surprenant. Ce cours (oui, celui que vous êtes en train de parcourir) est
arrivé en premier. Parmi les 7 210 liens fournis (en 0,94 secondes), nous avons trouvé quelques références qui
nous semblent intéressantes et notamment :
•
Campus International e-mi@ge
Module A206 : Programmation fichiers - COBOL
En guise de conclusion... provisoire
Pour ceux qui douteraient (encore !) de l'actualité d'un tel langage, une anecdote et un clin d'oeil. L'anecdote
nous a été rapportée par un ingénieur d'une grande société de services française. Ne trouvant plus de jeunes
informaticiens formés (initiés...) au Cobol, cette SSII en est réduite à mettre sur pied des formations à ce langage
et regrette qu'il ait disparu des programmes des universités et écoles (NB : pas à Nantes...). Ceci se passait en
mars 2007 !
Le clin d'oeil est un des plus célèbres de la France informaticienne, celui de Zévar. Il paraît chaque semaine dans
la revue 01 Informatique et croque, illustre, à sa façon, un trait de notre microcosme. Voici celui qui a paru le 4
mai 2007 :
en anglais
http://www.csis.ul.ie/cobol/ (cours très complet produit par l'université de Limerick en Irlande, avec exercices,
downloads...)
http://www.techiwarehouse.com/Cobol/Cobol_Tutorial.html (cours très complet, sans exercices, proposé par une
compagnie privée)
•
en français
http://home.nordnet.fr/~mferon/cobol/as400in.htm (cours d'initiation à la programmation COBOL sur AS400,
assez complet, sans exercices, par un individuel -semble-t-il un étudiant de l'IUT de Villeneuve d'Ascq)
Sans plus de commentaire...
Tous sont, bien entendu, gratuits et pour l'instant téléchargeables. Il y en a bien d'autres !
16/10/12
Outils
http://www.adtools.com/student/index.htm#3 (un site référençant diverses ressources pour étudiants),
http://www.grandsysteme.com/ (un site référençant tout ou presque sur ce langage, qu'il s'agisse de cours, de
compilateurs en ligne, gratuits ou payants, de livres...),
http://www.infogoal.com/cbd/cbdhome.htm (un portail dédié au langage COBOL, très complet)
Avis des lecteurs
Nous recevons, assez souvent, des messages de personnes qui ont trouvé ce module, qui suivent le cours, posent
des questions (le plus souvent pertinentes) et nous donnent leur avis. Nous avons décidé d'en faire profiter tout le
monde. Cette nouvelle rubrique, l'avis des lecteurs, recueillera leurs opinions, qu'elles soient bonnes ou
mauvaises.
reçu le 21 juillet 2009, de quelqu'un qui réside dans la région Ile de France et que nous appellerons M.
Un petit mail pour tout simplement vous remercier sur l'excellent cours de COBOL que vous mettez à la
disposition de tous sur le site de l'université de Nantes. Je ne suis pas programmeur de par ma
formation (Master SeCReTs de l'université Saint Quentin en Yveline), mais les technologies mainframe
m'intéressent grandement notamment dans le domaine de la monétique. Je suis votre cours pas à pas, et
je le trouve très clair et bien ordonnancé, c'est rare
Bravo et merci.
Très cordialement,
Document rédigé par Alain VAILLY, le 16/10/12 à 15:10
Page 7 / 8
Document rédigé par Alain VAILLY, le 16/10/12 à 15:10
Page 8 / 8