COBOL OMGL. Cobol AS/400, J. Marengo, G.Grimonprez



Documents pareils
IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels


1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Initiation à la programmation en Python

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Algorithmique et Programmation, IMA

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Bernard HAMM, Évelyne LAVOISIER

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Conventions d écriture et outils de mise au point

Plan du cours. Historique du langage Nouveautés de Java 7

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmer en JAVA. par Tama

Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Introduction à JDBC. Accès aux bases de données en Java

SYSTÈME DE GESTION DE FICHIERS

Procédures d'utilisation de Maitre'D

Installation FollowMe Q server

4. Groupement d objets

Guide d'installation et de configuration de Pervasive.SQL 7 dans un environnement réseau Microsoft Windows NT

Once the installation is complete, you can delete the temporary Zip files..

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Introduction à l informatique en BCPST

Algorithmique et programmation : les bases (VBA) Corrigé

Eclipse atelier Java

Chapitre 2 Devine mon nombre!

Utiliser une base de données

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Rappels d architecture

Java Licence Professionnelle CISII,

UE Programmation Impérative Licence 2ème Année

TP1 : Initiation à Java et Eclipse

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

PROJET 1 : BASE DE DONNÉES REPARTIES

NETWORK & SOFTWARE ENGINEERING MANUEL D UTILISATEUR. Logiciel TIJARA. NETWORK AND SOFTWARE ENGINEERING Manuel d'utilisateur "TIJARA" 1

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

SOMMAIRE. Travailler avec les requêtes... 3

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Le langage C. Séance n 4

1. Base de données SQLite

Business Sharepoint Contenu

Cours Informatique Master STEP

LES ACCES ODBC AVEC LE SYSTEME SAS

Programmation C. Apprendre à développer des programmes simples dans le langage C

La base de données dans ArtemiS SUITE

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

TP Contraintes - Triggers

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Créer une base de données

HelpAndManual_unregistered_evaluation_copy GESTIONNAIRE D'ALARMES CENTRALISE OPTIM'ALARM. Manuel d'utilisation

Les dossiers, sous-dossiers, fichiers

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

TP 1. Prise en main du langage Python

Compte-rendu de projet de Système de gestion de base de données

Connexion de Votre Imprimante Multifonction à votre Réseau pour la Première Fois

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

ACTIVITÉ DE PROGRAMMATION

Notes de cours : bases de données distribuées et repliquées

Programmation système I Les entrées/sorties

Stockage du fichier dans une table mysql:

Génie Logiciel avec Ada. 4 février 2013

Introduction au langage C

Recherche dans un tableau

1 ) INSTALLATION DE LA CONSOLE 2 2 ) PREMIER DÉMARRAGE DE LA CONSOLE 3 3 ) LES JOBS 4 4 ) LES ORDINATEURS 6

Structure d un programme

Tout savoir sur le clavier

TP, première séquence d exercices.

Conception de circuits numériques et architecture des ordinateurs

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Création de Sous-Formulaires

Instructions Installation ELLIS Business: Vidéo Local Windows 2003 & XP poste de Travail

ésylog, direction technique Esylog_PeerBackup outil de sauvegarde individuelle mails & fichiers personnels documentation technique

Compléments de documentation Scilab : affichage de texte et formatage de nombres

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Guide pour les chercheurs. Version 1.0

VM Card. Manuel des paramètres des fonctions étendues pour le Web. Manuel utilisateur

.NET - Classe de Log

26 Centre de Sécurité et de

La Clé informatique. Formation Excel XP Aide-mémoire

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Réparer un disque dur passé en RAW

Une introduction à Java

La mémoire. Un ordinateur. L'octet. Le bit

ENVOI EN NOMBRE DE SMS

l'ordinateur les bases

Cours d algorithmique pour la classe de 2nde

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Réparer un disque dur passé en RAW

Transcription:

COBOL OMGL 1

Concevoir et mettre en oeuvre une application ANALYSE REALISATION 2

Réalisation Types d'applications Gestion Scientifique Réseau Multimédia Choix d'un système Choix d'un langage Système OS/400 Langage Cobol 3

Application de Gestion Stockage Affichage Saisie Traitements Impression 4

Modélisation d'un traitement 5

Interfaces Utilisateur Console Windows OS400 6

7

8

Notion de Fichier Fichier Produit Pour chaque produit (1 produit 1 enregistrement) Il faut connaître ses caractéristiques afin de pouvoir effectuer les traitements (accès direct et séquentiel) : - ajouter un nouveau produit - modifier un produit (ex: quantité en stock) - supprimer un produit - rechercher un produit et afficher ses caractéristiques (consulter) - imprimer le catalogue (lister) - 9

Notion d'enregistrement Fichier Produit Informations relatives à un produit (enregistrement) : - Code produit - Libellé produit - Quantité en stock - Prix unitaire de vente Clé ou identifiant 10

Unité fonctionnelle Description «algorithmique» du traitement Exemple: Pour chaque produit commandé: Saisir un numéro de produit. Tant que le numéro de produit n est pas trouvé, le ressaisir. Calculer Afficher Demander validation, si OK imprimer la facture 11

