Registro tipo P. Descripción paramétrica.
Este registro contiene la descripción paramétrica de un concepto.
Un concepto paramétrico es aquel que mediante la selección de unos parámetros coherentes puede formar varios conceptos derivados. Al grupo de conceptos derivados se le suele llamar familia de conceptos derivados.
La información de un concepto normal se define en los registros:
- Tipo C: Código, resumen y precio.
- Tipo T: Texto descriptivo o epígrafe.
- Tipo L, Q y J: Texto del pliego de condiciones.
- Tipo D: Descomposición, código de los conceptos hijos, factores y rendimientos.
- Tipo O: Información comercial.
- Tipo A: Claves de búsqueda.
Toda esta información puede definirse para los conceptos paramétricos derivados dentro de la descripción paramétrica del registro tipo P.
Estos datos se definen de forma variable mediante tablas, expresiones aritméticas y lógicas en función de los parámetros.
Este tipo de conceptos es usado por algunas bases de precios de uso muy extendido. Los conceptos paramétricos no son válidos para usarse directamente en los presupuestos, en su lugar se usan los conceptos derivados de los conceptos paramétricos copiándolos en los presupuestos desde la base de precios.
Las especificaciones del formato FIEBDC describen dos formas de definir los conceptos paramétricos, una mediante la descripción paramétrica definida dentro del propio registro y otra definida en un fichero externo en formato biblioteca dll del sistema privativo Microsoft Windows.
pyArq Presupuestos no podrá leer los registros paramétricos definidos mediante una biblioteca dll por dos razones:
- Estas bibliotecas son sólo compatibles con el sistema operativo privativo Microsoft Windows, por el contrario pyArq Presupuestos está diseñado para ser multiplataforma. Realmente podrían ser accesibles mediante el uso de la implementación libre del api win32 para sistemas tipo Unix Wine.
- El objetivo del uso de estas bibliotecas por parte de los redactores de bases de precios hace que se desestime su implementación en pyArq Presupuestos. El objetivo de estas bibliotecas es esconder el funcionamiento interno de los conceptos paramétricos al usuario para que estos no puedan conocer que consideraciones se han tomado para formar los conceptos derivados en función de los parámetros definidos. Está política de ocultación es contraria a la filosofía del software libre que sigue pyArq.
Por lo tanto, es la descripción paramétrica dentro del propio registro P la que se describe a continuación.
Cualidades básicas de los parámetros:
- Cada base de precios puede tener de 0 a 4 parámetros globales O, P, Q y R.
- Cada concepto paramétrico puede tener de 0 a 4 parámetros: A, B, C y D.
- Los parámetros se asignan por orden de aparición:
- 1º = A (O para los parámetros generales)
- 2º = B (P para los parámetros generales)
- 3º = C (Q para los parámetros generales)
- 4º = D (R para los parámetros generales)
- Cada parámetro hace referencia a una cualidad del concepto (o de la base de precios en los generales), esa cualidad se define mediante su rótulo.
- Cada parámetro puede definir 26 estados [a-z] (no hay ñ), cada uno de los estados de cada parámetro se define con su rótulo.
- Los estados de los parámetros se asignan por orden de aparición:
- 1º = a
- 2º = b
- ...
- 26º = z
~P | | Descripción paramétrica | Biblioteca dll |
~P | Código de familia | Descripción paramétrica |
Cuando el campo Código de familia no contiene datos:
- El registro define la descripción paramétrica global, válida para toda la base de precios.
- Cuando el campo Descripción paramétrica contiene datos, la descripción paramétrica global se define en este campo.
- Cuando el campo Descripción paramétrica no contiene datos y el campo Biblioteca dll si contiene datos, la descripción paramétrica global se define en la biblioteca dll especificada.
- Si los campos Descripción paramétrica y Biblioteca dll contienen datos simultáneamente, tan solo es válida el campo Descripción paramétrica.
Cuando el campo Código de familia contiene datos:
- El registro define la descripción paramétrica de una familia de conceptos.
- Si se utiliza un modelo de codificación dependiente de los parámetros, el código de la familia debe tener un carácter $ en la séptima posición. El código de los conceptos paramétricos derivados se forma añadiendo a los 6 primeros caracteres del código de familia los caracteres que definen los estados seleccionados de los parámetros. En general cada parámetro es sustituido por la letra que le corresponde por orden, aunque en el rotulo del estado del parámetro se puede especificar otro carácter de sustitución anteponiendo el carácter "!" al carácter de sustitución seguido de un espacio y del rótulo del estado.
Ejemplo:PBPO.2$ M3 Hormigón $B $A
- \ CONSISTENCIA \ plástica \ fluida \ blanda \
- \ RESISTENCIA \ H-125 \ H-150 \ H-175 \ H-200 \
- El derivado PBPO.2aa sería: M3 Hormigón H-125 plástica
Con el carácter especial:
- \ CONSISTENCIA \ !p plástica \ !f fluida \ !b blanda \
- \ RESISTENCIA \ !2 H-125 \ !5 H-150 \ !7 H-175 \ !0 H-200 \
- El mismo derivado sería: PBPO.2p2 M3 Hormigón H-125 plástica.
La descripción paramétrica se divide en sentencias:
Tipo de sentencias:
- Sentencia de Rótulos de Parámetro:
\ ROTULO del parámetro \ { ROTULO del estado \ }
Hasta cuatro parámetros, A,B,C y D para un concepto paramétrico.
Hasta cuatro parámetros generales, O,P,Q y R para la base de precios.
Hasta 26 estados para cada parámetro a-z - Sentencia de asignación numérica:
Estas expresiones pueden contener un numero indefinido de objetos almacenados en tablas de hasta cuatro dimensiones.%[A-Z][(dim{,dim})]
Las variables numéricas deben permitir valores reales en coma flotante de doble precisión 64 bits.variable numérica = expresión numérica
- Sentencia de asignación alfanumérica:
Estas expresiones pueden contener un numero indefinido de objetos almacenados en tablas de hasta cuatro dimensiones.$[A-Z][(dim{,dim})]
Las expresiones alfanuméricas se expresan entre comillas. Ejemplo: ($I="incluida parte proporcional")
Las variables alfanuméricas deben poder almacenar textos de dimensión indefinida.variable alfanumérica = expresión alfanumérica
- Sentencia de Rendimiento
texto de sustitución de CÓDIGO : expresión numérica [ :
]
Se pueden definir uno u opcionalmente dos rendimientos, por defecto el rendimiento opcional, también llamado factor, es 1. - Sentencia de medios auxiliares
%: expresión numérica (en tanto por cien)
%%: expresión numérica (en tanto por uno)
- Sentencia de Precio
:: expresión numérica
Si existen tanto la sentencia de rendimiento como la de precio, tiene prioridad la de precio ignorando la de rendimiento. - Sentencia de Comentario. Texto de ayuda para la selección de parámetros.
\ COMENTARIO \ texto del comentario \
\ C \ texto del comentario \
- Sentencia de sustitución.
- Resumen
\ RESUMEN \ texto de sustitución del texto resumido \
\ R \ texto de sustitución del texto resumido \
- Texto
\ TEXTO \ texto de sustitución del texto descriptivo \
\ T \ texto de sustitución del texto descriptivo \
- Pliego
\ PLIEGO \ { texto de sustitución de pliego \ }
\ P \ { texto de sustitución de pliego \ }
- Claves
\ CLAVES \{ texto de sustitución de clave \ }
\ K \ { texto de sustitución de clave \ }
- Comercial
\ COMERCIAL \{ texto de sustitución de CÓDIGO\ expresión_numérica\}
\ F \ { texto de sustitución de CÓDIGO\ expresión_numérica\}
- Resumen
En general cada sentencia supone una linea que termina con los caracteres de fin de linea (13)(10).
Se considera que la sentencia continua en la linea siguiente si:
- la línea acaba en un operador [+-*/^].
- la línea acaba sin cerrar comillas ["].
- la línea acaba sin cerrar el delimitador [\].
- la línea acaba con el separador en variables matriciales [,]
Expresiones numéricas: Son aquellas expresiones que dan como resultado un número. Pueden contener constantes numéricas, variables numéricas %[AZ], operadores, funciones numéricas y también funciones lógicas.
Expresiones alfanuméricas: Son aquellas expresiones que dan como resultado una cadena alfanumérica. Pueden contener constantes y variables alfanuméricas $[A-Z], operadores y funciones numéricas, así como funciones lógicas.
Expresiones lógicas: Son aquellas usadas dentro de expresiones numéricas o alfanuméricas que dan como resultado un valor boleando Verdadero o Falso. En expresiones numéricas Verdadero es 1 y Falso es 0, en alfanuméricas Falso significa no añadir el texto y Verdadero si añadirlo.
Las expresiones %E y $E son especiales. Se definen para identificar las combinaciones de estados paramétricos incompatibles así como el mensaje de error de cada combinación incompatible.
Si la expresión %E para una combinación de estados de parámetros devuelve un numero distinto a 0 significa que dicha combinación de estados es incompatible. Debiendo ser la causa de la incompatibilidad el valor que toma la variable $E para esa misma combinación de estado de los parámetros.
Texto de sustitución. Es una cadena de texto que contiene nombres de variables embebidas. Se consideran variables los caracteres $ y % seguidos inmediatamente de una letra de la A a la Z. Las variables pueden corresponder a los parámetros del concepto paramétrico (ABCD), a los parámetros generales (OPQR) o a las variables que se hayan definido.
Las variables se sustituyen por su texto correspondiente, las numéricas se sustituyen por su letra correspondiente a-z o por el carácter definido junto al rótulo del estado con el carácter ! en el caso de los parámetros, las alfanuméricas se sustituyen por su contenido o por su rótulo en el caso de los parámetros.
La expresión rendimiento sustituye a los registros D (Descomposición)
En la expresión del rendimiento la primera parte de la sentencia es un texto de sustitución que una vez sustituidas las variables forma el código del concepto. La segunda parte de la expresión representa el rendimiento de ese concepto dentro de la descomposición del paramétrico derivado. Si el resultado es 0, se ignora la sentencia y no se considera ese componente o línea de descomposición.
Procedimiento de lectura de descripciones paramétricas.
- Eliminar el carácter # inclusive hasta el siguiente cambio de linea exclusive.
- Cambiar tabuladores (9) por espacios (32).
- Eliminar caracteres (32) delante y detrás de los separadores \.
- Unir líneas, eliminando el fin de línea:
- en líneas que comienzan con \ y no acaban con \.
- en líneas que terminan con un operador [+-*/^]
- en líneas que terminan con el separador en variables matriciales [,].
- Eliminar todos los caracteres (32) en zonas no entrecomilladas "..." o delimitados \...\
- Eliminar líneas vacías
- Leer y evaluar secuencialmente las sentencias de la forma:
- Si la sentencia comienza con \ leer el rótulo hasta el siguiente \, si el rótulo es:
- COMENTARIO o C: el contenido del siguiente rótulo delimitado entre \ es un comentario a la selección de parámetros.
- RESUMEN o R: el contenido del siguiente rótulo delimitado entre \ es un texto de sustitución del resumen del concepto.
- TEXTO o T: el contenido del siguiente rótulo delimitado entre \ es un texto de sustitución del texto descriptivo del concepto.
- PLIEGO o P: el contenido del siguiente rótulo delimitado entre \ es un texto de sustitución de las distintas secciones del pliego.
- CLAVES o K: el contenido del siguiente rótulo delimitado entre \ es un texto de sustitución de los términos claves asociados al concepto.
- COMERCIAL o F: el contenido del siguiente rótulo delimitado entre \ es un texto de sustitución de tarifas de la información comercial del concepto.
- Cualquier otro rótulo identificará el nombre del siguiente parámetro y los siguientes rótulos delimitados entre \ como los rótulos de las opciones de dicho parámetro.
- Si la sentencia comienza con :: el resto de la misma debe ser una expresión numérica identificadora del Precio. Solo en familias de conceptos Simples (sin descomposición), solo puede haber una sentencia de este tipo.
- Si la sentencias comienza con %: o %%: el resto de la misma debe ser una expresión numérica indicadora del porcentaje de medios auxiliares. Solo puede haber una sentencia de este tipo. ¿?
- Si la sentencia tiene un formato [%$][E-NS-Z][(dim{,dim})] = expresión{,expresión} corresponderá u una asignación de variables:
[%$][E-NS-Z][(dim{,dim})] = expresión{,expresión}
(ABCD están reservados para los parámetro, OPQR para los parámetros generales y E para los errores)- Las variables pueden tener un numero indefinido de expresiones.
- Las variable pueden tener hasta cuatro dimensiones.
- Las variables numéricas deben permitir valores reales en coma flotante de doble precisión 64 bits.
- Las variables alfanuméricas deben poder almacenar textos de dimensión indefinida.
- Si la sentencia contiene el carácter : la parte anterior es un texto de sustitución que representa el código del concepto en una linea de descomposición y la parte posterior una expresión numérica, o dos separadas por : indicadoras de el o los rendimientos de dicha línea de descomposición.
- El resto de sentencias se ignorarán por no corresponder a ninguna sentencia válida.
- Si la sentencia comienza con \ leer el rótulo hasta el siguiente \, si el rótulo es:
CONVENIOS DE NOTACIÓN (EBNF)
[a] Indica nada o "a"
{a}Indica cero o más ocurrencias de "a"
[a-b] Indica cualquier valor desde "a" a "b" inclusivas
[abc] Indica cualquiera de los valores a, b ó c
<abc> Indica descripción informal
abc Indica símbolo terminal
%[A-Z] Variable numérica
$[A-Z] Variable alfanumérica
Variables predefinidas:
[%$][ABCD] Parámetros del concepto
[%$][OPQR] Parámetros de la obra
[%$]E Variable especial para reportar errores
[%$][A-Z][(dim{,dim})] Variables definibles
# Comentarios (el texto comprendido entre este carácter y el siguiente final de línea exclusive, no se tiene en cuenta)
, Separador de datos
: DEFINICIÓN de rendimiento
:: DEFINICIÓN de precio
%: DEFINICIÓN de medios auxiliares en tanto por cien
%%: DEFINICIÓN de medios auxiliares en tanto por uno
OPERADORES NUMÉRICOS (De menor a mayor precedencia)
+ Suma
- Resta
* Multiplicación
/ División
^ Operador elevado a
OPERADORES LÓGICOS (De menor a mayor precedencia)
@ Operador lógico O
& Operador lógico Y
< Menor
> Mayor
<= Menor o igual
>= Mayor o igual
= Igual
<> Diferente
! Operador lógico NO
FUNCIONES -- VALOR RETORNADO:
ABS(n) Valor absoluto de "n"
INT(n) Parte entera de "n"
ROUND(n,d) Redondeo de "n" a "d" decimales
SIN(n) Seno (grados sexagesimales)
COS(n) Coseno (grados sexagesimales)
TAN(n) Tangente (grados sexagesimales)
ASIN(n) Arco seno (gs)
ACOS(n) Arco coseno (gs)
ATAN(n) Arco tangente (gs)
ATAN2(x,y) Arco tangente con dos parámetros "x" e "y"
SQRT(n) Raíz cuadrada de "n"
ATOF(a) Conversión de alfanumérico "a" a numérico
FTOA(n) Conversión de numérico "n" a alfanumérico
RESUMEN DE TIPOS DE SENTENCIAS
{ \ ROTULO_parámetro \ { opción_parámetro \ } (13)(10) }
{ variable = expresión (13)(10) }
{ CODIGO : rendimiento [ : rendimiento ] (13)(10) }
[ %: ó %%: medios_auxiliares (13)(10) ] % (tanto por cien) %% (tanto por uno)
:: expresión_precio (13)(10) ]
[ \ COMENTARIO \ ó \ C \ texto_comentario \ (13)(10) ]
[ \ RESUMEN \ ó \ R \ texto_resumen \ (13)(10) ]
[ \ TEXTO \ ó \ T \ texto_descriptivo \ (13)(10) ]
[ \ PLIEGO \ ó \ P \ { texto_faceta_pliego \ }(13)(10) ]
[ \ CLAVES \ ó \ K \ { término_clave \ }(13)(10) ]
[ \ COMERCIAL \ ó \ F \ { CODIGO_producto_comercial \ tarifa \ } (13)(10) ]