Précédent   Forum des professionnels en informatique > Autres langages > Autres langages > Cobol
Cobol Forum d'entraide sur la programmation en langage Cobol
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/12/2011, 00h02   #1
Futur Membre du Club
 
Inscription : mai 2008
Messages : 155
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 155
Points : 16
Points : 16
Par défaut [AS400] Vérifier existance d'un enregistrement

Bonjour,
Voici un fichier indexé : MARQUE
Nom d'enregistrement: MARQUER
Code :
1
2
3
Enregistrements: ACROMAR PIC X(5)
                       NOMMAR PIC X(25)
ACROMAR est l'identifiant unique.

Je voudrais vérifier si dans ce fichier il y a bien une marque donnée (disons RENAULT , ACROMAR = RENAU pour l'exemple).

Voici les parties de mon code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
...
FILE CONTROL. 
SELECT MARQ ASSIGN TO DATABASE-MARQUE
               ORGANIZATION IS INDEXED
               ACCESS MODE IS DYNAMIC
               RECORD KEY EXTERNALLY-DESCRIBED-KEY.
...
           
PROCEDURE DIVISION. 
           OPEN INPUT MARQ.
           ...
           MOVE "RENAU" TO ACROMAR OF MARQUER
           MOVE SPACES TO NOMMAR OF MARQUER
           START MARQ KEY NOT LESS EXTERNALLY-DESCRIBED-KEY
                INVALID KEY DISPLAY "Cette marque n'existe pas"
                NOT INVALID DISPLAY "Cette marque existe"
           END-START.
           ...
Disons que RENAU n'existe pas dans mon fichier MARQUE.
Je voudrais que "Cette marque n'existe pas" s'affiche, mais ce n'est pas le cas... Pouvez-vous m'aider?

Merci d'avance!
alex2746 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 19h40   #2
Membre Expert
 
Avatar de Hédhili Jaïdane
 
Homme Hédhili Jaïdane
Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol
Inscription : juin 2007
Messages : 1 673
Détails du profil
Informations personnelles :
Nom : Homme Hédhili Jaïdane
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 673
Points : 2 174
Points : 2 174
Envoyer un message via Skype™ à Hédhili Jaïdane
Bonjour.

Puisque ACROMAR est l'identifiant unique, il suffit de faire :

Code :
1
2
3
4
          MOVE "RENAU" TO ACROMAR OF MARQUER.
          READ MARQ INVALID KEY DISPLAY "Cette marque n'existe pas"
                  NOT INVALID DISPLAY "Cette marque existe".
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 22h28   #3
Futur Membre du Club
 
Inscription : mai 2008
Messages : 155
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 155
Points : 16
Points : 16
Merci!
J'ai encore un petit problème avec ce programme:

En fait l'ACROMAR que je recois provient d'un displayfile.
Pour la vérification de cet ACROMAR tout fonctionne bien!

Mais sur ce display file j'ai également d'autres champs :

- PRIXMOYEN (entier en étendu avec deux chiffres après la virgule)
- NOMCOMPLET PIC X(20) le nom complet de la marque

J'aimerais dans le programme qui vérifie si ACROMAR existe également vérifier si aucun des deux autres champs n'a pas été complété dans le displayfile. Ces champs sont "rappatriés" dans mon programme avec un MOVE CORR.
Tout ça se passe bien mais j'aimerais donc vérifier (après avoir fait le move corr) si les champs entrés n'étaient pas vide.

Pourriez-vous m'aider?

Merci encore!
alex2746 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 23h41   #4
Membre Expert
 
Avatar de Hédhili Jaïdane
 
Homme Hédhili Jaïdane
Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol
Inscription : juin 2007
Messages : 1 673
Détails du profil
Informations personnelles :
Nom : Homme Hédhili Jaïdane
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 673
Points : 2 174
Points : 2 174
Envoyer un message via Skype™ à Hédhili Jaïdane
Je n'ai pas très bien compris à quel moment tu veux vérifier si les autres champs ont été modifiés '"complétés").

