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 :

[Tutoriel] Utilisation avancée des niveaux 88


Sujet :

Cobol

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Points : 18
    Points
    18
    Par défaut [Tutoriel] Utilisation avancée des niveaux 88
    Kikoo les gens,

    Dans ce petit tutoriel, je vais montrer une application concrète des niveaux 88, et histoire de donner un exemple passe-partout, je vais montrer comme vérifier qu'une année est bissextile via un niveau 88. (NB : Ce n'est pas forcement le choix le plus pertinent d'algo que je vais montrer, mais juste une application concrète).

    NB : Ce n'est pas un tuto pour les débutants en Cobol, hein..., toutefois, un petit rappel :

    Un niveau 88 est un niveau de "condition". Il se déclare sous un niveau 01 ou autre. Je donne un exemple simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            01 ANNEE. 
              88 EST-BISSEXTILE     VALUE 0.
    Ici je déclare une variable année, et cette variable dispose d'un "booléen" EST-BISSEXTILE qui a pour valeur 0.

    Pour tester si l'année est bissextile, il suffit simplement de faire : IF EST-BISSEXTILE. Aussi simple que ça.

    Comment je fais pour calculer si mon année est bissextile ???

    Tout d'abord un petit programme :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
           Identification division.                                         
          *************************                                         
            Program-ID.    NIV88.                                           
          /                                                                 
           Data division.                                                   
          ***************                                                   
          /                                                                 
            Working-storage section.                                         
          *========================*                                                                        
           01 DATEC.
              05 DATE-C-SA.
                 10 DATEC-SS     PIC 99.
                 10 DATEC-AA     PIC 99.
              05 DATE-C-MM       PIC 99.   
              05 DATE-C-JJ       PIC 99.
              
           77 DATE-C-DIV         PIC 99.
           77 DATE-C-RES         PIC 99.   
              
          ***-   
          ***- LISTE DES MOIS DE 30 ET 31 JOURS + FEVRIER                   
          ***-
            01  TYPE-DATE.                                                   
               05  JOUR-PAR-MOIS    PIC 99.                                 
                   88  EST-MOIS-31  VALUE 01                                
                                          03                                
                                          05                                
                                          07                                
                                          08                                
                                          10                                
                                          12.                               
                   88  EST-MOIS-30  VALUE 04                                
                                          06                                
                                          09                                
                                          11.                               
                   88  FEVRIER      VALUE 02.     
                                             
            01 ANNEE. 
              88 EST-BISSEXTILE     VALUE 0.
              88 TARTANPION         VALUE 1.
                 
                                                                                                 
    
    
           PROCEDURE DIVISION.                                              
          ********************
          * Mettre une date quelconque dans DATEC, ici la date du jour     
               ACCEPT DATEC FROM DATE.
               
               Perform Controle-date THRU Controle-date-fin.     
               
                                                                         
               STOP RUN.             
          
           Controle-date SECTION.                                            
          *======================                                             
          * Controle si le mois est valide 
          * sinon : exit
           CD-MOIS.                                               
               If DATE-C-MM < 01 OR > 12                                   
                  go to Controle-date-fin                                         
               end-if.                                                      
                                                                            
           CD-JOUR.                                               
               Move DATE-C-MM to JOUR-PAR-MOIS.                            
                                                                            
          ***- TEST SI MOIS DE 31 JOURS  
          ***- vérifie que jour compris entre 1 et 31   
          ***- sinon : Exit                                
               if EST-MOIS-31                                               
                  if DATE-C-JJ < 1 OR > 31                              
                     go to Controle-date-fin                                                                    
                  end-if                                                    
               end-if.                                                      
                                                                            
          ***- TEST SI MOIS DE 30 JOURS 
          ***- vérifie que jour compris entre 1 et 30   
          ***- sinon : Exit                                        
               If EST-MOIS-30                                               
                  if DATE-C-JJ < 1 OR > 30                              
                     go to Controle-date-fin                                                                    
                  end-if                                                    
               end-if.                                                     
                                                                            
          ***- TEST SI MOIS DE FEVRIER                                      
               If FEVRIER                 
          ***- Vérifie que le jour est > 0                                             
                  if DATE-C-JJ > 0                                        
                     PERFORM CTR-DAT-TRT-FEV                                
                     if EST-BISSEXTILE                               
                        if DATE-C-JJ <= 29                                 
                           go to Controle-date-fin                           
                        else    
                           display "Erreur sur le jour"                                            
                           go to Controle-date-fin                                
                        end-if                                              
                     else                                                   
                        if DATE-C-JJ <= 28                                 
                           go to Controle-date-fin                           
                        else                                                
                           display "Erreur sur le jour"
                           go to Controle-date-fin                                
                        end-if                                              
                     end-if                                                 
                  else                                                      
                     go to CTR-DAT-REJ                                      
                  end-if                                                    
               end-if.                                                      
                                                                            
           Controle-date-fin. EXIT.                                  
          *==================       
          
           Fonction SECTION.
          *=================
          ***--------------------------------------------------------***
          ***- Verifier si année bissextile (simplifié)             -***                                                        
          ***--------------------------------------------------------***
           Controle-Fevrier.                                                         
               Set EST-BISSEXTILE to FALSE.                                
               divide    DATE-C-SA  by  4                                          
               giving    DATE-C-DIV                                                
               remainder DATE-C-RES.                                               
               If CTR-DAT-RES = 0                                                   
                  Set EST-BISSEXTILE to TRUE.                                      
               End-if.

    Ici, je déclare une zone TYPE-DATE qui est un ensemble de niveau 88 que je découpe en mois de 30 jours, 31 jours et février pour finir.

    J'ai créé en PROCEDURE DIVISION un programme qui permet d'appeler une fonction de calcul d'année bissextile. Je vais juste m'arrêter sur les passages intéressants.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Move DATE-C-MM to JOUR-PAR-MOIS.
    Voici une des façons d'initialiser un niveau 88, je mets une valeur dans son niveau supérieur (ici, je mets le mois, mais je pourrais mettre des patates), Cobol va automatiquement choisir les indicateurs qui sont activés et ceux qui ne le sont pas. Si par exemple, nous sommes en mars (mois 03), Cobol va activer EST-MOIS-30.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
               if EST-MOIS-31                                               
                  if DATE-C-JJ < 1 OR > 31                              
                     go to Controle-date-fin                                                                    
                  end-if                                                    
               end-if.
    Ensuite, on vérifie si EST-MOIS-31 est activé ou non (si on est en mars, il ne l'est pas...), dans ce cas, ici, on vérifie que le jour dans le mois est compris entre 1 et 30, sinon ==> on sort de la boucle (je n'ai pas géré d'erreur ici pour la simplification).

    Ensuite, si on est en février (IF FEVRIER), on va vérifier si l'année est bissextile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
           Controle-Fevrier.                                                         
               Set EST-BISSEXTILE to FALSE.                                
               divide    DATE-C-SA  by  4                                          
               giving    DATE-C-DIV                                                
               remainder DATE-C-RES.                                               
               If CTR-DAT-RES = 0                                                   
                  Set EST-BISSEXTILE to TRUE.                                      
               End-if.
    Ici c'est un algo simplifié qui vérifie que l'année est divisible par 4.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
               Set EST-BISSEXTILE to FALSE.
    Voici la deuxième façon d'initialiser un niveau 88, faire un SET xxxx TO FALSE (ou TRUE suivant). Dans notre cas, la variable EST-BISSEXTILE est à TRUE, et la variable TARTANPION à FALSE du coup.

    Un truc à éviter ??

    Attention, les niveaux 88 peuvent rendre le code particulièrement peu lisible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
           Controle-Fevrier.                                                         
               Set TARTANPION to TRUE.                                
               divide    DATE-C-SA  by  4                                          
               giving    DATE-C-DIV                                                
               remainder DATE-C-RES.                                               
               If CTR-DAT-RES = 0                                                   
                  Set EST-BISSEXTILE to TRUE.                                      
               End-if.
    Le type qui va passer derrière ce code risque de ne pas s'apercevoir que TARTANPION et EST-BISSEXTILE sont liées et que l'un basculant à TRUE fait basculer l'autre à FALSE.

    Un autre exemple ???
    Les niveaux 88 permettent de se sortir de panades extrêmes de façon très simple. Mettons que vous ayez des indicateurs, mais qui histoire de se compliquer la vie peuvent exister en version simple et en version détaillée et (histoire de ne pas se faciliter la tâche) que l'on utilise soit l'un ou soit l'autre, mais pas les deux... Rigolez pas, je l'ai eu.

    La façon traditionnelle de faire ça est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If (SIMPLIFIE = "OUI" AND IND = "A")
    or (SIMPLIFIE = "NON" AND (IND = A OR "B"))
    Pas des plus lisibles, et je ne raconte pas le désastre si la version non simplifiée devient A ou B ou C...

    Les niveaux 88 résolvent facilement ce problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           01 SIMPLE.
               88  SIMPLIFIE        VALUE 1.  
               set SIMPLIFIE to TRUE.
    On déclare une variable simplifié, et on la met à true ou false (suivant).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
           01  INDICATEUR              PIC X.                                                                        
               88  IND1             VALUE "A".                              
               88  IND1B            VALUE "A" "B".
               88  IND2             VALUE "E".
               88  IND2B            VALUE "E" "F" "G".
    Voici un tas d'indicateurs dans leur double version.
    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
               Move "A" to INDICATEUR.
               
                         If IND1
               and simplifie
                  display "Indicateur 1"
               end-if.
               
               set IND2 to TRUE.
                
               If IND2 
               and simplifie
                  display "Indicateur 2"
               end-if.
               
               Move "F" to INDICATEUR.       
               
               If IND2B
               and not simplifie
                  display "Indicateur 2b"
               end-if.
    Et des exemples d'appel.
    Si maintenant votre MOA préférée décide que la version non simplifiée c'est A B C :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
               88  IND1B            VALUE "A" "B" "C".
    C'est tout ce qui a à modifier.

    Tout ceci pour montrer que les niveaux 88 ne servent pas uniquement à tester des conditions de sortie de boucle, mais peuvent être utilisés partout y compris comme des sortes de liste.

    Voili voilu pour le tuto du jour.

  2. #2
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    J'en use et j'en abuse. C'est souvent lourd à mettre en place, mais ensuite, quel bonheur!
    "_Merci de me rajouter un nouveau produit qui fasse une attestation bâtiment, y compris en cas de contentieux, mais sur lequl on applique le filtrage responsabilité civile
    _y'en a pour 15 secondes, chef
    _"
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Moi, j'utilise aussi le niveau 88 pour faire des contrôles sur les formats autorisé dans une donnée.

    Par exemple , un email :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    01 WS-EMAIL-X               PIC X.           
       88 WS-EMAIL-TEST                          
          VALUES ARE 'A' THRU 'Z' ,'0' THRU '9', 
                 '_' , '-' , '.' , 'à'.          
    
    01 WS-EMAIL-ERREUR          PIC X VALUE SPACE.
       88 EMAIL-ERREUR      VALUE 'E'.            
       88 EMAIL-OK          VALUE 'O'.
    puis dans le code

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    * NOMBRE DE CARACTERE DE LA CHAINE                        
          PERFORM VARYING WS-INDICE FROM 50 BY -1              
            UNTIL WS-INDICE = 0  OR FIN-BOUCLE                 
                                                               
                IF WS-EMAIL (WS-INDICE) = ' '                  
                   ADD 1 TO WS-SPACES-CNT                      
                ELSE                                           
                   SET FIN-BOUCLE TO TRUE                      
                END-IF                                         
                                                               
          END-PERFORM     
                                      
     MOVE 0 TO WS-INDICE.                                       
                                                                
     PERFORM VARYING WS-INDICE FROM 1 BY 1                      
       UNTIL WS-INDICE = (51 - WS-SPACES-CNT)                   
              OR WS-AROBASE-CNT > 1                             
              OR EMAIL-ERREUR                                   
                                                                
        IF WS-EMAIL (WS-INDICE) = 'à'                           
           ADD 1 TO WS-AROBASE-CNT                              
        END-IF                                                  
                                                                
        MOVE WS-EMAIL (WS-INDICE) TO WS-EMAIL-X                 
                                                                
        IF NOT WS-EMAIL-TEST                                    
           SET EMAIL-ERREUR TO TRUE                             
        END-IF                                                  
     END-PERFORM                                                
                                                                
     IF WS-AROBASE-CNT NOT = 1                                  
        OR EMAIL-ERREUR                                         
        MOVE ALL SPACES         TO    FLUXCINC-DE-CINC-EMAIL    
     END-IF.
    Selon moi, on peut également l'utiliser pour le format des numéros de téléphone

    Arketa29

  4. #4
    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 arketa29 Voir le message
    Bonjour,
    Selon moi, on peut également l'utiliser pour le format des numéros de téléphone

    Arketa29
    Bonjour.
    Plus généralement, on utilise le niveau 88 à chaque fois que l'on veut définir une condition basée sur une valeur, un intervalle de valeurs ou une liste de valeurs d'une variable. Plusieurs niveaux 88 peuvent être définis pour la même variable.

  5. #5
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    Bonjour.
    Plus généralement, on utilise le niveau 88 à chaque fois que l'on veut définir une condition basée sur une valeur, un intervalle de valeurs ou une liste de valeurs d'une variable. Plusieurs niveaux 88 peuvent définis pour la même variable.
    Tu veux dire pour la même valeur?

    J'ai un code comme ceci :

    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
    *            CODE CONFIE                                 
                 03  EQ-CONF                      PIC X(001).
                     88 EQ-CONF-CPT-INTERM-OUI  VALUE 'A'.   
                     88 EQ-CONF-ENCAISS-OUI     VALUE 'C'.   
                     88 EQ-CONF-TRANSPORT       VALUE 'M'.   
                     88 EQ-CONF-ENCAISS-NON     VALUE 'N'.   
                     88 EQ-CONF-ENCAISS-OUI-DRG VALUE 'S'.   
                     88 EQ-CONF-ENCAISS-NON-DRG VALUE 'T'.   
                     88 EQ-CONF-CPT-INTERM-NON  VALUE 'Z'.   
                     88 EQ-CONF-OUI             VALUE 'A'    
                                                      'C'    
                                                      'M'    
                                                      'S'.   
                     88 EQ-CONF-NON             VALUE 'Z'    
                                                      'N'    
                                                      'T'.
    Il me permet de savoir si je suis sur une valeur spécifique (genre confié transport), ou bien générique(si je suis confié tout court, par exemple). Un exemple plus didactique serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    05 PAYS PIC X(10).
       88 CEE VALUE 'FRANCE    ' 'SUEDE     ' 'IRLANDE   '
       88 ZONE-EURO VALUE 'FRANCE    ' 'IRLANDE   '
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  6. #6
    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 el_slapper Voir le message
    Tu veux dire pour la même valeur?
    Non, c'est bon. Plusieurs niveaux 88 définissant plusieurs conditions sur des valeurs différentes pour la même variable. La preuve tes exemples :

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    En fait, la liste des valeurs correspondant à une condition doit être unique (sinon, une seule condition suffit), mais des valeurs peuvent être communes entre plusieurs conditions.

    Je crois que c'est ce que voulait dire el_slapper

  8. #8
    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 fremen167 Voir le message
    En fait, la liste des valeurs correspondant à une condition doit être unique (sinon, une seule condition suffit), mais des valeurs peuvent être communes entre plusieurs conditions.

    Je crois que c'est ce que voulait dire el_slapper
    Ah oui d'accord , j'ai vu les valeurs communes, mais je n'ai pas compris la remarque. Désolé.

  9. #9
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    je n'ai peut-être pas été totalement clair non plus.....
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  10. #10
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Ton Tuto est très intéressant. Tu peux le rédiger sur WORD et demander une opportunité de publication (il sera gabarisé par la suite). il y aura certainement des gens intéressés par ton tuto
    Bonne continuation
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    C`est un exemple intéressant, quoi que un peu complexe, pour determiner si une annee est bissextile ou non.

    Personellement, en entreprise, il m`est arrivé, par souci de simplicité, de coder carrément :

    IF YEAR = (2004 OR 2008 OR 2012 OR 2016 OR 2020 )
    ....SET BISSEXTILE TO TRUE
    ELSE
    ....SET BISSEXTILE TO FALSE
    END-IF.

    Les patrons preferaient meme cette approche, pour conserver le code le plus simple possible. Ca ne prends que 30 secondes a coder, et le programmeur suivant comprends le code en un clin d`oeil, il n`y as pas d`hesitations. En entreprise, le temps c`est de l`argent.

    Au debut, ca m`agacait un peu. Mais j`ai finis par accepter le principe du plus simple possible.

    J`ai compris aussi que pour mon type d`application c`etait suffisant. Une autre approche aurais pu etre de mettre dans une table les valeurs d`une dizaine d`années bissextile (donc couvrir une quarantaine d`année) et de comparer mon année avec le contenu de cette table.

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

Discussions similaires

  1. [MySQL] Utilisation avancée des procédures stockées MySQL
    Par RideKick dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/06/2012, 19h33
  2. Utilisation avancée des iterators
    Par scheme dans le forum Langage
    Réponses: 7
    Dernier message: 04/02/2011, 19h13
  3. Utilisation "avancée" des projections
    Par thibane dans le forum Hibernate
    Réponses: 1
    Dernier message: 28/06/2010, 09h54
  4. Utilisation avancée des templates
    Par olivier2019 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 03/04/2008, 14h26

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