FIEBDC-3/2012

-entrada en vigor a partir del 01/01/2012-

 

Anexo 1. Cambios respecto a versiones anteriores: 3/2007 , 3/2004, 3/2002, 3/98 y 3/95

Resumen de los cambios de la versión 3/2004 con respecto a 3/2002:

–       Especificación: incluir la notación < a > para campos opcionales.

–       ~V Registro tipo VERSIÓN: Nuevo campo COMENTARIO.

–       ~K Registro tipo COEFICIENTES: Se establece los decimales por defecto, modificaciones de algunos campos decimales.

–       ~D Registro tipo DESCOMPOSICION: Se establece el valor por defecto para el rendimiento.

–       ~C Registro tipo CONCEPTO: Modificaciones de los campos CÓDIGO y PRECIO.

–       ~M y ~N Registro tipo MEDICION y AÑADIR MEDICION: Nuevo campo ETIQUETA.

–       Registros actualizados con las notaciones para definir campos obligatorios y opcionales: ~V, ~D, ~Y, ~T, ~L, ~Q, ~W, ~G, ~O, ~X, ~A y ~B.

–       Nuevo registro ~F tipo DOCUMENTO ADJUNTO.

Cambios de la API estándar para descripciones paramétricas compiladas:

–       Nueva función BdcTipoDescripcion().

–       Nueva función BdcInvalidos().

–       Aclaración de la función BdcPliego().

–       Modificación de los parámetros de la función BdcComercCodigo().

–       Nuevo mensaje de error BDCERR_PARÁMETRO_INCORRECTO.

–       Nuevas funciones BdcDocNumero() y BdcDocCodigo() relacionadas con el registro ~F tipo documento adjunto.

Clasificación en tipos de los conceptos:

–       Nuevo tipo Presupuesto Unitario.

Resumen de los cambios de la versión 3/2007 con respecto a 3/2004:

–       Especificación.- Aclaración sobre la prohibición de usar espacios en blanco en los códigos de los conceptos: “incluyendo A-Z, a-z, 0-9, ñ, Ñ,” … “Excluyendo cualquier otro carácter como espacio, tabulador, etc”.

–       ~V Registro tipo VERSIÓN: Nuevos campos  TIPO INFORMACIÓN, NUMERO CERTIFICACIÓN y FECHA CERTIFICACIÓN.

–       ~K Registro tipo COEFICIENTES: Se suprimen los campos DRO Y DFO. Se añaden los campos DSP y DEC.

–       ~C Registro tipo CONCEPTO: Limitación del código a 20 caracteres. Recomendación de 64 caracteres como máximo para el resumen.

–       ~D Registro tipo DESCOMPOSICIÓN: Eliminar factor y rendimiento de los capítulos.

–       ~M Registro tipo MEDICIÓN: Aclaración sobre el uso de expresiones.

–       Anexo 4: Aclaración sobre que el tipo Presupuesto Unitario no debe usar la # del tipo capítulo.

Resumen de los cambios de la versión 3/2012 con respecto a 3/2007:

–       ~V Registro tipo VERSIÓN: Nuevo campo URL_BASE donde suministrar documentos y gráficos asociados a conceptos en una url.

–       ~C Registro tipo CONCEPTO. Ampliación de los TIPO de conceptos ‘4’ y ‘5’.

–       ~D Registro tipo DESCOMPOSICIÓN. Nuevo campo 3.

–       ~Y Registro tipo AÑADIR DESCOMPOSICIÓN. Nuevo campo 3.

–       Nuevo registro ~R tipo DESCOMPOSICIÓN DE RESIDUOS.

–       ~G Registro tipo INFORMACIÓN GRÁFICA y ~F Registro tipo DOCUMENTO ADJUNTO. Nuevo campo URL_EXT para añadir a la URL_BASE donde suministrar documentos y gráficos asociados a conceptos. En el registro ~F se añade el documento TIPO ‘13’.

–       ~O Registro tipo INFORMACIÓN COMERCIAL. Aclaración del campo CODIGO_ENTIDAD # CODIGO_CONCEPTO.

–       ~X Registro tipo INFORMACIÓN TÉCNICA. Se especifican los tipos ‘ce’, ‘eCO2’, ‘ler’, ‘m’ y ‘v’ de CODIGO_IT y se adjunta el sistema de cálculo de coste energético y emisión de CO2.

–       Anexo 4: Se añaden los tipos de concepto 4 y 5.

Cambios de la API estándar para descripciones paramétricas compiladas:

–       Nueva función BdcUsos.

–       Nueva función BdcDesCodigoPorcentaje.

–       Función BdcDocCodigo. Se añade que los archivos pueden contener una URL_EXT.

–       Nueva función BdcNumProp.

–       Nueva función BdcPropValString.

–       Nueva función BdcNumComponentes.

–       Nueva función BdcCodigoComponente.

–       Nueva funcióm BdcNumPropComponente.

–       Nueva función BdcComponenteValString.

A continuación se indica la lista de apartados y registros del FIEBDC-3/2012 afectados por ampliaciones y/o modificaciones:

Apartado FIEBDC-3/2007 FIEBDC-3/2004 FIEBDC-3/2002 FIEBDC-3/98 FIEBDC-3/95
PRESENTACIÓN. X X X X X
FORMATO FIEBDC-3. ESPECIFICACIÓN. X X X X
~V. Registro tipo PROPIEDAD Y VERSIÓN. X X X X X
~K. Registro tipo COEFICIENTES. X X X X
~C. Registro tipo CONCEPTO. X X X X X
~D. Registro tipo DESCOMPOSICIÓN. X X X X X
~Y. Registro tipo AÑADIR DESCOMPOSICIÓN. X X X X
~R. Registro tipo DESCOMPOSICIÓN de RESIDUOS. X
~T. Registro tipo TEXTO. X X X
~P. Registro tipo DESCRIPCIÓN PARAMÉTRICA. X
~L. Registro tipo PLIEGOS. X X X
~Q. Registro tipo PLIEGOS. X X X
~W. Registro tipo ÁMBITO GEOGRÁFICO. X X X
~G. Registro tipo INFORMACIÓN GRÁFICA. X X X X
~E. Registro tipo ENTIDAD. X X
~O. Registro tipo RELACIÓN COMERCIAL. X X X X
~X. Registro tipo INFORMACIÓN TÉCNICA. X X X X
~M. Registro tipo MEDICIÓN. X X X X
~N. Registro tipo AÑADIR MEDICIÓN X X X
~A. Registro tipo CLAVES. X X X
~B. Registro tipo CAMBIO DE CÓDIGO. X X X
~F. Registro Tipo DOCUMENTO ADJUNTO. X X X X
Anexo 3. API ESTANDAR para descripciones paramétricas compiladas en DLL. X X X X
Anexo 4. Clasificación en tipos de los Conceptos. X X X X X

Anexo 2. DESCRIPCIÓN PARAMÉTRICA: Formato ESTANDAR.

Un concepto paramétrico es el que define su CÓDIGO, resumen, texto, pliego, descomposición e INFORMACIÓN 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 DEFINICION 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 RÓTULOS DE PARÁMETRO:

\ \ { \ }

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> =

SENTENCIA DE ASIGNACIÓN ALFANUMÉRICA:

< variable alfanumérica> =

SENTENCIA DE RENDIMIENTO (CONCEPTOS DESCOMPUESTOS):

< texto de sustitución de CÓDIGO> : [ : ] Se pueden definir uno u opcionalmente dos rendimientos, el  defecto  del rendimiento opcional es 1.

SENTENCIA DE MEDIOS AUXILIARES:

%: (en tanto por cien)

%%: (en tanto por uno)

SENTENCIA DE PRECIO (CONCEPTOS SIMPLES):

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 \ \

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

SENTENCIA DE SUSTITUCIÓN:

\ RESUMEN \  ó \ R \ \

\ TEXTO \  ó \ T \ \

\ PLIEGO \  ó \ P \ { \ }

\ CLAVES \  ó \ K \ { \ }

\ COMERCIAL \  ó \ F \ { \ < expresión_numérica>\}

Se considera que una sentencia contínua 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 ó 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 a 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)         ConVERSION de alfanumérico “a” a numérico

FTOA(n)         ConVERSION 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 intervinientes en la expresión son conocidos, se evaluará ésta y si el resultado fuera de  ERROR se presentará la previa DEFINICION 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:

  1. Eliminar desde el carácter ‘#’ inclusive hasta el siguiente cambio de línea exclusive.
  1. Cambiar tabuladores (9) por caracteres ‘ ‘ (32)
  1. Eliminar caracteres ‘ ‘ (32) delante y detrás de los caracteres ‘\’
  1. 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.
  1. Eliminar todos los caracteres ‘ ‘ (32) en zonas no entrecomilladas (“…”) o delimitadas (\…\)
  1. Eliminar líneas vacías.
  1. 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 RÓTULO identificará el nombre del siguiente parámetro y los siguientes ROTULOs 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 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 CÓDIGO 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) ]

Anexo 3. DESCRIPCIÓN PARAMÉTRICA: API ESTANDAR para descripciones paramétricas compiladas en DLL

INTRODUCCIÓN.

Debido a la necesidad expuesta por los desarrolladores de bases de datos paramétricas de ampliar las posibilidades del lenguaje de descripción paramétrica, poder compilar éste por eficiencia y protección de datos y posibilitar la protección contra copia de bases de datos paramétricas, se establece la siguiente ESPECIFICACIÓN.

