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" |
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. |
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. |
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. |
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) |
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 |