CEL (Content Expression Language)

RICOH ProcessDirector CEL (Content Expression Language) consente di definire espressioni che specificano il contenuto e il posizionamento dei miglioramenti (codici a barre, testo e aree nascoste) nei documenti nei file AFP. Se si dispone della funzione Insertore, CEL consente di definire espressioni nei file delle regole dell'insertore per la scrittura di file di controllo dell'insertore e di analizzare e interpretare i file dei risultati dell'insertore.

Operatori

In questa tabella viene mostrato l'ordine di precedenza dell'operatore dalla precedenza maggiore a quella minore.

Nome operatore Descrizione
( ) Delimitatore parametro funzioni
( ) Raggruppamento
+, - Unario
*, /, % Moltiplicazione, divisione, modulo
+, - Addizione, sottrazione
==, !=, >, >=, <, <= Relazionale
(implicito) Concatenazione

Esempio:f(3+x)*5 è f(3+x) moltiplicato per 5.

Lingua

Modello Esempio modello Esempio reale Risultato
concatenazione 'string1' 'string2' 'a' func 'b' aVARb if func='VAR'
espressioni relazionali func1 [operatore_relazionale] func2 func1 > func2 True if func1=5 and func2=1
condizione or or(expr1,expr2,....) or(a>100,a==0,b==1) True se una delle espressioni restituisce true
condizione and and(expr1,expr2,...) and(a>3,a<10) True se tutte le espressioni restituiscono true
condizione not not(expr1) not(a==b) True se tutte le espressioni restituiscono false
decisione if(relational_expression,trueexpr,falseexpr) if(a>v,1,0) Se l'espressione relazionale è true, il valore è impostato su trueexpr. Se l'espressione relazionale è false, il valore è impostato su falseexpr.
decisione if(value,trueexpr,falseexpr) if(func2,'true','false') If func2 ha un valore numerico diverso da 0 o un valore di stringa diverso dalla stringa vuota, il literal stringa è true, altrimenti false.

Istruzioni equivalenti

Base Equivalente Commenti
a a() Le variabili sono funzioni senza ().
'*' a '*'a() La concatenazione non richiede spazi tra input e la funzione a può essere rappresentata in entrambi i modi.

Definizione linguaggio EBNF

In questo EBNF (Extended Backus-Naur Form), un'espressione CEL viene rappresentata dalla produzione expr. Le operazioni relazionali e numeriche si comportano come controparti del linguaggio C. Le espressioni consecutive insieme producono un risultato.

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});

Nota: Non sono presenti variabili, solo chiamate di funzione; una chiamata di funzione senza una specifica di parametro si comporta esattamente come una variabile.

Funzioni di contesto integrate