En este documento se definen los componentes necesarios para el desarrollo de descripciones paramétricas en cualquier lenguaje de aplicaciones para Windows (C, C++, Pascal, Fortran, etc.) y sin ninguna limitación. Se incluye la DEFINICION de un API ESTANDAR en C, un ejemplo de base de datos en formato DLL de 32 bits desarrollado en C++ y un ejemplo de aplicación con la implementación del interfaz con el API en C, definidos ambos en Microsoft Visual C++. Se podría implementar el interfaz con el API para otros compiladores y lenguajes para acceder a las mismas DLL.

Es decir; es posible construir una base de datos que cumpla este API utilizando para ello cualquier lenguaje de programación que permita desarrollar librerías de enlace dinámico Windows (DLL). Asimismo, es posible construir un programa que lea cualquier base de datos de estas características utilizando lenguajes de aplicaciones para Windows.

El juego de caracteres utilizado en los textos devueltos por las funciones del API será el especificado en el registro ~V.

ARCHIVOS QUE DEBE CONTENER UNA BASE DE DATOS.

Una base de datos que se desee distribuir con las definiciones paramétricas compiladas en DLL, debe contener los siguientes archivos:

base.dll      En este archivo, único para cada base de datos y de nombre cualquiera pero extensión ‘.DLL’, se encuentran las funciones del API que la base de datos ofrece a las aplicaciones para que éstas obtengan la INFORMACIÓN que contiene la base.

base.bc3    Archivo o archivos ASCII de la base de datos en formato FIEBDC-3/98. Los registros ~P de los conceptos cuya descripción paramétrica se acceda a través del archivo ‘base.dll’, tendrán el campo DESCRIPCIÓN_PARAMÉTRICA vacío. El CODIGO del concepto de este registro deberá coincidir con el CODIGO del registro ~C correspondiente y con el CODIGO utilizado en las llamadas a las funciones del API, incluida(s) la(s) posible(s) almohadillas (‘#’). Ejemplo: ~P|ABCD12$| |

El registro ~P correspondiente al paramétrico global, tendrá el campo DESCRIPCIÓN_PARAMÉTRICA vacío, y tendrá un tercer campo con el nombre del archivo DLL en el que se encuentren las funciones del API de la base. Ejemplo: ~P| | | BASE.DLL |

La DEFINICIÓN paramétrica de los conceptos implementados de esta forma podrá estar en el mismo archivo que las funciones del API (el archivo ‘base.dll’) o situado en otro u otros archivos cualesquiera, conforme desee el desarrollador de la base de datos. Las aplicaciones sólo accederán a las funciones del API incluidas en el archivo ‘base.dll’, y éstas serán las encargadas de acceder a la INFORMACION en la forma que el desarrollador de la base implemente.

DEFINICIÓN DEL API: FIEBDC.H

Único archivo que define el ESTANDAR. En este archivo se define el API en C, que las descripciones paramétricas en DLL ofrecen a las aplicaciones. Se recomienda incluir en las Bases de Datos todas las funciones del API, aunque no se utilicen todas por la misma. Este interfaz permite definiciones paramétricas de ilimitado número de parámetros e ilimitadas opciones por parámetro. Se soportan dos modelos de codificaciones:

1.             Un modelo de codificación independiente de parámetros, en el que el CODIGO de un concepto paramétrico es completamente libre y el número de caracteres del CODIGO es independiente del número de parámetros. En este modelo, los códigos de las familias paramétricas no tienen por qué tener el carácter $.

2.             Un modelo dependiente de los mismos. Es el modelo que definía FIEBDC-3/95 y en el que el CODIGO de un concepto paramétrico debe tener un símbolo ‘$’ en su séptima posición y en el que se asigna de la ‘a’ a la ‘z’ las opciones 0 a 25 de cada parámetro, ampliándose en esta VERSION con los rangos ‘A’ a ‘Z’ y ‘0’ a ‘9’ para que el número de opciones por parámetro en este modelo de codificación pase a 62 (de 0 a 61).

Para que los programas puedan determinar si una base de datos responde a uno u otro modelo, se ha definido la función BdcCodificacion(), que se especifica más adelante y que indica si el sistema de codificación usado en la base de datos es dependiente o independiente.

Si se adopta el primer modelo, no es posible averiguar ‘a priori’, a partir de un CODIGO ‘ABCDEFGHIJ’ de concepto, si éste es un derivado paramétrico ni de que concepto paramétrico procede o con qué valores de sus parámetros. Por ello, es establece el siguiente criterio de búsqueda:

1.             Si el concepto existe con este CODIGO en la base, se escogerá dicho concepto.

2.             En caso de no existir, se intentará localizarlo en la base de datos como perteneciente a un concepto paramétrico ‘al estilo’ FIEBDC-3/95. En el ejemplo, se intentará buscar el concepto paramétrico ‘ABCDEF$’ y pasarle los parámetros ‘GHIJ’ (que implica pasarle a sus cuatro parámetros valores ‘31’, ‘32’, ‘33’ y ‘34’ respectivamente).

3.             En caso de no existir, se intentará localizarlo en la DLL. Si ésta posee un modelo de codificación dependiente, se utilizará el mismo criterio que en el punto anterior: en el ejemplo, buscar el concepto paramétrico ‘ABCDEF$’ y pasarle los parámetros ‘GHIJ’. Si la base posee un modelo independiente, se utilizará la función ‘BdcDecodifica()’, tal como se especifica más adelante.

4.             Si no se cumplen ninguna de las condiciones anteriores, se supone que el concepto no existe en la base.

Vea en el archivo ‘fiebdc.h’ adjuntado la definición del API.
ESPECIFICACIÓN DE LAS FUNCIONES DEL API.

1. FUNCIONES GENERALES.


LONG EXPORTA BdcCodificacion (
VOID
);
Propósito

Indica si la base de datos utiliza un modelo de codificación dependiente o independiente del número y valor de los parámetros.

Valor devuelto

Devolverá ‘0’ si la codificación sigue un modelo dependiente (al ‘estilo’ FIEBDC-3/95), y ‘1’ si sigue un modelo independiente.


LONG EXPORTA BdcTipoPliego (
VOID
);
Propósito

Indica qué tipo o tipos de Pliegos de Condiciones están implementados en la base. Dichos modelos se especifican en el apartado ‘REGISTROS TIPO PLIEGOS’ de las especificaciones del formato.

Valor devuelto

Devolverá ‘0’ si no está implementado ningún tipo de pliego.

Devolverá ‘1’ si está implementado el modelo uno de textos de pliegos. Es este caso, se utilizará la función BdcPliego() para obtener los textos de los pliegos.

Devolverá ‘2’ si está implementado el modelo dos de textos de pliegos. En este caso, se utilizarán las funciones BdcCodigoParrafo() y BdcTextoParrafo() para obtener los textos de los pliegos.

Devolverá ‘3’ si están implementados tanto el modelo uno como el modelo dos.


LPCSTR EXPORTA BdcFecha (

VOID

);

Propósito

Obtener la fecha de la Base de Datos.

Valor devuelto

Devuelve la fecha de la Base de Datos en formato DDMMAAAA, donde DD representa al día con dos dígitos, MM el mes y AAAA el año.

La propia función es responsable de asignar memoria al puntero. En caso de error, la función devuelve NULL. Para obtener más INFORMACIÓN sobre el error producido, llame a la función BdcError().

2. FUNCIONES REFERENTES AL PARAMÉTRICO GLOBAL.

2.1. Accesibles en cualquier momento.

2.1.1. Obtención de sus parámetros.


LONG EXPORTA BdcGloParNumero (
VOID
);
Propósito

Obtener el número de parámetros de concepto paramétrico global.

Valor devuelto

Devuelve el número de parámetros. En caso de error, la función devuelve -1. Para obtener más INFORMACION sobre el error producido, llame a la función BdcGloError().


LONG EXPORTA BdcGloOpcNumero (
LONG par         // número de parámetro del concepto
);
Propósito

Obtiene el número de opciones de que consta el parámetro ‘par’.

Parámetros

par:    Número del parámetro. Debe ser un valor entre ‘0’ y ‘n-1’, siendo ‘n’ el número de parámetros del concepto paramétrico global.

Valor devuelto

Devuelve el número de opciones del parámetro ‘par’. En caso de producirse un error, devuelve –1. Para obtener más INFORMACION sobre el error producido, llame a la función BdcGloError().


LPCSTR EXPORTA BdcGloParRotulo (
LONG par         // número de parámetro del concepto
);
Propósito

Obtiene el rótulo que identifica el parámetro ‘par’ del concepto.

Parámetros

par:    Número del parámetro. Debe ser un valor entre ‘0’ y ‘n-1’, siendo ‘n’ el número de parámetros del concepto paramétrico global.

Valor devuelto

Devuelve el rótulo que identifica el parámetro ‘par’ del concepto, como puntero constante ‘far’ a una cadena de caracteres. La propia función es responsable de asignar memoria al puntero. En caso de error, la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcGloError().


LPCSTR EXPORTA BdcGloOpcRotulo (
LONG par,        // número de parámetro del concepto
LONG opc        // número de la opción del parámetro
);
Propósito

Obtiene el rótulo que identifica la opción ‘opc’ del parámetro ‘par’ del concepto.

Parámetros

par:    Número del parámetro. Debe ser un valor entre ‘0’ y ‘n-1’, siendo ‘n’ el número de parámetros del concepto paramétrico global.

opc:   Número del parámetro. Debe ser un valor entre ‘0’ y ‘n-1’, siendo ‘n’ el número de opciones que posee el parámetro ‘par’ del concepto paramétrico global.

Valor devuelto

Devuelve el rótulo que identifica la opción ‘opc’ del parámetro ‘par’ del concepto, como puntero constante ‘far’ a una cadena de caracteres. La propia función es responsable de asignar memoria al puntero. En caso de error, la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcGloError().

2.1.2. Mensajes / CODIGOs de error.


LONG EXPORTA BdcGloError (
LPCSTR *err     // mensaje de error devuelto
);
Propósito

Obtiene el tipo de error producido. Una vez leído, se inicializa el CODIGO de error.

Parámetros

err:     Puntero a un puntero constante ‘far’ a una cadena de caracteres. En él se almacena el mensaje de error referente al error producido. La función es responsable de asignar memoria al puntero. Si no existe un mensaje definido para el error existente, ‘*err’ apuntará a la cadena vacía “”.

Valor devuelto

Devuelve el CODIGO de error producido. Vea al final el apartado ‘CODIGOs de los mensajes de error’ para más INFORMACION.

2.1.3. Asignación de opciones a los parámetros.


BOOL EXPORTA BdcGloCalcula (
LPLONG opcl,  // lista de opciones de los parámetros
);
Propósito

Asigna los valores de los parámetros del concepto paramétrico global..

Parámetros

opcl:  Puntero a un vector (array) de LONGs con las opciones que se desea fijar a cada parámetro. Las opciones se numeran empezando por cero.

Valor devuelto

Devuelve ‘0’ si se ejecuta correctamente. En caso de error, devuelve ‘-1’. Para obtener más INFORMACION sobre el error producido, llame a la función BdcGloError().
3. FUNCIONES REFERENTES AL RESTO DE PARAMÉTRICOS.

3.1. Accesibles en cualquier momento.

3.1.1. Lectura de un concepto paramétrico.


HANDLE EXPORTA BdcLee (
LPCSTR cod // CODIGO del concepto
);

Lee el concepto paramétrico identificado por ‘cod’.

Parámetros

cod:   Puntero constante ‘far’ a una cadena de caracteres con el CODIGO del concepto paramétrico a leer. Si se utiliza un modelo de codificación dependiente, se asume que dicho CODIGO tenga 7 caracteres y que el séptimo sea ‘$’. Dentro del CODIGO, los caracteres pueden ser cualesquiera salvo el 0x00 (que indica el final del CODIGO).

Valor devuelto

Si la función encuentra el paramétrico, retorna un HANDLE distinto de cero. En caso de error, o si no existe el paramétrico, la función devuelve cero.

3.1.2. Lectura de un concepto paramétrico a partir del CODIGO completo del derivado.


HANDLE EXPORTA BdcDecodifica (
LPCSTR cod,   // CODIGO completo del derivado paramétrico
LPLONG opcl   // puntero al espacio de memoria a rellenar con las opciones

);

Propósito

Lee el concepto paramétrico al que pertenece el concepto de CODIGO ‘cod’. El HANDLE y las opciones ‘opcl’ devueltas se pueden utilizar directamente en una llamada a BdcCalcula().

Parámetros

cod:   Puntero constante ‘far’ a una cadena de caracteres con el CODIGO del concepto del que se desea obtener el concepto paramétrico a la que pertenece. Dentro del CODIGO, los caracteres pueden ser cualesquiera salvo el 0x00 (que indica el final del CODIGO).

opcl:  Puntero a un vector (array) de LONGs en el que la función devolverá las opciones a las que corresponda el derivado paramétrico. El array debe estar previamente dimensionado con al menos el número de parámetros del concepto. Las opciones se numeran empezando por cero.

Valor devuelto

Si la función encuentra el paramétrico, retorna un HANDLE distinto de cero. En caso de error, o si no existe ningún concepto paramétrico del que el concepto ‘cod’ es derivado, la función devuelve cero.


LPCSTR EXPORTA BdcFamilia (
LPCSTR cod)   // CODIGO completo del derivado paramétrico
);
Propósito