Le MOVE CORR n'est qu'une succession de 0 ou plusieurs MOVE juste pour gagner sur l'écriture du source et sur les zones ayant les mêmes noms dans des groupes de zones différents, ce n'est pas une opération d'entrée/sortie, donc je ne comprends pas de quel MOVE il s'agit : du format du fichier écran (display file format) au format du fichier disque ou à un groupe de sauvegarde de la working.

En général :
- on saisit d'abord la clé (identifiant unique) du fichier à partir d'un format écran affiché au préalable,
- on vérifie l'existence de cette clé dans le fichier disque,
- et en fonction de ce qu'on cherche à faire avec cette clé (création, consultation, modification, suppression, impression, copie, etc....) on et de son existence, on choisit le traitement adéquat.

- supposons que l'on veuille modifier les zones correspondants à ta clé, si elle existe on fait un MOVE (une à une ou par CORR) des zones du fichier disque vers le fichier écran qu'on affiche
- on enchaine par une lecture du fichier écran
A CE MOMENT, les zones dans le format du fichier disque et du fichier écran sont renseignées indépendamment les unes des autres.

Si tu veux tester si elles ont été modifiées, il suffit de faire des IF liés par des AND ou des OR .

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
FD FICHIER.
01  FICHIER-RD.
     03 Z1     PIC XXX.
     03 Z2     PIC X(7).
     03 Z3     PIC X(10).
FD ECRAN LABEL RECORD OMITTED.
01  FORMAT-1.
     03 Z1     PIC XXX.
     03 Z3     PIC X(10).
     03 Z2     PIC X(7).
 ....
     READ FICHIER INVALID....
     NOT INVALID MOVE CORR FICHIER-RD TO FORMAT-1
           WRITE FORMAT-1....
.... 
     READ ECRAN....
....
     IF     Z1 OF FORMAT-1 = Z1 OF FICHIER-RD
        AND Z2 OF FORMAT-1 = Z2 OF FICHIER-RD
        AND Z3 OF FORMAT-1 = Z3 OF FICHIER-RD
* ===> aucune des trois zones n'a été modifiée : inutile de faire de mise à jour du fichier 
     ELSE 
* ===> au moins une zone a été modifiée : mise à jour du fichier par 
     MOVE CORR FORMAT-1 TO FICHIER-RD
     REWRITE FICHIER-RD INVALID....
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 08h58   #5
Futur Membre du Club
 
Inscription : mai 2008
Messages : 155
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 155
Points : 16
Points : 16
Merci pour votre aide.
Ce display file me permet en fait de rajouter un enregistrement dans ma table MARQUE.

Je vérifie donc si la clé qu'on me donne existe déjà (si oui je ne peux pas rajouter l'enregistrement): ca je l'ai fait et ca fonctionne.

Une fois ceci fait, je fais un MOVE CORR pour récupéré tous les champs complétés sur le displayfile (comme vous l'avez fait). Mais il se pourrait que l'utilisateur n'ait pas entré de NOMMARQUE ou de PRIXMOYEN. Et dans ce cas, je ne dois pas créer d'enregistrement car deux des champs seront vides!

Je voudrais donc savoir comment tester s'il a complété ces deux champs ou non?

Merci d'avance.
alex2746 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 09h11   #6
Membre Expert
 
Avatar de Hédhili Jaïdane
 
Homme Hédhili Jaïdane
Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol
Inscription : juin 2007
Messages : 1 673
Détails du profil
Informations personnelles :
Nom : Homme Hédhili Jaïdane
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 673
Points : 2 174
Points : 2 174
Envoyer un message via Skype™ à Hédhili Jaïdane
Il suffit de les tester avant de les mouvementer dans l'enregistrement du fichier. Si une zone est égale à SPACES ou LOW-VALUE on affiche un message sur le format de saisie.
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h04.


 
 
 
 
Partenaires

Hébergement Web