Manual de usuario de calibre, Publicación 2.73.0
Este programa hace lo siguiente:
especifica que el campo que se examina es series_index. Esto establece el valor de la variable $.
ejecuta la función substr, que toma 3 argumentos (texto,inicio,fin). Devuelve un texto formado
extrayendo los caracteres entre inicio y fin de texto (el primer carácter es el número cero). En este caso, el texto
se calcula mediante la función strcat, inicio es 0 y fin es 6. En este caso, devolverá los primeros 6 caracteres
del texto devuelto por strcat, que debe evaluarse antes de que substr pueda finalizar.
ejecuta la función strcat (concatenación de textos). strcat acepta 1 o más argumentos, y devuelve un texto
formado por la concatenación de todos los valores. En este caso hay tres argumentos. El primer argumento es el
valor en $, que aquí es el valor de series_index. El segundo parámetro es el texto constante '->'. El tercer
parámetro es el valor devuelto por la función cmp, que debe evaluarse completamente antes de que strcat
pueda finalizar.
La función cmp toma 5 argumentos (x,y,mn,ig,my). Compara x e y y devuelve el tercer argumento, mn si
x < y, el cuarto argumento, ig, si x = y, y el quinto argumento, my, si x > y. Como en todas las funciones, todos
los parámetros pueden ser sentencias. En este caso el primer parámetro (el valor de x) es el resultado de dividir
series_index entre 2. El segundo parámetro, y, es la constante 1. El tercer parámetro, mn es una sentencia
(volveremos a él más adelante). El cuarto parámetro, ig, es el texto constante 'eq'. El quinto parámetro es el
texto constante 'gt'.
El tercer parámetro (el de mn) es una sentencia, o una sequencia de expresiones. Recuerde que una sentencia
(una sentencia de expresiones separadas por punto y coma) también es una expresión, que devuelve el valor de
la última expresión de la lista. En este caso, el programa primero asigna el valor 1 a la variable local c, después
devuelve un subtexto creado extrayendo desde el carácter número c hasta el final. Puesto que c siempre contiene
la constante 1, el subtext o devolverá los caracteres desde el segundo hasta el final, o 't123'.
Una vez que se ejecuta la sentencia que proporciona un valor para el tercer parámetro, cmp puede devolver
un valor. En este punto, strcat puede devolver un valor, y substr puede devolver un valor. Entonces el
programa finaliza.
Para distintos valores de series_index, el programa devuelve:
series_index == undefined, resultado = prefix ->t123 suffix
series_index == 0.5, resultado = prefix 0.50-> suffix
series_index == 1, resultado = prefix 1->t12 suffix
series_index == 2, resultado = prefix 2->eq suffix
series_index == 3, resultado = prefix 3->gt suffix
Todas las funciones mostradas en el modo de función única puede usarse en el modo de programación. Para
ello debe proporcionar el valor sobre el que actuará la función como primer parámetro, además de los parámetros
documentados anteriormente. Por ejemplo, en el modo de programación los parámetros de la función test son
test(x,texto_si_no_vacío,texto_si_vacío). El parámetro x, que es el valor que se comprueba, casi
siempre será una variable o una llamada una función, a menudo field().
Las siguientes funciones están disponibles, además de las descritas en el modo de función única. Recuerde del ejemplo
anterior que las funciones del modo de función única requieren un primer parámetro adicional que especifique el
campo sobre el que se opera. Excepto el parámetro id de assign, todos los parámetros pueden ser sentencias
(secuencias de expresiones). Tenga en cuenta que la documentación definitiva de las funciones está disponible en la
sección Clasificación de funciones (página 155):
and(valor,valor,...) – devuelve el texto «1» si todos los valores son no vacíos, en caso contrario
devuelve un texto vacío. Esta función opera bien con test o first_non_empty. Pueden usarse tantos
valores como se desee.
add(x,y) – devuelve x + y. Da un error si x o y no son números.
1.9. Cursillos
151