Lee el código del concepto paramétrico al que pertenece el concepto de CODIGO ‘cod’.

Parámetros

cod:   Puntero constante ‘far’ a una cadena de caracteres con el CODIGO del concepto del que se desea obtener el concepto paramétrico al que pertenece. Dentro del CODIGO, los caracteres pueden ser cualesquiera salvo el 0x00 (que indica el final del CODIGO).

Valor devuelto

Si la función encuentra el paramétrico, retorna su código como puntero constante ‘far’ a una cadena de caracteres. La propia función es responsable de asignar memoria al puntero.. En caso de error, o si no existe ningún concepto paramétrico del que el concepto ‘cod’ es derivado, la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

3.1.3. Búsqueda de conceptos a partir de un texto o un código.
BOOL EXPORTA BdcUsos (

LPCSTR texto, // código o texto a buscar

LONG donde // lugar donde tengo que buscar el texto o código

LPCSTR *lcodigo // lista de códigos donde se está utilizando el texto/código

)

Propósito

Obtiene una lista de códigos dónde se utiliza un texto o un código de un concepto.

Parámetros

Texto: Indica el texto o código que se quiere buscar.

Donde: Parámetro que le indica a la función si el texto es un código o bien un texto (que puede ser una cadena). Los valores posibles son 1: cuando el parámetro es un código, 2: cuando el parámetro es un texto.

lcodigo: Texto en formato texto plano que contiene la lista de códigos donde se utiliza el texto o código separados por el separador de campos ASCII 124.

Valor devuelto

Devuelve ‘0’ si se ejecuta correctamente. En caso de error, la función devuelve ‘-1’. Para obtener más INFORMACIÓN sobre el error producido, llame a la función BdcError().

Si el parámetro ‘donde’ es 1 el texto corresponde a un código del banco y la función devolverá la lista de conceptos donde aparece el código en la justificación directamente o bien en alguno de sus componentes. Si el parámetro ‘donde’ es 2 el primer parámetro corresponde a un texto y la función devolverá la lista de los conceptos que contienen el texto en la definición (resumen y completa).

3.1.4. Mensajes / CODIGOs de error.


LONG EXPORTA BdcError (
HANDLE h, // identificador del concepto
LPCSTR *err // mensaje de error devuelto
);
Propósito

Obtiene tipo de error producido.

Parámetros

h:       Identificador (HANDLE) del concepto, que debe ser obtenido en una llamada anterior a la función BdcLee().

err:     Puntero a un puntero constante ‘far’ a una cadena de caracteres. En él se almacena el mensaje de error referente al error producido. La función es responsable de asignar memoria al puntero. Si no existe un mensaje definido para el error existente, ‘*err’ apuntará a la cadena vacía “”.

Valor devuelto

Devuelve el CODIGO de error producido. Vea al final el apartado ‘CODIGOs de los mensajes de error’ para más INFORMACION.

3.2. Accesibles después de BdcLee.

3.2.1. Obtención de sus parámetros.


LONG EXPORTA BdcParNumero (
HANDLE h        // identificador del concepto
);
Propósito

Obtiene el número de parámetros de concepto paramétrico.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

Valor devuelto

Devuelve el número de parámetros. En caso de error, la función devuelve -1. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().


LONG EXPORTA BdcOpcNumero (
HANDLE h,       // identificador del concepto
LONG par         // número de parámetro del concepto
);
Propósito

Obtiene el número de opciones de que consta el parámetro ‘par’.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

par:    Número del parámetro. Debe ser un valor entre ‘0’ y ‘n-1’, siendo ‘n’ el número de parámetros del concepto.

Valor devuelto

Devuelve el número de opciones del parámetro ‘par’. En caso de producirse un error, la función devuelve -1. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

LPCSTR EXPORTA BdcParRotulo (
HANDLE h,       // identificador del concepto
LONG par         // número de parámetro del concepto
);
Propósito

Obtiene el rótulo que identifica el parámetro ‘par’ del concepto.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

par:    Número del parámetro. Debe ser un valor entre ‘0’ y ‘n-1’, siendo ‘n’ el número de parámetros del concepto.

Valor devuelto

Devuelve el rótulo que identifica el parámetro ‘par’ del concepto, como puntero constante ‘far’ a una cadena de caracteres. La propia función es responsable de asignar memoria al puntero. En caso de error, la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

LPCSTR EXPORTA BdcOpcRotulo (
HANDLE h,       // identificador del concepto
LONG par,        // número de parámetro del concepto
LONG opc        // número de la opción del parámetro
);
Propósito

Obtiene rótulo que identifica la opción ‘opc’ del parámetro ‘par’ del concepto.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

par:    Número del parámetro. Debe ser un valor entre ‘0’ y ‘n-1’, siendo ‘n’ el número de parámetros del concepto.

opc:   Número del parámetro. Debe ser un valor entre ‘0’ y ‘n-1’, siendo ‘n’ el número de opciones que posee el parámetro ‘par’ del concepto.

Valor devuelto

Devuelve el rótulo que identifica la opción ‘opc’ del parámetro ‘par’ del concepto, como puntero constante ‘far’ a una cadena de caracteres. La propia función es responsable de asignar memoria al puntero. En caso de error, la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError(). En caso de referirse a ámbitos territoriales y a divisas, véanse los anexos 5 y 6.

3.2.2. Obtención de un comentario.

LPCSTR EXPORTA BdcComentario (
HANDLE h,       // identificador del concepto
);
Propósito

Obtiene un texto de comentario del concepto paramétrico.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

Valor devuelto

Devuelve el comentario del concepto, como puntero constante ‘far’ a una cadena de caracteres. La propia función es responsable de asignar memoria al puntero. En caso de error, la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

3.2.3. Asignación de opciones de los parámetros y validación o cálculo del derivado.

BOOL EXPORTA BdcValida (
HANDLE h,       // identificador del concepto
LPLONG opcl,  // lista de opciones de los parámetros
);
Propósito

