Formato estándar de descripción paramétrica FIEBDC-3/98

Inicio  Anterior  Siguiente

Un concepto paramétrico es el que define su CODIGO, resumen, texto, pliego, descomposición e INFORMACION comercial de forma paramétrica, esto es, de una forma variable mediante tablas y expresiones aritméticas y lógicas función de parámetros.

En la descripción paramétrica se encuentran las siguientes sentencias:

Se definen las variables:

%A %B %C %D Parámetros seleccionados del concepto, de "a" a "z" ~ 1 a 26.

%O %P %Q %R Parámetros seleccionados de la obra, de "a" a "z" ~ 1 a 26.

%E Variable que define las condiciones de error.

$A $B $C $D Textos de los parámetros seleccionados del concepto.

$O $P $Q $R Textos de los parámetros seleccionados de la obra.

$E Variable que define los textos de error.

De forma equivalente las variables %O a %R y $O a $R tomarían el valor correspondiente a los valores de los parámetros generales de la obra.

Cualquier variable de la 'A' a la 'Z' tanto numérica (%) como alfanumérica ($) se puede definir o redefinir con cualquier número de dimensiones para ser utilizada posteriormente en expresiones.

Se definen las constantes de la 'a' a la 'z' con los valores numéricos del 1 al 26 respectivamente, para permitir referenciar los parámetros de forma nemotécnica. Para la utilización de otro tipo de caracteres, se determinará en el texto de la opción del parámetro seleccionado el carácter de sustitución que se desea utilizar, anteponiéndole un carácter especial ' ! ' .Si dicho carácter no existe la sustitución se realiza relacionando el carácter con la posición que ocupa.

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.

Las variables numéricas deben permitir valores reales en coma flotante de doble precisión (64bits) y las variables alfanuméricas deben poder almacenar textos de cualquier tamaño.

Cualquier variable puede definirse, en la misma asignación, con cualquier número y tamaño de dimensiones (hasta 4), en la DEFINICIÓN de dimensiones tendrán que hacerse explícitas todas las dimensiones.

%U=...... # define una variable con un dato numérico

$X(8)=..... # define una lista de 8 datos alfanuméricos

%V(3,4)= ..... # define una tabla con 3 filas y 4 columnas de datos n.

Las variables %E y $E son especiales para devolver errores producidos por selecciones de parámetros no coherentes. En una evaluación secuencial de expresiones, si en una expresión la variable %E adopta un valor distinto de 0, ha habido algún error, se interrumpe la evaluación de expresiones y se presenta el contenido de la variable $E donde se almacena el texto del error producido.

Pueden haber múltiples asignaciones de %E, cada una de ellas precedida de su correspondiente texto de error, asignación de $E.

Las constantes alfanuméricas se definirán entre comillas ($I="incluida parte proporcional").

En la descripción paramétrica podemos encontrar los siguientes tipos de sentencias:

SENTENCIA DE ROTULOS DE PARÁMETRO:

\ <ROTULO del parámetro> \ { <ROTULO de la opción> \ }

Los parámetros definidos, hasta 4, se irán asignando a las variables ABCD en el orden que se encuentren.

SENTENCIA DE ASIGNACIÓN NUMÉRICA:

<variable numérica> = <expresión numérica>

SENTENCIA DE ASIGNACIÓN ALFANUMÉRICA:

<variable alfanumérica> = <expresión alfanumérica>

SENTENCIA DE RENDIMIENTO:(CONCEPTOS DESCOMPUESTOS)

<texto de sustitución de CODIGO> : <expresión numérica> [ : <exp.num.> ] Se pueden definir uno u opcionalmente dos rendimientos, el defecto del rendimiento opcional 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:(CONCEPTOS SIMPLES) :: <expresión numérica>

En caso de figurar conjuntamente un juego de sentencias de rendimiento a modo de descomposición y una sentencia de precio, tendrá prioridad la sentencia de precio, ignorando las sentencias de rendimiento.

SENTENCIA DE COMENTARIO:

\ COMENTARIO \ ó \ C \ <texto del comentario> \