Fichier Imprimante Structure du document différents modèles de lignes ETAT DES STOCKS Date : 31 août 2003 N produit Libellé Quantité en stocks.................... 12

Chapitre 1 Introduction à l AS/400 13

Login 14

ou SIGNOFF 15

Commande de création de fichier source Valider par F4 CReaTe SouRCe Physical File 16

Nom du fichier source choisi par l utilisateur pour une application donnée 17

Structure d un fichier SOURCE Un fichier SOURCE AS400 est comparable à un répertoire sous Windows Il peut contenir plusieurs MEMBRES ( un fichier Windows) Un membre peut être Une description d interface utilisateur (images-écran) de type DSPF (DiSPlay File) Un programme Cobol de type CBL (CoBoL) Un fichier de données de type PF (Physical File) 18

19

Démarrage de PDM (Program Development Manager), valider par Entrée 20

21

Nom du fichier source 22

23

Nom du membre contenant Les FORMATS (images-écrans) 24

Langage DDS (Data Description Specification) complexe Pouvant être généré automatiquement par SDA (Screen Design Aid) 25

26

27

Mettre à jour les images-écrans 28

Un FORMAT Une image-écran 1 = Ajouter une nouvelle image-écran 12 = Modifier une image-écran 29

Membre DSPF Un membre DSPF peut contenir PLUSIEURS images-écran. Chaque image-écran est un FORMAT Un format est utilisable en programmation (ex : langage Cobol). Un même membre peut être utilisé dans différents programmes. 30

Conception d une image-écran (FORMAT) 1) Placer les libellés Titre Libellé de chaque zone de saisie Autres libellés (aide utilisateur) 2) Définir les zones de saisie 3) Classer les zones de saisie 31

Nom du format Création d un nouveau format 32

33

NE JAMAIS UTILISER LE CLAVIER NUMERIQUE NI LA TOUCHE (BackSpace) 34

1) Définir le titre en le plaçant entre apostrophes 2) Valider par ENTREE 35

Zone d attributs AC pour centrer < pour décaler à gauche U pour souligner * A découvrir en TP! Etc Utiliser F1 pour aide en ligne 36

AC, puis ENTREE 37

38

Même principe pour placer les Libellés des zones de saisie Et les aides utilisateurs 39

+ définit une zone de saisie ou affichage B zone de caractères 9 zone numérique Puis valider par ENTREE 40

Nommer les zones de saisie 41

42

Puis F4 pour pouvoir classer les zones 43

Vérifier qu il n y a pas d espaces Dans la colonne Zone 44

45

Déplacer un bloc *DATE *TIME *USER voir en TP 46

3 = pour déplacer == pour dupliquer 1 2 47

UNE SEULE FOIS F3 PUIS PLUSIEURS FOIS ENTREE jusqu à l écran suivant. 48

49

Dans la phase de sauvegarde vérifier que l on bien reçu cet écran 50

Chapitre 2 Introduction au langage Cobol Interface COBOL SDA 51

COBOL Common Organization Business Oriented Language Basé sur la langue anglaise Structuré en Divisions Sections Paragraphes» Phrases, verbes, noms, opérateurs, signes de ponctuation 52

Structure générale IDENTIFICATION DIVISION Nom du programme ENVIRONMENT DIVISION Interface système d exploitation DATA DIVISION Structure des données PROCEDURE DIVISION Description du traitement 53

IDENTIFICATION DIVISION IDENTIFICATION DIVISION. PROGRAM-ID. EXEMPLE1. Mot-clé Nom du programme Lettre suivie de lettres et/ou de chiffres 54

ENVIRONMENT DIVISION Nom de la variable Fichier utilisée dans Le programme Cobol ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. Nom du Membre FILE-CONTROL. Contenant les images-écran * Interface système SELECT F-ECRANS ASSIGN TO WORKSTATION-ECRANS ORGANIZATION A B TRANSACTION. 55

Le membre DSPF contenant les images-écrans (formats) a été créé à l aide d un nom, exemple ECRANS: Dans le programme Cobol, il faut définir une variable associée au membre ECRANS. Ce nom peut être quelconque (ex SCREENWY45RT). Pour faciliter l écriture du programme, nous SUGGERONS d utiliser la convention : F-nom du membre DSPF Exemple : F-ECRANS 56

A B DATA DIVISION DATA DIVISION. Nom du fichier FILE SECTION. Nom d enregistrement FD F-ECRANS. 01 E-ECRANS PIC X(2000). WORKING-STORAGE SECTION. Déclarations des variables 57

Variable pour le programme Cobol F-ECRANS Associée à 01 E-ECRANS Zone d échange 58

PROCEDURE DIVISION Marge A PROCEDURE DIVISION. MAIN. Phrases (traitement)en marge B STOP RUN. Autres paragraphes («méthodes» Java) 59

Phrases : affichage d une image-écran OPEN I-O F-ECRANS WRITE E-ECRANS FORMAT "nom du format" READ F-ECRANS CLOSE F-ECRANS 60

