Langage CEL (Content Expression Language)

Le langage CEL (Content Expression Language) RICOH ProcessDirector permet de définir des expressions spécifiant le contenu et le positionnement des améliorations (codes-barres, texte et zones masquées) de documents dans des fichiers AFP. Si vous disposez de la fonction Inserter, CEL permet de définir des expressions dans des fichiers de règles de mise sous pli qui écrivent des fichiers de contrôle de mise sous pli, et d'analyser et interpréter les fichiers de résultats de mise sous pli.

Opérateurs

Ce tableau montre l'ordre de priorité des opérateurs de la plus élevée à la plus faible.

Nom de l'opérateur Description
( ) Délimiteur de paramètre de fonction
( ) Regroupement
+, - Unaire
*, /, % Multiplication, division, modulo
+, - Addition, soustraction
==, !=, >, >=, <, <= Relationnel
(implicite) Concaténation

Exemple :f(3+x)*5 égale f(3+x) multiplié par 5.

Langue

Modèle Exemple de modèle Exemple réel Résultat
concaténation 'string1' 'string2' 'a' func 'b' aVARb if func='VAR'
expressions relationnelles func1 [relational_operator] func2 func1 [relational_operator] func2 True if func1=5 and func2=1
condition or or(expr1,expr2,....) or(a100,a==0,b==1) True si des expressions ont pour résultat true
condition and and(expr1,expr2,...) and(a>3,a<10) True si toutes les expressions ont pour résultat true
condition not not(expr1) not(a==b) True si toutes les expressions ont pour résultat false
décision if(relational_expression,trueexpr,falseexpr) if(av,1,0) Si l'expression relationnelle est vérifiée, la valeur est définie sur trueexpr. Si l'expression relationnelle n'est pas vérifiée, la valeur est définie sur falseexpr.
décision if(value,trueexpr,falseexpr) if(func2,'true','false') Si func2 comporte une valeur numérique différente de 0 ou une valeur de chaîne différente d'une chaîne vide, le littéral chaîne est vrai, sinon il est faux.

Instructions équivalentes

Base Équivalent Commentaires
a a() Les variables sont des fonctions sans ().
'*' a '*'a() La concaténation ne nécessite pas d'espace entre les termes entrés et la fonction a peut être représentée des deux façons.

Définition de langage EBNF

Au format EBNF (Extended Backus-Naur Form), une expression CEL est représentée par la production expr. Les opérations relationnelles et numériques se comportent comme leurs contre-parties en langage C. Les expressions consécutives sont liées entre elles afin de produire un résultat.

expr = "(", expr, ")" | catenation | numexpr | relexpr | ("+" | "-"), expr | function call | string | number;catenation = expr, expr;numexpr = expr, ("+" | "-" | "*" | "/" | "%"), expr;relexpr = expr, ("==" | "!=" | "<" | ">" | "<=" | ">="), expr;function call = identifier, [ "(", parameters, ")" ];parameters = expr, { ",", expr };identifier = (alpha | "_"), { (alpha | "_" | digit ) };string = "'", (* sequence of characters, with standard \\ escapes *), "'";number = (digit { digit }) | ({ digit } . {digit});

Remarque: Il n'y a aucune variable, seulement des appels de fonction ; un appel de fonction sans spécification de paramètre se présente et se comporte exactement comme une variable.

Fonctions de contexte intégrées

Nom de fonction Syntaxe Description
substr substr(f,start [,length]) start est une position à partir de la fin de la chaîne. start est basé sur zéro. start peut être négatif.
trim trim(string [, charsToTrim]) Enlever les espaces (ou la liste de caractères indiqués dans charsToTrim) à partir de la gauche et de la droite de la chaîne.
rtrim rtrim(string [, charsToTrim]) Enlever les espaces (ou la liste de caractères indiqués dans charsToTrim) à partir de la droite de la chaîne.
ltrim ltrim(string [, charsToTrim]) Enlever les espaces (ou la liste de caractères indiqués dans charsToTrim) à partir de la gauche de la chaîne.
indexof indexof(string, substr [, start ]) Renvoyer l'emplacement d'index de début de la sous-chaîne au sein de la chaîne. Si substr est introuvable, -1 est renvoyé.
fmt fmt(formatString [,values]... ) ) Formater les valeurs à l'aide de formatString.
tr tr(string, fromChars [, toChars]) Convertir les caractères de la chaîne correspondant à fromChars en caractères toChars correspondants. Si le caractère fromChars n'a pas de caractère correspondant dans toChars (correspondance de position), le caractère fromChar est supprimé de la chaîne d'entrée. Si toChars est omis, tous les caractères répertoriés dans fromChars sont supprimés de la valeur renvoyée.
bin bin(string [, trueChar ]) À l'aide de trueChar en tant que bits on dans la chaîne, la chaîne d'entrée est convertie en nombre. Si trueChar est omis, "1" est le bit on.
fmtbase fmtbase(value, numChars [, baseString ]) Si baseString est omis, la valeur est supposée être "0123456789ABCDEF" et renvoyer les derniers numChars après avoir converti la valeur dans la base représentée par baseString. Basestring peut être une liste de caractères, en supposant que le caractère le plus à gauche représente zéro et que le caractère le plus à droite représente la valeur la plus élevée du système de base vers lequel la conversion est effectuée.
exists exists(value) A pour résultat true si la valeur a pour résultat true. (Cette fonction revient à la fonction defined.)
défini defined(value) A pour résultat true si la valeur a pour résultat true. Si la valeur est un nom de propriété RICOH ProcessDirector, cette fonction renvoie la valeur true si la propriété est définie dans la base de données. Si une propriété est définie dans la base de données, vous pouvez vous y référer dans d'autres fonctions CEL.
len len(string) Renvoie le nombre de caractères dans la chaîne d'entrée.
nil nil Renvoie une valeur que vous pouvez utiliser dans des fonctions CEL pour représenter une valeur nulle.
aggr [aggr=sum] [aggr=max] [aggr=min] Renvoie la somme, la valeur maximale ou minimale d'une expression (expr) calculée en fonction de tous les documents du travail. Si vous disposez de la fonction Inserter, vous pouvez l'utiliser dans le fichier de règles dans l'enregistrement d'en-tête du fichier de contrôle de mise sous pli.