Averigua si una determinada combinación paramétrica es correcta o no.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

opcl:  Puntero a un vector (array) de LONGs con las opciones que se desea fijar a cada parámetro. Las opciones se numeran empezando por cero.

Valor devuelto

Devuelve ‘0’ si la combinación es correcta. En caso contrario, devuelve ‘-1’. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

BOOL EXPORTA BdcCalcula (
HANDLE h,       // identificador del concepto
LPLONG opcl,  // lista de opciones de los parámetros
);
Propósito

Calcula los datos correspondientes a un derivado paramétrico.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

opcl:  Puntero a un vector (array) de LONGs con las opciones que se desea fijar a cada parámetro. Las opciones se numeran empezando por cero.

Valor devuelto

Devuelve ‘0’ si se ejecuta correctamente. En caso de error, o de que la combinación no sea correcta, devuelve ‘-1’. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

LONG EXPORTA BdcValidos (
HANDLE h,       // identificador del concepto
LPBYTE *opcl, // lista de opciones de los parámetros de todos los derivados válidos
);
Propósito

Obtiene las opciones de cada parámetro de todos los derivados paramétricos válidos de la familia paramétrica. Si no se desea implementar esta función en una determinada familia, la función deberá devolver ‘0’. Está pensada para aquellas familias que posean un número elevado de combinaciones posibles, en las que el averiguar cuáles de ellas son válidas mediante sucesivas llamadas a las funciones BdcCalcula() o BdcValida() es muy costoso en tiempo. En una sola llamada a esta función es posible, en estos casos, obtener todas las combinaciones válidas.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

opcl:  Puntero a una matriz (array) bidimensional de BYTEs a rellenar por la función, en el que cada columna corresponde a un derivado paramétrico válido, y cada fila corresponde a los valores de cada uno de los parámetros. La matriz se devuelve al estilo de ‘C’; es decir, por columnas. Las opciones se numeran empezando por cero. La propia función es responsable de asignar memoria al puntero. La memoria asignada en bytes será el número de combinaciones válidas multiplicado por el número de parámetros.

Valor devuelto

Devuelve el número de derivados paramétricos válidos. En caso de que dicha información no esté disponible, devuelve ‘0’. En caso de error, devuelve ‘-1’. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

Ordenación

Las combinaciones válidas a devolver se ordenarán teniendo en cuesta que el primer parámetro tiene más precedencia que el segundo, éste que el tercero, y así sucesivamente.

Ejemplo

Si una familia paramétrica tiene 3 parámetros, con 9, 10 y 11 opciones por parámetro respectivamente, el número total de combinaciones posibles es 9x10x11 = 990. Si son válidas sólo las siguientes cuatro (escritos en el orden especificado en el párrafo anterior):

1.   Valores ‘0’, ‘5’, y ‘9’ de los parámetros uno al tres, respectivamente.

2.   Valores ‘7’, ‘6’ y ‘5’ de los parámetros uno al tres, respectivamente.

3.   Valores ‘8’, ‘2’ y ‘4’ de los parámetros uno al tres, respectivamente.

4.   Valores ‘8’, ‘2’ y ‘10’ de los parámetros uno al tres, respectivamente.

Entonces la función devolverá los 4×3=12 bytes siguientes: 0, 5, 9, 7, 6, 5, 8, 2, 4, 8, 2 y 10.

3.2.4. Liberación de memoria.

LONG EXPORTA BdcInValidos (
HANDLE h,       // identificador del concepto
LPBYTE *opcl, // lista de opciones de los parámetros de todos los derivados inválidos
);
Con el mismo propósito y parámetros que BdcValidos.

Esta función se implementará en lugar de aquella cuando no exista BdcValidos para un concepto paramétrico y viceversa.

BOOL EXPORTA BdcCierra (
HANDLE h        // identificador del concepto
);
Propósito

Cierra el concepto paramétrico y libera la memoria asignada.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

Valor devuelto

Devuelve ‘0’ si realiza la operación correctamente. En caso de error, la función devuelve ‘-1’. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

3.3. Accesibles después de BdcCalcula.

3.3.1. Obtención del derivado paramétrico.

LONG EXPORTA BdcDesNumero (
HANDLE h        // identificador del concepto
);
Propósito

Obtiene el número de conceptos en los que se descompone el derivado paramétrico.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

Valor devuelto

Devuelve el número de elementos de su descomposición. Un valor de cero indicará que el concepto no tiene descomposición. Es posible que un mismo concepto paramétrico posea derivados simples y compuestos. En caso de error, la función devuelve ‘-1’. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

LPCSTR EXPORTA BdcDesCodigo (
HANDLE h,       // identificador del concepto
LONG des        // número del elemento de la descomposición
);
Propósito

Obtiene el CODIGO del elemento número ‘des’ en el que se descompone el derivado paramétrico.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

des:   Número del elemento de la descomposición del concepto. Los elementos se numeran empezando por cero.

Valor devuelto

Devuelve el CODIGO del elemento número ‘des’ en el que se descompone el derivado paramétrico, como puntero constante ‘far’ a una cadena de caracteres. La propia función es responsable de asignar memoria al puntero. En caso de error, la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

BOOL EXPORTA BdcFactor (
HANDLE h,                  // identificador del concepto
LONG des,                   // número del elemento de la descomposición
double FAR *factor       // factor a obtener
);

Propósito

Obtiene el factor de rendimiento del elemento número ‘des’ en el que se descompone el derivado paramétrico.

Parámetros

h: Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().
des: Número del elemento de la descomposición del concepto. Los elementos se numeran empezando por cero.

*factor: Puntero en el que devolver el factor deseado, por defecto 1. El factor puede ser positivo, cero o negativo.

Valor devuelto

Devuelve ‘0’ si se ejecuta correctamente. En caso de error, el factor se asigna a cero y la función devuelve ‘-1’. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

BOOL EXPORTA BdcRendimiento (
HANDLE h,                  // identificador del concepto
LONG des,                   // número del elemento de la descomposición
double FAR *ren           // rendimiento a obtener
);
Propósito

Obtiene el rendimiento del elemento número ‘des’ en el que se descompone el derivado paramétrico.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

des:   Número del elemento de la descomposición del concepto. Los elementos se numeran empezando por cero.

*ren:   Puntero en el que devolver el rendimiento deseado. El rendimiento puede ser positivo, cero o negativo.

Valor devuelto

Devuelve ‘0’ si se ejecuta correctamente. En caso de error, el rendimiento se asigna a cero y la función devuelve ‘-1’. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

LPCSTR EXPORTA BdcDesCodigoPorcentaje (
HANDLE h,       // identificador del concepto
LONG des        // número del elemento de la descomposición
);

Propósito

Obtiene los CODIGO_PORCENTAJE  aplicable al elemento número ‘des’ en el que se descompone el derivado paramétrico.
Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

des:   Número del elemento de la descomposición del concepto. Los elementos se numeran empezando por cero.

Valor devuelto

Devuelve los CODIGO_PORCENTAJE aplicables al elemento número ‘des’ en el que se descompone el derivado paramétrico, como puntero constante ‘far’ a una cadena de caracteres. La propia función es responsable de asignar memoria al puntero. Los CODIGO_PORCENTAJE van separados el carácter < ; > (ASCII-59) y puede ser que se devuelva la cadena vacía si no se aplica ningún porcentaje sobre la línea. En caso de error, la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

BOOL EXPORTA BdcPrecio (
HANDLE h,                  // identificador del concepto
double FAR *pre           // precio unitario a devolver
);
Propósito

Obtiene el precio unitario en el caso de que el derivado paramétrico sea un simple. Es posible que un mismo concepto paramétrico tenga como derivados tanto simples como compuestos.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

*pre:   Puntero en el que devolver el precio unitario. Dicho precio puede ser positivo, cero o negativo.

Valor devuelto

Devuelve ‘0’ si se ejecuta correctamente. En caso de error, el precio se asigna a cero y la función devuelve ‘-1’. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

LPCSTR EXPORTA BdcCodigo (
HANDLE h        // identificador del concepto
);
Propósito

Obtiene el CODIGO del concepto.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

Valor devuelto

Devuelve el CODIGO del concepto, como puntero constante ‘far’ a una cadena de caracteres. Si se ha calculado un derivado paramétrico (se ha llamado a BdcCalcula), este CODIGO será el del derivado paramétrico. En caso contrario, será el CODIGO del concepto paramétrico. La propia función es responsable de asignar memoria al puntero. En caso de error, la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

LPCSTR EXPORTA BdcUnidad (
HANDLE h        // identificador del concepto
);
Propósito

Obtiene la unidad de medida del derivado paramétrico. Esta función permite que un concepto paramétrico pueda generar elementos derivados con distintas unidades de medición. Para que dicha función actúe, el registro ~C debe contener el carácter especial ‘*’ dentro del campo unidad de medida. Dicho carácter indica que la unidad de medida de los conceptos derivados los debe proporcionar el API. Si el redactor de la BD desea que la unidad de medida sea un valor a escoger por parte del usuario, deberá además añadirse la unidad de medida como una propiedad más del concepto paramétrico.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

Valor devuelto

Devuelve el texto correspondiente a la unidad de medida del derivado paramétrico, como puntero constante ‘far’ a una cadena de caracteres. La propia función es responsable de asignar memoria al puntero. Si no existe definido un texto resumido, la función devuelve la cadena vacía “”. En caso de error, la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

LPCSTR EXPORTA BdcResumen (
HANDLE h        // identificador del concepto
);
Propósito

Obtiene el texto resumido del derivado paramétrico.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