Si existe texto de comentario, se presentará como ayuda a la selección de parámetros junto a las opciones de éstos.

SENTENCIA DE SUSTITUCION:

\ RESUMEN \ ó \ R \ <texto de sustitución del texto resumido> \

\ TEXTO \ ó \ T \ <texto de sustitución del texto descriptivo> \

\ PLIEGO \ ó \ P \ { <texto de sustitución de pliego> \ }

\ CLAVES \ ó \ K \ { <texto de sustitución de clave> \ }

\ COMERCIAL \ ó \ F \ { <texto de sustitución de CODIGO>\ <expresión_numérica>\}

Se considera que una sentencia continua en la línea siguiente si:

. Acaba en un operador

. Acaba sin cerrar comillas '"'

. Comienza con '\' y no acaba con '\'

<constantes> PI, números, "texto" ...

<funciones> ABS( ), INT( ), SQRT( ) ...

<variables> [$%] [A-Z] [(dimensión{,dimensión})]

<expresión numérica>:

Son aquellas que dan como resultado un número en función de constantes y variables numéricas, expresiones lógicas, funciones y operadores.

por ejemplo: %I= %A + 3.17*(1+%B) + ABS(%P+3.15*%Q)/12000

<expresión alfanumérica>:

Son aquellas que dan como resultada un texto en función de constantes y variables alfanuméricas, operadores y funciones numéricas.

Una expresión alfanumérica puede incluir expresiones lógicas.

por ejemplo: $I="parte proporcional"+" de perdidas"*(%A>a)

añadir " de perdidas" a $I si el valor actual de %A es mayor que <a> ó 1.

<expresiones lógicas>:

Son aquellas que dan como resultado VERDADERO o FALSO. En expresiones numéricas el verdadero se considera como 1 y el falso como 0, en alfanuméricas el falso se considera suprimir texto.

%I = 323*(%A=a) + 345*(%A=b) + 1523*($I=$A & $J=$B)

$I = "blanco"*(%C=c) + "negro"*(%C=d)

<texto de sustitución>:

En los textos de sustitución la INFORMACION es un texto constante (sin comillas) con variables embebidas en él. Se consideran variables los caracteres $ y % inmediatamente seguidos por una letra de la A hasta la Z.

En los textos de sustitución, las variables alfanuméricas se sustituyen por sus contenido de texto correspondiente, las numéricas se sustituyen por las constantes de la "a" a la "z" correspondientes al valor numérico de su contenido.

En la expresión del rendimiento, la primera parte de la sentencia es un texto de sustitución que una vez sustituidas las variables será el CODIGO del concepto al que le corresponde la expresión numérica de la segunda parte de la expresión como rendimiento. Si el resultado es 0, se ignora la sentencia y no se considera ese componente o línea de descomposición.

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

Cada instrucción irá en distinta línea, a menos que la instrucción acabe en un operador en cuyo caso se considera que sigue en la siguiente línea.

Si una línea acaba sin haber cerrado las comillas '"' o delimitador '\', se considerará que sigue en la línea siguiente. Los caracteres fin de línea (ASCII-13 + ASCII-10) contenidos en las descripciones paramétricas se mantendrán al reformatear.

Control de errores de selección

Es frecuente encontrar un gran número de combinaciones de parámetros posibles pero tener pocas de ellas resueltas. Para evitar que el operador del sistema pruebe distintas combinaciones de parámetros consiguiendo en todas ellas un mensaje de error, el sistema debe ser capaz de guiarle en la selección de combinaciones correctas.

Cada vez que el operador define un parámetro, el sistema evaluará todas las sentencias posibles y en las sentencias del tipo: %E= ...., función de parámetros

Si todos los parámetros que intervienen en la expresión son conocidos, se evaluará ésta y si el resultado fuera de ERROR se presentará la previa DEFINICIÓN de $E con el mensaje del error.