Utilisation des verbes OPEN et CLOSE OPEN I-O F-ECRANS Vérification de l existence du membre associé par le select et des droits d accès Possibilité d exécuter plusieurs affichages et saisies (séquences Write, Read) CLOSE F-ECRANS A faire lorsque le fichier n est plus utilisé 61

Fonctionnement des instructions WRITE et READ 1 WRITE E-ECRANS FORMAT "nom du format" 1 Affichage de l image-écran READ F-ECRANS 2 3 2 Gère les saisies 3 Validation par la touche Entrée 62

Création d'un programme Cobol 63

Nom du programme Cobol 64

Pour l utilisation de l éditeur, Voir en TP 65

C=Exécuter 66

67

WoRKSPooLFile 68

69

70

Chapitre 3 Saisir, Calculer, Afficher 71

Algorithme Saisir deux nombres Calculer leur moyenne Afficher la moyenne Étape 1 : Définir l interface utilisateur : images-écran Étape 2 : Algorithme Étape 3 : Écrire le programme Cobol 72

Étape 1 Format SAISIE Champs : A, B 73

Étape 1 Format : AFFICHAGE Un champ : MOYENNE 74

Étape 2 : Algorithme Saisir les nombres A et B à l aide du format "SAISIE" MOYENNE = (A + B ) /2 Afficher MOYENNE à l'aide du format "AFFICHAGE" 75

IDENTIFICATION DIVISION. PROGRAM-ID. CALCMOY. ENVIRONMENT DIVISION. SELECT F-ECRANS ASSIGN TO WORKSTATION-ECRANS ORGANIZATION TRANSACTION. DATA DIVISION. FILE SECTION. FD F-ECRANS. 01 E-ECRANS PIC X(2000). WORKING-STORAGE SECTION. 77 SOMME PIC 9(10). 01 LESFORMATS. COPY DDS-SAISIE OF ECRANS. Cobol AS/400, J. Marengo, COPY DDS-AFFICHAGE OF ECRANS. 76

PROCEDURE DIVISION. * Début du programme MAIN. OPEN I-O F-ECRANS * Saisie de A et B INITIALIZE SAISIE WRITE E-ECRANS FROM SAISIE FORMAT "SAISIE" READ F-ECRANS INTO SAISIE * Calcul de la moyenne ADD A B GIVING SOMME DIVIDE SOMME BY 2 GIVING MOYENNE * Affichage de la moyenne WRITE E-ECRANS FROM AFFICHAGE FORMAT "AFFICHAGE" READ F-ECRANS * Fin du programme CLOSE F-ECRANS 77

Structure de la "Working" WORKING-STORAGE SECTION. Déclarations des variables (zones de mémoire) utilisables dans la PROCEDURE DIVISION. 2 types de variables. Variables simples 77 SOMME PIC 9(10). Variables structures 01 LESFORMATS.. 78

Les variables simples Nombre maximum de caractères pour la variable TITRE 1 TITRE PIC X(80). 77 I PICTURE 99. Image ou type de la variable Nom-donnée ou identificateur Marge B Marge A 79

Les pictures élémentaires Zones de caractères ("String" java) PIC X(27). Zones numériques Entiers non signés PIC 9(18). Entiers signés ("int" java) PIC S9(4). Réels ("double" java) PIC S9(5)V99. 80

Les structures 01 LESFORMATS. COPY DDS-SAISIE OF ECRANS. COPY DDS-AFFICHAGE OF ECRANS. 05 SAISIE. 06 A PIC S9(10). 06 B PIC S9(10). 05 AFFICHAGE. Nom format 06 MOYENNE PIC S9(10). LES FORMATS 01 05 SAISIE 06 A AFFICHAGE B MOYENNE 81

Le verbe DISPLAY DISPLAY "I = " I Permet d'afficher, pour mise au point, de façon rudimentaire - Comparable au System.out.println du langage JAVA 82

L'instruction d'affectation MOVE MOVE { Identificateur Littéral } TO MOVE 0 TO MOVE 1 TO MOVE " " TO MOVE ALL "*" TO MOVE "DUPOND" TO Identificateur [ Identificateur ] I J K NOM NOM NOM Règles d'utilisation du MOVE, voir page 14 poly de Cobol 83

Précision des résultats Le programmeur choisit la précision des résultats Exemple : 77 TTC PIC 9(10)V99. Attention à prévoir suffisamment de chiffres pour les résultats de calcul Exemple: 77 I PIC 9. MOVE 8 TO I ADD 2 TO I DISPLAY I affiche 0 84

Addition ADD 3 TO I ADD 4 I TO J ADD 1 TO K I=I+3 J=J+4+I K ++ ADD N1 N2 GIVING N ADD N GIVING Z N = N1 + N2 Voir Poly Cobol, page 17 85

Soustraction SUBTRACT 1 FROM J SUBTRACT J K FROM L J=J-1 L=L-J-K SUBTRACT 1 FROM J GIVING K K=J-1 SUBTRACT K L M FROM J GIVING I I=J-K-L-M Voir poly Cobol, page 18 86

Multiplication MULTIPLY 2 BY I I=I*2 MULTIPLY I BY 2 MULTIPLY I BY J GIVING K K=I*J Voir poly Cobol, page 18 87