Valor devuelto

Devuelve el texto resumido del derivado paramétrico, como puntero constante ‘far’ a una cadena de caracteres. La propia función es responsable de asignar memoria al puntero. Si no existe definido un texto resumido, la función devuelve la cadena vacía “”. En caso de error, la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

LPCSTR EXPORTA BdcTexto (
HANDLE h        // identificador del concepto
);
Propósito

Obtiene el texto completo de descripción del derivado paramétrico.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

Valor devuelto

Devuelve el texto completo de descripción del derivado paramétrico, como puntero constante ‘far’ a una cadena de caracteres. La propia función es responsable de asignar memoria al puntero. Si no existe definido un texto completo de descripción, la función devuelve la cadena vacía “”. En caso de error, la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

VOID EXPORTA BdcTipoDescripcion (
LONG tipo        // tipo de descripción
);
Propósito

Indica qué tipo de descripción se va a obtener de un concepto derivado.

Parámetros

Tipo: Se refiere a las diferentes descripciones (obtenidas con BdcResumen y BdcTexto) que puede tener un concepto derivado en función de los diferentes contenidos de que trate la base de datos.

Valor ‘0’: Descripción por defecto de un derivado paramétrico.

Valor ‘1’: Descripción de un derivado paramétrico que contiene insertados uno o varios códigos de conceptos que intervienen en su descomposición. Dichos códigos aparecen indicados entre dólares ($). Esta opción sirve para que los programas puedan particularizar la descripción de un concepto derivado cuando se han proporcionado productos comerciales asociados a sus componentes (con BdcComercNumero y BdcComercCodigo, o con el registro ~O).

Ejemplo: BdcTexto del concepto derivado E612235K.

Devolución de BdcTexto con valor 0 para BdcTipoDescripcion: Inodoro con tapa.

Devolución de BdcTexto con valor 1 para BdcTipoDescripcion: Inodoro $B1234567$ con tapa $B7654321$.

LPCSTR EXPORTA BdcPliego (

HANDLE h,                  // identificador del concepto

LONG formato,            // identificador del formato

LONG tipo,                  // especifica si el pliego a obtener es de la familia o del derivado

LPCSTR seccion,         // código de la sección del pliego

LPCSTR ambito           // abreviatura del ámbito

);

Propósito

Obtiene el texto del pliego, según el modelo uno.

Parámetros

h: Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

formato: Identificador del formato de texto. Se definen, por el momento, los siguientes formatos: ‘BDCFMT_ASCII’ (si se desea obtener el pliego en formato ASCII), ’BDCFMT_ANSI’ (si se desea obtener el pliego en formato ANSI), ‘BDCFMT_RTF’ (si se desea obtener el pliego en formato RTF) y ‘BDCFMT_HTM’ (si se desea obtener el pliego en formato HTM).

tipo: Especifica si se desea obtener el pliego común de la familia paramétrica (valor ‘BDCPLI_FAMILIA’) o el del derivado (valor ‘BDCPLI_DERIVADO’). En el primer caso, no es necesario haber realizado previamente una llamada a BdcCalcula().

seccion: Puede tomar como valor el código de la sección del pliego cuyo texto se desea obtener, en cuyo caso deberá ser una de las secciones especificadas en el registro ~L, según se indica en el apartado ‘REGISTROS TIPO PLIEGOS’ de la especificaciones del formato. Si no existen secciones definidas, el valor de este parámetro no es utilizado. Si por el contrario toma el valor NULL, la función devolverá los códigos de las secciones del pliego para los que el concepto posea texto del pliego, separados por el separador de de subcampos (‘\’).

ambito: Ámbito del cual se desea obtener el texto del pliego. Corresponde a uno de los campos ‘ABREV_AMBITO’ especificados en el registro ~W, según se indica en el apartado ‘REGISTRO TIPO ÁMBITO GEOGRÁFICO’ de las especificaciones del formato. Si no existen ámbitos definidos (no existe un registro ~W), el valor de este parámetro es ignorado. En ese caso, es posible que el ámbito sea un parámetro global de la base.

Valor devuelto

Si el parámetro sección contiene el código de la sección del pliego cuyo texto se desea obtener, la función devuelve el texto del pliego del derivado paramétrico en el formato solicitado, como puntero constante ‘far’ a una cadena de caracteres. Si no existe definido un texto de pliego, la función devuelve la cadena vacía “”.

Cuando el parámetro sección es NULL, la función devuelve los rótulos de los pliegos existentes asociados al concepto parámetrico en el formato {rotulo\}, si no hubiera rotulos asociados al concepto la función devuelve “”.

La propia función es responsable de asignar memoria al puntero.  En caso de error (por ejemplo formato no soportado por la BDC), la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

LPCSTR EXPORTA BdcCodParrafo (
HANDLE h,                  // identificador del concepto

LONG tipo,                   // especifica si el pliego a obtener es de la familia o del derivado

LPCSTR seccion,         // código de la sección del pliego

LPCSTR ambito            // abreviatura del ámbito
);
Propósito

Obtiene los códigos de los párrafos de pliego, según el modelo dos.

Parámetros

h:            Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

tipo:        Especifica si se desea obtener el pliego común de la familia paramétrica (valor ‘BDCPLI_FAMILIA’) o el del derivado (valor ‘BDCPLI_DERIVADO’). En el primer caso, no es necesario haber realizado previamente una llamada a BdcCalcula().

seccion:  Código de la sección del pliego cuyos códigos de párrafo se desea obtener. Deberá ser una de las secciones especificadas en el registro ~L, según se indica en el apartado ‘REGISTROS TIPO PLIEGOS’ de la especificaciones del formato. Si no existen secciones definidas, el valor de este parámetro no es utilizado.

ambito:   Ámbito del cual se desea obtener los códigos de párrafo. Corresponde a uno de los campos ‘ABREV_AMBITO’ especificados en el registro ~W, según se indica en el apartado ‘REGISTRO TIPO ÁMBITO GEOGRÁFICO’ de las especificaciones del formato. Si no existen ámbitos definidos (no existe un registro ~W), el valor de este parámetro es ignorado. En ese caso, es posible que el ámbito sea un parámetro global de la base.

Valor devuelto

Devuelve un texto con los códigos de párrafo del pliego del derivado paramétrico, como puntero constante ‘far’ a una cadena de caracteres. La propia función es responsable de asignar memoria al puntero. Si no existe definido ningún código de párrafo, la función devuelve la cadena vacía “”. En caso de error (por ejemplo ámbito no soportado por la BDC), la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError(). Los códigos irán separados con el separador de subcampos habitual, es decir, el texto devuelto tendrá la sintaxis

{ CODIGO_PARRAFO \ }

LPCSTR EXPORTA BdcTexParrafo (
LONG formato              // identificador del formato
LPCSTR cod_parrafo    // código del párrafo del pliego

);

Propósito

Obtiene el texto del pliego del derivado paramétrico correspondiente al código de párrafo ‘cod_parrafo’, según el modelo dos. El código de párrafo se obtiene mediante una llamada a la función BdcCodParrafo.

Parámetros

formato:      Identificador del formato de texto. Se definen, por el momento, los siguientes formatos: ‘BDCFMT_ASCII’ (si se desea obtener el pliego en formato ASCII), ‘BDCFMT_RTF’ (si se desea obtener el pliego en formato RTF) y ‘BDCFMT_HTM’ (si se desea obtener el pliego en formato HTM).

cod_parrafo Código del párrafo del pliego cuyo texto se desea obtener.

Valor devuelto

Devuelve el texto del párrafo en el formato solicitado, como puntero constante ‘far’ a una cadena de caracteres. La propia función es responsable de asignar memoria al puntero. Esta memoria se liberará en la siguiente llamada a esta función dentro del mismo proceso. Si no existe definido un texto de pliego con este código de párrafo, la función devuelve la cadena vacía “”. En caso de error (por ejemplo formato no soportado por la BDC), la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

LPCSTR EXPORTA BdcClaves (
HANDLE h        // identificador del concepto
);
Propósito

Obtiene las claves de tesauro del derivado paramétrico.

Parámetros

h:       Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

Valor devuelto

Devuelve las claves de tesauro del derivado paramétrico, como puntero constante ‘far’ a una cadena de caracteres, con el mismo formato que el registro ‘~A’, es decir, ‘{CLAVE_TESAURO\}’. La propia función es responsable de asignar memoria al puntero. Si no existen definidas claves del tesauro, la función devuelve la cadena vacía “”. En caso de error, la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

LPCSTR EXPORTA BdcTipo (

HANDLE h,                  // identificador del concepto

);

Propósito

Obtener el tipo del concepto.

Parámetros

h:         Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

Valor devuelto

Devuelve el tipo del concepto, como puntero constante ‘far’ a una cadena de caracteres. Si se ha calculado un derivado paramétrico (se ha llamado a la función BdcCalcula) este tipo será el del derivado paramétrico. En caso contrario, será el tipo del concepto paramétrico. La propia función es responsable de asignar memoria al puntero. En caso de error, la función devuelve NULL. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError(). Corresponde al campo TIPO del registro ~C.
LONG EXPORTA BdcComercNumero(

HANDLE  h                              // identificador del concepto

LPCSTR   codigo_raiz_BD        // identificador de la entidad que elabora la BD

);

Propósito

Obtener el número de conceptos vinculados a un concepto que pertenece a codigo_raiz_BD y empleado por ésta en su sistema de clasificación por codificación.

Parámetros

h: Identificador (HANDLE) del concepto paramétrico.