Si todos los parámetros menos uno son conocidos, se irá dando valores al parámetro desconocido y evaluando la expresión hasta recorrer todos los valores válidos del parámetro. De alguna forma, el sistema "marcará" los valores que producen ERROR del parámetro estudiado en la pantalla de selección, para ayudar al operador a seleccionar las combinaciones correctas.

Cada vez que se defina o redefina un parámetro el sistema actualizará todos los valores marcados en pantalla, por ejemplo pondrá en "medio brillo" los ROTULOs de las opciones cuya selección no sería compatible con los parámetros seleccionados previamente.

Este sistema de control de errores de selección es sencillo de implementar en cualquier soporte, pero obliga a los redactores de los descompuestos paramétricos a definir explícitamente las combinaciones de parámetros incorrectas, ya que con este método no se podrían encontrar combinaciones no permitidas cuando en la descomposición paramétrica se llama a otros descompuestos o precios paramétricos.

Procedimiento de lectura de descripciones paramétricas

Recorrer la descripción paramétrica ejecutando los siguientes pasos:

Eliminar desde el carácter '#' inclusive hasta el siguiente cambio de línea exclusive.

Cambiar tabuladores (9) por caracteres ' ' (32)

Eliminar caracteres ' ' (32) delante y detrás de los caracteres '\'

Unir líneas, eliminando el fin de línea, en líneas que comienzan con '\' y no acaban con '\', que terminan con un operador y en la separación de datos de una variable matricial.

Eliminar todos los caracteres ' ' (32) en zonas no entrecomilladas ("...") o delimitadas (\...\)

Eliminar líneas vacías.

Leer y evaluar secuencialmente las sentencias de la forma:

Si la sentencia comienza con '\' leer el ROTULO hasta el siguiente '\', si el ROTULO es:

COMENTARIO ó C- Palabra o carácter reservado que identifica el siguiente ROTULO entre '\' como comentario a la selección de parámetros.

RESUMEN ó R- Palabra o carácter reservado que identifica el siguiente ROTULO entre '\' como el texto de sustitución del resumen del concepto.

TEXTO ó T- Palabra o carácter reservado que identifica el siguiente ROTULO entre '\' como el texto de sustitución del texto descriptivo del concepto.

PLIEGO ó P- Palabra o carácter reservado que identifica los siguientes ROTULOs entre '\' como los textos de sustitución de las distintas secciones del pliego.

CLAVES ó K- Palabra o carácter reservado que identifica los siguientes ROTULOs entre '\' como los textos de sustitución de los términos claves asociados al concepto.

COMERCIAL ó F - Palabra o carácter reservado que identifica los siguientes ROTULOs entre '\' como los textos de sustitución y tarifas de la INFORMACION comercial del concepto.

Cualquier otro ROTULO identificará el nombre del siguiente parámetro y los siguientes ROTULOs entre '\' como los ROTULOs de las opciones de dicho parámetro.

Si la sentencia comienza con '::' el resto de la misma debe ser una expresión numérica indicadora del Precio, sólo en familias de conceptos simples (sin descomposición) y sólo puede haber una sentencia de este tipo.

Si la sentencia comienza con '%:' el resto de la misma debe ser una expresión numérica indicadora del Porcentaje de Medios Auxiliares, sólo puede haber una sentencia de este tipo.

En otro caso si la sentencia contiene el carácter ':' la parte anterior a él es un texto de sustitución del CODIGO de una línea de descomposición y la posterior una expresión numérica, o dos separadas por ':', indicadoras de el o los rendimientos de dicha línea de descomposición.

En aquellos casos donde pueda aparecer un carácter '%' seguido de un carácter alfabético que se considere como tal y no como una variable de sustitución, deberá emplearse '%%', para evitar la ambigüedad que se puede producir entre una variable numérica que deba ser sustituida, una sentencia de medio auxiliar o un texto.

El resto de sentencias deberán ser de asignación de la forma variable/s = expresión/es

Resumen de tipos de sentencias

Después de realizado el filtro descrito arriba, cada línea, tira de caracteres acabada en (ASCII-13)(ASCII-10), será una sentencia de alguno de los siguientes tipos:

{ \ 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) ]