Linguagem de Expressão de Conteúdo (CEL)

RICOH ProcessDirector Se você tiver o recurso , o Idioma de Expressão de Conteúdo (CEL) permite definir expressões que especificam o conteúdo e posicionamento dos aprimoramentos (códigos de barra, textos e áreas ocultas) a documentos nos arquivos AFP. Se você tiver o recurso Insersor, o CEL permitirá definir as expressões nos arquivos de regras do insersor que gravam arquivos de controle do insersor, e analisar e interpretar os arquivos de resultados do insersor.

Operadores

Esta tabela mostra a ordem de prioridade do operador da prioridade mais alta até a mais baixa.

Nome do operador Descrição
( ) Delimitador do parâmetro de função
( ) Agrupamento
+, - Unário
*, /, % Multiplicar, dividir, módulo
+, - Adição, subtração
==, !=, >, >=, <, <= Relacional
(implícito) Concatenação

Exemplo:f(3+x)*5 é f(3+x) multiplicado por 5.

Linguagem

Padrão Exemplo de modelo Exemplo real Resultado
Concatenação 'string1' 'string2' 'a' func 'b' aVARb if func='VAR'
Expressões relacionais func1 [relational_operator] func2 func1 > func2 Verdadeiro se func1=5 e func2=1
ou condição ou(expr1,expr2,....) ou(a>100,a==0,b==1) Verdadeiro se qualquer uma das expressões considerar verdadeiro
condição e e(expr1,expr2,...) e(a>3,a<10) Verdadeiro se todas as expressões considerarem verdadeiro
condição não não(expr1) não(a==b) Verdadeiro se todas as expressões considerarem falso
decisão se(relational_expression,trueexpr,falseexpr) se(a>v,1,0) Se a expressão relacional for verdadeiro, o valor será definido comotrueexpr . Se a expressão relacional for falso, o valor será definido comofalseexpr .
decisão se(value,trueexpr,falseexpr) se(func2,'true','false') Se a func2 tem um valor numérico que não é igual a 0 ou um valor de cadeia que não é igual a uma cadeia vazia, a cadeia literal será verdadeira, caso contrário será falsa.

Instruções equivalentes

Base Equivalente Comentários
a a() Variáveis são funções sem ().
'*' a '*'a() A concatenação não requer espaços entre as entradas, e a função a pode ser representada de qualquer maneira.

Definição de Linguagem EBNF

Nesta expressão Backus-Naur Estendida, (EBNF) uma CEL é representada pela produção de expr. As operações relacionais e numéricas se comportam como os seus correlatos da linguagem C. Expressões consecutivas são encadeadas juntas para produzir um resultado.

expr = "(", expr, ")" | concatenação | numexpr | relexpr | ("+" | "-"), expr | chamada de função | cadeia| número;concatenação = expr, expr;numexpr = expr, ("+" | "-" | "*" | "/" | "%"), expr;relexpr = expr, ("==" | "!=" | "<" | ">" | "<=" | ">="), expr;chamada de função = identificador, [ "(", parâmetros, ")" ];parâmetros = expr, { ",", expr };identificador = (alpha | "_"), { (alpha | "_" | digit ) };cadeia = "'", (* sequência de caracteres, com padrão \\ escapes *), "'";número = (digit { digit }) | ({ digit } . {dígito});

Obs.: Não há variáveis, somente chamadas de função; uma chamada de função sem parâmetro de especificação se parece e comporta-se exatamente como uma variável.

Funções de contexto incorporadas