Fonctions de contexte d'enregistrement

Nom de fonction Syntaxe Description
nom_zone field_name ou field_name() Valeur de la zone pour l'enregistrement en cours dans le contexte.
recnum recnum ou recnum() Numéro de l'enregistrement en cours utilisé dans le contexte.

Fonctions de contexte de mise en cache d'enregistrement

Nom de fonction Syntaxe Description
nom_zone field_name ou field_name(offset) Si offset est 0 ou manquant, valeur de la zone pour l'enregistrement en cours dans le contexte. Si offset est un nombre positif, la valeur de la zone pour l'enregistrement est décalée (offset) en avance. Si offset est un nombre négatif, la valeur de la zone pour l'enregistrement est décalée (offset) en arrière. Le nombre maximum d'enregistrements en cache décalés en arrière s'élève à 10. Le nombre d'enregistrements en cache, décalés en avant, peut correspondre à n'importe quelle valeur et est déterminé dynamiquement pendant le traitement.
recnum recnum ou recnum() Numéro de l'enregistrement en cours utilisé dans le contexte.

Exemples

Expression Explication
if(or(a100,a==0),1,0) Si la valeur de a est supérieure à 100 ou égale à 0, cette expression a pour résultat 1 ; dans les autres cas, elle a pour résultat 0.
if(and(a>3,a<10),1,0) Si la valeur de a est supérieure à 3 et inférieure à 10, cette expression a pour résultat 1 ; dans les autres cas, elle a pour résultat 0.
if(fld,fld,'') Traite une valeur manquante comme une chaîne vide ; dans les autres cas, traite la valeur manquante en tant que non définie, ce qui est différent d'une valeur vide.
fmtbase(if(output_bin=='2',1,0) + if(output_bin=='3',2,0) + if(meter == '1', 4,0) , 1) Renvoie un nombre hexadécimal, où le bit de poids faible (à partir de la droite) indique si output_bin est défini par 2, le second bit indique si output_bin est défini par 3 et le troisième bit indique si meter est défini par 1.
fmtbase(if(meter=='2',1,0) + if(substr(mch_isrt_bins,0,1)=='Y',2,0) + if(substr(mch_isrt_bins,1,1)=='Y',4,0) , 1 ) Renvoie un nombre hexadécimal où le bit de poids faible (à partir de la droite) indique si meter est défini par 2, le second bit indique si le premier caractère de mch_isrt_bins est défini par 'Y' et le troisième bit indique si le second caractère de mch_isrt_bins est défini par 'Y'.
fmtbase(63,2,"0123456789ABCDFGHJKLMNPQRSTVWXYZ") Convertit 63 en "1Z". Toute chaîne peut être utilisée en tant que base.
tr('abc', 'b') Supprime tous les caractères 'b'.
tr('00101', '01', 'NY') Convertit '0' en 'N' et '1' en 'Y'. À pour résultat 'NNYNY'.
tr('00101', '0123456789Y', 'YYYYYYYYYYN') == 'YYYYY' À pour résultat true si tous les caractères de '00101' sont des chiffres. '00101' peut être remplacé par une valeur de fonction de 5 caractères.
len(tr('00101','0')) A pour résultat 2. Supprime tous les '0' de la chaîne d'entrée et renvoie la longueur des caractères restants. Compte le nombre de '1' dans la chaîne d'entrée.
[expr=Doc.TotalSheets] [aggr=sum] Renvoie la somme de toutes les valeurs de la propriété Doc.TotalSheets dans tous les documents du travail.
[expr=Doc.TotalSheets] [aggr=max] Renvoie la valeur maximum de la propriété Doc.TotalSheets dans tous les documents du travail.
[expr=Doc.TotalSheets] [aggr=min] Renvoie la valeur minimum de la propriété Doc.TotalSheets dans tous les documents du travail.
[expr=recnum>1] Ignore la première ligne du fichier. (Pour les enregistrements en lecture seule dont le numéro est supérieur à 1.)