# 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

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

* 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

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.
La valeur de retour de la fonction MIN (respectivement MAX) est utilisée par l'instruction DISPLAY.
| Sous-programmes | Sommaire |