Nome funzione Sintassi Descrizione
substr substr(f,start [,length]) start è a una posizione dalla fine della stringa. start ha base zero. start può essere un valore negativo.
trim trim(string [, charsToTrim]) Gli spazi vuoti tagliati (o l'elenco di caratteri specificati in charsToTrim) da sinistra a destra della stringa.
rtrim rtrim(string [, charsToTrim]) Gli spazi vuoti tagliati (o l'elenco di caratteri specificati in charsToTrim) da destra della stringa.
ltrim ltrim(string [, charsToTrim]) Gli spazi vuoti tagliati (o l'elenco di caratteri specificati in charsToTrim) da sinistra della stringa.
indexof indexof(string, substr [, start ]) Restituire la posizione indice iniziale della stringa secondaria nella stringa. Se substr non viene trovato, viene restituito -1 .
fmt fmt(formatString [,values]... ) Formattare i valori mediante formatString.
tr tr(string, fromChars [, toChars]) Convertire i caratteri che corrispondono a fromChars nella stringa nel toChars corrispondente. Se il carattere fromChars non ha un carattere corrispondente in toChars (corrispondenza posizione), fromChar viene rimosso dalla stringa di input. Se toChars viene omesso, tutti i caratteri elencati in fromChars vengono rimossi nel valore restituito.
bin bin(string [, trueChar ]) Utilizzando trueChar come on-bit nella stringa, la stringa di input viene convertita in un numero. Se trueChar viene omesso, "1" è l'on-bit.
fmtbase fmtbase(value, numChars [, baseString ]) Se baseString viene omesso, viene assunto il valore "0123456789ABCDEF", che restituisce i numChars più a destra dopo la conversione del valore nella base rappresentata da baseString. baseString può essere un qualunque elenco di caratteri, partendo dal presupposto che quello più a sinistra rappresenti lo zero e quello più a destra il valore massimo del sistema base in cui viene eseguita la conversione.
exists exists(value) Restituisce true se il valore fornito restituisce true. (Questa funzione è equivalente alla funzione defined.)
defined defined(value) Restituisce true se il valore fornito restituisce true. Se il valore è un nome di proprietà RICOH ProcessDirector, questa funzione restituisce true se la proprietà è definita nel database. Se una proprietà è definita nel database, è possibile fare riferimento ad essa in altre funzioni CEL.
len len(stringa) Restituisce il numero di caratteri nella stringa di input.
nil nil Restituisce un valore utilizzabile nelle funzioni CEL per rappresentare un valore nullo.
aggr [aggr=sum] [aggr=max] [aggr=min] Restituisce il valore di somma, massimo o minimo di un'espressione (expr) valutata rispetto a tutti i documenti nel lavoro. Se si dispone della funzione Insertore, è possibile utilizzarla nel file delle regole per il record di intestazione del file di controllo dell'insertore.

Funzioni di contesto record

Nome funzione Sintassi Descrizione
nome_campo nome_campo o nome_campo() Il valore del campo per il record corrente nel contesto.
recnum recnum o recnum() Il numero di record del record corrente da utilizzare nel contesto.

Funzioni di contesto che memorizzano in cache il record

Nome funzione Sintassi Descrizione
nome_campo nome_campo o nome_campo(offset) Se offset è 0 oppure è un valore mancante, è il valore del campo per il record corrente nel contesto. Se offset è un numero positivo, è il valore del campo per il record offset avanti. Se offset è un numero negativo, è il valore del campo per il record offset dietro. Il numero massimo di record attualmente memorizzati nella cache è 10. Il numero di record memorizzati preventivamente nella cache può avere un valore qualsiasi e viene determinato dinamicamente durante l'elaborazione.
recnum recnum o recnum() Il numero di record del record corrente da utilizzare nel contesto.

Esempi

Espressione Spiegazione
if(or(a>100,a==0),1,0) Se il valore di a è superiore a 100 o uguale a 0, questa espressione restituisce 1, altrimenti restituisce 0.
if(and(a>3,a<10),1,0) Se il valore di a è superiore a 3 e inferiore a 10, questa espressione restituisce 1, altrimenti restituisce 0.
if(fld,fld,'') Considera un valore mancante come una stringa vuota, altrimenti, lo considera come non definito, che è differente da uno spazio vuoto.
fmtbase(if(output_bin=='2',1,0) + if(output_bin=='3',2,0) + if(meter == '1', 4,0) , 1) Restituisce un valore esadecimale, in cui il bit di ordine inferiore (da destra) indica se output_bin è impostato su 2; il secondo bit indica se output_bin è impostato su 3 e il terzo bit indica se meter è impostato su 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 ) Restituisce un valore esadecimale, in cui il bit di ordine inferiore (da destra) indica se meter è impostato su 2; il secondo bit indica se il primo carattere di mch_isrt_bins è impostato su 'Y' e il terzo bit indica se il secondo carattere di mch_isrt_bins è impostato su 'Y'.
fmtbase(63,2,"0123456789ABCDFGHJKLMNPQRSTVWXYZ") Converte 63 in "1Z". Qualsiasi stringa può essere utilizzata come base.
tr('abc', 'b') Rimuove tutti i caratteri 'b'.
tr('00101', '01', 'NY') Converte '0' in 'N' e '1' in 'Y'. Risulta in 'NNYNY'.
tr('00101', '0123456789Y', 'YYYYYYYYYYN') == 'YYYYY' Restituisce true se tutti i caratteri in '00101' sono cifre. '00101' può essere sostituito da un valore funzione di 5 caratteri.
len(tr('00101','0')) Restituisce 2. Rimuove tutti gli "0" dalla stringa di input e restituisce la lunghezza dei caratteri restanti. Conta effettivamente i numero '1' nella stringa di input.
[expr=Doc.TotalSheets] [aggr=sum] Restituisce la somma di tutti i valori nella proprietà Doc.TotalSheets in tutti i documenti nel lavoro.
[expr=Doc.TotalSheets] [aggr=max] Restituisce il valore massimo nella proprietà Doc.TotalSheets in tutti i documenti nel lavoro.
[expr=Doc.TotalSheets] [aggr=min] Restituisce il valore minimo nella proprietà Doc.TotalSheets in tutti i documenti nel lavoro.
[expr=recnum>1] Ignorare la prima riga del file (leggere esclusivamente i numeri di record maggiori di 1.)