Nome da função Sintaxe Descrição
substr substr(f,início [,extensão]) início é uma posição no final da cadeia. início baseia-se em zero. início pode ser um valor negativo.
ajuste ajuste(cadeia [, charsToTrim]) Espaços em branco de ajuste (ou a lista de caracteres especificadas em charsToTrim) da esquerda e direita da cadeia.
rtrim rtrim(cadeia [, charsToTrim]) Espaços em branco de ajuste (ou a lista de caracteres especificadas em charsToTrim) da direita da cadeia .
ltrim ltrim(cadeia [, charsToTrim]) Espaços em branco de ajuste (ou a lista de caracteres especificadas em charsToTrim) da esquerda da cadeia.
indexof indexof(cadeia, substr [, início ]) Retorna o local de índice de início da subcadeia para dentro da cadeia. Se substr não for encontrado, -1 é retornado.
fmt fmt(formatString [,valores]... ) Formata os valores usando formatString.
tr tr(cadeia, fromChars [, toChars]) Traduz os caracteres que correspondem a fromChars na cadeia do toChars correspondente. Se o caractere fromChars não possuir um caractere correspondente em toChars (correspondência da posição), o fromChar é removido da cadeia de entrada. Se toChars for omitido, todos os caracteres listados em fromChars serão removidos no valor retornado.
bin bin(cadeia [, trueChar ]) Ao usar trueChar como on-bits na cadeia, a seqüência de entrada será convertida em um número. Se trueChar for omitido, "1" é o on-bit.
fmtbase fmtbase(valor, numChars [, baseString ]) Se baseString for omitido, é pressuposto que ele seja "0123456789ABCDEF", retornando o numChars mais à direita após converter o valor para a base representada por baseString. O baseString pode ser qualquer lista de caracteres, pressupondo que o caractere mais à esquerda represente zero e o mais à direita represente o valor mais alto do sistema de base ao qual está sendo convertido.
existe existe(valor) Considera verdadeira se o valor considerar verdadeiro. (Esta função é equivalente à função definida).
definida definida(valor) Considera verdadeira se o valor considerar verdadeiro. Se o valor for um nome de propriedade RICOH ProcessDirector, esta função retornará verdadeiro se a propriedade estiver definida no banco de dados. Se uma propriedade estiver definida no banco de dados, você poderá consultá-la em outras funções CEL.
len len(cadeia) Retorna o número de caracteres da cadeia de entrada.
zero zero Retorna um valor que você pode usar nas funções CEL para representar um valor nulo.
aggr [aggr=sum] [aggr=max] [aggr=min] Retorna a soma, valor máximo ou mínimo de uma expressão (expr) avaliada em comparação a todos os documentos da tarefa. Se você tiver o recurso Insersor, poderá usar esta função no arquivo de regras para o registro do cabeçalho do arquivo de controle do insersor.

Funções de contexto de registro

Nome da função Sintaxe Descrição
field_name field_name ou field_name() O valor do campo do registro atual no contexto.
recnum recnum ou recnum() O número de registro do registro atual usado no contexto.

Funções de contexto de armazenamento em cache do registro

Nome da função Sintaxe Descrição
field_name field_name ou field_name(deslocamento) Se deslocamento é 0 ou ausente, o valor do campo para o registro atual no contexto. Se deslocamento é um número positivo, o valor do campo para o registro deslocamento adiante. Se deslocamento é um número negativo, o valor do campo para o registro deslocamento anterior. O número máximo de registros atualmente armazenados em cache para trás é 10. O número de registros armazenados em cache à frente pode ser qualquer valor e é determinado dinamicamente durante o processamento.
recnum recnum ou recnum() O número de registro do registro atual usado no contexto.

Exemplos

Expressão Explicação
se(ou(a>100,a==0),1,0) Se o valor de a é maior que 100 ou igual a 0, esta expressão considera como 1; caso contrário, ela considera como 0.
se(e(a>3,a<10),1,0) Se o valor de a é maior que 3 e menor que 10, esta expressão considera como 1; caso contrário, ela considera como 0.
se(fld,fld,'') Trata um valor ausente como uma cadeia vazia, caso contrário, trata o valor ausente como indefinido, o que é diferente de um valor em branco.
fmtbase(if(output_bin=='2',1,0) + se(output_bin=='3',2,0) + sef(meter == '1', 4,0) , 1) Retorna um número hexadecimal, onde o bit de baixa ordem (da direita) indica se o output_bin está definido como 2, o segundo bit indica se o output_bin está definido como 3 e o terceiro bit indica se o metro está definido como 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 ) Retorna um número hexadecimal, onde o bit de baixa ordem (da direita) indica se o metro está definido como 2, o segundo bit indica se o primeiro caractere de mch_isrt_bins está definido como 'Y' e o terceiro bit indica se o segundo caractere de mch_isrt_bins está definido como 'Y'.
fmtbase(63,2,"0123456789ABCDFGHJKLMNPQRSTVWXYZ") Converte 63 em "1Z". Qualquer cadeia pode ser usada como base.
tr('abc', 'b') Remove todos os caracteres 'b'.
tr('00101', '01', 'NY') Converte '0' para 'N' e '1' para 'Y'. Resulta em 'NNYNY'.
tr('00101', '0123456789Y', 'YYYYYYYYYYN') == 'YYYYY' Considera como verdadeiro se todos os caracteres em '00101' forem dígitos. '00101' pode ser substituído por um valor de função de 5 caracteres.
len(tr('00101','0')) Considera como 2. Remove todos os '0's da cadeia de entrada e retorna o comprimento dos caracteres restantes. Conta com eficácia o número de '1 's na cadeia de entrada..
[expr=Doc.TotalSheets] [aggr=sum] Retorna a soma de todos os valores na propriedade Doc.TotalSheets em todos os documentos da tarefa.
[expr=Doc.TotalSheets] [aggr=max] Retorna o valor máximo na propriedade Doc.TotalSheets em todos os documentos da tarefa.
[expr=Doc.TotalSheets] [aggr=min] Retorna o valor mínimo na propriedade Doc.TotalSheets em todos os documentos da tarefa.
[expr=recnum>1] Ignora a primeira linha do arquivo. (Lê somente os números de registro maiores do que 1.)