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.) |