COBOL/Fonctions intrinsèques
Les fonctions intrinsèques sont en quelque sorte des sous-programmes fournis par le langage, comme les sous-programmes elles permettent de ne pas réinventer la roue à chaque fois (ne pas recoder ce qui l'est déjà).
Voilà comment elles fonctionnent : vous les appelez avec un (ou plusieurs ou aucun) argument, elles vous renvoient une valeur en fonction de cet argument, vous pouvez ensuite réutiliser ce résultat (la valeur de retour de la fonction) dans une autre instruction.
Elles sont sur ce point similaires aux fonctions que l’on peut rencontrer dans d'autres langages de programmation et même dans les mathématiques.
Appel de fonction
[modifier | modifier le wikicode]Pour faire appel à de telles fonctions, vous devez utiliser l'instruction FUNCTION
qui se présente comme ceci :
Le nom de la fonction suit le mot-clé FUNCTION
et les (éventuels) arguments sont placés entre parenthèses et séparés par des virgules.
Si la fonction ne prend pas d'arguments, ne mettez pas de parenthèses vides.
Liste des fonctions intrinsèques
[modifier | modifier le wikicode]- ACOS : numérique entre -1 et 1 → numérique en radians
- ASIN : numérique entre -1 et 1 → numérique en radians
- ATAN : numérique → numérique en radians
- CHAR : entier → alphanumérique
- COS : numérique en radians → numérique
- CURRENT-DATE : → alphanumérique de la forme AAAAMMJJHHMMSSCC
- DATE-OF-INTEGER : entier (jours depuis le 31-12-1600) → entier de la forme AAAAMMJJ
- DAY-OF-INTEGER : entier (jours depuis le 31-12-1600) → entier de la forme AAAAJJJ
- FACTORIAL : entier >= 0 → entier
- INTEGER : numérique → entier
- INTEGER-OF-DATE : entier de la forme AAAAMMJJ → (entier : jours depuis le 31-12-1600)
- INTEGER-OF-DAY : entier de la forme AAAAJJJ → entier (jours depuis le 31-12-1600)
- INTEGER-PART : numérique → entier
- LENGTH : alphanumérique → entier
- LOG : numérique > 0 → numérique
- LOG10 : numérique > 0 → numérique
- LOWER-CASE : alphanumérique → alphanumérique
- MAX : nombre variable d'arguments du même type → maximum de ces arguments
- MEAN : numériques → numérique (moyenne)
- MEDIAN : numériques → numérique (médiane)
- MIDRANGE : numériques → numérique (moyenne du min et du max)
- MIN : nombre variable d'arguments du même type → minimum de ces arguments
- MOD : entier1, entier2 != 0 → entier (entier1 % entier2)
- NUMVAL : alphanumérique → numérique
- NUMVAL-C : alphanumérique → numérique
- ORD : alphanumérique → entier
- ORD-MAX : alphanumériques → entier
- ORD-MIN : alphanumériques → entier
- RANDOM : entier >= 0 → [0; 1[
- RANGE : numériques → différence entre le MAX et le MIN
- REM : num1, num2 != 0 → numérique (num1 % num2)
- REVERSE : alphanumérique → chaîne alphanumérique inversée
- SIN : numérique (radians) → numérique
- SQRT : numérique >= 0 → numérique
- STANDARD-DEVIATION : numériques → numérique (écart type)
- SUM : numériques → entier/numérique (somme)
- TAN : numérique (radians) → numérique
- UPPER-CASE : alphanumérique → alphanumérique
- VARIANCE : numériques → numérique
- WHEN-COMPILED : → alphanumérique (date et heure de compilation)
Exemple : MIN et MAX de plusieurs valeurs
[modifier | modifier le wikicode]Dans cet exemple, nous demandons à l'utilisateur de saisir trois valeurs entières au clavier, nous affichons ensuite le MIN et le MAX de ces valeurs.
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. ex-functions.
000003
000004 DATA DIVISION.
000005 WORKING-STORAGE SECTION.
000006 77 x PIC 999.
000007 77 y PIC 999.
000008 77 z PIC 999.
000009
000010 PROCEDURE DIVISION.
000011 saisie.
000012 DISPLAY "x=" NO ADVANCING ACCEPT x.
000013 DISPLAY "y=" NO ADVANCING ACCEPT y.
000014 DISPLAY "z=" NO ADVANCING ACCEPT z.
000015
000016 appel-func.
000017 DISPLAY "min=" FUNCTION MIN (x, y, z).
000018 DISPLAY "max=" FUNCTION MAX (x, y, z).
000019 STOP RUN.
000020 END PROGRAM ex-functions.
La valeur de retour de la fonction MIN
(respectivement MAX
) est utilisée par l'instruction DISPLAY
.