DIVISION DIVIDE DIVIDE DIVIDE DIVIDE DIVIDE I I I I I INTO J J=J/I BY J INTO J GIVING K K= J/I BY J GIVING K K=I/J INTO J GIVING K REMAINDER R K=J/I R=J%I DIVIDE I BY J GIVING K REMAINDER R K=I/J R=I%J Voir poly Cobol, page 19 88

Chapitre 4 Schémas de contrôle 89

Expressions conditionnelles (booléennes) Java Cobol < < ou LESS THAN > > ou GREATER THAN <= NOT > >= NOT < == = ou EQUAL TO!= NOT = OR && AND! NOT Voir poly Cobol, page 21-22 90

ATTENTION I + 1 < K * 9 Un espace (minimum) obligatoire avant et après chaque symbole d'opérateur 91

Conditions de classes Applicables aux PICTURES en X NOM IS ALPHABETIC Retourne VRAI si NOM ne contient que des lettres ou des espaces CODEPOSTAL IS NUMERIC Retourne VRAI si CODEPOSTAL ne contient que des chiffres NUMERIC et ALPHABETIC peuvent être précédés de NOT 92

L'instruction IF (sans ELSE) Java if ( expr. Cond. ) { } Cobol IF expr. Cond. END-IF 93

L'instruction IF (avec ELSE) Java if ( expr. Cond. ) { } else { } Cobol IF expr. Cond ELSE Poly page 22-24 END-IF 94

L'instruction EVALUATE Java switch ( expression) { case valeur : break; default : } Cobol EVALUATE expression WHEN valeur WHEN OTHER END-EVALUATE 95

L'instruction PERFORM (while java) s=0; i=1; while(i<10) { s=s+i; i++; } MOVE 0 TO S MOVE 1 TO I PERFORM UNTIL I NOT < 10 ADD I TO S ADD 1 TO I END-PERFORM Poly page 29-30 96

Structuration de la PROCEDURE DIVISION PROCEDURE DIVISION. MAIN. "Méthode principale" STOP RUN. "autres méthodes" 97

Définition d'une "méthode" void nommethode () { } NOMMETHODE. instructions. Marge B Poly page 75 Un point pour finir la méthode Marge A Pour les "méthodes" avec passage de paramètres, Voir sous-programmes externes (poly page 97). 98

Appel d'une "methode" PROCEDURE DIVISION. MAIN. OPEN I-O F-ECRANS PERFORM SAISIR-A-ET-B PERFORM CALCUL-MOYENNE PERFORM AFFICHER-RESULTAT CLOSE F-ECRANS STOP RUN. SAISIR-A-ET-B. nommethode(); PERFORM NOMMETHODE INITIALIZE SAISIE WRITE E-ECRANS FROM SAISIE FORMAT "SAISIE" READ F-ECRANS INTO SAISIE. CALCUL-MOYENNE. ADD A B GIVING SOMME DIVIDE SOMME BY 2 GIVING MOYENNE. AFFICHER-RESULTAT. WRITE E-ECRANS FROM AFFICHAGE FORMAT "AFFICHAGE" READ F-ECRANS. 99

Chapitre 5 Images-écran Touches de fonctions Recouvrement 100

Gestion des touches de fonctions Rappel AS/400 Validation par la touche ENTREE Passage au champ suivant par la touche TAB Annulation par F12 Sortie (exit) par F3 101

Déclaration d'une touche de fonction dans l'image-écran Aide utilisateur 102

ECRANS LESSILOS 103

104

F CF03 CFxx (01-24) numéro de la touche de fonction 105

Interface en Cobol SELECT F-ECRANS ASSIGN TO WORKSTATION-ECRANS ORGANIZATION TRANSACTION CONTROL-AREA TF.. WORKING-STORAGE SECTION 01 TF PIC XX. 88 F3 VALUE "03". 88 F12 VALUE "12". 88 etc. Poly Cobol, Page 74 106

Afficher image-écran "SAISIE" TQ l'utilisateur n'a pas appuyé sur F3 calculer la moyenne et afficher le résultat Afficher image-écran "SAISIE" FTQ PERFORM SAISIR-A-ET-B PERFORM UNTIL F3 PERFORM CALCUL-MOYENNE PERFORM AFFICHER-RESULTAT PERFORM SAISIR-A-ET-B END-PERFORM Voir tr 99 pour la définition des méthodes 107

Grilles en recouvrement (OVERLAY) ETAT D'UN SILO Numéro de silo _ Quantité en stocks Écran initial Entrée pour continuer F1 pour avoir de l'aide Un numéro de silo est une lettre de A à J DEUX FORMATS Lorsque l'utilisateur appuie sur F1 108

LESSILOS ECRANS 109

F9 110

LESSILOS ECRANS 111

112

Format Aide 113

LESSILOS ECRANS 114

115

116

Exemple Cobol WRITE E-ECRANS FROM SILO FORMAT "SILO" READ F-ECRANS INTO SILO IF F1 WRITE E-ECRANS FORMAT "AIDE" READ F-ECRANS END-IF 117

Chapitre 6 Les fichiers Application aux fichiers "séquentiels indexés" 118