codigo_raiz_BD: Se refiere a la identificación del CODIGO de la entidad que elabora la BD. Este CODIGO debe ser facilitado por la entidad que elabora la BD, para evitar ambigüedades. Se recomienda que éste sea el propio CIF de la entidad.

Valor devuelto

Devuelve el número de conceptos vinculados. Si se ha calculado un derivado paramétrico (se ha llamado a la función BdcCalcula) este número será el del derivado paramétrico. En caso contrario, será el número del concepto paramétrico. Un valor de cero significa que no tiene conceptos vinculados. En caso de error la función devuelve ‘-1’ . Para obtener más INFORMACIÓN sobre el error producido, llame a la función BdcError().

BOOL EXPORTA BdcComercCodigo(

HANDLE  h                              // identificador del concepto

LONG comerc                          // número del concepto vinculado

LPLCSTR *Codigo_archivo       // nombre de archivo a devolver
LPLCSTR *Codigo_Entidad      // identificación del código de la entidad a la que se

// asocia la información a devolver

LPLCSTR *Codigo_Concepto   // concepto que pertenece a Codigo_Entidad a devolver

);

Propósito

Obtener el código de archivo que indica el lugar donde se encuentra la información referente a codigo_entidad#codigo_concepto, o bien el codigo_entidad y el codigo_concepto que se encuentra en la misma BD.

Parámetros

h: Identificador (HANDLE) del concepto paramétrico.

comerc:  Número del concepto vinculado. Los conceptos vinculados se numeran empezando por cero.

codigo_archivo: Se refiere al nombre del archivo que, de existir, indica el lugar donde se encuentra la información referente a codigo_entidad#código_concepto. Si el valor es nulo los campos código entidad y código concepto deberán existir. La propia función es responsable de asignar memoria al puntero.

codigo_entidad: Se refiere a la identificación del CODIGO de la entidad a la que se le asocia INFORMACION. Este CODIGO debe ser facilitado por la entidad que elabora la BD, de acuerdo con su sistema de clasificación, para evitar ambigüedades. Se recomienda que éste sea el propio CIF de la entidad. La propia función es responsable de asignar memoria al puntero.

codigo_concepto: Se refiere a un concepto que pertenece a CODIGO_ENTIDAD, y empleado por la entidad que elabora la BD. Cuando CODIGO_CONCEPTO se refiera a un producto comercial, dicho CODIGO deberá ser facilitado por el fabricante, y no podrá coincidir nunca con la designación de CODIGO_RAIZ_BD, CODIGO_ENTIDAD o CODIGO_CONCEPTO, cuando éste se refiere a un concepto genérico. La propia función es responsable de asignar memoria al puntero.

Al tener dicho producto comercial un tratamiento de CONCEPTO, éste puede utilizar todos los registros existentes en el formato para especificar su INFORMACION asociada (precio, INFORMACION gráfica, etc.). Para poder utilizar los registros mencionados, el código identificador del concepto será CODIGO_ENTIDAD # CODIGO_CONCEPTO.

Valor devuelto

Devuelve ‘0’ si se ejecuta correctamente. En caso de error, la función devuelve ‘-1’.  Para obtener más INFORMACIÓN sobre el error producido, llame a la función BdcError().

LONG EXPORTA BdcDocNumero (
HANDLE  h       // identificador del concepto

);

Propósito

Obtener el número de archivos asociados a un concepto.

Parámetros

h: Identificador (HANDLE) del concepto.

Valor devuelto

Devuelve el número de archivos asociados. Un valor de cero significa que no tiene archivos asociados. En caso de error la función devuelve ‘-1’ . Para obtener más INFORMACIÓN sobre el error producido, llame a la función BdcError()

BOOL EXPORTA BdcDocCodigo (
HANDLE  h,                 // identificador del concepto.

LONG num,                  // número del archivo asociado.

LONG * tipo                 // clasificación del tipo de información del archivo.

LPCSTR * archivo,        // nombre del archivo que contiene información del concepto.

LPCSTR * descripción  // descripción de la información que contiene el archivo.

);

Propósito

Obtener el archivo asociado a un concepto así como su clasificación temática y su descripción asociada. El comportamiento sería igual al discreto, primero se buscaría el archivo en el directorio local, y si no estuviera, en URL_BASE+archivo. URL_BASE se define en el registro ~V.

Parámetros

h: Identificador (HANDLE) del concepto.

num: Número del archivo asociado al concepto. Se numeran empezando por cero.

tipo: Devuelve el código de uno de los tipos enumerados en el registro ~F.

archivo: Devuelve el nombre del archivo con extensión que contiene información del concepto. El archivo puede contener una URL_EXT. Las extensiones permitidas son las que se especifican en el registro ~F. En el caso que se devuelvan varios archivos, el primero de los archivos es el principal y el resto son vinculados. En este caso el formato del string sería el siguiente: “archivo 1 | … | archivo n | ”

descripción: Devuelve una breve descripción de la información contenida en el archivo. devuelve NULL si no hay ningún texto descriptivo asociado.

Valor devuelto

Devuelve ‘0’ si se ejecuta correctamente. En caso de error, la función devuelve ‘-1’.  Para obtener más INFORMACIÓN sobre el error producido, llame a la función BdcError().
LONG EXPORTA BdcNumProp (

HANDLE h,       // identificador del concepto

LONG uso        // aplicación para la que se requiere el número de propiedades

// técnicas

);

Propósito

Obtiene el número de propiedades técnicas que hay definidas para un concepto para el uso que se solicita. Inicialmente se define el uso 0 para el cálculo del coste energético, emisión de CO2 y/o residuos.

Parámetros

h: Identificador (HANDLE) del concepto paramétrico, que debe ser obtenido en una llamada anterior a la función BdcLee().

Uso: Número que indica qué cálculo se está definiendo.

Valor devuelto

Número de propiedades técnicas definidas para el concepto paramétrico para ese uso.
BOOL EXPORTA BdcPropValString (

HANDLE h,                  // identificador del concepto

LONG uso,                   // aplicación para la que se requiere el número de propiedades

// técnicas

LONG nprop,                // número de propiedad

LPCSTR *propiedad,    // puntero al nombre de la propiedad

LPCSTR *valor,            // puntero al valor de la propiedad

LPCSTR *um                // puntero a la unidad de medida de la propiedad

);

Propósito

Obtiene el nombre de la propiedad técnica, su valor y la unidad de medida.

Parámetros

h: Identificador (HANDLE) del concepto paramétrico.

uso: Número que indica qué cálculo se está definiendo.

nprop: Número de propiedad. Se numeran empezando por cero.

propiedad: Puntero al CODIGO_IT de una de las propiedades enumeradas en el registro ~X.

valor: Puntero al valor de la propiedad que puede ser alfabético o numérico.

um: Puntero a la unidad de medida de la propiedad. En el caso que los valores de la propiedad sean valores numéricos se indicará de acuerdo con el Sistema Internacional de Unidades de Medida (ver anexo 7).

Valor devuelto

Devuelve ‘0’ si se ejecuta correctamente. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().

LONG EXPORTA BdcNumComponentes (

HANDLE h,                  // identificador del concepto

LONG tipo                    // tipo de descomposición

);

Propósito

Obtiene el número de componentes de un concepto para cada tipo de descomposición.

Parámetros

h: Identificador (HANDLE) del concepto paramétrico.

tipo: Número del tipo de descomposición descrito en el campo TIPO_DESCOMPOSICION del registro ~R.

Valor devuelto

Devuelve el número de componentes de la relación tipo.

Si el valor devuelto = 0, el concepto no tiene componentes de este tipo.

Si el valor devuelto = -1, el concepto tiene la información incompleta.

BOOL EXPORTA BdcCodigoComponente (

HANDLE h,                  // identificador del concepto

LONG tipo,                   // tipo de descomposición

LONG ncomp,              // número del componente de la descomposición tipo del

// concepto

LPCSTR *codigo          // puntero al código del componente

);

Propósito

Obtiene el código de los componentes de un elemento (número ‘ncomp’) para cada tipo de descomposición.

Parámetros

h: Identificador (HANDLE) del concepto paramétrico.

tipo: Número del tipo de descomposición descrito en el campo TIPO_DESCOMPOSICION del registro ~R.

ncomp: Número del componente de la relación tipo del concepto. Se numeran empezando por cero.

Codigo: Puntero al código del componente.

Valor devuelto

Devuelve ‘0’ si se ejecuta correctamente. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().
LONG EXPORTA BdcNumPropComponente (

HANDLE h,                  // identificador del concepto

LONG tipo,                   // tipo de descomposición

LONG ncomp               // número del componente

);

Propósito

Obtiene el número de propiedades del componente para cada tipo de descomposición.

Parámetros

h: Identificador (HANDLE) del concepto paramétrico.

tipo: Número del tipo de descomposición descrito en el campo TIPO_DESCOMPOSICION del registro ~R.

ncomp: Número del componente de la relación tipo del concepto. Se numeran empezando por cero.

Valor devuelto

Número de propiedades de la relación.
BOOL EXPORTA BdcComponentePropValString (

HANDLE h,                  // identificador del concepto

LONG tipo,                   // tipo de descomposición

LONG ncomp,              // número de componente

LONG nprop,                // número de la propiedad

LPCSTR *propiedad,    // puntero al nombre de la propiedad

LPCSTR *valor,            // puntero al valor de la propiedad

LPCSTR *um                // puntero a la unidad de medida de la propiedad

);

Propósito

Obtiene el nombre de la propiedad ‘nprop’, el valor y la unidad de medida.

Parámetros

h: Identificador (HANDLE) del concepto paramétrico.

