COBOL ANS-85, conditions imbriquées

BoTTom |    Changer de couleur
 
 Particularités du COBOL ANS-85 
 
 Pas de distinctions entre minuscules et MAJUSCULES.
 
 TOUS LES ORDRES contenant une condition :
 
   IF bien sur, mais aussi READ (condition AT END ou INVALID KEY)
                           PERFORM (until)
                            ..etc..
 
 Peuvent se terminer par END-(ordre) qui met fin à la condition en cours,
  ce qui permet d'imbriquer des ordres conditionnels dans une
  condition existante.
 
 Rappel : un point (".") met fin A TOUTES LES CONDITIONS EN COURS !!!
 
 Ex : IF code = a
         PERFORM until x = 10
                 READ fichier AT END move 'oui' TO FIN END-READ 
                 ...
         END-PERFORM . <-- ".", met fin à la condition "IF code = a"


|    Changer de couleur
 
 Nous trouvons donc
                      END-READ      (AT END ou INVALID KEY)
                      END-WRITE
                      END-PERFORM
                      END-IF
                      END-EVALUATE
                      END-ADD       (ON SIZE ERROR)
                      END-START
 
                      etc .....
 
 L'ORDRE PERFORM peut s'écrire maintenant:
 
         PERFORM UNTIL (condition) [WITH TEST AFTER/BEFORE]
               ...
               serie d'instruction
               ...
         END-PERFORM
 
 La série d'instruction pouvant contenir un ordre PERFORM.
 


|    Changer de couleur
 
 RAPPEL SUR L'ORDRE EVALUATE, qui n'existait pas en COBOL ANS-74
 
 simple:     EVALUATE  OPTION
                 WHEN "0"
                     PERFORM INIT
                 WHEN "1" THRU "9"
                     PERFORM PROCESS
                 WHEN "R"
                     PERFORM READ
                 WHEN OTHER
                     PERFORM ERROR
             END-EVALUATE.
 ou bien:
             EVALUATE    A = B  ALSO  C > D  ALSO  TRUE
                   WHEN  TRUE   ALSO  TRUE   ALSO  E = F
                       .../...
                   WHEN  TRUE   ALSO  TRUE   ALSO  E > 12
                       .../...
                   WHEN  TRUE   ALSO  FALSE  ALSO  ANY
                       .../...
             END-EVALUATE.


|    Changer de couleur
 
 Les modifications de référence
 
    MOVE 'oui' to ZONE(2: 3)   (1er car: longueur)          
ou  
    MOVE 'oui' to ZONE(IDX: 3)
 
 Les définitions de zone
 
     BINARY pour COMP-4
     PACKED-DECIMAL pour COMP-3
 
     Zone2 LIKE Zone1
 
 ET Les conditions
 
    IS ALPHABETIC-UPPER  (majuscules)
 
    IS APLHABETIC-LOWER  (minuscules)
 
    rappel : IS NUMERIC
             IS ALPAHABETIC, existaient en COBOL ANS-74.

|    Changer de couleur
 
Enfin IBM propose une version compatible avec son architecture ILE
 
 (attention, nouveau type de source CBLLE à la place de CBL)
 
 cette extension apporte :
 
 1/ le support des variables Date/Heure
 
       77 zonedate FORMAT DATE|TIME, en Data Division
 
 2/ l'intégration de nombreuses fonctions
 
       - de gestion des dates
       - de gestion des codes pages internationaux (DBCS, UTF8, etc..)
       - de gestion des paramètres nationaux par le biais des locales
 
 3/ le support de XML
 
       en lecture avec l'ordre XML PARSE
       en écriture avec XML GENERATE (version 5.40 uniquement)
 


|    Changer de couleur
 
 Quelques exemples de fonctions de manipulation de dates :
 
  ADD-DURATION(date unité nombre)
 
     permet d'ajouter nombre unité(mois, jours, etc...) à une date
 
     utilisation : MOVE FUNCTION ADD-DURATION(DATCDE DAYS 90) to DATLIV
 
  Autres fonctions (extrait)
 
  SUBSTRACT-DURATION   retire une durée à une date ou une heure (voir ADD..)
 
  CONVERT-DATE-TIME -> convertit une chaîne ou un numérique en date/heure
 
  CURRENT-DATE         retourne la date du jour
 
  DATE-TO-YYYYMMDD     convertit une date en chaîne
 
  EXTRACT-DATE-TIME    extrait une partie d'une date ou d'une heure
 
  FIND-DURATION        calcul l'écart entre deux dates/heures/timestamp





©AF400