Historique : avant 1960

Versions :

COBOL ANS 74  ("American National Standard")

COBOL ANS 85

 

Structure d'un prog COBOL

divisions

   sections

   paragraphes

Rq : toujours un point à la fin

 

IDENTIFICATION DIVISION.

   PROGRAM-ID.  Nom.

ENVIRONMENT DIVISION.

   INPUT-OUTPUT SECTION.

      FILE-CONTROL.

      *>associations descr-ficphysique

DATA DIVISION.

   FILE SECTION.

   *>déclarations de descr

   *>définition de structures d'un descr

   WORKING-STORAGE SECTION.

   *>déclarations de var

PROCEDURE DIVISION.

   *> traitements

STOP RUN.

nom-§.

   *> description §

END-PERFORM.

END PROGRAM Nom.

 

Formatage des programmes COBOL

col 7 : * : commentaires

col. 8 ® 72 : prog. en lui-même

 

Ecrire des commentaires

*(col. 7) commentaire ® fin ligne

*> commentaires ® colonne 72

 

Associer un descr de fic à un fic physique en accès séquentiel

ENVIRONMENT DIVISION.

   INPUT-OUTPUT SECTION.

      FILE CONTROL.

SELECT NomDescr ASSIGN TO "NomFicPhysique"   ORGANIZATION TypeOrganisation.

 

Type d'organisation

   SEQUENTIAL

   LINE SEQUENTIAL : 1 enreg = 1 ligne

 

 

Déclarer un descr de fic

DATA DIVISION.

   FILE-SECTION.

FD NomDescr.

   01 NomStructDescr.

      02 NomChamp1 type.

      02 NomChamp2 type.

Rq : on peut omettre le nom d'un champ

 

Les structures servent à découper les enregistrements dans un descr

 

FD NomDescr.

   01 TypreEnreg

      02 NomChamp1 type.

      03 …

   01 AutreTypeEnreg

     

Ex : FD descr-de-phrases.

        01 phrase PIC X(20).

           02 mot PIC X(5).

          

 

 

Ecrire des instructions

PROCEDURE DIVISION.

NomParagraphe.

   Instruction1

   Instruction2

  

STOP RUN.

END PROGRAM NomProgramme.

 

Attn : en COBOL, toujours un point sauf pour les instructions

 

Déclarer une variable

 

DATA DIVISION.

   WORKING-STORAGE SECTION.

 

Non-binaire : 1 octet par car

77 NomVar PIC  format  [VALUE valInit].

 

Entier binaire : ½ octet par car

77 NomVar PIC format COMP [VALUE valInit].

 

Réel binaire (float) sur 4 octets

77 NomVar COMP-1  [VALUE valInit].

 

Réel binaire (double) sur 8 octets

77 NomVar COMP-2 [VALUE valInit].

 

Booléen sur 8 octets

77   PIC 9 VALUE val_à_faux.

   88 nom_booléen VALUE val_à_vrai.

Rq : le booléen est initialisé à FAUX

Types COBOL

 

Types non codés

alphanumérique

X

1 octet

XXX

3 octets

X(nb)

nb octets

alphabétique

A

1 octet

A(nbCar)

nbCar octets

 

Types codés = type défini par une combinaison de caractères

 

alphanumérique

B

blanc

X

 

/

'/'

nombres

9

1 chiffre

99

2 chiffres

9(nb)

nb chiffres

S

signe algébrique

V

virgule

 

Z

1 chiffre qui ne sera pas affiché si c'est 0

Ex :

-12.23 est du type S99V99

15/oct/ 01 est du type XX/XXX/BXX

S9(10)

 

Rq : en COBOL, il n'y a pas de car de fin de chaîne ('\0' en C++)

Rq : V et S ne sont pas compris dans la taille d'un nombre

Rq : en COBOL, la fermeture du descr est implicite

Taille : chq caractère Û 1 octet sauf quand le codage est binaire

 

NOT  Û 'non' logique

AND  Û 'et' logique

OR Û  'ou'  logique

Instructions

 

Afficher

   DISPLAY "texte_à_afficher"   var [NO ADVANCING]

   DISPLAY var (colonneDéb : nbColonnes)

   DISPLAY structure (colonneDéb : nbColonnes)

   EXHIBIT NAMED var

Attn : contrôler les bornes pour l'affichage d'une colonne à une autre

NO ADVANCING empêche le passsage à la ligne suivante

EXHIBIT NAMED var Û DISPLAY "var = " var

 

Saisir (clavier)

   ACCEPT var

   ACCEPT nom-structure      *> déconseillé

Attn : la saisie d'une structure n'est pas champ par champ, elle n'est pas formatée Þ risques

 

Ouvrir un descripteur

OPEN mode nom-descr

 

Modes

lecture

INPUT

écriture

OUTPUT

ajout en fin de fichier

EXTEND

lecture/écriture

I-O

 

Fermer un descripteur

CLOSE nom-descr

 

Lire

READ nom-descr INTO var

   [AT END Instructions_si_on_atteint_la_fin]

END-READ

Þ lit toute la structure de niveau 01

 

Ecrire

WRITE structure   [FROM var]

END-WRITE