tipo: Número del tipo de descomposición descrito en el campo TIPO_DESCOMPOSICION del registro ~R.

ncomp: Número del componente de la relación tipo del concepto. Se numeran empezando por cero.

nprop: Número de propiedad. Se numeran empezando por cero.

propiedad: Puntero al nombre de la propiedad de la relación.

valor: Puntero al valor de la propiedad que puede ser alfabético o numérico.

um: Puntero a la unidad de medida de la propiedad. En el caso que los valores de la propiedad sean valores numéricos se indicará de acuerdo con el Sistema Internacional de Unidades de Medida (ver anexo 7).

Valor devuelto

Devuelve ‘0’ si se ejecuta correctamente. Para obtener más INFORMACION sobre el error producido, llame a la función BdcError().
4. MENSAJES DE ERROR.

Los CODIGOs de error se almacenan en un LONG (entero de 32 bits) de manera que cada error corresponde a un bit. De esta forma, es posible definir hasta 32 CODIGOs de error que pueden producirse de forma aislada o conjunta. Las llamadas a las funciones BdcGloError() y BdcError() eliminan los CODIGOs de error producidos anteriormente.

Por ejemplo, para saber si un determinado error se ha producido con el concepto ‘Concepto’, se debe utilizar la sintaxis:

const char *Mensaje;

LONG cod_err = BdcError ((HANDLE)Concepto, &Mensaje);

if (cod_err & BDCERR_BASE_DATOS) {

// Se ha producido el error ‘BDCERR_BASE_DATOS’

}

4.1. CODIGOs de los mensajes de error.

BDCERR_CORRECTO                       No hay error.

BDCERR_BASE_DATOS                   Existe un mensaje de error. Es el caso en el que la DEFINICION paramétrica se indica una combinación inválida y se devuelve un mensaje de error explicativo.

BDCERR_PARAMETRO                     Se pasó a BdcCalcula o BdcGloCalcula un parámetro inexistente.

BDCERR_OPCION                             Se pasó a BdcCalcula o BdcGloCalcula una opción inexistente.

BDCERR_MAX_OPCIONES               Se definieron más de 62 opciones en un determinado parámetro.

BDCERR_NO_LEIDO                         Se intentó utilizar BdcCalcula() antes que BdcLee().

BDCERR_NO_CALCULADO               Se intentó acceder a datos de un derivado paramétrico antes de utilizar BdcCalcula().

BDCERR_DESCOMPOSICION           Se intentó acceder a un elemento de la descomposición inexistente.

BDCERR_SIN_CODIGO                     No existe CODIGO definido.

BDCERR_SIN_MEMORIA                   Memoria insuficiente.

BDCERR_CONCEPTO_NULO             Se pasó un HANDLE nulo.

BDCERR_FMT_NO_SOPORTADO      El formato de texto solicitado no está soportado por la BDC

BDCERR_NO_COMBINACION:           A la llamada BdcValida o BdcCalcula se le pasó una combinación inexistente.

BDCERR_NO_BANCO_PRECIOS:      No existe ningún Banco de Precios.

BDCERR_PARAMETRO_INCORRECTO “El programa pidió un parámetro incorrecto”
EJEMPLOS.

1. BASE DE DATOS EJEMPLO: BASE.DLL

En los archivos que acompañan a este documento (y que pueden encontrarse en la página web de la asociación, ‘http://www.fiebdc.es’), se suministran tanto los archivos que constituyen la base como los fuentes necesarios para construirla (compilarla).

El ejemplo construido posee las siguientes características (no todas las bases que se realicen conforme a este formato deben tener estas mismas características):

1.       Se ha utilizado un modelo de codificación independiente de los parámetros.

2.       Se ha utilizado el modelo uno de textos de pliegos.

3.       Existe un paramétrico global, si bien el valor de su único parámetro sólo es utilizado en el concepto ‘SBRG.1$’.

4.       Existe un concepto (‘Esp$’) que no responde a los criterios de FIEBDC-3/95: posee más de cuatro parámetros y el código de la familia sólo tiene 4 caracteres.

5.       Todos los conceptos paramétricos poseen un CODIGO terminado en ‘$’, si bien el formato no lo exige.

6.       Existe un concepto (‘SBRG.1$’) cuyos derivados poseen un código que no responde a los criterios de FIEBDC-3/95. Para la asignación de código se ha seguido la técnica de definir una tabla de sinónimos: así, el concepto que resulta de escoger el primer valor del único parámetro que posee, en lugar de poseer el código ‘SBRG.1a’ posee el código ‘SBRG.1_18’.

7.       Los textos de los pliegos sólo están definidos en formato ASCII y para los derivados paramétricos. No están divididos ni en secciones (facetas) ni en ámbitos.

1.1. Archivos para la distribución de la Base de Datos.

Para distribuir la base datos que se construyera con este ejemplo, se deberían proporcionar los siguientes archivos:

base.dll          DLL que contiene las descripciones paramétricas y el interfaz ESTANDAR con aplicaciones (API).

base.bc3        Archivo ASCII de la base de datos en formato FIEBDC-3/98. En el ejemplo, la base incluye en esta DLL el paramétrico global de la base, así como las descripciones paramétricas de los conceptos “ABPH.1$”, “SBRG.1$”, “EADR.3$” y “Esp$”, por lo que al menos debe contar con los siguientes registros:

~P| | | BASE.DLL |

~P| ABPH.1$ | |

~P| SBRG.1$ | |

~P| EADR.3$ | |

~P| Esp$ | |

1.2. Archivos necesarios para la CONSTRUCCION de la Base de Datos.

Este ejemplo está preparado para compilarse con Microsoft Visual C++ VERSION 2.2 o posterior como DLL de 32 bits. Sin apenas modificaciones, sería posible compilarlo como DLL de 16 bits o utilizar el compilador Borland C++.

Para construir la DLL, son necesarios los siguientes archivos:

fiebdc.h         Archivo que define el formato.

base.h           DEFINICION de variables y defines útiles para la definición de las descripciones paramétricas.

interfaz.cpp    Implementación de las funciones del API.

aplicat.cpp     Implementación de las funciones de la descripción paramétrica.

base.cpp       Implementación de las descripciones paramétricas de la base de datos en formato C++. Es la única parte que escribirían los redactores de las bases de datos. Se ha utilizado una sintaxis similar a la descripción paramétrica del formato FIEBDC-3/95, para facilitar así el intercambio entre ambos formatos.

base.def        DEFINICION de las funciones de exportación del API.
2. APLICACION EJEMPLO: PROGRAMA.EXE

En los archivos que acompañan a este documento (y que pueden encontrarse en la página web de la asociación, ‘http://www.fiebdc.es’), se suministran tanto el ejecutable (‘Programa.EXE’) como los fuentes necesarios para construirlo (compilarlo).

Esta sencilla aplicación, lee los conceptos que se incluyen en el propio fuente de la base BASE.DLL (en una aplicación real, los conceptos se definen en los registros ~P de base.bc3), y escribe en el archivo ‘SALIDA.TXT’ los rótulos de todos sus parámetros así como todos los datos de todas sus combinaciones paramétricas.

Los fuentes son fácilmente modificables para poder probar con el programa cualquier base de datos que utilice paramétricos compilados en DLL de acuerdo con el API establecido en este documento.

2.1. Archivos necesarios para la CONSTRUCCION del programa ejemplo.

Este ejemplo está preparado para compilarse con Microsoft Visual C++ VERSION 2.2 o posterior como aplicación Windows 95 de 32 bits en modo consola. Sin apenas modificaciones, sería posible compilarlo como aplicación de 16 bits o utilizar el compilador Borland C++.

Para construir la aplicación, son necesarios los siguientes archivos:

fiebdc.h            Archivo que define el formato.

program.h         Declaración de variables y funciones.

program0.c       Funciones auxiliares de apertura y cierre de la base de datos y tratamiento de los mensajes de error.

program.c         Programa ejemplo.

Anexo 4. Clasificación en tipos de los Conceptos

Tipos 0, 1, 2, 3, 4 y 5.

Estos tipos corresponden a los vigentes en el formato FIEBDC-3/2012.

0          Sin clasificar

1          Mano de obra

2          Maquinaria

3          Materiales

4          Componentes adicionales de residuo

5          Clasificación de residuo

Tipos obtenidos de los índices y fórmulas polinómicas de revisión de precios del BOE y de la CNC.

Esta clasificación proviene del BOE (Boletín Oficial del Estado: www.boe.es) y de la CNC (Confederación Nacional de la Construcción: www.cnc.es), que la utilizan para fijar los índices de variación de precios mediante sus respectivas fórmulas polinómicas.

H         Mano de obra

MC       Cemento

MCr      Cerámicas

MM      Maderas

MS       Siderúrgicos

ME       Energía

Mcu     Cobre

Mal      Aluminio

ML       Ligantes

A los anteriores se añaden los siguientes

M         Otros materiales

Q         Maquinaria

%         Medios auxiliares

donde,

H          se refiere al tipo 1 actual.

MC, MCr, MM, MS, ME, MCu, MAl, ML y M, se refieren al tipo 3 actual. Dicha clasificación de materiales se corresponde con la de los índices de revisión de precios de las obras oficiales, a los que se añade el tipo M para aquellos materiales que no se puedan asociar a ninguno de los anteriores.

Q          se refiere al tipo 2 actual.

%         se refiere a un nuevo tipo que se corresponde con los medios auxiliares que pueden aparecer en una justificación de precios.

Tipos obtenidos de la Asociación de Redactores de Bases de Datos de la Construcción.

Estos tipos sirven para desarrollar el tipo 0.

EA       Elemento auxiliar

EU       Elemento unitario

EC       Elemento complejo

EF       Elemento funcional

OB       Obra

PA       Partida Alzada

PU       Presupuesto Unitario

donde,

Elemento auxiliar: Elemento constructivo formado por una combinación de elementos básicos ( mano de obra, materiales y maquinaria ) que intervienen en la formación de una unidad de obra.

Ejemplos: Hormigón H-250 de consistencia plástica elaborado en obra; Acero AEH-400 S elaborado en obra; etc.

Elemento unitario: Elemento constructivo formado por un conjunto de elementos básicos y/o auxiliares que configuran una unidad de obra y que lo realiza un mismo grupo de especialistas.

Ejemplos: Tabique de ladrillos cerámicos huecos sencillos de 25x12x4 cm, tomados con mortero de cemento de dosificación 1:6; Hormigón H-250 en soportes; etc.

Elemento complejo: Elemento constructivo formado por un conjunto de elementos básicos, auxiliares y/o unitarios que constituye un conjunto constructivo y que lo realiza uno o varios grupos de especialistas.

Ejemplos: Hormigón H-250 armado con 120 kg de acero AEH-400 S y encofrado con placas metálicas, en soportes…; Cerramiento de fachada formado por dos hojas cerámicas con aislamiento en cámara de aire…; etc.

Elemento funcional: Elemento constructivo formado por un conjunto de elementos básicos, auxiliares, unitarios y/o complejos que constituye un conjunto constructivo con una función completa dentro de la obra.

Ejemplos: Estructura de hormigón armado; Cocina formada por…; etc.

Obra: Elemento constructivo formado por un conjunto de elementos funcionales, complejos, unitarios, auxiliares y/o simples que configuran la totalidad de elementos que constituyen una construcción.

Ejemplos: Rehabilitación de fachada…; Edificio de viviendas plurifamiliar…; etc.

Partida Alzada: Unidad de obra a justificar.

Ejemplo: Partida alzada a justificar del 1% del PEM, para gastos de acción cultural.

Presupuesto Unitario: Concepto que se refiere a un presupuesto parcial que se compone de unidades de obra. Se asimila a Elemento Funcional (EF) pero un comportamiento diferente en su aplicación. Su comportamiento es que puede aparecer como una unidad de obra en un presupuesto a la que se le asigna una medición; y en cambio se comporta como un subcapitulo de presupuesto en cuanto a que no se le han de aplicar costes indirectos (los costes indirectos, en su caso, ya los contemplan las unidades de obra de su composición) y no aparece en los cuadros de precios 1 y 2.

Anexo 5. Ámbitos Territoriales

Como abreviaturas de Ámbitos Territoriales correspondientes a provincias y CCAA del estado español, para su posible uso el campo ROTULO_IDENTIFICACION del registro ~V y/o el campo ABREV_AMBITO del registro ~W, se establecen las siguientes:

E España
AND Comunidad Autónoma de Andalucía
AL Almería
CO Córdoba
H Huelva
CA Cádiz
GR Granada
J Jaén
MA Málaga
SE Sevilla
ARA Comunidad Autónoma de Aragón
TE Teruel
HU Huesca
Z Zaragoza
AST Comunidad Autónoma del Principado de Asturias
O Asturias
BAL Comunidad Autónoma de las Islas Baleares
PM Baleares
CAN Comunidad Autónoma de Canarias
GC Las Palmas
TF Tenerife
CBR Comunidad Autónoma de Cantabria
S Cantabria
CLM Comunidad Autónoma de Castilla-La Mancha
AB Albacete
CR Ciudad Real
CU Cuenca
GU Guadalajara
TO Toledo
CAL Comunidad Autónoma de Castilla y León
AV Ávila
SG Segovia
SO Soria
VA Valladolid
BU Burgos
LE León
P Palencia
SA Salamanca
ZA Zamora
CAT Comunidad Autónoma de Cataluña
B Barcelona
GI Girona
T Tarragona
L Lleida
EXT Comunidad Autónoma de Extremadura
BA Badajoz
CC Cáceres
GAL Comunidad Autónoma de Galicia
LU Lugo
OR Ourense
PO Pontevedra
C A Coruña
MAD Comunidad de Madrid
M Madrid
MUR Comunidad Autónoma de la Región de Murcia
MU Murcia
NAV Comunidad Foral de Navarra
NA Navarra
PVA Comunidad Autónoma del País Vasco
VI Álava
BI Bizkaia
SS Guipuzkoa
RIO Comunidad Autónoma de La Rioja
LO La Rioja
VAL Comunidad Valenciana
V Valencia
A Alicante
CS Castellón

Anexo 6. Divisas

Como abreviaturas de las Divisas (campo DIVISA del registro ~K), se establecen las especificadas por el BCE (Banco Central Europeo, www.ecb.int), que son las siguientes:

Unidad Monetaria Unión Monetaria Europea
ATS Chelin Austriaco
BEF Franco Belga
DEM Marco Alemán
ESP Peseta Española
FIM Marco Finlandés
FRF Franco Francés
GRD Dracma Griega
IEP Libra Irlandesa
ITL Lira Italiana
LUF Franco Luxemburgués
NLG Florín Neerlandés
PTE Escudo Portugués
Moneda no UME Resto
AUD Dólar Australiano
BGN Lev Búlgaro
CAD Dólar Canadiense
CHF Franco Suizo
CYP Libra Chipriota
CZK Corona Checa
DKK Corona Danesa
EEK Corona Estona
EUR Euro
GBP Libra Esterlina
HKD Dólar de Hong-Kong
HUF Forint Húngaro
ISK Corona Islandesa
JPY Yen Japonés
KRW Won Surcoreano
LTL Litas Lituano
LVL Lats Letón
MTL Lira Maltesa
NOK Corona Noruega
NZD Dólar Neozelandés
PLN Zloty Polaco
ROL Leu Rumano
SEK Corona Sueca
SGD Dólar de Singapur
SIT Tolar Esloveno
SKK Corona Eslovaca
TRL Lira Turca
USD Dólar Estadounidense
ZAR Rand Sudafricano

Anexo 7. Unidades de Medida

“El Sistema Legal de Unidades de Medida obligatorio en España es el sistema métrico decimal de siete unidades básicas, denominado Sistema Internacional de Unidades (SI), adoptado por la Confederación General de Pesas y Medidas y vigente en la Comunidad Económica Europea”. RD 1317/1989, de 27 de octubre, modificado por RD 1737/1997, de 20 de noviembre, por el que se establecen las unidades legales de medida.

Según este decreto se acuerda adoptar la nomenclatura de las unidades siguientes:

m metro
m2 metro cuadrado
m3 metro cúbico
kg kilogramo
km kilómetro
t tonelada
l litro
h hora
d día
a área
Ha hectárea
cm3 centímetro cúbico
cm2 centímetro cuadrado
dm3 decímetro cúbico

Por similitud con dicho decreto, la Asociación de Redactores de Bases de Datos de la Construcción acuerda adoptar las siguientes:

u unidad
mu mil unidades
cu cien unidades
mes mes

Anexo 8. Definición de diferentes tipos de Presupuestos, según criterios de la ARBDC

Se denomina PRESUPUESTO al sumatorio de las cantidades obtenidas en la medición de las unidades de obra por sus respectivos precios organizados según una estructura (ejemplo: raíz, capítulos, subcapítulos y partidas).

PRESUPUESTO DE EJECUCION MATERIAL (PEM).

(Artículo 68 del Reglamento General de Contratación del Estado):

Se denominará así al sumatorio de los productos de la cantidad de medición de cada unidad de obra por su precio y de las partidas alzadas.

PRESUPUESTO DE EJECUCION POR CONTRATA (PEC).

(Artículo 68 del Reglamento General de Contratación del Estado):

Se denominará así al resultado de incrementar el PEM en los siguientes conceptos:

1) Gastos Generales de Estructura (GGE), que inciden sobre el contrato, cifrados en los siguientes porcentajes, aplicados sobre el PEM:

–    Gastos generales de empresa (GG), gastos financieros, cargas fiscales (IVA excluido), tasas de la Administración legalmente establecidas que inciden sobre el coste de las obras y demás derivados de las obligaciones del contrato. El porcentaje de aplicación para las obras oficiales varía entre el 13% y el 17%, especificado por cada Departamento Ministerial.

–    Beneficio industrial del contratista (BI), que para obras oficiales se fija en un 6%.

2) El Impuesto sobre el Valor Añadido (IVA), que grave la ejecución de la obra, cuyo tipo se aplicará sobre la suma del PEM y los GGE.

Este impuesto puede variar dependiendo de la zona geográfica, en cuyo caso se aplicará el que corresponda, por ejemplo Impuesto General Indirecto Canario (IGIC).

En obras privadas los porcentajes de gastos generales de empresa y beneficio industrial pueden ser distintos de los especificados anteriormente.

PRESUPUESTO DE LICITACION (PL).

Importe que sirve de base para formular las ofertas económicas de las empresas que concurren a una licitación de obra.

PRESUPUESTO DE ADJUDICACION (PAD).

Se denominará así al importe correspondiente a la proposición económica de la empresa que resulta adjudicataria de la obra. Puede ser coincidente con el Presupuesto de Licitación, inferior a éste si se produce baja, o superior a éste si se produce alza.

Se recomienda que el alza o la baja se apliquen sobre el Presupuesto de Ejecución Material, puesto que la cantidad resultante será la misma y sin embargo no se reflejarán modificaciones en la imputación del IVA.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra, pinche el siguiente enlace para mayor información.

Ver política de cookies ACEPTAR
Aviso de cookies