Your SlideShare is downloading. ×
Le langage Cobol
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Le langage Cobol

2,410

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,410
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
85
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol SommaireLA STRUCTURE D’UN PROGRAMME..........................................................................5 QUELLE EST L’HISTOIRE DU COBOL ?...............................................................................5 QUELLE EST LA STRUCTURE DUN PROGRAMME ?....................................................................5 IDENTIFICATION DIVISION...................................................................................5 ENVIRONMENT DIVISION......................................................................................5 DATA DIVISION...................................................................................................6LES COMMANDES.....................................................................................................9 ACCEPT..................................................................................................................9 Définition............................................................................................................9 Syntaxe 1...........................................................................................................9 Description 1.......................................................................................................9 Syntaxe 1...........................................................................................................9 Description 1.......................................................................................................9 Equivallence Pascal..............................................................................................9 ADD.......................................................................................................................9 Définition............................................................................................................9 Syntaxe..............................................................................................................9 Equivalence Pascal...............................................................................................9 CLOSE..................................................................................................................10 Définition..........................................................................................................10 Syntaxe............................................................................................................10 COMPUTE.............................................................................................................10 Définition..........................................................................................................10 DISPLAY...............................................................................................................10 Définition..........................................................................................................10 Syntaxe 1..........................................................................................................10 Syntaxe 2..........................................................................................................11 Description 1.....................................................................................................11 Description 2.....................................................................................................11 DIVIDE.................................................................................................................11 Définition..........................................................................................................11 Syntaxe............................................................................................................11 EXIT.....................................................................................................................11 Définition..........................................................................................................11 Syntaxe............................................................................................................11 IF........................................................................................................................11 Définition..........................................................................................................11 Syntaxe............................................................................................................11 MULTIPLY.............................................................................................................12 Définition..........................................................................................................12 Syntaxe............................................................................................................12 OPEN...................................................................................................................12 Définition..........................................................................................................12 Syntaxe............................................................................................................12 PERFORM..............................................................................................................12 Définition..........................................................................................................12 Syntaxe............................................................................................................13 Equivalence Pascal.............................................................................................13 1
  • 2. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol READ...................................................................................................................13 Définition..........................................................................................................13 Syntaxe............................................................................................................13 SUBSTRACT..........................................................................................................13 Définition..........................................................................................................13 Syntaxe............................................................................................................13 Equivalence Pascal.............................................................................................14 WRITE..................................................................................................................14 Définition..........................................................................................................14 Syntaxe............................................................................................................14 >.........................................................................................................................14 Définition..........................................................................................................14 Syntaxe 1..........................................................................................................14 <.........................................................................................................................15 Définition..........................................................................................................15 Syntaxe............................................................................................................15 =.........................................................................................................................15 Définition..........................................................................................................15 Syntaxe............................................................................................................15 >=.......................................................................................................................15 Définition..........................................................................................................15 Syntaxe............................................................................................................15 <=.......................................................................................................................15 Définition..........................................................................................................15 Syntaxe............................................................................................................15 IS........................................................................................................................16 Définition..........................................................................................................16 Syntaxe............................................................................................................16LA PROGRAMMATION STRUCTURÉE......................................................................17 QU’EST-CE QU’UN PROGRAMME ?....................................................................................17 QUELS SONT LES TYPES DE STRUCTURE EN ARBRE ?.............................................................17 Qu’est-ce qu’un arbre ?.......................................................................................17 QUEL EST LE SCHÉMA DE CHARGEMENT DE TABLE ?..............................................................18 QUEL EST LE SCHÉMA DE RECHERCHE ?............................................................................18DE PASCAL À COBOL..............................................................................................21 STRUCTURE GÉNÉRALE DU PROGRAMME.............................................................................21 WORKING-STORAGE SECTION................................................................................21 Scalaires non numériques...................................................................................21 Enregistrements.................................................................................................21 Zone groupée....................................................................................................22 Identification dun champ....................................................................................22 Types................................................................................................................22 Tableaux...........................................................................................................22 Affectation.........................................................................................................23 Entrées sorties...................................................................................................23 Until.................................................................................................................23 Fichier séquentiel...............................................................................................24 IDENTIFICATION DIVISION.................................................................................24 ENVIRONMENT DIVISION....................................................................................24 DATA DIVISION.................................................................................................25 PROCEDURE DIVISION........................................................................................25 Règles décriture................................................................................................25 Déclaration de fichier [SELECT]...........................................................................25 Déclaration denregistrement [FD].......................................................................26 Description denregistrement...............................................................................27 2
  • 3. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol Ouverture [OPEN]..............................................................................................27 Fermeture [CLOSE]............................................................................................27 Lecture [READ]..................................................................................................27 ECRITURE [WRITE]................................................................................................28FICHIER IMPRIMANTE..........................................................................................29 FICHIER LECTEUR DE CARTE..................................................................................29 FICHIER IMPRIMANTE............................................................................................29 ECRITURE [WRITE]................................................................................................29 ECRITURE V 2 [WRITE]..........................................................................................29 CARACTERE DE SAUT.........................................................................................30FICHIER VSAM/ESDS............................................................................................30 DECLARATION DE FICHIER [SELECT].......................................................................30 OUVERTURE DE FICHIER [OPEN].............................................................................31 option...............................................................................................................31 FIN DE FICHIER.....................................................................................................31 RE-ECRITURE DE FICHIER [REWRITE].....................................................................31FICHIER VSAM/KSDS............................................................................................31 DECLARATION DE FICHIER [SELECT].......................................................................31 OUVERTURE DE FICHIER [OPEN].............................................................................32 POSITIONNEMENT DANS UN FICHIER [START].........................................................33 LECTURE DUN FICHIER [READ]..............................................................................34 ECRITURE DANS UN FICHIER [WRITE].....................................................................34 dépassement de capacité du fichier......................................................................35 RE-ECRITURE DANS UN FICHIER [REWRITE]............................................................35 SUPPRIMER UN ENREGISTREMENT [DELETE]............................................................35 OUVERTURE POSSIBLE...........................................................................................36FICHIER VSAM.......................................................................................................36 CODE RETOUR......................................................................................................36E/S........................................................................................................................38 ARRET DE PROGRAMME [STOP]...............................................................................38 LECTURE INFORMATION [ACCEPT]..........................................................................38 ENVOI DE MESSAGE [DISPLAY]..............................................................................38DONNEE ................................................................................................................39 DEFINITION..........................................................................................................39 numéro-niveau..................................................................................................39 nom-donnée......................................................................................................39 image...............................................................................................................39 image alphanumérique.......................................................................................40 image numérique...............................................................................................40 image numérique - EBCDIC.................................................................................40 image numérique dédition..................................................................................41 image alphabétique............................................................................................42 valeur initiale (optionnel)....................................................................................42 Représentation des données : USAGE...................................................................43 Valeur binaire : COMPUTATIONAL........................................................................43WORKING STORAGE SECTION...............................................................................44 PRESENTATION.....................................................................................................44 ZONE...................................................................................................................44 ELEMENTAIRE....................................................................................................44 GROUPEE..............................................................................................................45 3
  • 4. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol INDEPENDANTE.................................................................................................45 NOMBRE-NIVEAU...............................................................................................45 Alignement mémoire..........................................................................................45 Redéfinition des zones........................................................................................46 Noms de condition..............................................................................................47 Expression RENAMES..........................................................................................47PROCEDURE DIVISION..........................................................................................48 INTRODUCTION.....................................................................................................48 4
  • 5. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage CobolLa structure d’un programme Quelle est l’histoire du COBOL ? L’histoire du COBOL (COmmon Business Oriented Language) est résumée dans le tableau suivant. Année Evénement 1954 Premier langage évolué : FORTRAN 1960 CODASYL (Conférence On DAta SYstem Language fournit une ébauche de description) => COBOL 60, COBOL 61 1968 COBOL 65 reconnu comme standard 1974 Norme ANS (American National Standard) CODASYL ajoute des perfectionnements au standard Quelle est la structure dun programme ? IDENTIFICATION DIVISION.Nom du programme. PROGRAM-ID. nom-programme.Auteur [AUTHOR. commentaire]Installation. [INSTALLATION. commentaire]Date décriture du programme. [DATE-WRITTEN. commentaire]Date de compilation du [DATE-COMPILED. commentaire]programme.Sécurité. [SECURITY. commentaire]Remarques diverses. [REMARKS. commentaire] ENVIRONMENT DIVISION. CONFIGURATION SECTION.Nom de lordinateur sur lequel le [SOURCE-COMPUTER. nom [WITH DEBUGGINGsource a été écrit. MODEM].]Nom de lordinateur sur lequel [OBJECT-COMPUTER. nom-ordinateurlobjet a été créé.La taille mémoire est de "entier" [MEMORY SIZE entier type]unités "type" (WORDS,CHARACTERS, MODULES). [PROGRAM COLLATING SEQUENCE IS nom- alphabet].] 5
  • 6. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol INPUT-OUTPUT SECTION. FILE-CONTROL.Associe le fichier physique au SELECT [OPTIONNAL] fichier-physique ASSIGNfichier logique [classique, ouSYSIN (organe dentrée) ou TOSYSOUT (organe de sortie)]. fichier-logiqueType dorganisation [RESERVE entier AREA](SEQUENTIAL, INDEXED,RELATIVE) séquentiel par défaut.Type daccès (SEQUENTIAL, [ORGANIZATION type-organisation]INDEXED, RELATIVE) séquentielpar défaut. [ACCESS MODE IS type-organisation] [RECORD KEY nom-donnee-1] [ALTERNATE RECORD KEY nom-donnee-2 [WITH DUPLICATES]] DATA DIVISION. FILE SECTION.Le format des données est type- FD fichier-physique [EXTERNAL] [GLOBAL]format (F format fixe, V formatvaraible, U format indéfini). [RECORDING MODE IS type-format]Spécifie la taille dun bloc, les [BLOCK CONTAINS [entier1 TO] entier2 type-limites inférieure et supérieure dela page étant entier1 et entier2 bloc]unités de type-bloc (RECORDS,CHARACTERS).Spécifie le nombre de caractères [RECORD CONTAINS entier3 [TO entier4]]dun enregistrement (simplecommentaire). [RECORD VARYING [FROM entier5]] [RECORD [To entier6] CHARACTERS] [DEPENDING ON nom-donnée]Permet dajouter (STANDARD) ou [LABEL RECORD type-label]de ne pas ajouter (OMITTED)selon "type-label" les "labels"définis le Sytème de Gestion deFichier (SGF). [VALUE OF FILE-ID nom-système]Liste des enregistrements (en [DATA RECORD nom-enreg1 [nom-enreg2] ...]guise de commentaire). [LINAGE IS nom1 [FOOTING nom2] [LINES TOP nom3] [LINES BOTTOM nom4]] [CODE-SET nom-alphabet] [REPORT nom-état] 01 nom-enreg1. ... 6
  • 7. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol WORKING-STORAGE SECTION. 77 nom-element PIC description [VALUE valeur].Il faut "littéral1" <= "littéral2". 88 nom-condition VALUE ARE littéral1 [THRU littéral2]"nom-donnée1" est le nom de la 01 à 49 nom-donnée1 [EXTERNAL] [GLOBAL]donnée ou FILLER (permet dedéfinir une variable à laquelle onna pas accès).Redéfinit "nom2" avec la [REDEFINES nom-donnée2]structure de "nom1". [PIC description] ; Note : PIC peut être remplacé par PICTURE. DECLARATIVES. nom-section SECTION. 7
  • 8. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage CobolLes commandes ACCEPT Définition Lecture au clavier Syntaxe 1 ACCEPT nom-donnée Description 1 Lit une donnée au clavier et la met dans "nom-donnée". Syntaxe 1 ACCEPT nom-donnée FROM nom-mnémonique Description 1 "nom-mnémonique" est défini dans SPECIAL-NAMES ou vaut CONSOLE (clavier), DATE (6 octets), DAY (5 octets), DAY-OF-WEEK, ou TIME (8 octets). Equivallence Pascal ACCEPT Zone <=> ReadLn (Zone); ADD Définition Addition SyntaxeAffectation de "nom-donnée2 ..." ADD nom-donnée1 ... TO nom-donnée2à "nom-donnée1 ...",éventuellement avec arrondi. [ROUNDED] ...Exécute "ordre1" en cas de [ON SIZE ERROR ordre1]dépassement de capacité.Exécute "ordre2" en cas de non [NOT SIZE ERROR ordre2]dépassement de capacité.Indique la fin de lordre ADD. [END-ADD] Equivalence Pascal 9
  • 9. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol ADD a b TO c d. <=> c := c + a + b; d := d + a + b; ADD a b GIVING c; <=> c := a + b; CLOSE Définition Fermeture de fichier. Ferme le fichier "nom-fichier". Syntaxe CLOSE nom-fichier [type1 [FOR REMOVAL]] CLOSE nom-fichier [WITH type2] COMPUTE Définition Calcul Effectue des calculs. COMPUTE nom-donnée1 [ROUNDED]"nom-donnée1" reçoit la valeur = expressionde "expression".Exécute "ordre1" en cas de [ON SIZE ERROR ordre1]dépassement de capacité.Exécute "ordre2" en cas de non [NOT SIZE ERROR ordre2]dépassement de capacité.Indique la fin de lordre [END-COMPUTE]COMPUTE. DISPLAY Définition Affichage à lécran Affiche des données à lécran. Syntaxe 1 10
  • 10. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol DISPLAY nom-donnée1 ... Syntaxe 2 DISPLAY nom-donnée1 ... UPON nom-mnémonique Description 1 Affiche "nom-donnée1 ..." à lécran. Description 2 Idem mais dans un nom-mnémonique, sur lécran (CONSOLE) ou sur le perforateur de carte (SYSPUNCH). DIVIDE Définition Division SyntaxeINTO peut être remplacé par BY. DIVIDE nom-donnée1 INTO nom-donnée2"nom-donnée3" := "nom- [GIVING nom-donnée3 [ROUNDED] ... ]donnée1" / "nom-donnée2"Exécute "ordre1" en cas de [ON SIZE ERROR ordre1]dépassement de capacité.Exécute "ordre2" en cas de non [NOT SIZE ERROR ordre2]dépassement de capacité.Indique la fin de lordre [END-DIVIDIDE]DIVIDIDE. EXIT Définition Sortie Ne fait rien (utilisé dans les paragraphes vides). Syntaxe EXIT IF Définition Condition "Si" Exécution "instruction1" à la condition "condition". Syntaxe 11
  • 11. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage CobolSi "condition1" est vrai, alors IF condition1 instruction1"instruction1" est exécuté ou"instruction1" peut être NEXTSENTENCE (pointe surlinstruction suivante, juste aprèsle point).Sinon, "instruction2" est exécuté. [ELSE instruction2]Indique la fin de lordre. [END-IF] MULTIPLY Définition Multiplication Effectue une multiplication. Syntaxe"nom-donnée1" := "nom- MULTIPLY nom-donnée1 BY nom-donnée2donnée1" * "nom-donnée2""nom-donnée3" := "nom- [GIVING nom-donnée3]donnée1" * "nom-donnée2" [ROUNDED]Exécute "ordre1" en cas de [ON SIZE ERROR ordre1]dépassement de capacité.Exécute "ordre2" en cas de non [NOT SIZE ERROR ordre2]dépassement de capacité.Indique la fin de lordre [END-DIVIDE]MULTIPLY. OPEN Définition Ouverture de fichier Ouverture du fichier "nom-fichier" Syntaxeen lecture OPEN INPUT nom-fichier [REVERSED] OPEN INPUT nom-fichier [WITH NO REWIND]en écriture OPEN OUTPUT nom-fichier [WITH NO REWIND] OPEN I-O nom-fichier1 ... OPEN EXTEND nom-fichier1 ... PERFORM Définition 12
  • 12. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol Traitement de paragraphe Exécute une (ou des) procédure. SyntaxeTHRU permet lenchaînement de PERFORM [nom-procedure1 [THRU nom-lexécution de plusieursparagraphes avant de revenir à procedure2]]linstruction qui suit PERFORM.Continue jusquà ce que UNTIL condition [TEST moment]"condition" soit vrai, le test sefaisant au moment "moment"(BEFORE, AFTER). [ordre END-PERFORM] Equivalence Pascal PERFORM tâche UNTIL condition => condition à gauche, instruction à droite READ Définition Lecture de fichier Lit un enregistrement du fichier "nom-fichier". SyntaxeINTO permet de transférer la READ nom-fichier [NEXT] RECORD [INTO nom-valeur dans "nom-donnée". donnée]Exécute "ordre1" si arrivé en fin [AT END ordre1]de fichier.Exécute "ordre2" si pas arrivé en [NOT AT END ordre2]fin de fichier.Indique la fin de lordre "READ". [END-READ] SUBSTRACT Définition Soustraction Effectue une soustraction. Syntaxe"nom-donnée2" := "nom- SUBSTRACT nom-donnée1 ... FROM nom-donnée2" - "nom-donnée1 ..." donnée2"nom-donnée3" := "nom- [GIVING nom-donnée3]donnée1" - "nom-donnée2" 13
  • 13. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol [ROUNDED]Exécute "ordre1" en cas de [ON SIZE ERROR ordre1]dépassement de capacité.Exécute "ordre2" en cas de non [NOT SIZE ERROR ordre2]dépassement de capacité.Indique la fin de lordre [END-SUBSTRACTSUBSTRACT. Equivalence Pascal SUBSTRACT a b FROM c GIVING d. <=> d := c - a b; WRITE Définition Ecriture denregistrement Ecrit lenregistrement "nom-enreg1". SyntaxeFROM permet décrire "nom- WRITE nom-enreg1 [FROM nom-donnée1]donnée1" à la place delenregistrement "nom-enreg1".Fait sauter "nom-donnée2" lignes [moment ADVANCING nom-donnée2 LINE]au moment "moment" (AFTER,BEFORE). [moment ADVANCING nom-mnémonique]Fait sauter une page au moment [moment ADVANCING-PAGE]"moment" (AFTER, BEFORE).Exécute "ordre" si arrivé en fin [END-OF-PAGE ordre]de page (concerne limprimante).Exécute "ordre" si pas arrivé en [NOT END-OF-PAGE ordre]fin de page (concernelimprimante).Note : END-OF-PAGE <=> EOP.Indique la fin de lordre WRITE. [END-WRITE] > Définition Opérateur > Syntaxe 1 nom-donnée1 IS [NOT] GREATER nom-donnée2 [NOT] > nom-donnée1 > nom-donnée2 14
  • 14. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol< Définition Opérateur < Syntaxe nom-donnée1 IS [NOT] LESS nom-donnée2 [NOT] < nom-donnée1 < nom-donnée2= Définition Opérateur = Syntaxe nom-donnée1 IS [NOT] EQUAL nom-donnée2 [NOT] = nom-donnée1 = nom-donnée2>= Définition Opérateur >= Syntaxe nom-donnée1 IS [NOT] GREATER OR EQUAL nom-donnée2 [NOT] >= nom-donnée1 >= nom-donnée2<= Définition Opérateur <= Syntaxe nom-donnée1 IS [NOT] LESS OR EQUAL nom-donnée2 [NOT] <= nom-donnée1 >= nom-donnée2 15
  • 15. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage CobolIS Définition Retourne le signe Syntaxe expression IS [NOT] signe signe vaut (POSITIVE, NEGATIVE, ZERO). 16
  • 16. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage CobolLa programmation structurée Qu’est-ce qu’un programme ? Cest un ensemble de traitements conditionnels ou non conditionnels appliqués à des objets hiérarchisés. Quels sont les types de structure en arbre ? Qu’est-ce qu’un arbre ? Le COBOL structuré utilise les arbres pragmatiques (ou programmatiques). Un arbre est constitué de :• la structure répétitive : sapplique aux objets NOEUD F FEUILLE D OBJET• la structure alternative : sapplique aux traitements NOEUD F FEUILLE FEUILLE D OBJET OBJET Qu’est-ce qu’un rond ? Un rond représente un noeud donnant naissance à une structure de niveau inférieur. Qu’est-ce qu’un feuille ? Une feuille est un noeud en bout darbre. Elle peut toujours être transformée en noeuds. => extensibilité de larbre Qu’est-ce qu’un carré ? Le carré représente une feuille dépendant toujours dun noeud. Un noeud donne toujours naissance à au moins deux feuilles carrées. Comment lire l’arbre ? Le sens de lecture est de la droite vers la gauche (sens des flèches). Qu’est-ce qu’une feuille « Début » ? D Début (toujours à droite de larbre) Qu’est-ce qu’une feuille « Fin » ? F Fin (toujours à gauche de larbre) Qu’est-ce qu’une feuille « Intermédiaire » ? 17
  • 17. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol In Feuille intermédiaire s Quel est le schéma de chargement de table ? CHARGEMENT DUNE TABLE F ARRETER CLIENT D PROGRAMME En partant du NOEUD :• exécuter D-NOEUD• exécuter CLIENT• exécuter I• rien ou arrêter programme• exécuter F-NOEUD => Passer dune feuille carrée à une autre dun même niveau, cest-à-dire issue du même noeud en passant par lintermédiaire de feuilles rondes qui sont choisies en fonction de conditions. Quel est le schéma de recherche ? 18
  • 18. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol RECHERCHE RECHERCHE CLIENT EDITER F CLIENT CUMULER D => SEARCH (1) NON MONTANT => SEARCH ALL (2) TROUVE *********** * WORKING * *********** * WORKING-STORAGE SECTION. 77 NB-POSTE COMP VALUE 0. 88 DEPASSEMENT-TABLE VALUE 121. 77 INDIC-TROUVE COMP VALUE 0. 88 CLIENT-TROUVE VALUE 1. 01 TABLE. 05 POSTE-TABLE OCCURS 120 DEPENDING ON NB-POSTE ASCENDING CLIENT-TABLE (2) INDEXED BY IND-POSTE. 10 CLIENT-TABLE PIC XXXX. 10 MONTANT-TABLE PIC 59(5)V99 COMP-3. ************************** * CHARGEMENT DUNE TABLE * ************************** * ************ * STRUCTURE ************ * CHARGEMENT-TABLE-CLIENT. PERFORM D-CHARGEMENT-TABLE-CLIENT. PERFORM CLIENT. UNTIL DERNIER-CLIENT OR DEPASSEMENT-DE-TABLE. PERFORM I-1-CHARGEMENT-TABLE-CLIENT. IF DEPASSEMENT-DE-TABLE-CLIENT. PERFORM ARRETER-PROGRAMME. PERFORM F-CHARGEMENT-TABLE-CLIENT. * ************* * TRAITEMENT ************* * D-CHARGEMENT-TABLE-CLIENT. SET IND-POSTE TO 1. CLIENT. ADD 1 TO NB-POSTE. MOVE CLIENT-FICHIER TO CLIENT-TABLE (IND-POSTE). MOVE ZERO TO MONTANT-TABLE (IND-POSTE). SET IND-POSTE UP BY 1. READ FICHIER-CLIENT AT END MOVE HIGH-VALUE TO ENR-CLIENT. I-1-CHARGEMENT-TABLE-CLIENT. CLOSE FICHIER-CLIENT. ARRETER-PROGRAMME. MOVE Plus de 120 clients dans la table. Arrêt du programme TO LIBELLE-ANO. WRITE ENR-CR FROM LIGNE-ANO. WRITE ENR-CR FROM LIGNE-FIN-ANO. ENTER DUMPONS. F-CHARGEMENT-TABLE-CLIENT. EXIT. **************************** * RECHERCHE « SEARCH » * (1) * RECHERCHE « SEARCH ALL » * (2) **************************** * ************ * STRUCTURE ************ * RECHERCHE-CLIENT. PERFORM D-RECHERCHE-CLIENT. 19
  • 19. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol IF CLIENT-TROUVE PERFORM CUMULER-MONTANT ELSE PERFORM EDITER-CLIENT-NON-TROUVE. PERFORM F-RECHERCHE-CLIENT. * ************* * TRAITEMENT ************* * D-RECHERCHE-CLIENT. SET IND-POSTE TO 1. (1) SEARCH POSTE-TABLE AT END (1) SEARCH ALL POSTE-TABLE AT END (2) MOVE 0 TO INDIC-TROUVE WHEN CLIENT-F = CLIENT-TABLE (IND-POSTE) (1) MOVE 1 TO INDIC-TROUVE. (1) CUMULER-MONTANT. ADD MONTANT-F TO MONTANT-TABLE (IND-POSTE). EDITER-CLIENT-NON-TROUVE. MOVE CLIENT-F TO CLIENT-CR. MOVE Client non trouvé dans la table. TO LIBELLE-CLIENT. WRITE ENR-CR FROM LIGNE-ANC-CLIENT. F-RECHERCHE-CLIENT. EXIT. 20
  • 20. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage CobolDe Pascal à Cobol Structure générale du programme Pascal Cobol PROGRAM nom_programme; IDENTIFICATION DIVISION. PROGRAM-ID. nom_programme. CONST ENVIRONMENT DIVISION. TYPE ... VAR DATA DIVISION. FILE SECTION. ... (fichiers) WORKING-STORAGE SECTION. ... (données) BEGIN PROCEDURE DIVISION. ... ... (divisé en sections et END. paragraphes WORKING-STORAGE SECTION. Pascal Cobol VAR ident1 : INTEGER; DATA DIVISION. ident2 : REAL; WORKING-STORAGE SECTION. 77 ident1 PIC longueur [USAGE] ncode [VALUE valeur] Scalaires non numériques Pascal Cobol VAR a : CHAR; PIC X (ou zones groupées) b : BOOLEAN; c : STRING; d : enumeration; e : intervalle; VAR C : CHAR; 77 C PIC X. VAR B : BOOLEAN; VAR S : STRING [40]; 77 S PIC X(40). VAR J : (lundi, mardi,..); (pas déquivalent) VAR I : 1..31; (ne peut être que décimal) Enregistrements Pascal Cobol 21
  • 21. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol VAR WORKING-STORAGE SECTION. PERSONNE : RECORD 01 PERSONNE. NUM_SS : STRING [13]; 05 NUM-SS PIC X(13). IDENT : RECORD 05 IDENT. NOM : STRING [20]; 10 NOM PIC X(20). PRENOM : STRING [20]; 10 PRENOM PIC X(20). END; ETAT_CIVIL : CHAR; 05 ETAT-CIVIL PIC X(1). ADRESSE : RECORD 05 ADRESSE. NUM : STRING [5]; 10 NUM PIC X(5). RUE : STRING [40]; 10 RUE PIC X(40). VILLE : STRING [30]; 10 VILLE PIC X(30). CODE_POSTAL : RECORD 10 CODE-POSTAL. DEP : 1..95; 15 DEP PIC 9(2). BUREAU : 0..999; 15 BUREAU PIC 9(3). END; END;Zone groupée Une zone groupée est un champ non terminal. Elle est toujours considérée comme alphanumérique (donc en PIC X).Identification dun champ Pascal Cobol personne.adresse.rue rue (ou) rue IN adresse (ou) rue IN adresse IN personne (à utiliser si lon a plusieurs variables de même type)Types Pascal Cobol TYPE (pas de type en COBOL) pers = RECORD 01 p1. nom : STRING [15]; 05 nom PIC X(15). prenom : STRING [10]; 05 prenom PIC X(10). END; 02 p2. VAR 05 nom PIC X(15). p1, p2 : pers; 05 prenom PIC X(10). p1.nom nom IN p1. p2.pre prenom IN p2.Tableaux Pascal Cobol VAR (pas déquivalent direct) t : ARRAY [1..100] OF STRING [10]; tab : RECORD 01 tab. 22
  • 22. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol t : ARRAY [1..100] OF STRING [10]; 05 t OCCURS 100 PIC X(10). Identification du tableau : TAB, TAB ou TAB.T Identification dun élément de rang I : T (I) [IN TAB ] m : ARRAY [1..10, 1..5] OF STRING (pas en COBOL) [20]; tab_tab : RECORD 01 tab-tab. t : ARRAY [1..10] OF 05 t OCCURS 10. ARRAY [1..5] OF STRING [20]; 10 st OCCURS s PIC X(20). END; Identification des champs : tab-tab, tab-tab.t [i], t (i) ou t (i) IN tab-tab, tab-tab.t [i] [j], st (i, j)Affectation Pascal Cobol := MOVE TO VAR s1 : STRING [6]; 77 s1 PIC X(6). s2 : STRING [4]; s2 PIC X(4). s2 := s1; MOVE s1 TO s2. (=> erreur si¦(pas derreur) LENGTH (s2) > 4) (Zone émettrice > zone réceptrice => troncature (Zone émettrice < zone réceptrice => troncature Zones numériques : Pascal Cobol VAR (alignement sur la virgule, conversions) i : INTEGER; 77 i PIC S9(4) COMP. j : REAL; 77 j PIC COMP-1. 77 k PIC 9(4)V99 COMP-3. 77 l PIC S9V99. MOVE i TO j. (conversion dans le mode de représentation de j) MOVE k TO l. (k > 9,99 => erreur)Entrées sorties Pascal Cobol VAR 77 i PIC S9(4) COMP. (faux) i : INTEGER; ACCEPT i. READLN (i); 77 a PIC 9(4) [DISPLAY]. 77 i PIC S9(4) COMP. ACCEPT a. MOVE a TO i. WRITELN (coucou, i); DISPLAY coucou, iUntil Pascal Cobol WHILE condition DO PERFORM nom_paragraphe 23
  • 23. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol instructions; UNTIL condition nom-paragraphe-1. (instructions) nom-paragraphe-2. Fichier séquentiel Description : ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT nom-interne ASSIGN TO nom-externe ... DATA DIVISION. FILE SECTION. FD nom-interne LABEL RECORD IS STANDARD ... DATA RECORD IS nom-fenetre 01 nom-fenetre (idem que WORKING-STORAGE SECTION) Notes :• nom-externe entre guillemets• suffixe DAT pour données• suffixe LIS pour imprimante Utilisation : Pascal Cobol ASSIGN (nom-interne, nom-externe) SELECT (dans lENVIRONMENT DIVISION) REWRITE (nom-interne) OPEN OUTPUT nom-interne RESET (nom-interne) OPEN INPUT nom-interne READ (nom-interne, nom-fenetre) READ nom-interne AT END instruction WRITE (nom-interne, nom-fenetre) WRITE nom-fenetre CLOSE (nom-interne) CLOSE nom-interne IDENTIFICATION DIVISION La division IDENTIFICATION donne un nom au programme, afin de le différencier des autres. Elle donne des explications (sous forme de commentaires) sur le programme. ENVIRONMENT DIVISION 24
  • 24. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol La division ENVIRONMENT décrit physiquement les fichiers utilisés. DATA DIVISION La division DATA :• réserve la mémoire• décrit logiquement les données (description des enregistrements, ...) PROCEDURE DIVISION La division PROCEDURE décrit le traitement à effectuer, cest-à-dire les ordres. Règles décriture Colonne début Colonne fin Description 1 6 Numéros de ligne. 7 7 "*" pour un commentaire. "-" pour continuer la ligne précédente. " " pour une ligne normale. 8 72 Noms de division, de section, de paragraphe. 12 72 Instructions. 73 80 Commentaire. Déclaration de fichier [SELECT] SELECT nom-fichier ASSIGN TO SYSn-classe-type-organisation nom-externe. SELECT associe un fichier sur disque (nom-externe) à un nom utilisé dans le programme (nom-fichier). Argument Description nom-fichier Nom du fichier utilisé dans le programme. 30 caractères au maximum. SYSn Unité logique affectée à ce fichier. n ∈ [0, 240] classe Classe du périphérique. "UR" (Unit Record) pour le lecteur de cartes ou limprimante. "UT" (Utility) pour les fichiers séquentiels. "AS" (Access Sequential) pour les fichiers ESDS. type Type du périphérique. "2501" pour le lecteur de cartes. "1403" pour limprimante. "2400" pour la bande. "3330" pour le disque. organisation Organisation du fichier. "S" pour les fichiers séquentiels. Rien pour les autres. nom-externe Nom du fichier utilisé par le JCL (donc sur disque). 7 caractères au maximum. 25
  • 25. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol Déclaration denregistrement [FD] FD (File Definition) décrit les fichiers.Nom du fichier utilisé dans le FD nom-fichierprogramme, définit avec SELECT.Type de longueur des [RECORD MODE IS mode]enregistrements :- "F" pour une longueur fixe.- "V" pour une longueur variable.- "U" pour une lonueur indéfinie.Note : "F" et "V" sont déterminésautomatiquement.Longueur de lenregistrement en [RECORD CONTAINS entier1 [TO entier2]caractères. CHARACTERS]Pour les enregistrements :- de longueur fixe, préciserentier1- de longueur variable, préciser"entier1" (longueur du plus petitenregistrement) et "entier2"(longueur du plus grandenregistrement)Taille des blocs physiques, afin [BLOCK CONTAINS entier3de grouper des enregistrements.Ne concerne pas lesenregistrements de longueurindéfinie.Indique le nombre [TO entier4] CHARACTERSdenregistrements par bloc. Casparticulier pour lesenregistrements de longueurvariable : prendre lesenregistrements de longueurmaximale.Longueur physique du bloc :( (Longueur maximale delenregistrement) + 4 octets (comptage delenregistrement) ) = Longueurphysique de lenregistrement.x nombre denregistrements dansun bloc = Longueur logiquedu bloc+ 4 octets (comptage du bloc)= Longueur physique du blocIndique le nombre de caractères /RECORD]par bloc.Indique le type de labels. LABEL RECORD 26
  • 26. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol Indique que le label du fichier est IS STANDARD/ au format IBM. Le label est créé lors de lécriture dans le fichier. Il est utilisé au niveau du JCL (carte DLBL pour les fichiers sur disque, carte TLBL pour les fichiers sur bande magnétique). Indique que le fichier na pas de OMITTED label. Indique le (ou les) nom(s) de la [DATA RECORD IS nom-enreg1 [nom- zone tampon. enreg2] ...]. Description denregistrement Le nom de lenregistrement :• est au niveau 01• se trouve dans la clause DATA RECORD de lordre FD Notes : la clause VALUE est interdite, sauf pour les niveaux 88. Ouverture [OPEN] OPEN :• ouvre un fichier• contrôle (cas de la lecture) ou crée (cas de lécriture) le label OPEN Indique que le fichier est en INPUT/ lecture. Indique que le fichier est en OUTPUT écriture. Nom du fichier utilisé dans le nom-fichier-1 [nom-fichier2 ...] programme, défini avec SELECT Fermeture [CLOSE] CLOSE :• ferme un (ou des) fichier(s)• vérifie les labels de fin CLOSE Cest le nom du fichier utilisé nom-fichier1 dans le programme, défini avec SELECT. WITH LOCK sapplique aux fichier [WITH LOCK] [nom-fichier-2 ...] sur bande. Cette option permet de décharger et de libérer la bande. Lecture [READ] READ : 27
  • 27. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol• lit un enregistrement• le stocke dans la variable indiquée par DATA RECORD• indique quoi faire en fin de fichier READ nom-fichier Permet de stocker [ INTO nom-donnée ] lenregistrement lu :• dans la variable indiquée par DATA RECORD et• dans la variable "nom-donnée" Exécuter les instructions AT END instructions. indiquées lorsque la fin de fichier est atteinte. Remarques :• Lenregistrement est accessible tant quun READ ou quun CLOSE na pas été exécuté.• Ne plus utiliser la variable stockant lenregistrement après une fin de fichier. ECRITURE [WRITE] WRITE écrit un enregistrement dans un fichier. WRITE nom-enregistrement [ FROM nom-donnée ] [ INVALID KEY instructions ]. Remarque : On nindique pas le nom du fichier, mais le nom de lenregistrement.nom-enregistrement Cest le nom de la variable stockant lenregistrement indiquée par DATA RECORD.FROM Permet de transférer le contenu de la variable indiquée, et non pas la variable indiquée par DATA RECORD, dans le fichier.INVALID KEY Si lécriture fait déborder le fichier, alors exécuter les instructions indiquées. 28
  • 28. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage CobolFichier imprimante FICHIER LECTEUR DE CARTE Un lecteur de cartes est utilisé comme un fichier séquentiel. Toutefois, il y a quelques différences :• Les enregistrements contiennent 80 caractères, et sont donc fixes.• Le fichier ne contient pas de label. FICHIER IMPRIMANTE Une imprimante est utilisée comme un fichier séquentiel. Toutefois, il y a quelques différences :• Les enregistrements contiennent 133 caractères (y compris le caractère de saut de ligne), et sont donc fixes.• Le fichier ne contient pas de label. ECRITURE [WRITE] WRITE imprime un enregistrement. WRITE nom-enregistrement [ FROM nom-donnée ] AFTER POSITIONING nombre/caractere-saut [ LINES ] caractere-saut caractere-saut est est un caractère contenant un code de saut ASA. Nombre Indique le nombre de lignes à sauter. Si nombre = 0, alors effectue un saut de page. Note : Incompatible avec lautre version (avec AFTER/BEFORE ADVANCING). ECRITURE V 2 [WRITE] WRITE imprime un enregistrement. WRITE nom-enregistrement [ FROM nom-donnée ] 29
  • 29. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol AFTER/BEFORE ADVANCING nombre/caractere-saut [ LINES ] Note : Incompatible avec lautre version (avec POSITIONNING). Nombre Indique le nombre de lignes à sauter (maximum 100). AFTER ADVANCING Limpression de la ligne seffectue après le saut précisé. BEFORE ADVANCING Limpression de la ligne seffectue avant le saut précisé. CARACTERE DE SAUT On introduit ici la notion de caractère de saut "ASA". Il permet deffectuer un saut de ligne, de page, ou encore de modifier lespacement de ligne. Caractère de saut Description "" Espacement simple "0" Espacement double "-" Espacement triple "+" Pas despacement "1" Saut de page "2".."9" Saut indiqué par le canal correspondant de la bande pilote "A".."C" Saut au canal 10, 11, 12 Les sauts de canaux (1 à 9 et A, B, C) provoquent un saut à une ligne précise de la page. Cela dépend de la bande pilote utilisée. Par exemple, le canal 1 provoque un saut en première ligne de la page suivante.FICHIER VSAM/ESDS DECLARATION DE FICHIER [SELECT] Il est préférable dutiliser la clause "FILE STATUS". Cette zone contient le code retour lors de louverture et de la fermeture du fichier. Si le code retour est égal à :• 00 : la lecture ou lécriture sest bien déroulée• 10 : la fin du fichier a été atteinte 30
  • 30. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol OUVERTURE DE FICHIER [OPEN] OPEN option nom-fichier1 nom-fichier2 ... . OPEN ouvre un fichier VSAM. OPEN / ACCESS INPUT OUTPUT I-O EXTEND READ O N O N O : accès autorisé WRITE N O N O N : accès interdit REWRITE N N O N option Valeur de option Description INPUT Ouverture en mode lecture seulement. OUTPUT Ouverture en mode écriture seulement. I-O Ouverture en mode lecture et écriture. EXTEND Ouverture en mode ajout. FIN DE FICHIER Pour tester la fin du fichier (FF), on peut :• tester la valeur de la zone indiquée dans FILE STATUS : Elle sera égale à 10 sil y a FF.• utiliser la clause AT END dans le READ. Cette clause est optionnelle. RE-ECRITURE DE FICHIER [REWRITE] REWRITE ré-écrit le dernier enregistrement lu. Le fichier doit être ouvert en mode "I-O".FICHIER VSAM/KSDS DECLARATION DE FICHIER [SELECT] SELECT nom-fichier ASSIGN TO SYSn-nomDLBL ORGANIZATION IS INDEXED [ ACCESS MODE IS ] type-accès 31
  • 31. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol RECORD KEY nom-zone-1 [ FILE STATUS IS nom-zone-2 ]. SELECT associe un fichier VSAM/KSDS sur disque (nom-externe) à un nom utilisé dans le programme (nom-fichier). nom-fichier Nom du fichier utilisé dans le programme. x 30 caractères au maximum. SYSn Unité logique affectée à ce fichier. X n _ [0, 240] nom-DLBL Nom de la DLBL. type-accès = SEQUENTIAL pour un accès séquentiel (par défaut) x = RANDOM pour un accès par clé x = DYNAMIC pour un accès séquentiel et par clé RECORD KEY RECORD KEY précise la zone qui contient la clé. La clé est une sous-zone de lenregistrement du fichier, et doit être de longueur identique à celle définie dans le paramètre KEYS du DEFINE du fichier. RECORD CONTAINS Il est recommandé dutiliser la clause RECORD CONTAINS afin que COBOL effectue le contrôle avec la description faite au momen du DEFINE.OUVERTURE DE FICHIER [OPEN] OPEN option nom-fichier1 nom-fichier2 ... . OPEN ouvre un fichier VSAM. +--------------------------------------------------------+ ¦Option¦Description¦ ¦-----------+--------------------------------------------¦ ¦INPUT¦Ouverture en mode lecture seulement,¦ ¦¦avec accès sur clé pour RANDOM et DYNAMIC.¦ ¦OUTPUT¦Ouverture en mode écriture seulement,¦ 32
  • 32. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol ¦¦création si inexistant en mode SEQUENTIAL.¦ ¦I-O¦Ouverture en mode lecture et écriture :¦ ¦¦. modification / suppression pour laccès¦ ¦¦SEQUENTIAL/RANDOM/DYNAMIC¦ ¦¦. ajout pour laccès RANDOM/DYNAMIC¦ ¦EXTEND¦Ouverture en mode ajout si :¦ ¦¦. accès SEQUENTIAL¦ ¦¦. le fichier est trié sur la clé¦ ¦¦. clés à ajouter plus grandes que les plus¦ ¦¦grandes du fichier¦ +--------------------------------------------------------+POSITIONNEMENT DANS UN FICHIER [START] START nom-fichier [ KEY IS operateur nom-zone ] [ INVALID KEY instructions ]. START permet de se positionner sur un enregistrement dans un fichier. +-------------------------------------------+ ¦Opérateur¦Description¦ ¦---------------+---------------------------¦ ¦EQUAL TO¦= (égalité)¦ ¦GREATER THAN¦> (supérieur)¦ ¦NOT LESS THAN¦NOT < (supérieur ou égal)¦ +-------------------------------------------+ !KEY _ Si KEY IS est omis : Le positionnement est fait sur la clé indiquée dans le RECORD KEY du fichier. Si la clé est inexistante : - si INVALID KEY est présent, alors les instructions indiquées sont exécutées. - si INVALID KEY est omis : alors le code 23 est retourné dans le FILE STATUS. 33
  • 33. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol _ Si KEY IS est présent : - Le positionnement est fait sur une partie du groupe indiqué dans le RECORD KEY du fichier. - Si la clé est incomplète, elle est complétée à zéro à droite.LECTURE DUN FICHIER [READ] READ nom-fichier [ NEXT ] RECORD [ INTO nom-donnée ] [ AT END instructions ]/[ INVALID KEY instructions ]. READ lit séquentiellement ou par clé un enregistrement dun fichier. !NEXT La lecture se fait suivant le positionnement effectué par START. Cette option nest possible quavec un accès DYNAMIC. Si elle est omise, la lecture est : - séquentielle pour un accès SEQUENTIAL - par clé pour un accès RANDOM ou DYNAMIC !AT END Cette option nest possible quavec un accès SEQUENTIAL. Si elle est omise, le code retour 10 est retourné. !INVALID KEY Cette option nest possible que pour un accès par clé. Si la clé nest pas trouvée dans le fichier, les instructions indiquées sont exécutées. Si elle est omise, et si la clé est inconnue, un code retour 23 est retourné dans le FILE STATUS.ECRITURE DANS UN FICHIER [WRITE] 34
  • 34. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol WRITE nom-enregistrement [ FROM nom-donnée ] [ INVALID KEY instructions ]. WRITE écrit un enregistrement :• séquentiellement ou• par clé Notes :• Louverture en OUTPUT permet de créer un fichier et décrire des enregistrements.• Louverture en EXTEND permet dajouter des enregistrements à la fin du fichier.• Louverture en I-O permet dajouter des enregistrements de clés inexistantes dans le fichier. INVALID KEY Si une des conditions suivantes est réalisée, alors les instructions indiquées sont exécutées. dépassement de capacité du fichier• Pour louverture en (OUTPUT ou EXTEND) et laccès en SEQUENTIAL : Les clés du fichier ne sont pas triés dans lordre croissant.• Pour louverture en (OUTPUT ou I-O) et laccès DIRECT ou DYNAMIQUE : La clé de lenregistrement à écrire existe déjà dans le fichier. RE-ECRITURE DANS UN FICHIER [REWRITE] REWRITE nom-enregistrement [ FROM nom-donnée ] [ INVALID KEY instructions ]. Cette commande nest utilisable quen ouverture I-O. REWRITE permet de ré-écrire le dernier enregistrement lu. INVALID KEY Si une des conditions suivantes est réalisée, alors les instructions indiquées sont exécutées. Pour les accès SEQUENTIAL : La clé à ré-écrire est différente de celle déjà écrite. Pour les accès DIRECT : La clé à ré-écrire nexiste pas dans le fichier. SUPPRIMER UN ENREGISTREMENT [DELETE] DELETE nom-fichier RECORD [ INVALID KEY instructions ]. 35
  • 35. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol Cette commande nest utilisable quavec les fichiers :• en ouverture I-O• en accès SEQUENTIAL ou DIRECT DELETE supprime logiquement un enregistrement dans un fichier. INVALID KEY Cette clause nest pas utilisable en accès SEQUENTIAL. Si la clé indiquée dans RECORD KEY nexiste pas, alors les instructions indiquées sont exécutées. OUVERTURE POSSIBLEOPEN / INPUT OUTPUT I-O EXTENDACCESSREAD O N O N O : accès autoriséWRITE N O O OREWRITE N N O N N : accès interditDELETE N N O NFICHIER VSAM CODE RETOURVALEUR DESCRIPTION00 Pas de problème.10 Fin de fichier.22 Clé inexistante.23 Clé inconnue.91 Ecriture sur un fichier non partagé.92 Fichier déjà ouvert ou déjà fermé.93 Fichier non disponible.94 Fichier inconnu ou vide ou VSAM-KSDS utilisé comme un ESDS. 36
  • 36. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol95 DLBL absente. 37
  • 37. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage CobolE/S ARRET DE PROGRAMME [STOP] STOP RUN/littéral. STOP arrêt le programme.RUN Arrête lexécution du programme et donne le contrôle au superviseur.Littéral Arrête le programme, affiche le littéral et donne le contrôleur au pupitreur. LECTURE INFORMATION [ACCEPT] ACCEPT nom-donnée [ FROM SYSIPT/nom-symbolique/CONSOLE ]. ACCEPT lit une information (80 caractères au maximum) à partir :• du lecteur si SYSIPT est indiqué (par défaut)• de la console si CONSOLE est indiqué• du périphérique nommé "nom-symbolique" dans la partie SPECIAL-NAMES et lécrit dans "nom-donnée". ENVOI DE MESSAGE [DISPLAY] DISPLAY littéral1/nom-donnée1 littéral2/nom-donnée2 ... [ UPON SYSLST/SYSPCH/CONSOLE/nom-symbolique ]. DISPLAY envoie un message vers :• le périphérique nommé "nom-symbolique" dans la partie SPECIAL-NAMES• limprimante (120 caractères au maximum) si SYSLST est indiqué• la console (100 caractères au maximum) si CONSOLE est indiqué• la carte (80 caractères dont 72 utilisables au maximum)UPON Si UPON est utilisé, le périphérique pris 38
  • 38. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol par défaut est limprimante.DONNEE DEFINITION numéro-niveau nom-donnée image valeur-initiale. Exemple : 03 Libellé PIC X(7) VALUE TABLEAU numéro-niveau Le numéro de niveau est composé de deux chiffres (de 01 à 49, et 77). Il indique le niveau dans la hiérarchie de la structure. Les niveaux 01 et 77 sont particuliers :• Le niveau 01 définit le sommet de la hiérarchie. Un cadrage à gauche est effectué.• Le niveau 77 définit une variable ne figurant dans aucun groupement. Attention : Les définitions de niveau 77 doivent précéder les définitions de variables. Conventions :• Commencer en marge B.• Décaler de 4 positions à chaque changement de niveau. nom-donnée Cest le nom de larticle. Il est préférable que le nom soit unique, mais il peut être tout de même répété sil se trouve dans des branches différentes. Le nom FILLER peut être utilisé (entre les niveaux 02 et 49) chaque fois quil y a une zone constante faisant partie dune zone à éditer. Mais aucune référence à cette zone ne pourra être faite. image On indique ici :• la taille de la variable• son type• ce quon en fera 39
  • 39. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol Cette définition doit tenir en 30 caractères au maximum. Il existe quatre types dimages :• image alphanumérique• image numérique• image numérique dédition• image alphabétique image alphanumérique Cette zone peut contenir nimporte quel caractère. Exemple : PIC XXXXXXXXXX ou PICTURE IS XXXXXXXXXX définit une variable pouvant contenir jusquà 10 caractères. On pourra écrire plus simplement : PIC X(10) Si la zone de réception est plus grande que la zone dorigine, il y a cadrage à gauche, et des espaces sont ajoutés pour combler. Si la zone de réception est plus petite que la zone dorigine, il y a perte des caractères dépassant à droite. image numérique Cette zone ne peut contenir que des nombres signés ou non. Seuls les chiffres de 0 à 9 sont acceptés. Exemple : PIC 9999999999 définit une variable pouvant contenir jusquà 10 chiffres. On pourra écrit plus simplement : PIC 9(10). Autres exemples :• Si en mémoire on a 0123, alors PIC 99V99 stocke la valeur 01,23• PIC 9999 stocke la valeur 0123• PIC 999V9 stocke la valeur 012,3• Si on transfère la valeur 265724 de PIC 9(4)V99 à 999V999, alors la valeur devient 657240. Les troncatures sont signalées par un message davertissement du style « ILA5011I-> HIGH ORDER TRUNCATION MIGHT OCCUR ». Mais il y a poursuite de la compilation. image numérique - EBCDIC• Pour les nombres positifs, le chiffre extrême droit est remplacé par : A pour +1, B pour +2, ... I pour +9.• Pour les nombres négatifs, le chiffre extrême droit est remplacé par : J pour -1, K pour -2, ... R pour -9. Donc le signe noccupe pas de place en mémoire. 40
  • 40. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol Exemple :• +100,3 est représenté en mémoire par 000100C,• -100,3 par 000100L. En cas de troncature ou de remplissage avec des 0, Cobol gère correctement le signe. Attention : Penser à déclarer les variables avec signe lorsquelles sont susceptibles de recevoir des valeurs négatives. image numérique dédition Les images numériques dédition permettent la représentation de valeurs numériques sur les états. On distingue :• les caractères dinsertion ",", "B", "_", "/", "0", "F", "$", "+", "-", "CR", "DB"• Ils sont insérés dans la chaîne de caractères à imprimer.• Chacune occupe un caractère.• Exemple :• PIC 9(4)V99 (6 caractères)• PIC 9(4),99 (7 caractères)• la virgule ","• Ce caractère dinsertion permet aussi le centrage sur la virgule réelle.• Ne pas oublier dindiquer "DECIMAL-POINT IS COMMA" dans le paragraphe• SPECIAL-NAMES.• Exemple :• 005862 5862,00• PIC ------ ------> -------• 9(6) 9(4),99• Le caractère "F" (pour les Francs) ou "$" (pour les dollars)• Il insère un symbole de monnaie.• Il doit figurer à gauche de limage.• Il faut indiquer CURRENCY SIGN IS F dans le paragraphe SPECIAL-NAMES.• Exemple : PIC F99.999.999• Le caractère "."• Il faut indiquer DECIMAL-POINT IS COMMA" dans le paragraphe SPECIAL-NAMES.• Les caractères -, +, DB, CR• Les caractères DB et CR ne peuvent être placés quà droite.• Les caractères + et - peuvent être placés à gauche ou à droite. 41
  • 41. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol• Le - nimprime le signe que sil est négatif.• Le + imprime toujours le signe.• Les caractères "Z", "*"• Le "Z" supprime les zéros non significatifs.• Le "*" remplace les zéros non significatifs par des "*", afin de rendre difficile la falsification des documents.• Par convention, on ne cherche pas à supprimer les 0 de la partie décimale.• Lorsque la valeur à imprimer dépasse de la taille de la zone dimpression, les chiffres de gauche sont supprimés.• Afin de garantir une sortie correcte, on colle toutes les informations en ajoutant un chiffre significatif à limage avec remplacement des zéros par un espace.• Les caractères "F", "$", "+", "-"• Ce sont des caractères de remplacement.• Les zéros non significatifs sont remplacés par des espaces, sauf celui le plus à droite, qui reçoit le symbole de monnaie (F, $) ou le signe (+, -).• Il faut toujours prévoir un caractère de plus par rapport au nombre de chiffres dans la zone émettrice.• Exemple avec perte de chiffre :• PIC S9(6) ----> PIC -(5)9• 58625L -86253• Lorsque la zone numérique est nulle, on peut nimprimer que des espaces :• PIC ZZZ,99 BLANK WHEN ZERO image alphabétique Les images alphabétiques permettent la représentation de groupes de lettres (de A à Z, plus lespace). Tous les autres caractères sont exclus : "-", "_", "1", ... valeur initiale (optionnel) Si on ne précise pas la valeur que prendra les variables au début du programme, alors on ne peut connaître leur valeur. Certains compilateurs les remettent à zéro, dautres pas ... Pour donner une valeur initiale, on utilise VALUE. Exemple : 02 COMPTEUR PIC 999 VALUE 0. 02 NOM PIC X(20) VALUE DUPONT LAURENT. 02 INDICE PIC 999 VALUE ZERO. 02 ADRESSE PIC X(20) VALUE SPACE. 42
  • 42. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol Notes :• ZERO, ZEROS, ZEROES sont équivalent à 0.• SPACE, SPACES sont équivalents à des espaces.• La clause VALUE est possible au niveau du groupe. Mais un article ne peut pas recevoir deux VALUE. Ainsi, dans ce cas, aucun de ses articles élémentaires ne peut contenir elle-aussi la clause VALUE.• Il est également possible de mettre une clause VALUE avec une image dédition : 01 TOTAL PIC ZZ9,99 VALUE 0,00. Représentation des données : USAGE Valeur binaire : COMPUTATIONAL 01 MONTANT PIC S9(7)V99 COMP-3 VALUE ZERO. 01 CODE PIC 99 COMP VALUE 80. DE A TAILLE 9 9(4) 1/2 mot 2 octets 9(5) 9(9) 1 mot 4 octets 9(10) 9(18) 2 mots 8 octets Note :• COMP = COMPUTATIONAL• COMP-1 = COMPUTATIONAL-1• COMP-2 = COMPUTATIONAL-2• COMP-3 = COMPUTATIONAL-3 Le cadrage nest pas automatique. Mais en cas dalignement incorrect, chaque valeur est transférée vers une zone de travail pour les opérations arithmétiques. Les calculs sont alors corrects, mais il y ralentissement. La clause SYNC permet daligner correctement. 02 BOUCLE PIC 9(5) COMP SYNC. Réserve 4 octets alignés sur un mot. Exemple :• 02 A PIC 9(6) COMP SYNC. 4 octets, soit 1 mot.• 02 B PIC 9(3) COMP SYNC. 2 octets, soit 1/2 mot.• 02 C PIC 9(5) COMP SYNC. 4 octets, soit 1 mot. A B xxx C 2 octets sont donc rajoutés en "xxx" pour constituer 1 mot. La mention SYNC pour B nest pas nécessaire dans ce cas. Mais elle le serait dans le cas déventuelles insertions.COMP Représentation binaire. 43
  • 43. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage CobolCOMP-1 Virgule flottante, simple précision. • 4 octets. • 6 chiffres significatifs. • Valeur absolue de 10^(-78) à 10^(+75).COMP-2 Virgule flottante, double précision. • 8 octets. • 16 chiffres significatifs. • Valeur absolue de 10^(-78) à 10^(+75).COMP-3 Décimal condensé. • 5 octets. • (9 1/2 octets pour les chiffres + 1/2 octets pour le signe) : 1 chiffre (1 octet) + 3 chiffres (2 octets) + 5 chiffres (3 octets) On peut éviter le problème des cadrage en mettant les réservations dans lordre suivant : • doubles mots • simples mots • demi-mots • valeurs EBCDIC • valeurs en décimal condenséWORKING STORAGE SECTION PRESENTATION La Working Storage Section contient toutes les zones utiles pour stocker des informations au cours même de lexécution dun programme (zones de travail). ZONE ELEMENTAIRE 44
  • 44. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol Une zone élémentaire est une zone qui ne peut pas être subdivisée. Exemple : la zone dun compteur. Elle contient une clause PIC. GROUPEE Une zone groupée est un regroupement de plusieurs zones élémentaires. Exemple : la zone contenant plusieurs compteurs. Elle ne contient pas de clause PIC, mais peut contenir les clauses USAGE et/ou VALUE (par défaut PIC X et USAGE DISPLAY). Exemple : (PIC X) (PIC 9) Zone groupée = Zone élémentaire 1 + Zone élémentaire 2 (PIC 9) INDEPENDANTE Une zone indépendante est une zone ni groupée ni faisant partie dune zone groupée. NOMBRE-NIVEAU Chaque niveau de description possède un nombre-niveau. Le plus haut niveau dune zone groupée est 01. Les nombre-niveaux ne se suivent pas forcément. Ils peuvent aller de 01 à 49. Les nombre-niveaux 01 et 77 commencent en marge A. Seules les zones élémentaires ont une "picture". Une zone groupée est suivie dun point (après la clause USAGE sil y en a une). Par convention, on décale de quatre position pour chaque changement de niveau. On cherche à regrouper des informations de même domaine dans un groupe. 01 nom-groupe VALUE ZEROS. permet de remettre à zéro une zone EBCDIC, mais pas des zones en décimal condensé ou autre. Alignement mémoire Afin daugmenter la rapidité dexécution, le compilateur aligne les informations de niveau 01 sur la frontière suivante :Zone Alignement2 octets, jusquà S9(4) Demi-mot4 octets, jusquà S9(9) Mot8 octets, au-delà de S9(9) Doubl-mot Exemple : 45
  • 45. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol • NUMERO sur 3 caractères 3 octets • NOM sur 7 caractères 7 octets • QUANTITE sur 4 octets (en binaire) 4 octetsNuméro Nom xxxxx Quantité0 2 3 9 10 11 12 151 2 3 4 Numéro du mot Redéfinition des zones La redéfinition des zones sert dans le cas où lon veut que une même zone de travail contienne plusieurs types de renseignements. Note importante : Cette redéfinition ne réserve pas de place en mémoire. Voici les règles à respecter : • La zone redéfinie doit être de même niveau que la zone à redéfinir. • Dans le cas de plusieurs redéfinitions dune même zone à redéfinir, les redéfinitions se rapportent toujours à la zone à redéfinir. • La zone redéfinie ne doit pas contenir de clause VALUE. • Les zones redéfinies doivent immédiatement suivre la zone à redéfinir. • La zone redéfinir doit avoir la même longueur que la zone à redéfinir. Exemples : • Une zone peut être décomposée deux plusieurs manières : • 01 ZONE • 02 ZONE-1 PIC X(10). • 02 ZONE-2 PIC X(20). • 01 ZONE-REDEF REDEFINES ZONE. • 02 ZONE-3 PIC X(30). • Une même zone peut avoir deux PIC différents : • 01 ZONE-1 PIC X(5). • 01 ZONE-2 PIC 9(5). • Où encore : • 01 ZONE. • 02 ZONE-1 PIC 9(5). • Car ZONE est définit en alphanumérique. • Une conversion de francs en centimes par exemple : • 77 FRANCS PIC 999V99. 46
  • 46. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol • 77 CENTIMES REDEFINES FRANCS PIC 9(5).Noms de condition Un nom-condition est vrai sil appartient à un certain ensemble de valeurs. Ceci permet décrire des programmes plus parlants. 88 nom-condition VALUE littéral [ TROUGH/THRU littéral ] [ littéral [ TROUGH/THRU littéral ] ] Exemples : • Nationalité ... 77 NATIONALITE PIC 9. 88 FRANCAIS VALUE 1. 88 ETRANGER VALUE 2. On écrirait : IF NATIONALITE = 1 COMPUTE ... Mais on peut écrire : IF FRANCAIS COMPUTE ... • Age ... 01 AGE PIC 9(3). 88 ENFANT VALUE 1 THRU 17. 88 JEUNE VALUE 18 THRU 25. 88 ADULTE VALUE 25 THRU 65. 88 VIEILLARD VALUE 66 THRU 100. Les enfants ont de 1 à 17 ans. Les jeunes de 18 à 25 ans. Les adultes de 25 à 65 ans. Les vieillards de 66 à 100 ans. • Annuaire téléphonique ... 01 LETTRE PIC X. 88 VOYELLE VALUES A, E, I, O, U, Y.Expression RENAMES RENAMES est très rarement utilisé et permet de redéfinir une zone à cheval sur deux autres zones. 01 DATE. 02 DATE-1. 03 DATE-JJ PIC 99. 47
  • 47. Bruno Delb http://www.brunodelb.com Date : 12/02/2001 Le langage Cobol 03 DATE-MM PIC 99. 03 DATE-AA PIC 99. 02 DATE-MM2 PIC 99. 66 DATE-2 RENAMES DATE-AA THRU DATE-MM2. • DATE-2 contient donc les zones DATE-AA (lannée) et DATE-MM2 (le mois). • La zone renommée ne suit pas obligatoirement les zones à renommer. • Les zones à renommer ne peuvent pas être de niveau 01, 77 ni 88.PROCEDURE DIVISION INTRODUCTION ROUNDED renvoit un arrondi à lunité supérieure du chiffre le moins significatif si > 4. 48

×