Organisations de fichiers Trois types d organisation : Séquentielle Accès direct Séquentiel indexé Primitives ouverture (OPEN) fermeture (CLOSE) lecture d un enregistrement (READ) écriture d un enregistrement (WRITE) 119

Organisation séquentielle Fichier Enregistrement 2 Ouverture en lecture OU Ouverture en écriture 1 Ouverture Lecture ou écriture 120

Organisation accès direct Fichier 1 Enregistrement 2 3 4 5 Lecture ou écriture à partir du numéro d enregistrement 121

Organisation séquentielle indexée Fichier Enregistrement Accès séquentiel Lecture ou écriture à partir de la clé d enregistrement 122

Structure d un enregistrement d un fichier séquentiel indexé Champs Clé d enregistrement Chaîne de caractères 123

Utilisation d'un fichier séquentiel indexé Étape 1 création au niveau du système AS/400 Étape 2 programme de mise à jour en langage Cobol 124

Création au niveau système 125

126

R CODESPOSTE 5A Identifiant (clé d'accès) Utiliser F4 pour bien positionner les colonnes 127

128

DiSPlay Physical File Member 129

FIN DE L'ETAPE 1 130

Étape 2 Mise à jour d'un fichier séquentiel indexé SELECT F-CODESPOSTE ASSIGN TO DATABASE-CODESPOSTE ORGANIZATION INDEXED RECORD KEY CODEP OF CODESPOSTE ACCESS DYNAMIC. FD F-CODESPOSTE. 01 E-CODESPOSTE. COPY 05 CODESPOSTE. 06 CODEP PIC X(5). 06 BURDIS PIC X(27). DDS-CODESPOSTE OF CODESPOSTE. OPEN I-O F-CODESPOSTE.. CLOSE F-CODESPOSTE 131

Algorithme Afficher un menu, 4 choix possibles: - ajouter un nouvel enregistrement Code postal Bureau distributeur Saisie - consulter (afficher) un enregistrer Code postal Bureau Distributeur - modifier le contenu d'un enregistrement Affichage Code postal Bureau distributeur Souligné = =>Recherche - supprimer un code postal Code postal Bureau distributeur 132

B FORMAT MENU : CHOIX, CODEP Code postal FORMAT MAJENR : BURDIS AS/400, J. Marengo,: MSG FORMAT Cobol LIGNEMSG 133

Méthode RECHERCHE Donnée : la clé CODEP de CODESPOSTE Résultat : un booléen TROUVE (vrai ou faux) Traitement : rechercher dans le fichier CODESPOSTE s'il existe déjà un enregistrement ayant cette valeur de clé. 2 TROUVE PIC 9. F-NomPF RECHERCHE. MOVE 1 TO TROUVE READ F-CODESPOSTE INVALID KEY MOVE 0 TO TROUVE END-READ. 134

Algorithme de la méthode AJOUTER Donnée : CODEP de CODESPOSTE Traitement : appeler RECHERCHE Si TROUVE = 1 afficher un message d'erreur Sinon saisir l'ensemble des informations complémentaires à l'aide du format MAJENR copier MAJENR dans CODESPOSTE ajouter un nouvel enregistrement Fsi 135

Méthode AJOUTER AJOUTER. PERFORM RECHERCHE IF TROUVE = 1 MOVE "CLE DEJA EXISTANTE" TO MSG PERFORM AFFMSG ELSE INITIALIZE MAJENR WRITE E-ECRANS FROM MAJENR FORMAT "MAJENR" READ F-ECRANS INTO MAJENR MOVE CORR MAJENR TO CODESPOSTE PERFORM AJOUTENREG END-IF. 136

MOVE CORRESPONDING MOVE CORR S1 TO S2 01 S2. 02 B 02 E 02 A 01 S1. 02 A 02 B 02 C "MOVE A OF S1 TO A OF S2 MOVE B OF S1 TO B OF S2" 137

Méthodes AJOUTENREG et AFFMSG E-NomPF AJOUTENREG. WRITE E-CODESPOSTE INVALID KEY MOVE "ERR AJOUT" TO MSG PERFORM AFFMSG END-WRITE. AFFMSG. WRITE E-ECRANS FROM LIGNEMSG FORMAT "LIGNEMSG" READ F-ECRANS. 138

Méthode consulter Donnée: la clé CODEP de CODESPOSTE Traitement: Appeler RECHERCHE Si TROUVE = 1 copier CODESPOSTE dans MAJENR afficher l'enregistrement (format MAJENR) Sinon afficher un message d'erreur Fsi 139

Méthode Modifier Donnée : CODEP de CODESPOSTE Traitement : Appeler RECHERCHE Si TROUVE = 0 afficher un message d'erreur Sinon copier CODESPOSTE dans MAJENR afficher l'enregistrement, récupérer les données modifiées copier MAJENR DANS CODESPOSTE REECRIRE l'enregistrement Fsi REWRITE E-NomPF INVALID KEY. END-REWRITE 140

Méthode Supprimer Donnée : la clé CODEP de CODESPOSTE Traitement: Appeler RECHERCHE Si TROUVE = 0 afficher un message d'erreur Sinon copier CODESPOSTE dans MAJENR afficher l'enregistrement Si l'utilisateur confirme la suppression SUPPRIMER l'enregistrement Fsi DELETE F-NomPF INVALID KEY Fsi END-DELETE 141

Noms de fichiers et d'enregistrements Nom de Fichier Nom d'enregistrement F-xxxxxxx E-xxxxxxxxx OPEN X CLOSE X READ X DELETE X WRITE X REWRITE X START X 142

Chapitre 7 Traitement séquentiel de fichier Application aux fichiers imprimantes 143

Traitement séquentiel d'un fichier Se positionner au début du fichier Lire un enregistrement Tant que l'on est pas arrivé à la fin du fichier Traiter l'enregistrement Lire un enregistrement Fin Tant Que 144

Application aux fichiers séquentiels-indexés, accès DYNAMIC * Se positionner au début du fichier MOVE " " TO clé d'enregistrement MOVE 0 TO B-FICH-VIDE START f-xxxxxx KEY NOT < clé d'enregistrement INVALID KEY MOVE 1 TO B-FICH-VIDE END-START IF B-FICH-VIDE = 1 PERFORM TRAITER-FICHIER-VIDE ELSE PERFORM PARCOURS-SEQUENTIEL END-IF. 145

Méthode PARCOURS-SEQUENTIEL PARCOURS-SEQUENTIEL. MOVE 0 TO BFIN READ f-xxxxxx NEXT AT END MOVE 1 TO BFIN END-READ PERFORM UNTIL BFIN = 1 PERFORM TRAITER-ENREGISTREMENT READ f-xxxxxx NEXT AT END MOVE 1 TO BFIN END-READ END-PERFORM. 146

Exemple d'application : fichier Imprimante Ligne(s) titre Ligne(s) enregistrement Provenant du Parcours séquentiel 147

Fichier imprimante COBOL SELECT F-IMPR ASSIGN TO PRINTER-QSYSPRT. FD F-IMPR. 01 E-IMPR PIC X(132). 148

Les lignes d'impression -Définition en WORKING 01 LIGNE-CEREALE. 02 NUMCEREALE PIC XX. 02 FILLER PIC XXX VALUE " * ". 02 PUACEREALE PIC 99V,99. -Utilisation de l'instruction STRING MOVE " " TO E-IMPR STRING "LISTE DES CEREALES DU MOIS " MOIS DELIMITED BY SIZE INTO E-IMPR 149

Comment imprimer? -Ligne définie en WORKING WRITE E-IMPR FROM LIGNE-CEREALE AFTER 2 -Ligne E-IMPR déjà construite par STRING WRITE E-IMPR AFTER 2 150

Comment obtenir la date système 01 DATESYSTEME. 02 ANNEE PIC 99. 02 MOIS PIC 99. 02 JOUR PIC 99. ACCEPT DATESYSTEME FROM DATE Voir poly page 61 151

PARCOURS-SEQUENTIEL. OPEN OUTPUT F-IMPR Exemple ACCEPT DATESYSTEME FROM DATE MOVE " " TO E-IMPR STRING "LISTE DES CEREALES DU MOIS " MOIS DELIMITED BY SIZE INTO E-IMPR WRITE E-IMPR AFTER 2 MOVE 0 TO BFIN READ F-CEREALE NEXT AT END MOVE 1 TO BFIN END-READ PERFORM UNTIL BFIN = 1 MOVE CORR CEREALE TO LIGNE-CEREALE WRITE E-IMPR FROM LIGNE-CEREALE AFTER 1 READ F-CEREALE NEXT AT END MOVE 1 TO BFIN END-READ END-PERFORM CLOSE F-IMPR. 152

Chapitre 8 Sous-programmes externes 153

A quoi ça sert? - Constituer une "boite à outils" : Définir des "méthodes" ou "sous-programmes" pouvant être appelés à partir d'un programme quelconque. - Possibilité de passages de paramètres (données et/ou résultats) 154

Exemples - Vérifier si une date est correcte. - Connaissant un code (numéro), récupérer un libellé (chaîne de caractères) associé. - Imprimer une lettre type (on fournit comme données les nom et adresse d'une personne) 155

Appel d'un sous-programme CALL "VERIFNOT" USING NOTEMATH BNOTE - NOTEMATH et BNOTE constituent les paramètres. - Chaque paramètre peut être "donnée" et/ou "résultat": le sous-programme peut éventuellement modifier la valeur d'un quelconque paramètre - Le nombre de paramètres peut être quelconque. - Un appel de sous-programme sans paramètre ne doit pas utiliser la clause USING. Ex: CALL "SPG" - Le nom du sous-programme doit être écrit entre guillemets 156

Définition d'un sous-programme IDENTIFICATION DIVISION. PROGRAM-ID. VERIFNOTE. ENVIRONMENT DIVISION. DATA DIVISION. LINKAGE SECTION. 77 LANOTE PIC S99. 77 RESULTAT PIC S9. PROCEDURE DIVISION USING LANOTE RESULTAT. MAIN. IF LANOTE NOT < 0 AND LANOTE NOT > 20 OR LANOTE = 99 MOVE 0 TO RESULTAT ELSE MOVE 1 TO RESULTAT END-IF GOBACK. 157

Chapitre 9 Les vecteurs 158

Vecteurs int[] t=new int[5]; Indices 0 à 4 t[i]=0; t[i+1]=0;??? 01 VECTEUR-T. 02 T OCCURS 5 PIC 9(6). INDICES 1 à 5 MOVE 0 TO T ( I ) ADD 1 I GIVING K MOVE 0 TO T ( K ) MOVE ZERO TO VECTEUR-T 159

Tableaux int[][] t=new int[3][5]; 01? MOVE ZERO TO LIGNE-T ( I ) System.out.println(t[i][j]); TABLEAU-T. 02 LIGNE-T OCCURS 3. 03 T OCCURS 5 PIC 99. DISPLAY T(I,J) 160

Tableaux de structure 01 GROUPE. 02 ETUDIANTS OCCURS 26. 03 NOM PIC X(30). 03 AGE PIC 99. 77 ETU PIC X(32). MOVE 21 TO AGE ( 12 ) MOVE "DUPOND" TO NOM ( I ). MOVE ETUDIANTS ( I ) TO ETU MOVE ETUDIANTS ( J ) TO ETUDIANTS ( I ) MOVE ETU TO ETUDIANTS ( J ) 161

Initialisation de vecteurs 01 TABLE-SEMAINE. 02 SEMAINE. 03 FILLER PIC X (8) VALUE "LUNDI". 03 FILLER PIC X(8) VALUE "DIMANCHE". 02 SEMAINE-BIS REDEFINES SEMAINE. 03 JOUR OCCURS 7 PIC X(8). 162

Exemple de sous-programme IDENTIFICATION DIVISION. PROGRAM-ID. TRAJOUR. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 TABLE-SEMAINE. 02 SEMAINE. 03 FILLER PIC X (8) VALUE "LUNDI". 03 FILLER PIC X(8) VALUE "DIMANCHE". 02 SEMAINE-BIS REDEFINES SEMAINE. 03 JOUR OCCURS 7 PIC X(8). LINKAGE SECTION. 77 NUMJOUR PIC 9. 77 NOMJOUR PIC X(8). PROCEDURE DIVISION USING NUMJOUR NOMJOUR. MAIN. IF NUMJOUR < 1 OR NUMJOUR > 7 MOVE ALL "?" TO NOMJOUR ELSE MOVE JOUR ( NUMJOUR ) TO NOMJOUR END-IF GOBACK. 163

Chapitre 10 Fichiers relatifs et Fichiers séquentiels 164

Structure du fichier 1 2 3 4.. RELATIVE KEY 165

Pas de clé dans l'enregistrement 166

Programme de création DYNAMIC 167

168

Programme de Mise à jour DYNAMIC 169

PROCEDURE DIVISION Identique aux fichiers Cf Séquentiel indexéséquentiels indexés 170

RAPPEL Les valeurs des clés relatives doivent être dans l'intervalle [ 1.. Nombre Maximum d'enregistrements ] HashCode (cf cours d'analyse) 171

Fichiers séquentiels ORGANIZATION SEQUENTIAL ACCESS SEQUENTIAL DDS : R nomenregistrement nomchamp nomchamp 172

Accès Création.. OPEN OUTPUT nomfichier WRITE nomenregistrement END-WRITE 173

Accès Consultation.. OPEN INPUT nomfichier READ nomfichier AT END END-READ 174

Accès Mise à jour (disque dur) Ajout de nouveaux à la fin du fichier OPEN EXTEND nomfichier WRITE nomenregistrement END-WRITE Modification d enregistrements existants OPEN I-O nomfichier READ nomfichier AT END. END-READ REWRITE nomenregistrement END-REWRITE 175

Chapitre 11 L'instruction SORT 176

F-CODESPOSTE UNIQUE R CODESPOSTE CLE BURDIS K CLE 5A 27A R SORTFICH Z SORT 200A F-SORTFICH R CODESTRIES CLE BURDIS 5A 27A F-CODESTRIES 177

IDENTIFICATION DIVISION. PROGRAM-ID. SORTEXEMPL. ENVIRONMENT DIVISION. SELECT F-CODESPOSTE ASSIGN TO DATABASE-CODESPOSTE ORGANIZATION INDEXED ACCESS DYNAMIC RECORD KEY CLE OF CODESPOSTE OF E-CODESPOSTE. SELECT F-SORTFICH ASSIGN TO DATABASE-SORTFICH. SELECT F-CODESTRIES ASSIGN TO DATABASE-CODESTRIES. DATA DIVISION. FILE SECTION. FD F-CODESPOSTE. 01 E-CODESPOSTE. COPY DDS-CODESPOSTE OF CODESPOSTE. FD F-CODESTRIES. 01 E-CODESTRIES. COPY DDS-CODESTRIES OF CODESTRIES. SD F-SORTFICH. 01 E-SORTFICH. COPY DDS-CODESPOSTE OF CODESPOSTE. 178

WORKING-STORAGE SECTION. PROCEDURE DIVISION. MAIN. SORT F-SORTFICH ASCENDING BURDIS OF CODESPOSTE OF E-SORTFICH DESCENDING CLE OF CODESPOSTE OF E-SORTFICH USING F-CODESPOSTE GIVING F-CODESTRIES STOP RUN. 179

IDENTIFICATION DIVISION. PROGRAM-ID. SORTEXEMPL. ENVIRONMENT DIVISION. SELECT F-TRI ASSIGN TO DATABASE-SORTFICH. DATA DIVISION. FILE SECTION. SD F-TRI. 01 E-TRI. 05 ELTV. 06 NUMERO PIC 9999. 06 QUANTITE PIC 9(8). WORKING-STORAGE SECTION. 77 I PIC 9999. 01 T. 02 VT OCCURS 100. 06 NUMERO PIC 9999. 06 QUANTITE PIC 9(8). END-PERFORM. 180

PROCEDURE DIVISION. MAIN. PERFORM VARYING I FROM 100 BY -1 UNTIL I = 0 MOVE I TO NUMERO OF VT ( I ) MULTIPLY I BY 2 GIVING QUANTITE OF VT ( I ) END-PERFORM SORT F-TRI ASCENDING NUMERO OF ELTV INPUT PROCEDURE DEBUT-TRI OUTPUT PROCEDURE FIN-TRI PERFORM VARYING I FROM 1 BY 1 UNTIL I > 3 DISPLAY VT ( I ) END-PERFORM. STOP RUN. DEBUT-TRI. PERFORM VARYING I FROM 1 BY 1 UNTIL I > 100 RELEASE E-TRI FROM VT ( I ) END-PERFORM. FIN-TRI. PERFORM VARYING I FROM 1 BY 1 UNTIL I > 100 RETURN F-TRI INTO VT ( I ) AT END DISPLAY "BUG" END-RETURN END-PERFORM 181

Chapitre 12 Codage des informations Traitement de chaînes de caractères 182

Codage des informations SPECIFIQUE A CHAQUE COMPILATEUR UNIQUEMENT POUR LES PICTURES DE TRAITEMENT 1 CHIFFRE PAR OCTET, 77 N PIC S9(4). Soit 4 octets pour l'exemple OU 77 N PIC S9(4) USAGE DISPLAY. 77 N PIC S9(4) USAGE COMP-4. 77 N PIC S9(4) USAGE COMP-3. un demi-octet pour le signe un demi-octet pour un chiffre Nb de chiffres Nb Octets 1-4 2 short 5-9 4 int 10-18 8 long Java 183

L'instruction INSPECT nv : nom d'une variable en Picture X nc : nom d'une variable en Picture 9 INSPECT nv TALLYING nc FOR ALL "**" INSPECT nv TALLYING nc FOR LEADING "0" INSPECT nv TALLYING nc FOR CHARACTERS BEFORE INITIAL "I" INSPECT nv REPLACING CHARACTERS BY "0" INSPECT nv REPLACING FIRST "T" BY "L" INSPECT nv TALLYING nc FOR CHARACTERS AFTER INITIAL "S" REPLACING ALL "P" BY "T" 184

Les instructions STRING et UNSTRING ligne="nom "+nom+" PRENOM "+prenom; STRING "NOM " NOM " PRENOM " PRENOM INTO LIGNE nom=zone.substring(0,zone.indexof(" "); an=zone.substring(zone.indexof(" ")+1); UNSTRING ZONE DELIMITED BY " " INTO NOM AN 185

Génération d'une image-écran à partir d'une description de fichier Libellés des zones de saisie 186

Démarrer SDA, 187

Appuyer sur F10 188

189

Résultat de la sélection 190

191

192

70 BURDIS A B 27 13 042 O 193

Annexes 194

Comment détecter les erreurs de compilation - Option 2 sous PDM devant le nom du programme CBL - Entrée - F15 (Shift F3) -2 - Entrée - F4 - PgDn (éventuellement) pour trouver le dernier nom identique au nom du programme -1 - Entrée - Entrée -B - PgUp 195

Comment interpréter les erreurs d'exécution - Déplacer le curseur sur la ligne où se trouve le message - F1 - F10 - lire le message (voir sur transparent suivant, les messages les plus fréquents) - Entrée -C - Entrée Comment déboguer Sans débogueur Avec débogueur Compiler 14 CB Exécuter C DB 196

Messages d'erreurs fréquents à l'exécution Enregistrement XXX non trouvé Nom de format incorrect dans un write MCH 1202 Erreur dans une donnée décimale Utilisation d'une variable numérique non ou mal initialisée MCH 3601 Pointeur non défini Instruction (write, ou read, ou rewrite, ou start) effectuée sur un fichier non ouvert (voir l'open) MCH 0603 indice hors limite Indice de vecteur ou tableau hors limite 197

Touches de fonction F13 ==> Shift F1 F14 ==> Shift F2 F15 ==> Shift F3 F16 ==> Shift F4 F17 ==> Shift F5 F18 ==> Shift F6 F19 ==> Shift F7 F20 ==> Shift F8 F21 ==> Shift F9 F22 ==> Shift F10 F23 ==> Shift F11 F24 ==> Shift F12 198

AVANT APRES 199