IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Cobol Discussion :

souci else if


Sujet :

Cobol

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2014
    Messages : 152
    Points : 226
    Points
    226
    Par défaut souci else if
    Bonjour.
    Petit souci avec le compil qui indique que le else n'a pas de si.
    Ou est l'erreur svp? je tourne depuis 2h, le tout est que je pige bien la syntaxe particuliere des conditions en cobol, l'ayant écrit 'classiquement' , erreur aussi.
    Merci

    C'est un if / else if / else

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    000073       ******************************
    000074        PROCEDURE DIVISION.
    000075             OPEN INPUT MOUVEMEN
    000076             OUTPUT MVERRO
    000077               PERFORM UNTIL CR-MOUVTS = 10
    000078               READ MOUVEMEN
    000079               MOVE E-MVT TO W-MVT
    000080                IF MATRICULE IS NOT NUMERIC
    000081                 WRITE E-MVERRO FROM MESSM1
    000082                  ELSE IF  CODE-MVT > 4
    000083                   WRITE E-MVERRO FROM MESSC0
    000084                END-IF
    000085                END-IF
    000086                ELSE
    000087                  WRITE E-MVERRO FROM TOTO
    000088               END-PERFORM
    000089               STOP RUN.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2014
    Messages : 152
    Points : 226
    Points
    226
    Par défaut
    J'ai résolu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     000073       * P R O C E D U R E   D I V I S I O N
    000074       ****************************************************************
    000074        PROCEDURE DIVISION.
    000075             OPEN INPUT MOUVEMEN
    000076             OUTPUT MVERRO
    000077               PERFORM UNTIL CR-MOUVTS = 10
    000078               READ MOUVEMEN
    000079               MOVE E-MVT TO W-MVT
    000080                IF MATRICULE IS NUMERIC
    000081                  THEN IF  CODE-MVT < 4
    000082                      WRITE E-MVERRO FROM TOTO
    000083                  ELSE
    000084                      WRITE E-MVERRO FROM MESSC0
    000085                  END-IF
    000086                ELSE
    000087                  WRITE E-MVERRO FROM MESSM1
     000088                END-IF
     000089               END-PERFORM
     000090               STOP RUN.
     000091

  3. #3
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour.

    Il faudrait impérativement prendre l'habitude de gérer les erreurs sur les opérations d'entrée/sortie : READ, WRITE, etc...
    Dans ton cas, il faut mettre un AT END sur le READ MOUVEMEN.
    Et puisque tu utilises les scopes de fin, autant utiliser les scopes END-READ et END-WRITE.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 059
    Points : 38 269
    Points
    38 269
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    Il faudrait impérativement prendre l'habitude de gérer les erreurs sur les opérations d'entrée/sortie : READ, WRITE, etc...
    +1


    Citation Envoyé par Hédhili Jaïdane Voir le message
    Et puisque tu utilises les scopes de fin, autant utiliser les scopes END-READ et END-WRITE.
    La par contre, autant le END-IF est un apport indispensable qui manquait énormément à COBOL ANS 74 (seul le point fermait un IF), autant les autres END instruction alourdissent inutilement le code
    à la rigueur le end-perform dans certains cas peut être utile

    Pourquoi pas des END ADD, END MOVE...

  5. #5
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    La par contre, autant le END-IF est un apport indispensable qui manquait énormément à COBOL ANS 74 (seul le point fermait un IF), autant les autres END instruction alourdissent inutilement le code
    à la rigueur le end-perform dans certains cas peut être utile

    Pourquoi pas des END ADD, END MOVE...
    Le END-READ est souvent utile lorsque le READ est imbriqué dans un IF ou une autre condition et pour limiter la portée des instructions impératives surtout dans le AT END, l'INVALID, le NOT AT END et le NOT INVALID et ce n'est qu'un point de vue.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 059
    Points : 38 269
    Points
    38 269
    Billets dans le blog
    9
    Par défaut
    Pour ce cas de figure, le problème ne se pose pas en codant de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    MON-PARAGRAPHE-FONCTIONNEL1.
        IF  MACONDITION
            MOVE CECI TO CELA
            PERFORM MON-PARAGRAPHE-LECTURE-FIC1        
            MOVE ...
        END-IF
        PERFORM  MON-PARAGRAPHE-FONCTIONNEL2
        UNTIL  MACONDITION2
        .
    
    MON-PARAGRAPHE-FONCTIONNEL2.
        Etc...
    
    [. . .]
    MON-PARAGRAPHE-LECTURE-FIC1.
        READ FIC1 INTO WS-FIC1
        IF  NOT FS-FIC1-OK
        AND NOT FS-FIC1-EOF
            gestion de l'exception selon les règles de l'exploitation locale
        END-IF
        .
    C'est à la fois plus facile à coder et à lire : on évite tous les end-instructions, on ne se perd pas dans les lignes techniques de gestion des exceptions, tous les paragraphes techniques sont reportés en fin de procédure, et, on a pas besoin de recoder les ordres de lecture ou d'écriture à chaque fois qu'on en a besoin dans le code (cas d'espèce : synchro de fichiers)

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Novembre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Novembre 2015
    Messages : 1
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    Le END-READ est souvent utile lorsque le READ est imbriqué dans un IF ou une autre condition et pour limiter la portée des instructions impératives surtout dans le AT END, l'INVALID, le NOT AT END et le NOT INVALID et ce n'est qu'un point de vue.
    perso j'utilise le end-read régulièrement. à partir du momen où on utilise le at end, invalid .... c'est bien plus clair.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. souci fonction avec if et else
    Par chantalina dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/02/2010, 07h27
  2. [langage] ptit souci de syntaxe
    Par marouanitos dans le forum Langage
    Réponses: 2
    Dernier message: 26/09/2003, 11h28
  3. [File et Directory ListBox] Soucis de filtre
    Par Mercilius dans le forum Composants VCL
    Réponses: 8
    Dernier message: 04/04/2003, 17h17
  4. Réponses: 4
    Dernier message: 16/02/2003, 13h16
  5. Réponses: 2
    Dernier message: 03/10/2002, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo