Ses qualités intrinsèques (accent mis sur la lisibilité et la portabilité des programmes, facilité d'emploi des divers types de fichiers, traitement uniforme des données), et sa disponibilité sur toutes les machines commercialisées, en font un outil toujours très apprécié dans l'industrie. On évalue le stock de programmes COBOL en activité à plus de 7 milliards de lignes !
Le langage Cobol est défini par des normes internationales qui suivent, à chaque révision, l'évolution des techniques de programmation, tout en restant aussi compatible que possible avec la norme précédente. La norme actuelle (COBOL 85) intègre notamment les acquis de la programmation structurée, et de la modularité. La prochaine version, prévue pour 1996, permettra la programmation par objets.
Pour plus de détails, nous conseillons au lecteur de lire les informations extraites du groupe de nouvelles comp.lang.cobol
IDENTIFICATION DIVISION. program-id. Parking. author. M Billaud. ***************************************************************** * gestion d'un parking prive ***************************************************************** ENVIRONMENT DIVISION. input-output section. file-control. select F-PARKING assign to "f-parking" organization is indexed access is dynamic record key PLAQUE alternate record key PROPRIETAIRE with duplicates. ***************************************************************** DATA DIVISION. FILE SECTION. fd F-PARKING. 01 ENR-PARKING. 02 PLAQUE pic x(8). 02 PROPRIETAIRE pic x(20). 02 VEHICULE pic x(20). 02 PRESENT pic x(1). WORKING-STORAGE SECTION. * Constantes utiles ... 77 VRAI pic x value "T". 77 FAUX pic x value "F". 77 CHOIX pic x. * variables et indicateurs ... 77 PROPRIETAIRE-CHERCHE pic x(20). 77 FF-PARKING pic x. 77 FIN-TRAVAIL pic x. 77 VEHICULE-EXISTE pic x. 77 LIBELLE-QUESTION pic x(30). 77 LIGNE-PARAMETRES pic x(80). ************************************************************* PROCEDURE DIVISION. PRINCIPALE SECTION. TRAITEMENT. * ouverture, boucle principale, fermeture et fin. * accept LIGNE-PARAMETRES. open i-o F-PARKING. move FAUX to FIN-TRAVAIL. perform MENU-PRINCIPAL until FIN-TRAVAIL = VRAI. close F-PARKING. stop run. MENU-PRINCIPAL. * affichage du menu principal * et aiguillage vers les differentes actions display "Entree, Sortie, Inscriptions, Listes, Fin". accept CHOIX. evaluate choix when "E" perform entree-vehicule when "S" perform sortie-vehicule when "I" perform inscriptions when "L" perform listes when "F" move VRAI to FIN-TRAVAIL when other display "Commande non comprise" CHOIX end-evaluate. ENTREE-VEHICULE. * demande la plaque du vehicule qui entre, * verifie qu'il est dans le fichier et change l'indicateur * de presence. move "Immatriculation du vehicule qui entre ? " to LIBELLE-QUESTION. perform CHERCHER-VEHICULE. if VEHICULE-EXISTE = VRAI then if PRESENT = VRAI then display "Il est deja rentre au parking !" else move VRAI to PRESENT rewrite ENR-PARKING display "Entree enregistree:" perform AFFICHAGE end-if else display "Ce vehicule n'est pas enregistre" end-if. SORTIE-VEHICULE. * idem pour les vehicules qui sortent. move "Immatriculation du vehicule qui sort ? " to LIBELLE-QUESTION. perform CHERCHER-VEHICULE. if VEHICULE-EXISTE = VRAI then if PRESENT = FAUX then display "Il est deja sorti du parking !" else move FAUX to PRESENT rewrite ENR-PARKING display "Sortie enregistree:" perform AFFICHAGE end-if else display "Ce vehicule n'est pas enregistre" end-if. CHERCHER-VEHICULE. * demande la plaque d'un vehicule, et lit * l'enregistrement correspondant * positionne l'indicateur VEHICULE-EXISTE display LIBELLE-QUESTION. accept PLAQUE. read F-PARKING key is PLAQUE invalid key move FAUX to VEHICULE-EXISTE not invalid key move VRAI to VEHICULE-EXISTE end-read. INSCRIPTIONS. * Sous-menu des insriptions display "Inscrire, Supprimer, Rien". accept CHOIX. evaluate CHOIX when "I" perform INSCRIRE when "S" perform SUPPRIMER when "R" display "Ok" when other display "Choix non compris, retour menu principal" end-evaluate. INSCRIRE. * saisie et enregistrement d'une inscription display "Immatriculation du vehicule a inscrire". accept PLAQUE. display "Nom du proprietaire ?". accept PROPRIETAIRE. display "Description du vehicule ?". accept VEHICULE. move FAUX to PRESENT. write ENR-PARKING invalid key display "Vehicule deja enregistre !" not invalid key display "Vehicule enregistre: " perform AFFICHAGE end-write. SUPPRIMER. * saisie plaque du vehicule a supprimer, * puis suppression effective move "Immatriculation du vehicule a supprimer ?" to LIBELLE-QUESTION. perform CHERCHER-VEHICULE. if VEHICULE-EXISTE = VRAI then display "Suppression de :" perform AFFICHAGE delete F-PARKING record else display "Je n'ai pas ce vehicule" end-if. LISTES. * sous menu des listes: par plaque ou par proprietaire display "Vehicule, Proprietaire ?". accept CHOIX. evaluate CHOIX when "V" perform liste-vehicule when "P" perform liste-proprietaire end-evaluate. LISTE-VEHICULE. * recherche d'un vehicule move "Immatriculation du vehicule ? " to LIBELLE-QUESTION. perform CHERCHER-VEHICULE. if VEHICULE-EXISTE = VRAI display "Vehicule recherche:" perform AFFICHAGE else display "Pas trouve" end-if. LISTE-PROPRIETAIRE. * saisie du nom du proprietaire * et affichage de tous ses vehicules display "Nom du Proprietaire ?" accept Proprietaire. move proprietaire to proprietaire-cherche. start F-parking key is = proprietaire invalid key display PROPRIETAIRE-CHERCHE "sans vehicule ici" not invalid key perform boucle-proprietaire end-start. BOUCLE-PROPRIETAIRE. * boucle de lecture et affichage. move FAUX to FF-PARKING. move PROPRIETAIRE to PROPRIETAIRE-CHERCHE. Display "Vehicules appartenant a " PROPRIETAIRE ":" perform until FF-PARKING = VRAI read F-PARKING next record into ENR-PARKING at end move VRAI to FF-PARKING not at end if PROPRIETAIRE = PROPRIETAIRE-CHERCHE then perform AFFICHAGE else move VRAI to FF-PARKING end-if end-read end-perform. display "* fin de liste". AFFICHAGE. * affichage de l'enregistrement display "Vehicule " PLAQUE " appartenant a " PROPRIETAIRE. display "description: " VEHICULE. if PRESENT = VRAI display "Present au parking" else display "Sorti du Parking" end-if.