VADELIA |
SADELIA |
WADELIA |
EADELIA |
|
(I/B) (C/S) |
(B) (S) |
(I/B) (C/S) |
(B) (C/S) |
Paragraphe d'utilisation
DECLARATION
Syntaxe
Syntaxe 1 : | CONST |
Type Id = Valeur | ||
ou | CONST |
REF(IdVar) Id = Valeur | ||
Type | → | ALPHA | NUM_BIN2 | NUM_BIN_4 | NUM_BIN_8 | NUM_E | NUM_P | BOOL | DATE | TIME | TIMESTAMP |
||
Valeur | → | ConstanteNumLit | ConstanteAlphaLit | IdConstanteNonType | IdConstanteDicoNonTraduisible | *VRAI | *FAUX | *LOVAL | *HIVAL |
Syntaxe 2 : | CONST |
Id = Valeur | ||
Valeur | → | ConstanteNumLit | ConstanteAlphaLit | IdConstanteNonType | IdConstanteDicoNonTraduisible | *VRAI | *FAUX |
Description
Le qualificateur CONST permet de déclarer une constante nommée typée (syntaxe 1), ou non typée (syntaxe 2) de nom Id ayant pour valeur Valeur. Contrairement à une constante du dictionnaire, les constantes nommées déclarées avec le qualificateur CONST sont privées (ne concernent que le programme dans lequel elles sont déclarées). .
Ce mot-clé permet au programmeur de signaler au générateur L3G que l'élément ainsi qualifié ne doit pas être modifié. Cet élément sera donc constant tout le long de l'exécution du programme, y compris lorsqu'il est passé en argument d'un ordre d'appel de procédure, de programme ou de classe/dll. Il en résulte que la Valeur d'une constante doit impérativement être définie lors de sa déclaration.
Le qualificateur CONST n'accepte pas la déclaration d'éléments de type tableau.
Tout comme pour une variable, la déclaration d'une constante peut être associée à un serveur logique, ce qui a pour conséquence de la rendre visible pour le seul serveur logique en question.
Une constante nommée typée (syntaxe 1) suit les mêmes règles de déclaration que le Type qui lui est associé.
Sa Valeur doit correspondre à un littéral compatible avec son type et les éventuels attributs associés (longueur, précision), ou bien à une constante nommée non typée préalablement déclarée, ou encore à une constante dictionnaire non traduisible compatible.
Pour le type BOOL, seuls les mots réservés *VRAI/*FAUX sont acceptés, et pour les types DATE, TIME, TIMESTAMP Valeur doit correspondre à une chaîne de caractères au format *ISO (se reporter à la documentation des fonctions prédéfinies &ALPHA_DATE, &ALPHA_TIME et &ALPHA_TIMESTAMP pour la définition de la représentation alphanumérique au format *ISO). Les mots-réservés *LOVAL/*HIVAL sont également acceptés comme Valeur, et ils constituent avec *VRAI et *FAUX les seuls mots réservés autorisés.
Il est possible d'utiliser le mot clé REF pour déclarer une constante nommée typée de même définition que la variable de l'environnement de données IdVar.
Enfin, et en plus des expressions d'affectation et des expressions conditionnelles, une constante nommée typée peut être utilisée dans les ordres et fonctions pour lesquels un argument littéral est accepté, et ce à l'exception des ordres déclaratifs. Elle peut également être utilisée en tant que variable hôte en entrée dans les ordres SQL. Dans ce dernier cas, l'identifiant Id de la constante doit être précédé du caractère ":".
Une constante nommée non typée (syntaxe 2) correspond à une version simplifiée de la syntaxe 1, où le type est implicite et est automatiquement déduit de la Valeur. Les types possibles étant ALPHA pour une Valeur sous forme de chaîne de caractères, NUM_E pour une Valeur sous forme de littéral numérique et BOOL dans le cas où Valeur est égale à *VRAI ou *FAUX. Une constante nommée non typée préalablement déclarée ainsi qu'une constante de dictionnaire non traduisible compatible sont également acceptées comme Valeur.
Enfin, et en plus des expressions d'affectation et des expressions conditionnelles, une constante nommée non typée peut être utilisée dans les ordres et fonctions pour lesquels un argument littéral est accepté, y compris pour les ordres déclaratifs (par exemple les dimensions dans la déclaration d'une variable de tableau). Elle peut également être utilisée en tant que variable hôte en entrée dans les ordres SQL. Dans ce dernier cas, l'identifiant Id de la constante doit être précédé du caractère ":".
Par exemple
CONST ConstWithoutType = 'An implicit alpha constant'
CONST ALPHA(50) ConstAlpha = 'An alpha constant'
CONST ConstBool = *TRUE
CONST ConstNumWithoutType= -3
CONST NUM_BIN_8 ConstNum = ConstNumWithoutType
CONST Dim1Tab = 1000
DATE VarArrayDate(Dim1Tab)
TIMESTAMP VarTsp
CONST REF(VarTsp) ConstFromRef = '2023-09-01-10.10.10.000000'
CONST ConstValueFromDictionary = _NotTranslatableDicoConstEntry