Se incrementan las notificaciones electrónicas administrativas y la facturación electrónica en Cataluña


El pasado mes de abril de 2014 se alcanzó el máximo histórico mensual de notificaciones electrónicas por e-notum, casi 32 mil, con la Generalidad de Cataluña como máximo notificador; tal como ya ocurrió en el mes de marzo. Cabe destacar que el Ayuntamiento de Castelló d’Empúries, con sus 11.910 habitantes (según el censo 2013) vuelve a ostentar el ratio de notificaciones por habitante más alta de Cataluña.

En cuanto al portal e. FACT, se gestionaron casi 7.000 facturas electrónicas, cifra que no se había alcanzado nunca, tal como ha ocurrido con el e-NOTUM. El Instituto Catalán de la Salud fue el ente que más notificó (4.859) seguido de lejos de la Diputación de Barcelona (486). Después encontramos los ayuntamientos de Reus (193), Sant Just Desvern (165) y Sant Feliu de Llobregat (121).

Respecto a los servicios de consultas electrónicas por Vía Abierta, si en marzo la gran consulta fue la de la renta, en abril encontramos en primer lugar la consulta de prestaciones sociales públicas (prestaciones percibidas) del INSS (un 24,6% del total). La finalidad más usada del consumo de datos volvió a ser la concesión de ayudas, subvenciones y becas (un 45,6% del total). Otros servicios masivamente consultados fueron el Registro de vehículos y conductores y el Padrón. Finalmente, repitieron como principales usuarios la Generalidad de Cataluña, el Organismo de Gestión Tributaria de la Diputación de Barcelona y el Ayuntamiento de Barcelona.

La comunicación de los datos de cambio de domicilio marcaron también su máximo con más de 18 mil. De los once ayuntamientos que permiten usar el servicio, este mes repiten Terrassa (8.905) y Lleida (3.296); a continuación encontramos Sant Feliu de Guíxols (2.728).

Cabe destacar que, desde la anterior extracción de datos, cuatro nuevos ayuntamientos están conectados al padrón, los de Camarasa, Castellnou de Seana, Madremanya y Vilanova de la Barca.

Mediante el siguiente enlace puede acceder al informe completo de los datos de actividad del servicio, como presentación en Slideshare correspondiente a abril 2014.

Certificado de sello de empresa para firmar facturas electrónicas que se envían a FACE


La Ley 25/2013, de 27 de diciembre, de impulso de la factura electrónica y creación del registro contable de facturas en el Sector Público contiene varios aspectos muy interesantes.

En su artículo 5 se refiere al Formato de las facturas electrónicas y su firma electrónica, y en su apartado 2 dice lo siguiente:

2. También se admitirá el sello electrónico avanzado basado en un certificado reconocido que reúna los siguientes requisitos:

a) El certificado deberá identificar a la persona jurídica o entidad sin personalidad jurídica que selle la factura electrónica, a través de su denominación o razón social y su número de identificación fiscal.

b) La solicitud del sello electrónico avanzado podrá formularse bien mediante comparecencia presencial de una persona física que acredite su representación, bien por medios electrónicos mediante el DNI electrónico y la remisión de los documentos que acrediten su poder de representación en formato papel o electrónico.

El sello electrónico es el conjunto de datos en forma electrónica, consignados o asociados con facturas electrónicas, que pueden ser utilizados por personas jurídicas y entidades sin personalidad jurídica para garantizar el origen y la integridad de su contenido.

Esta norma ha sido una adaptación anticipada al Reglamento europeo – Identificación electrónica y servicios de confianza para las transacciones electrónicas en el mercado interior que se ha aprobado hace pocos meses en el Parlamento Europeo.

Las definiciones de su artículo 3, recogen, entre otras, las siguientes:

(24) «creador de un sello», una persona jurídica que crea un sello electrónico;
(25) «sello electrónico», datos en formato electrónico anejos a otros datos electrónicos, o asociados de manera lógica con ellos, para garantizar el origen y la integridad de los datos asociados;
(26) «sello electrónico avanzado», un sello electrónico que cumple los requisitos siguientes:

a) estar vinculado al creador del sello de manera única;
b) permitir la identificación del creador del sello;
c) haber sido creado utilizando datos de creación del sello electrónico que el creador del sello puede utilizar para la creación de un sello electrónico, con un alto nivel de confianza, bajo su control exclusivo, y
d) estar vinculado con los datos a que se refiere de modo tal que cualquier modificación ulterior de los mismos sea detectable;
(27) «sello electrónico cualificado», un sello electrónico avanzado que se crea mediante un dispositivo cualificado de creación de sellos electrónicos y que se basa en un certificado cualificado de sello electrónico;
(28) «datos de creación del sello electrónico», los datos únicos que utiliza el creador del sello electrónico para crearlo;
(29 ) « ▌certificado de sello electrónico», una declaración electrónica que vincula los datos de validación de un sello con una persona jurídica y confirma el nombre de esa persona ;
(30) «certificado cualificado de sello electrónico», un certificado de sellos electrónicos que ha sido expedido por un prestador cualificado de servicios de confianza y que ▌ cumple los requisitos establecidos en el anexo III;
(31) «dispositivo de creación de sellos electrónicos», un equipo o programa informático configurado que se utiliza para crear un sello electrónico;
(32) «dispositivo cualificado de creación de sellos electrónicos », un dispositivo de creación de sellos electrónicos que cumple mutatis mutandis los requisitos enumerados en el anexo II;

Y la sección sobre sellos electrónicos (a partir del artículo 34 señala:)

Artículo 34

Efectos jurídicos del sello electrónico

1.  No se denegarán los efectos jurídicos y la admisibilidad como prueba en procedimientos judiciales de un sello electrónico por el mero hecho de ser un sello electrónico o de no cumplir los requisitos del sello electrónico cualificado .

2.  Un sello electrónico cualificado disfrutará de ▌la presunción de ▌integridad de los datos y de la corrección del origen de los datos a los que el sello electrónico cualificado esté vinculado.

3.  Un sello electrónico cualificado basado en un certificado cualificado emitido en un Estado miembro será reconocido como un sello electrónico cualificado en todos los demás Estados miembros.

Artículo 35

Sellos electrónicos en servicios públicos

1.  Si un Estado miembro impone un sello electrónico avanzado con el fin de utilizar un servicio en línea ofrecido por un organismo del sector público, o en nombre del mismo, dicho Estado miembro reconocerá los sellos electrónicos avanzados, los sellos electrónicas avanzados basados en un certificado reconocido para los sellos electrónicos y los sellos electrónicos cualificados por lo menos en los formatos o con los métodos contemplados en el apartado 5.

2.  Si un Estado miembro impone un sello electrónico avanzado basado en un certificado cualificado con el fin de utilizar un servicio en línea ofrecido por un organismo del sector público, o en nombre del mismo, dicho Estado miembro reconocerá los sellos electrónicos avanzados basados en un certificado y los sellos electrónicos cualificados por lo menos en los formatos o con los métodos contemplados en el apartado 5.

3.  Los Estados miembros no exigirán, para el uso transfronterizo en un servicio en línea ofrecido por un organismo del sector público, un sello electrónico cuyo nivel de seguridad sea superior al de un sello electrónico cualificado.

4.  ▌La Comisión podrá, mediante actos de ejecución, establecer números de referencia de normas relativas a los sellos electrónicos avanzados . Se presumirá el cumplimiento de los requisitos de los sellos electrónicos avanzados mencionados en los apartados 1 y 2 del presente artículo y en el punto 26 del artículo 3 cuando un sello electrónico avanzado se ajuste a dichas normas. Estos actos de ejecución se adoptarán con arreglo al procedimiento de examen contemplado en el artículo 46, apartado 2. La Comisión publicará estos actos en el Diario Oficial de la Unión Europea.

5.  A más tardar el … (21) , y teniendo en cuenta las prácticas existentes, las normas y actos jurídicos de la Unión, la Comisión adoptará actos de ejecución que definan los formatos de referencia de los sellos electrónicos avanzados o métodos de referencia cuando se utilicen formatos alternativos. Estos actos de ejecución se adoptarán con arreglo al procedimiento de examen contemplado en el artículo 46, apartado 2.

Artículo 36

Certificados cualificados de sello electrónico

1.  Los certificados cualificados de sello electrónico cumplirán los requisitos establecidos en el anexo III.

2.  Los certificados cualificados de sello electrónico no estarán sometidos a ningún requisito obligatorio que exceda de los requisitos establecidos en el anexo III.

3.  Los certificados cualificados de sellos electrónicos podrán incluir atributos específicos adicionales no obligatorios. Esos atributos no afectarán a la interoperabilidad y reconocimiento de los sellos electrónicos cualificados.

4.  Si un certificado cualificado de sello electrónico ha sido revocado después de su activación inicial, perderá su validez desde el momento de su revocación y no podrá en ninguna circunstancia recuperar su estado ▌.

5.  Según las condiciones expuestas a continuación, los Estados miembros podrán fijar normas nacionales sobre la suspensión temporal de certificados cualificados de sello electrónico:

a) Si un certificado cualificado de sello electrónico ha sido suspendido temporalmente, ese certificado perderá su validez durante el periodo de suspensión.
b) El periodo de suspensión se indicará claramente en la base de datos certificada y el estatuto de suspensión será visible, durante el período de suspensión, a partir del servicio que proporcione la información sobre el estatuto del certificado.

6.  La Comisión podrá, mediante actos de ejecución, establecer números de referencia de normas relativas a los certificados cualificados de sello electrónico. Se presumirá el cumplimiento de los requisitos establecidos en el anexo III cuando un certificado cualificado de sello electrónico se ajuste a dichas normas. Estos actos de ejecución se adoptarán con arreglo al procedimiento de examen contemplado en el artículo 46, apartado 2. ▌

Artículo 37

Dispositivos de creación de sellos electrónicos cualificados

1.  El artículo 28 se aplicará mutatis mutandis a los requisitos de los dispositivos de creación de sellos electrónicos cualificados.

2.  El artículo 29 se aplicará mutatis mutandis a la certificación de los dispositivos de creación de sellos electrónicos cualificados.

3.  El artículo 30 se aplicará mutatis mutandis a la publicación de una lista de dispositivos de creación de sellos electrónicos cualificados certificados.

Artículo 38

Validación y conservación de los sellos electrónicos cualificados

Los artículos 31, 32 y 33 se aplicarán mutatis mutandis a la validación y conservación de los sellos electrónicos cualificados.

Con esta normativa, parece claro que los certificados idóneos para firmar facturas, en el momento actual, son los de sello electrónico de empresa.

Sin embargo, pese a lo indicado en el artículo 6. Punto general de entrada de facturas electrónicas, en su apartado 3:

3. El punto general de entrada de facturas electrónicas permitirá el envío de facturas electrónicas en el formato que se determina en esta Ley. El proveedor o quien haya presentado la factura podrá consultar el estado de la tramitación de la factura.

Lo cierto es que por algún ignorado motivo, el FACE (Punto General de Entrada de Facturas Electrónicas de la Administración General del Estado) no admite facturas firmadas haciendo uso de certificados de sello de empresa.

Si alguien lo sabe, se agradece que lo indique en los comentarios del artículo.

Mientras, continuaré estudiando la interesante información publicada en el portal de la administración electrónica, sobre el FACE. Si encuentro la razón actualizaré el artículo.

Consultoría y Auditoría sobre firma digitalizada en paises europeos y latinoamericanos


Certificación de soluciones

Certificación de soluciones

Hemos insistido desde EADTrust en la importancia de seguir ciertos criterios para que una firma manuscrita captada en un dispositivo como tablet (dispositivo autónomo) o tableta (dispositivo asociado a un equipo de sobremesa) tenga valor legal.

El cumplimiento de los criterios no conviene reducirlo a una mera declaración de la parte que implementa la solución sino que es preferible llevar a cabo una auditoría independiente que lo acredite.

En EADTrust hemos definido 10 criterios (a modo de “10 mandamientos”) que permitirían acreditar una implementación diligente y con respeto a las mejores prácticas para preservar entre otros aspectos, la confidencialidad de los datos biométricos, la gestión de un soporte duradero y la simetría probatoria (el método por el que el firmante puede acreditar que un documento electrónico está o no refrendado con su firma manuscríta verdadera).

Aportamos consultores a los proyectos, para encontrar la mejor funcionalidad enmarcada en las arquitecturas propia de cada entidad, maximizando el valor legal y minimizando el esfuerzo de despliegue.

También hemos formado auditores para llevar a cabo las auditorías en base a las cuales emitimos informes de cumplimiento y expedimos los certificados de calidad.

Sin embargo, en las versiones iniciales de nuestra metodología hicimos especial hincapié en demostrar que las firmas digitalizadas avanzadas están perfectamente alineadas con la legislación española de firma electrónica y con la legislación procesal en materia mercantil y civil (subsidiaria de otras normativas procesales) referida al cotejo de letras y valoración pericial de las firmas digitalizadas.

Este esfuerzo inicial se justificaba porque con frecuencia debíamos explicar a los juristas de las entidades nuestra metodología y nuestro enfoque legal y justificar a los responsables técnicos de los proyectos  los cambios que pedíamos en las arquitecturas técnicas y en los procesos involucrados en los sistemas que debían usar las firmas digitalizadas avanzadas.

Como nuestros primeros clientes eran españoles, tenía pleno sentido nuestro planteamiento de que los principios de la FMDA (Firma Manuscrita Digitalizada Avanzada) se ajustaban como un guante a la legislación española.

Desde hace unos meses hemos realizado un esfuerzo significativo en identificar las normativas de diferentes países europeos y latinoamericanos que nos permiten demostrar que nuestros principios pueden ser considerados “invariantes legales” aplicables a diferentes entornos legales y jurisdicciones.

Ello se debe, en buena medida, a que se han identificado las mejores prácticas mundiales de gestión de evidencias electrónicas y en un aspecto relevante, a que en los países con legislación sobre firma electrónica el articulado tienes aspectos comunes compatibles con el uso de la criptografía de clave pública.

Y en los países en los que esa legislación no existe o está incompleta, la legislación procesal (que si está bien desarrollada en todo el mundo) es suficiente para permitir la aportación de pruebas con un elevado grado de inoponibilidad.

En el momento actual hemos avanzado con la normativa europea, afianzada en varias directivas y reglamentos europeos, centrándola en las legislaciones nacionales de Alemania , Francia, Grecia Portugal e Italia. Paulatinamente iremos completando otros países.

En Latinoamérica hemos ajustado nuestro modelo a las legislaciones de México, Colombia, Perú y Chile.

Nuestra tesis ahora es que los principios de la Firma Manuscrita Digitalizada Avanzada desarrollados por EADTrust se adecúan a cualquier Ley Aplicable en cualquier lugar del mundo. Llame al +34 91 7160555 para saber más sobre la firma manuscrita digitalizada.

Duración de la validez de los certificados cualificados o reconocidos


El  artículo 8 de la Ley 59/2003, de 19 de diciembre, de firma electrónica ha cambiado su redacción por la disposición final sexta de la Ley 9/2014, de 9 de mayo, General de Telecomunicaciones («B.O.E.» 10 mayo; Corrección de errores «B.O.E.» 17 mayo)

En su apartado 2, la norma indicaba:

El período de validez de los certificados electrónicos será adecuado a las características y tecnología empleada para generar los datos de creación de firma.

En el caso de los certificados reconocidos este período no podrá ser superior a cuatro años.

Tras la modificación, queda:

2. El período de validez de los certificados electrónicos será adecuado a las características y tecnología empleada para generar los datos de creación de firma. En el caso de los certificados reconocidos este período no podrá ser superior a cinco años.

 

Sin embargo, pese a lo que diga la Ley, lo cierto es que no existe limitación específica en cuanto a la duración de los certificados cualificados (o reconocidos) ya que el recientemente aprobado Reglamento europeo – Identificación electrónica y servicios de confianza para las transacciones electrónicas en el mercado interior (en inglés REGULATION (EU) No …/2014 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL on electronic identification and trust services for electronic transactions in the internal market) al igual que la Directiva 1999/93/EC (Directive 1999/93/EC of the European Parliament and of the Council of 13 December 1999 on a Community framework for electronic signatures ) no definen ningún límite y por tanto no puede aplicarse una restricción en un país miembro que limite la prestación de servicios de confianza de prestadores supervisados por otro.

Por poner un ejemplo, si el DNI electrónico incluyera certificados electrónicos válidos por 10 años (o la duración prevista del soporte), estaría cumpliendo el Reglamento Europeo que prima sobre la Ley española, y por tanto serían legales.

Una pena realizar una modificación de la Ley de Firma electrónica por una tontería, y que encima sea inútil.

 

 

Voto electrónico y Foro electrónico de accionistas


El primer semestre del año está lleno de juntas de accionistas. Desde que las sociedades mercantiles, limitadas, anónimas, cotizadas cierran el ejercicio, muestran sus resultados al mercado, a la prensa y a sus accionistas y plantean nuevos retos y nuevas iniciativas respecto a las que piden aprobación a los dueños de la sociedad, partícipes y accionistas.

Y cada vez en mayor medida usan medios telemáticos como via de comunicación.

Ciertamente, lo que empezó como iniciativa innovadora de algunas sociedades mercantiles, ahora se exige por la Ley de Sociedades de Capital (LSC), de forma generalizada, y ya es habitual encontrarse con convocatorias de celebración de juntas de accionistas a través de la página web de la entidad, con la posibilidad de acceder a abundante información sobre retribuciones, políticas medioambientales, informes de auditoría en la página web, lo que hace a las empresas más transparentes para que la decisión de invertir de quienes son sus inversores encuentre justificación y se imbuya de expectativas de futuro.

A veces, tanta transparencia es un problema, porque la información llega también a los competidores, pero como con la «fórmula de la Coca Cola», lo importante no son los ingredientes, sino como se gestiona todo el sistema hasta que el producto o servicio llega al comprador.

El reto de las sociedades es desplegar sistemas como el voto electrónico, el foro electrónico de accionistas, las notificaciones fehacientes (para dejar constancia del envío de determinada información a los accionistas que la solicitan) o de acreditar la publicación de anuncios societarios en la página web cumpliendo todas las exigencias de LSC.

Contacten con EADTrust, para saber como resolverlo, en el 91 7160555 o 902 365 612. Con la novedad, desde 2014 de que se incluye información sobre el anuncio societario en el periódico económico «Cinco Dias» como opción para los sistemas de comprobación on-line de publicación ininterrumpida de anuncios societarios en la página web de la sociedad.

 

 

Historia de NCR


Hace unos años trabajé en NCR y me sentí orgulloso de formar parte de una entidad tan significativa en la historia de la informática. Hice buenos amigos y aprendí gran parte de lo que sé sobre ventas y gestión comercial. Tuve ocasión de trabajar con grandes profesionales y dejar mi impronta impulsando las tecnologías de Internet en banca, en una época en la que se empezaban a vislumbrar sus posibilidades.

Recojo a continuación una pequeña historia de NCR, en América y en España, que seguro sabrán completar los lectores de este blog.

La historia de NCR es una historia de ideas e innovaciones en tecnología de productos, servicio a los clientes, métodos de ventas y de promoción, y de ventajas sociales de los empleados que han contribuido al logro del modo en que ahora el mundo dirige los negocios. 

Jonh Henry Patterson aceptó la caja registradora mecánica como un avance tecnológico significativo en el registro de las transacciones de los negocios, y en 1884 fundó la compañía conocida actualmente como NCR. Después de más de un siglo, NCR está en primera línea de la explosión de la tecnología, como una de las principales compañías de Informática del mundo

Más de 100 años de grandes ideas

rittyEl cajón del dinero y las notas manuscritas fueron las herramientas universales de los negocios hasta los años 1880. Hasta entonces, los comerciantes estaban llenos de errores humanos, los hurtos y las pérdidas de los beneficios resultantes. En 1879, James y John Ritty de Dayton, Ohio, inventaron la caja registradora, una máquina que de manera mecánica registraba las cuentas precisas de todas las operaciones de ventas.
John H. Patterson compró dos registradoras para su pequeña tienda de minorista en 1882. En seis meses redujo su deuda y consiguió un beneficio de 5.000 dólares. Resultó convencido.

Dos años después, en 1884, Patterson y su hermano Frank, compraban un interés mayoritario en la débil firma que había adquirido las patentes de Ritty y le dieron el nombre de The National Cash Register Company. En los dos primeros años de NCR, los agentes de ventas empezaron a vender registradoras en todos los Estados Unidos y en Inglaterra. Entonces, y los años siguientes, Patterson echó por tierra la idea asumida hasta el momento de que «los vendedores nacen, no se hacen» creó unas cuantas «novedades» en los métodos de venta.

Dio a los agentes territorios exclusivos, basándose en la creencia de que se podía vender una registradora por cada 400 ciudadanos. Estableció un sistema de puntos sobre las ventas, con cuotas mensuales y anuales.
Se fundó el Club de los Cien Puntos o CPC, y se premió a los agentes destacados por su rendimiento, con premios especiales, viajes y convenciones.

pattersonOtra «novedad» que empezó a últimos de la década de 1880, fue el gran énfasis puesto en la publicidad directa,que daba apoyo a los agentes.
La formación de vendedores empezó en 1890, y el manual de Ventas conteniendo una presentación completa era aprendido de memoria por todos los agentes en todo el mundo. El periódico The Saturday Evening Post decía, «Patterson cambió a los vendedores de olor puro y a whisky en una nueva raza de hombres».

En 1917, la revista Forbes juzgaba a John Patterson como uno de los mayores empresarios americanos. Al mismo tiempo, muchos antiguos hombres de NCR, incluido Thomas J. Watson Senior, de IBM Corporation, extendieron los métodos de la Compañía por todos los Estados Unidos y el resto de mundo.

Las grandes ideas viajan por el mundo

allinsonEl inglés J.W. Allinson vio la caja registradora de ruedas autosumadoras, en una exposición de Chicago en 1885 y pidió una adaptada a la moneda británica, para su negocio de Liverpool. Se convirtió en el primer agente internacional de NCR, vendiendo en Reino Unido, Francia, Bélgica y Holanda. Al final de los años 1880, había agentes establecidos en Europa Occidental y del Sur, Oriente Medio, Sudamérica y Australia. NCR entró en el Lejano Oriente al establecer una oficina en Yokohama, Japón, en 1906, aunque un agente general vendía registradoras allí desde 1897. También se vendían registradoras en China y otras zonas de Oriente a últimos de la década de 1880. Desde sus primeros día fue norma de NCR contribuir al bienestar económico y respetar a las gentes, las costumbres y las prácticas de los países en los que operaba.

En 1889 se nombra agente en España a C.W. Crouse, que se establece en Valencia. La primera «National» se vendió en 1896 para un cliente de Bilbao.

El bienestar de los empleados: «Es rentable»

nuevoedificio-ncrCuando en 1894 se devolvieron a la fábrica de Dayton de NCR, desde el exterior del país, cajas registradoras defectuosas por valor de 50.000 dólares, John H. Patterson trasladó su despacho al piso de la fábrica. Después de trabajar en un ambiente de oscuridad, ordenó la construcción de un nuevo edificio para la fábrica, «con tanto cristal como aguantasen las estructuras», para que entrasen el aire fresco y la luz. Instaló duchas, baños, dispensarios médicos, fuentes de agua, comedores y lugares para ejercicio físico. Patterson creía que tales ventajas eran rentables por sí mismas, por la calidad del trabajo realizado por los empleados incentivados.

Sus innovaciones en el bienestar empresarial recibieron la atención nacional e internacional y fueron adoptadas por muchas otras compañías.

El fundador de NCR fue también un pionero en recompensar la iniciativa, mediante el Sistema de Sugerencias NCR. Estimuló a los empleados a entregar sus ideas para mejorar los productos y las operaciones de la empresa, e hizo que colocasen el lema «Piense» en los años 1890, que inspirase ese esfuerzo. El mensaje «Piense» fue después adoptado por IBM y otras compañías.

Si bien algunos los veían como un radical, Patterson, en su momento, fue ampliamente reconocido como campeón de las prácticas de dirección bien informada.

Tradición en investigación y desarrollo

Los productos de NCR han estado siempre en constante evolución. En 1897 la Compañía ofrecía doce tipos de la caja registradora básica y noventa modelos. Los refinamientos de la primera caja National se basaron en las necesidades de los clientes, las sugerencias de los empleados, y los adelantos de la ingeniería, tales como la eletrificación de la caja registradora por Charles F. Kettering en 1906.

En 1921 el desarrollo de la «madre de las máquinas» la NCR Clase 2000 abrió una era de nuevos productos. Combinando los principios de la caja registradora y de la máquina de contabilidad, el diseño básico de la clase 2000 sirvió de pauta en el desarrollo de nuevos productos durante los 25 años siguientes. Estos con el tiempo incluyeron la Post-Tronic, primer producto electrónico de NCR. La Clase 2000 básica se fabricó y comercializó en varias formas entre 1921-73, convirtiéndose en el producto NCR de más larga vida de fabricación.

La capacidad de añadir una descripción histórica a la anotación de los dólares y centavos se consiguió al comprar la compañía de Sumadoras-Máquinas de escribir Ellis en 1929. Una máquina híbrida, la Clase 3000, se añadió a continuación a la línea de productos, siendo la primera máquina comercial que incorporó los principios de Charles Babbage, el «padre de la informática», para el cálculo rápido y la impresión de complejas tablas matemáticas. En 1943 las máquinas sumadoras ampliaron la línea de productos, cuando NCR compró la Compañía Allen-Wales Adding Machine.

Entrada temprana en la electrónica

La entrada de NCR en el campo de la electrónica se adelantó a los comienzos de la era moderna del ordenador. En 1938, la Compañía creó un departamento especial de investigación para que estudiase el posible uso de los tubos de vacío y de los relés en las máquinas de oficina. En 1939 este grupo había fabricado un modelo de sumadora electrónica, y en 1942 ya estaba funcionando una computadora electrónica.

La Segunda Guerra Mundial interrumpió estos proyectos, y el equipo de investigación se puso al servicio del Gobierno de los Estados Unidos, para que trabajase en aparatos de recuento electrónico y en otros proyectos.

Sin embargo, en el período de postguerra NCR reanudó su investigación en la aplicación de la electrónica a las máquinas de oficina. Estos trabajos consiguieron patentes en tecnologías relacionadas con los ordenadores, tales como los tambores magnéticos de memoria incorporados a las máquinas de contabilidad, diversas pantallas e indicadores digitales electrónicos, y los sistemas de verificación de firmas, utilizando señales de vídeo, transmitidas con métodos especiales sobre cables eléctricos.

En 1952 NCR adquirió Computer Research Corporation of Hawthorne, California, que se convirtió en la División Electrónica de NCR al año siguiente.
En su momento,Stanley C. Allyn, Presidente de NCR, dijo: «No hay duda de que la electrónica jugará un papel importante en el diseño de equipos de mantenimiento de registros».

Crecimiento multinacional

La situación multinacional de NCR, creada por primera vez en los años 1880, se reforzó enormemente después de la Segunda Guerra Mundial, cuando la Compañía se enfrentó con éxito a la constante demanda mundial de equipos de tratamiento de la información. Las nuevas fábricas y la dedicación de los empleados de Europa y Asia destrozadas por la guerra ayudaron a reimplantar y ampliar los negocios de NCR.

Son numerosas las anécdotas de los esfuerzos heróicos de empleados para reconstruir las organizaciones de NCR. El director de la fábrica de NCR en Berlín, de antes de la guerra, por ejemplo, cargó los fotograbados, las herramientas y las pequeñas máquinas en camiones, y las trasladó en dos ocasiones, bajo la protección de la noche, delante mismo de las tropas soviéticas que ocupaban la entonces Alemania del Este. Salvó su valiosa carga para la nueva fábrica de Augsburgo, establecida en 1946 en la zona americana.

En Japón, el hombre que luego llegó a ser Presidente de NCR Japón sufrió una gran pérdida para recoger las herramientas y la maquinaria que ayudase a abrir de nuevo la oficina de la Compañía en Tokio en 1949. También fue un gran instrumento en la expansión posterior de las operaciones japonesas.

En 1936 se constituye oficialmente ante notario, con el nombre de Cajas Registradoras National, S.A. por Pedro Delfino, como director de la Compañía, con domicilio social en Madrid. Tras diversos traslados de la sede en 1974 se inaugura el edificio NCR en la calle Albacete, 1 de Madrid y a él se traslada la sede social. Desde sus comienzos, los equipos NCR obtuvieron una favorable acogida y España ha sido tradicionalmente uno de los más importantes mercados de NCR en Europa.

Los primeros computadores

post-tronicEl primer producto electrónico de gran éxito de NCR fue la facturadora para bancos, Post-Tronic, desvelada a los banqueros en 1956; usaba tarjetas magnéticas para la verificación de cuentas registradas.

La venta de más de 100 millones de dólares estimuló el desarrollo de los productos electrónicos de proceso de datos, incluido el sistema NCR 304. Introducido en 1959, fue el primer computador de propósito general, transistorizado y compacto.

En 1960 el NCR 390 se convirtió en el primer computador de la Compañía de bajo costo y comercializado a gran escala. La caja registradora Sales-Tronic proporcionaba una original entrada de datos al 390, mediante grabadoras de cinta perforada. En 1961 el lector óptico 420 leía automáticamente e introducía en los computadores los datos de los diarios de las cajas registradoras y de las cintas de las máquinas de contabilidad.

También se puso a la venta en los primeros años de 1960, el NCR 315, de gran capacidad, ordenador de propósito general, con aplicaciones en muchos tipos de áreas de tratamiento de la información.

El 315, com memoria de acceso salteado, fue el primero de la industria en disponer de conexión directa con cajeros automáticos. Un modelo posterior fue el primer producto que dispuso de memoria de varillas de película finísima.

La serie NCR Century se anunció en 1967, y el sistema número cinco mil se instaló en 1974, haciendo del Century una de las familias de ordenadores más ampliamente vendidas y usadas de su tiempo.

La investigación en la tecnología de los circuitos integrados de silicona empezó en NCR en los años 60.
La Corporación creó como consecuencia nuevas generaciones de terminales usando la tecnología avanzada de los MOS empezando con el terminal para minoristas NCR 280 en 1970.

La NCR Corporation

A finales de los 60, los rápidos cambios de la tecnología, incluidos los nuevos desarrollos de microelectrónica, habían convertido en anticuados los productos electromecánicos tradicionales. En un momento en que la Compañía se enfrentaba al reto más difícil de su historia, el Consejo de Administración nombró a William S. Anderson como Presidente de misma en 1972.

Anderson advirtió que los efectivos de NCR, una organización de ventas y servicios grande y competente en todo el mundo, amplios conocimientos de las necesidades del proceso de datos por parte de sus mercados especializados, y de los nuevos productos electrónicos en desarrollo para atender a estos mercados, podían utilizarse para conseguir un significativo período de progreso para la Compañía y el personal de la misma.

Una estrategia general de la Corporación para conseguir esa meta, dio a NCR una dirección bien definida a través de los años 70, y en 1974 se adoptó un nombre nuevo, NCR Corporation, que reflejase esa dirección.

Los cambios que afectaban a las fábricas de todo el mundo incluían la descentralización de la ingeniería y de la fabricación, la reorganización del marketing por Divisiones especializadas según los sectores industriales, gran énfasis en la formación de Mandos y mayores inversiones en I+D.

Además, las adquisiciones incrementaron la capacidad de NCR en Comunicaciones (Comten, Inc.); terminales de pantalla (Applied Digital Data Systems), micrografía (Quantor Corp.) y sistemas para ambientes fabriles (Data Pathing Inc.). Se organizaron para ampliar aún más los mercados de la Compañía, la Organización Independiente de Marketing, NCR Telecomunication Services, Inc., la División de Sistemas de Oficina y la Difivisón de Microelectrónica.

Anderson llegó a ser Jefe Ejecutivo en 1973, y Presidente del Consejo de Administración en 1974. Charles E. Exley, Jr., fue nombrado Presidente de la Compañía en 1976, y jefe del Ejecutivo en 1983. Este equipo situó a NCR Corporation como una fuerza principal en el sector de la informática actual.

En  1974  NCR comercializó los primeros escáneres de código de barras.

En 1982 se lanza al mercado el primer supermicroordenador NCR Tower, situando a NCR como compañía pionera en ofrecer sistemas estándares y arquitectura de sistemas abiertos para el mercado informático.

Entre 1989 y 1990 se lanzó la serie NCR 3000. Una gama completa de ordenadores donde estaban representados todos los niveles, desde el portátil NotePad con tecnología de reconocimiento de caracteres Pen Computing hasta sistemas de proceso paralelo masivo. Significó, además, la adopción de los procesadores Intel, los Sistemas Abiertos, los estándares de la industria y la filosofía Cliente/Servidor. NCR ofrece entonces a sus clientes ordenadores, terminales y sistemas informáticos y todos los servicios con ellos relacionados.

En 1991, siendo aún Presidente Charles E. Exley, NCR es adquirida por la multinacional AT&T pasando a convertirse en la unidad de negocio informático de la misma. La Compañía inicia un proceso de reorganización y reestructuración para adaptarse a las necesidades de competitividad de nuestros días.

En 1991  NCR adquiere Teradata Corporation y su tecnología de procesamiento paralelo extraordinariamente avanzada y única. NCR Teradata se convierte en la base de datos de mayor eficacia y potencia del mundo para data warehousing.

En 1995, Lars Nyberg es nombrado Chairman y CEO de la rebautizada AT&T GIS. AT&T anuncia la independencia empresarial de AT&T GIS a finales de 1996. Fernando Reyes es nombrado entonces Director General para el Area Iberia (España y Portugal). En los primeros días del año 1996 la Compañía anuncia la adopción de un nuevo nombre: NCR.

En 1996  AT&T GIS cambia su nombre nuevamente a NCR Corporation antes de ser transferida a los accionistas de AT&T en enero de 1997 como una compañía independiente con cotización de acciones en bolsa.

En señal de su evolución de compañía de hardware a proveedor de soluciones integrales,  en 1997 NCR adquiere Compris Technologies, Inc., un proveedor líder en automatización de almacenes y software de gestión para la industria de servicios alimenticios, y Dataworks, una compañía que desarrolla software para procesamiento de cheques.

En 1998  NCR finaliza la transferencia y venta de sus activos de fabricación de hardware informático a Solectron. Así, reafirma su compromiso de centrarse en la producción diferenciada de software y componentes de servicios de su cartera de soluciones para diferentes mercados.

En 2000  NCR adquiere el proveedor de CRM Ceres Integrated Solutions y la compañía 4Front Technologies, y profundiza aun más su oferta de soluciones de NCR en mercados clave.

En 2003 NCR recibe la concesión de patente US6539363  para la captura electrónica de la firma.

En 2005, tras el éxito de la adquisición en 2004 del líder en autoservicio de viajes Kinetics, NCR refuerza su cartera de servicios de autoservicio al adquirir Galvanon, un proveedor de soluciones para la industria de la salud.

En 2007 se separa en dos compañías al independizar la división de DataWarehouse Teradata

En 2009 traslada su sede central a Duluth, Georgia, lo que constituyó una sorpresa tras los 125 años en los que la sede central se situó en Dayton, Ohio.

En 2009, NCR se situó como el segundo mayor operador de kioskos de alquiler de DVDs de Norteamérica tras adquirir The New Release and DVD Play.

En 2010, NCR adquirió la empresa de señalización digital Netkey.

En 2010 NCR introduce el  Módulo Escalable de Depósitos ( Scalable Deposite Module, SDM) tecnología que hace que los depósitos en cajeros automáticos sean dos veces más rápidos al permitir realizar los depósitos en efectivo y con cheques sin sobre.

En 2011,  NCR culmina la compra por 1.000 millones de dólares de Radiant Systems, extendiendo todavía más su presencia en los mercados de  hospitality (hoteles y restauración)  and tiendas especializadas.

En 2012  NCR lanza NCR Silver, solución de punto de venta basado en la nube TIC  orientado a pequeños negocios.

En 2013 adquiere por 650 millones de dólares la compañía Retalix, incorporando una innovadora gama de productos de software  y servicios orientados al sector de la distribución comercial.

En 2014 NCR adquiere por 1.650 millones de dólares Digital Insight, entidad especializada en entornos multiplafamorma para la gestión de transacciones de pago y de banca online que proporciona una plataforma  SaaS para ayudar a las entidades financieras a transformar sus modelos de negocio físicos y digitales.

 

Balance e inicio del Futuro

Durante más de siglo y medio NCR ha contribuido de manera significativa a la revolución de los métodos de la banca y de los negocios en general, con productos que van desde las primeras registradoras manuales hasta los productos electrónicos más avanzados como son los grandes ordenadores de proceso paralelo masivo, los sistemas de autoservicio financiero o los terminales punto de venta.

Durante todos los períodos intermedios del cambio, sin embargo, la meta general de NCR de ayudar a determinar la forma en que las empresas hacen negocios, ha permanecido siendo siempre la misma. La Compañía ha continuado desarrollando, fabricando, comercializando, instalando y dando servicio a sus Clientes de forma que le ha permitido alcanzar el liderazgo absoluto en importantes sectores de mercado.

NCR, en la actualidad, es un líder mundial en soluciones de tecnología de información. Su enorme potencial tecnológico le permite desarrollar una completa gama de soluciones, productos y servicios para ayudar a sus clientes de todos los sectores de actividad. También aprovecha su experiencia y presencia en el mercado para proporcionar soluciones informáticas dirigidas a industrias específicas. El enfoque pleno de la Compañía está la Satisfacción de sus Clientes.

 

 

 

¿Cómo llevamos la adaptación a SEPA?


Aunque el 1 de febrero de 2014 era la fecha inicialmente prevista para eliminar las modalidades no-SEPA de transferencias y domiciliaciones bancarias que se realicen en España y el resto de los países miembros de la Unión Europea, lo cierto es que el cambio no está siendo tan radical como parecía, empezando por el retraso de algunas entidades financieras de proporcionar los servicios adecuados para la transición a los estándares y normas SEPA (Single Euro Payments Area). Los principales beneficios que se esperan de la implantación de una Zona Única de Pagos en Euros son:

  • La desaparición de barreras para la ejecución de pagos internacionales, especialmente a nivel de costes.
  • La posibilidad de utilizar una sola cuenta bancaria para operaciones en euros dentro de la zona SEPA, sin requerir abrir cuentas en varios paises.
  • Una cierta mayor protección para los usuarios de servicios de pago.
  • El uso de estándares comunes, que permite mejoras de eficiencia en los procesos de ejecución de pagos, cuando se trata de operaciones internacionales o de empresas multinacionales..

Los principales aspectos a tener en cuenta para la adaptación, son los siguientes:

  • El IBAN será el identificador único de cualquier cuenta de pago en SEPA, reemplazando a los actuales identificadores de cuenta nacionales (el CCC en el caso español). Muchas entidades ofrecen servicios gratuitos de conversión para cuentas españolas
  • Nuevo formato de intercambio de información entre las Empresas y las Entidades bancarias.
  • Adeudos Directos SEPA en fichero electrónico, orientado a particulares– Esquema básico (core): Serie normas y procedimientos bancarios Cuaderno Nº 19-14.
  • Adeudos Directos SEPA en fichero electrónico, orientado a empresas – Esquema B2B (Business to Business): Serie normas y procedimientos bancarios Cuaderno Nº 19-44.

Puede ampliar información sobre la Diferencias entre la modalidad B2B y la básica del mandato SEPA de adeudo por domiciliaciones Creación de un mandato. El mandato es el medio por el que el deudor autoriza y consiente al acreedor a:

  • Iniciar los cobros mediante el cargo en la cuenta indicada por el deudor.
  • Autorizar a la entidad del deudor a cargar en su cuenta los adeudos presentados al cobro por la entidad bancaria del acreedor.

El mandato, que tendrá una referencia única, debe estar suscrito por el deudor como titular de la cuenta de cargo o persona en disposición de poder otorgado por éste, antes de iniciar el cobro de los adeudos. Puede ampliar información sobre

Las adaptaciones tendrán unos costes asociados para las entidades bancarias y para las empresas de difícil recuperación, ya que no producirán cambios significativos en el aumento de los negocios ni el incremento de los márgenes de beneficio. Por ello, el mejor enfoque es aprovechar la necesidad de cambio para acometer algún otro cambio técnico y organizativo que sí se traduzca en reducción de costes o en mejora de posición competitiva.

Entre los ejemplos de posibles soluciones, cabe la posibilidad de implantar sistemas de firma digitalizada o de firma vocal para la creación de los mandatos: Una de las características de la normativa SEPA es que, a partir del 1 de febrero de 2014, es obligatorio para las empresas recabar la firma de los clientes que contraten un servicio que será cobrado a través de un adeudo bancario. Sin el consentimiento expreso del cliente con alguna modalidad de firma, manuscrita o electrónica, la empresa prestadora del servicio no podrá solicitar a ninguna entidad bancaria el cobro de sus recibos, o podrá ver como los recibos son devueltos por el acreedor. Existen diferentes posibilidades para la obtención de la firma de los clientes:

  • Mediante la firma del mandato en papel.
  • Mediante la firma del mandato por medios electrónicos, a través de Internet y/o dispositivos móviles.
  • Mediante firma mediante un sistema de confirmación por llamada telefónica que esté diseñado con las debidas garantías.

Por otra parte, SEPA establece que la información contenida en los mandatos, incluida las firmas, debe quedar almacenada en poder de la empresa acreedora mientras esté en vigor el periodo de reembolso, así como durante los plazos que establezca la Ley para la conservación de documentos una vez cancelado.

También puede ser una gran oportunidad para que las empresas comiencen la adaptación a la Ley 3/2014, de 27 de marzo, por la que se modifica el texto refundido de la Ley General para la Defensa de los Consumidores y Usuarios.  Ver más en este artículo sobre Firma vocal como soporte duradero para call centers

EBML: Extensible Binary Markup Language


EBML,  Extensible Binary Meta-Language (o Extensible Binary Meta Language) es un nuevo lenguage de marcado de información conceptualmente semejante al XML pero diseñado para ser más compacto y codificar datos binarios.

Muchos lo ocnsideran una variante del concepto de «reinventar la rueda» puesto que  esta necesidad está tradicionalmente cubierta con la notación ASN.1 Abstract Syntax Notation One (notación sintáctica abstracta 1).

Sin embargo es interesante conocerla, por lo que se incluye seguidamente un borrador de la especcificación:

 

RFC v1.0

 
Draft                                                       M. Nilsson
Document: ebml-1.0.txt                                 15th March 2004
 
 
		  Extensible Binary Markup Language
 
Copyright
 
   Copyright (C) Martin Nilsson 2004. All rights reserved.
 
 
Abstract
 
   The extensible binary markup language, EBML, is a binary language
   for storing hierarchical, typed in data in a compact, yet easily
   parsed format.
 
 
About this document
 
   This document is currently in its draft stage and is subject to
   changes. The contents should not be relied upon for
   implementational purposes.
 
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
   this document are to be interpreted as described in RFC 2119
   [RFC2119].
 
   The definitions in this document uses ABNF [ABNF]. Note that string
   terminals are case insensitive in ABNF. The interpretation of
   binary values has been slightly altered so that every bit must be
   explicitly printed, e.g. %b0 is one zero bit while %b000 represents
   three zero bits. The following (re)definitions are used throughout
   this document.
 
     BIT  = %b1 / %b0
     BYTE = OCTET
     WSP  = SP / HTAB / CR / LF
 
 
1.  Introduction
 
   The Extensible Binary Markup Language EBML was designed to be a
   simplified binary version of XML for the purpose of storing and
   manipulating data in a hierarchical form with variable field
   lengths. Specifically EBML was designed as the framework language
   for the video container format Matroska. Some of the advantages of
   EBML are:
 
   - Possibility for compatibility between different versions of
     binary languages defined in EBML. A rare property of binary
     format that otherwise often needs careful consideration
     beforehand.
 
   - Unlimited size of data payload.
 
   - Can be both generated and read as a stream, without knowing the
     data size beforehand.
 
   - Often very space efficient, even compared to other binary
     representations of the same data.
 
   Some of the EBML disadvantages are:
 
   - No references can be made between EBML files, such as includes or
     inherits. Every EBML document is a self contained entity. The
     data stored in EBML may of course reference other resources.
 
   - No compositioning process to merge two or more EBML languages
     currently exists.
 
   This document describes the EBML binary syntax, its semantic
   interpretation and the syntax of a textual document type definition
   format used to define the rules and constraints of an EBML
   language. BNF is used throughout this document to augment the
   description and make it more formalized. It must however be noted
   that two different formats are described in this document, with two
   different BNFs. One for the binary format in chapter 2 and one for
   the document type definition in the rest of the document. To avoid
   confusion different token names has been chosen. The BNFs can be
   viewed in full in the appendices.
 
 
2.  Structure
 
   Syntactically an EBML document is a list of EBML elements. Each
   element has three parts; an element ID, a size descriptor and the
   element data payload. The element data payload is then either data,
   implicitly typed by the element ID, or a list of EBML elements.
 
     EBML       = *ELEMENT
     ELEMENT    = ELEMENT_ID SIZE DATA
     DATA       = VALUE / *ELEMENT
     ELEMENT_ID = VINT
     SIZE       = VINT
 
   EBML uses big endian/network order byte order, i.e. most
   significant bit first. All of the tokens above are byte aligned.
 
 
2.1.  Variable size integer
 
   For both element ID and size descriptor EBML uses a variable size
   integer, coded according to a schema similar to that of UTF-8
   [UTF-8] encoding. The variable size integer begins with zero or
   more zero bits to define the width of the integer. Zero zeroes
   means a width of one byte, one zero a width of two bytes etc. The
   zeroes are followed by a marker of one set bit and then follows the
   actual integer data. The integer data consists of alignment data
   and tail data. The alignment data together with the width
   descriptor and the marker makes up one ore more complete bytes. The
   tail data is as many bytes as there were zeroes in the width
   descriptor, i.e. width-1.
 
     VINT           = VINT_WIDTH VINT_MARKER VINT_DATA
     VINT_WIDTH     = *%b0
     VINT_MARKER    = %b1
     VINT_DATA      = VINT_ALIGNMENT VINT_TAIL
     VINT_ALIGNMENT = *BIT
     VINT_TAIL      = *BYTE
 
   An alternate way of expressing this is the following definition,
   where the width is the number of levels of expansion.
 
     VINT = ( %b0 VINT 7BIT ) / ( %b1 7BIT )
 
   Some examples of the encoding of integers of width 1 to 4. The x:es
   represent bits where the actual integer value would be stored.
 
   Width  Size  Representation
     1    2^7   1xxx xxxx
     2    2^14  01xx xxxx  xxxx xxxx
     3    2^21  001x xxxx  xxxx xxxx  xxxx xxxx
     4    2^28  0001 xxxx  xxxx xxxx  xxxx xxxx  xxxx xxxx
 
 
2.2.  Element ID
 
   The EBML element ID is encoded as a variable size integer with, by
   default, widths up to 4. Another maximum width value can be set by
   setting another value to EBMLMaxIDWidth in the EBML header. See
   section 5.1. IDs are always encoded in their shortest form, e.g. 1
   is always encoded as 0x81 and never as 0x4001. This limits the
   number of IDs in every class with the number of IDs in the previous
   classes. Furthermore, values with all data bits set to 1 and all
   data bits set to 0 are reserved, hence the effective number of IDs
   are as follows for different widths. Note that the shortest
   encoding form for 127 is 0x407f since 0x7f is reserved.
 
   Class  Width  Number of IDs
     A      1    2^7-2     =         126
     B      2    2^14-2^7  =      16 256
     C      3    2^21-2^14 =   2 080 768
     D      4    2^28-2^21 = 266 338 304
 
 
2.3.  Element data size
 
   The EBML element data size is encoded as a variable size integer
   with, by default, widths up to 8. Another maximum width value can
   be set by setting another value to EBMLMaxSizeWidth in the EBML
   header. See section 5.1. There is a range overlap between all
   different widths, so that 1 encoded with width 1 is semantically
   equal to 1 encoded with width 8. This allows for the element data
   to shrink without having to shrink the width of the size
   descriptor.
 
   Values with all data bits set to 1 means size unknown, which allows
   for dynamically generated EBML streams where the final size isn't
   known beforehand. The element with unknown size MUST be an element
   with an element list as data payload. The end of the element list is
   determined by the ID of the element. When an element that isn't a
   sub-element of the element with unknown size arrives, the element
   list is ended.
 
   Since the highest value is used for unknown size the effective
   maximum data size is 2^56-2, using variable size integer width 8.
 
 
2.4.  Values
 
   Besides having an element list as data payload an element can have
   its data typed with any of seven predefined data types. The actual
   type information isn't stored in EBML but is inferred from the
   document type definition through the element ID. The defined data
   types are signed integer, unsigned integer, float, ASCII string,
   UTF-8 string, date and binary data.
 
     VALUE = INT / UINT / FLOAT / STRING / DATE / BINARY
 
 
     INT = *8BYTE
 
   Signed integer, represented in two's complement notation, sizes
   from 0-8 bytes. A zero byte integer represents the integer value 0.
 
 
     UINT = *8BYTE
 
   Unsigned integer, sizes from 0-8 bytes. A zero byte integer
   represents the integer value 0.
 
 
     FLOAT = *1( 4BYTE / 8BYTE / 10BYTE )
 
   IEEE float [FLOAT], sizes 0, 4, 8 or 10 bytes. A zero byte float
   represents the float value 0.0.
 
 
     PADDING = %x00
     STRING  = *BYTE *PADDING
 
   UTF-8 [UTF-8] encoded Unicode [UNICODE] string. A string MAY be
   zero padded at the end. Note that a string can be of zero length.
 
 
     DATE = 8BYTE
 
   Signed, 64-bit (8 byte) integer describing the distance in
   nanoseconds to the beginning of the millennium (2001-01-01 00:00:00
   UTC).
 
 
     BINARY = *BYTE
 
   Binary data, i.e. not interpreted at the EBML level.
 
 
3.  Semantic interpretation
 
   Every element has several properties defined in the document type
   definition, which are needed for the correct syntactical and
   semantic handling of the information. These properties are name,
   parent, ID, cardinality, value restrictions, default value, value
   type and child order.
 
   To syntactically parse EBML data we need to know the element value
   types, and to semantically interpret that data we also need to know
   the element IDs and element names. Elements can have a default
   value, so for the final presentation of the parsed EBML data
   elements that wasn't stored in the data may show up. Finally
   elements may have restrictions in terms of which parent or parents
   they may have, the number of times they may occur in the EBML data,
   their order in the document and various additional restrictions of
   their data payload.
 
 
3.1.  Name property
 
   The name is the symbolic identifier of an element and has a 1:1
   mapping to the element ID. Only alphanumeric characters and
   underscores may be used for the name. It may not start with a
   number. Names are treated case insensitive, i.e. "Name" is the same
   identifier as "name".
 
     NAME = [A-Za-z_] 1*[A-Za-z_0-9]
 
 
3.2.  Value type property
 
   There is no way of knowing whether or not to look for sub elements
   with only the information presented in the EBML data. Hence the
   element value type is the most important information in the EBML
   DTD. In addition to the value types defined in section 2.4 an
   element can also be of the type "container", which simply means
   that its content is more elements.
 
 
3.3.  ID property
 
   Every element must have an ID associated, as defined in section
   2.2.  These IDs are expressed in the hexadecimal representation of
   their encoded form, e.g. 1a45dfa3.
 
     ID = 1*( 2HEXDIG )
 
 
3.4.  Default value property
 
   Every non-container MAY be assigned a default value. If so, its
   value will be added to the interpretation of the EBML data if no
   element with another value exists in the data.
 
   As an example, consider this EBML DTD:
 
   Weight := 4101 {
     WeightValue := 41a1 uint;
     WeightUnit  := 41a2 string [ def:"kilogram" ];
   }
 
   If the Weight element only contains the WeightValue element, the
   WeightUnit element with value "kilogram" will be added when the
   information is semantically processed. A WeightUnit element with
   another value would of course override the default.
 
   The default value can also be a symbol referring back to a
   previously seen symbol. If however no such symbol has been seen,
   i.e. it has not been encoded into the EBML data and has no default
   value, the element will not be added as a child on the semantic
   level.
 
   Weight := 4101 {
     WeightValue := 41a1 uint;
     WeightUnit  := 41a2 string [ def:WeightUnit ];
   }
 
   In this example all Weight elements will use the same weight unit
   as the previous one. To ensure that the first one has a value its
   cardinality should be set to "1". See section 3.6.
 
     DEFAULT = INT_DEF / UINT_DEF / FLOAT_DEF / STRING_DEF /
               DATE_DEF / BINARY_DEF / NAME
 
     DATE_VALUE = *1DIGIT 2DIGIT 2DIGIT
                  *1(%x54 2DIGIT ":" 2DIGIT ":" 2DIGIT
                     *1( "." *1DIGIT ))
 
     INT_DEF    = *1"-" 1*DIGIT
     UINT_DEF   = 1*DIGIT
     FLOAT_DEF  = INT "." 1*DIGIT *1( "e" *1( "+"/"-" ) 1*DIGIT )
     DATE_DEF   = INT_DEF / DATE_VALUE
 
     STRING_DEF = ("0x" 1*( 2HEXDIG )) / ( %x22 *(%x20-7e) %x22 )
     BINARY_DEF = STRING_DEF
 
   The date default value is either described as the integer in its
   encoded form or in the ISO short format; YYYYMMDD followed by the
   string literal T, the time as HH:MM:DD and finally and optionally
   the fractions as .F with an optional numbers of F for
   precision. Some examples:
 
     ExampleInt := c0 int [ def:-114; ]
     ExampleUInt := c1 uint [ def:0; ]
     ExampleFloat := c2 float [ def:6.022E23 ]
     ExampleDate := c3 date [ def:20011224T15:00:03.21; ]
     ExampleBinary := c5 binary [ def:0x4944337632; ]
     ExampleString := c6 string [ def:"Sweden"; ]
 
 
3.5.  Parent property
 
   To place the elements in a hierarchical structure we need
   relational information about the elements. In the EBML DTD this is
   expressed as the possible parents an element may have. This can be
   expressed in two ways: an explicit list of allowed parents or a
   generic definition of allowed insertion depth.
 
     PARENTS = NAME / ( NAME "," PARENTS )
     LEVEL   = 1*DIGIT *1( ".." *DIGIT )
 
   An element with neither parents nor level defined is assumed to
   exist on the top level in the EBML document. An element can not
   have both a parent and a level property.
 
   The following example contains two elements, Envelope and
   Letter. The Letter must, if it exists in the document, be a child
   of Envelope and Envelop must, if it exists in the document, reside
   at the top level.
 
     Envelope := a0 container;
     Letter := b0 string [ parent:Envelope; ]
 
   The following example expresses the exact same relationships, but
   in an abbreviated syntax.
 
     Envelope := a0 container {
       Letter := b0 string;
     }
 
   The following example shows that the abbreviated syntax can't be
   used to solve all relations. Here the Letter element can be a child
   in both the Envelope element and the Trashcan element. The explicit
   parent information is merged with the one expressed with the
   abbreviated syntax.
 
     Envelope := a0 container {
       Letter := b0 string [ parent:Trashcan; ];
     }
     Trashcan := a1 container;
 
   The following example demonstrates the usage of level instead of
   parent. The element Void may occur at any place in the EBML
   document.
 
     Void  := ec binary [ level:1..; card:*; ]
 
   This is an example similar to the one above, but using containers
   instead. The children of the parent to the SHA1 element may be
   pushed down to the level where "%children;" is, i.e. if used with
   the first Letter-Envelope example the Envelope may contain an SHA1
   element which may contain an SHA1Content element which may contain
   a Letter element. A container element with a level property MUST
   NOT use undefined size as described in section 2.3, since then the
   end of the element can not be determined in all cases.
 
     SHA1 := 190babe5 container [ level:1..; card:*; ] {
        SHA1Content := 20110f container {
          %children;
        }
        SHA1Hash := 20110e binary;
     }
 
 
3.6.  Cardinality property
 
   The cardinality of an element declares how many times an element
   may occur in its current scope. By default an element may only
   occur at most once in a scope, e.g. if the element Weight has been
   defined as a child to Brick, no more than one Weight element can be
   used in every Brick element. The cardinality can however be altered
   from the default to any of the following. Note that this affects
   all scopes that the element can be inserted into.
 
     Symbol   Interpretation
       *      Zero or more occurrences.
       ?      Zero or one occurrence (default).
       1      Exactly one occurrence.
       +      One or more occurrences.
 
     CARDINALITY = "*" / "?" / "1" / "+"
 
 
3.7.  Child order property
 
   The child order property only applies to container elements. It
   simply declares if the children of the element must appear in the
   order they are defined in or not. By default this restriction is
   imposed on all children to all elements. The advantage of ordered
   elements in combination with default values is that the EBML
   decoder will know immediately once an element is skipped and can
   output the appropriate default value instead.
 
     YES     = "yes" / "1"
     NO      = "no" / "0"
     ORDERED = YES / NO
 
 
3.8.  Value restriction properties
 
   Every element may impose additional constraints upon its
   value. These constraints are only used to validate data during
   encoding and makes no difference for the decoding or interpretation
   of the encoded data. The available constraints and syntax differs
   between different types of elements.
 
 
3.8.1.  Range
 
   The range of an element value determines the allowed values that
   the element value may have. The range is expressed as one or more
   specific values or spans of allowed values, with the exception of
   floats and dates where only spans are allowed.
 
     RANGE_LIST = RANGE_ITEM / ( RANGE_ITEM S "," S RANGE_LIST )
     RANGE_ITEM = INT_RANGE / UINT_RANGE / FLOAT_RANGE /
                  STRING_RANGE / DATE_RANGE / BINARY_RANGE
 
   For integers the range is a list of values and open or closed
   ranges, e.g. "0,1", "1..5" and "..-1,1..". The final allowed range
   is a union of all listed ranges. If a value matches any of the
   listed ranges it is considered valid.
 
     INT_RANGE = INT_DEF / ( INT_DEF ".." ) / ( ".." INT_DEF ) /
                 ( INT_DEF ".." INT_DEF )
 
   Unsigned integers is similar, but can not have its range open to
   the left.
 
     UINT_RANGE  = UINT_DEF *1( ".." UINT_DEF )
 
   Floats can have both inclusive and exclusive end points of its
   ranges.
 
     FLOAT_RANGE = ( ("<" / "<="/ ">" / ">=") FLOAT_DEF ) /
                   ( FLOAT_DEF "<"/"<=" ".." "<"/"<=" FLOAT_DEF )
 
   Date ranges has the same syntax and semantics as integer ranges,
   except that the actual date can be described either as an integer
   or in ISO short format.
 
     DATE_RANGE = ( DATE_DEF ".." ) / ( ".." DATE_DEF ) /
                  ( DATE_DEF ".." DATE_DEF )
 
   String and binary ranges limits the range for each character/byte
   in the string. Note that in the string case this is for the
   unencoded unicode data, i.e. the possible range is larger than
   0-255, which is the bounding range for binary data.
 
     STRING_RANGE = UINT_RANGE
     BINARY_RANGE = UINT_RANGE
 
 
3.8.2.  Size
 
   The size of an element value is simply the number of bytes it
   occupies in its encoded form. That means that the size of a string
   element value need not be the same as the string length.
 
     SIZE_LIST = UINT_RANGE / ( UINT_RANGE S "," S SIZE_LIST )
 
 
4.  Document Type Definition
 
   The EBML document type definition, EDTD, is an ASCII based language
   that allows for the constraints and relations described in chapter
   3 to be described in a way that is both human and computer
   readable. Syntactically it consists of blocks, not unlike most
   programming languages, which contains definitions/declarations
   similar to BNF. The format is largely whitespace insensitive, case
   insensitive and supports both C-style (LCOMMENT) and C++-style
   (BCOMMENT) comments. The BNF lines in this chapter is somewhat
   simplified for readability compared to the complete BNF in Appendix
   B.
 
     COMMENT = LCOMMENT / BCOMMENT
     S       = *WSP / ( *WSP COMMENT *WSP ) ; Optional white spaces
 
   On the top level of the EDTD only three different blocks are
   currently defined, header declarations, type definitions and
   element definitions.
 
     DTD     = *( S / HBLOCK / TBLOCK / EBLOCK )
 
 
4.1.  Header declarations
 
   The meaning of the header declaration is to declare what values
   should be put into the elements of the header, should they differ
   from the default values. The header declaration block is written as
   "declare header" followed by curly brackets that encloses the block
   of statements. The actual statements are very straightforward, the
   element name followed by ":=" followed by the value, as described
   in section 3.4, followed by ";". There MUST only be one header
   declaration block in a DTD.
 
     HBLOCK    = "declare" WSP "header" S "{" *(S / STATEMENT) "}"
     STATEMENT = NAME S ":=" S DEFS S ";"
 
   Since the DocType element has no default value it MUST be declared
   in the EDTD. It is RECOMMENDED that the EBMLVersion is also
   declared. Such a declaration could look like this:
 
     declare header {
       DocType := "xhtml";
       EBMLVersion := 1;
     }
 
 
4.2.  Type definitions
 
   Type definitions is a way to create types with more mnemonic names,
   making the DTD both smaller and easier to read. The type
   definitions block is written as "define types" followed by a block
   of statements enclosed in curly brackets. Each statement is a type
   name followed by ":=" followed by the type on which this type
   should be based on, optionally followed by a list of properties,
   enclosed in angle brackets. The type names follows the same rules
   as element names, but lives in another namespace, i.e. there may be
   an element with the same name as a type.
 
     TBLOCK = "define" S WSP "types" S "{" *(S / DTYPE) "}"
     DTYPE  = NAME S ":=" S TYPE S (PROPERTIES S *1";")/";"
 
   The base type may be another defined type, as long as the
   definitions are made in order, as shown in the following example.
 
     define types {
       digits := int;
       number := digits;
     }
 
   The type definition then both allows for types as described in
   section 2.4 and NAME, which refers to types previously defined in
   the document.
 
     TYPE  = VTYPE / CTYPE
     VTYPE = "int" / "uint" / "float" / "string" / "date" /
     	     "binary" / NAME
     CTYPE = "conainer" / NAME
 
   If the type definition has no list of properties, the statement is
   ended with ";". If the it has a property list, ending the statement
   with ";" is optional.
 
     PROPERTIES = "[" S 1*PROPERTY S "]"
     PROPERTY   = PROP_NAME S ":" S PROP_VALUE S ";"
 
   Some examples:
 
     crc32 := binary [ size:4; ]
     sha1  := binary [ size:20; ]
     bool  := uint [ range:0..1; ]
     us_printable := binary [ range:32..126; ]
 
 
4.2.  Element definitions
 
   The element definitions is the real purpose of the DTD. The element
   definitions block is written as "define elements" followed by a
   block of statements enclosed in curly brackets. Each statement can
   be either a simple statement similar to the type definition
   statements, or a block statement, containing more statements.
 
     EBLOCK   = "define" WSP "elements" S "{" *(S / ELEMENT) "}"
     DELEMENT = VELEMENT / CELEMENT / "%children;"
 
   The simple statements are typically used for value elements and
   consists of a name followed by ":=", id, type and optionally
   properties.
 
     VELEMENT = NAME S ":=" S ID WSP S TYPE S (PROPERTIES S *1";")/";"
 
   The block version of the element statements are only used to
   express parent-children relations. See section 3.5.
 
     CELEMENT = NAME S ":=" S ID WSP S "container" S *1PROPERTIES S
                ("{" *DELEMENT "}")/";"
 
 
5.  EBML standard elements
 
   EBML defines a small set of elements that can be used in any EBML
   application. An EBML document MUST begin with an EBML header
   consisting of the EBML element. Generally speaking it would be
   possible to define default values to all elements in the EBML
   element in the document type definition for an application, and
   thus being able to represent the entire header without have a
   single byte written. However, in order to be able to identify EBML
   documents between applications it is REQUIRED that all EBML
   elements whose values differs from the standard defaults in this
   document, are written in EBML data. In practice that means that at
   least the DocType is always stored in all EBML documents.
 
5.1.  EBML
 
   The EBML element is a container for the EBML header.
 
     EBML := 1a45dfa3 container [ card:+; ]
 
 
5.1.1.  EBMLVersion
 
   EBMLVersion is the version of EBML to which the document conforms
   to.
 
     EBMLVersion := 4286 uint [ def:1; parent:EBML; ]
 
 
5.1.2.  EBMLReadVersion
 
   The minimum EBML version a parser has to support in order to read
   the document.
 
     EBMLReadVersion := 42f7 uint [ def:1; parent:EBML; ]
 
 
5.1.3.  EBMLMaxIDWidth
 
   The maximum width of the IDs used in this document. It is
   RECOMMENDED to not have wider IDs than 4. EBMLMaxIDWidth may be
   larger than any actual width used in the document.
 
     EBMLMaxIDWidth := 42f2 uint [ def:4; parent:EBML; ]
 
 
5.1.4.  EBMLMaxSizeWidth
 
   The maximum width of the size descriptors used in this document. It
   is RECOMMENDED to not have wider size descriptors than 8.
   EBMLMaxSizeWidth may be larger than any actual width used in the
   document.
 
     EBMLMaxSizeWidth := 42f3 uint [ def:8; parent:EBML; ]
 
 
5.1.5.  DocType
 
   An ASCII string that identifies the type of the document.
 
     DocType := 4282 binary [ range:32..126; parent:EBML; ]
 
 
5.1.6.  DocTypeVersion
 
   DocTypeVersion is the version of document type to which the
   document conforms to.
 
     DocTypeVersion := 4287 uint [ def:1; parent:EBML; ]
 
 
5.1.7.  DocTypeReadVersion
 
   The minimum DocType version an interpreter has to support in order
   to read the document.
 
     DocTypeReadVersion := 4285 uint [ def:1; parent:EBML; ]
 
 
5.2.  CRC32
 
   The CRC32 container can be placed around any EBML element or
   elements. The value stored in CRC32Value is the result of the
   CRC-32 [CRC32] checksum performed on the other child elements.
 
     CRC32 := c3 container [ level:1..; card:*; ] {
       %children;
       CRC32Value := 42fe binary [ size:4; ]
     }
 
 
5.3.  Void
 
   The void element can be used as padding to prepare for more data,
   or to fill space when data has been removed. It should simply be
   ignored when the document is interpreted.
 
     Void  := ec binary [ level:1..; card:*; ]
 
 
6.  References
 
   [ABNF] D. Crocker, P. Overell, 'Augmented BNF for Syntax
   Specifications: ABNF', RFC 2234, November 1997.
 
      <url:ftp://ftp.isi.edu/in-notes/rfc2234.txt>
 
   [CRC32] International Organization for Standardization, 'ISO
   Information Processing Systems - Data Communication High-Level Data
   Link Control Procedure - Frame Structure", IS 3309, October 1984,
   3rd Edition.
 
   [FLOAT] Institute of Electrical and Electronics Engineers, 'IEEE
   Standard for Binary Floating-Point Arithmetic', ANSI/IEEE Standard
   754-1985, August 1985.
 
   [RFC2119] S. Bradner, 'Key words for use in RFCs to Indicate
   Requirement Levels', RFC 2119, March 1997.
 
      <url:ftp://ftp.isi.edu/in-notes/rfc2119.txt>
 
   [UNICODE] International Organization for Standardization,
   'Universal Multiple-Octet Coded Character Set (UCS), Part 1:
   Architecture and Basic Multilingual Plane', ISO/IEC 10646-1:1993.
 
      <url:http://www.unicode.org>
 
   [UTF-8] F. Yergeau, 'UTF-8, a transformation format of ISO 10646',
   RFC 3629, November 2003.
 
      <url:ftp://ftp.isi.edu/in-notes/rfc3629.txt>
 
 
Appendix A.  EBML BNF
 
     EBML    = *ELEMENT
     ELEMENT = ELEMENT_ID SIZE DATA
     DATA    = VALUE / *ELEMENT
 
     VINT = ( %b0 VINT 7BIT ) / ( %b1 7BIT )
 
     ; A more annotated but less correct definition of VINT
     ;
     ; VINT           = VINT_WIDTH VINT_MARKER VINT_DATA
     ; VINT_WIDTH     = *%b0
     ; VINT_MARKER    = %b1
     ; VINT_DATA      = VINT_ALIGNMENT VINT_TAIL
     ; VINT_ALIGNMENT = *BIT
     ; VINT_TAIL      = *BYTE
 
     ELEMENT_ID   = VINT
     SIZE         = VINT
 
     VALUE = INT / UINT / FLOAT / STRING / DATE / BINARY
 
     PADDING = %x00
 
     INT    = *8BYTE
     UINT   = *8BYTE
     FLOAT  = *1( 4BYTE / 8BYTE / 10BYTE )
     STRING = *BYTE *PADDING
     DATE   = 8BYTE
     BINARY = *BYTE
 
 
Appendix B.  EBML DTD BNF
 
   ; NOTE: This BNF is not correct in that it allows for more freedom
   ; than what is described in the text. That is because a 100%
   ; correct BNF would be almost unreadable. To be correct CELEMENT
   ; would be split into one ELEMENT token for every value type, and
   ; then each and every one of them would have their own PROPERTIES
   ; definition which points out only the DEF and RANGE for that value
   ; type. Some other shortcuts are noted in comments.
 
   LCOMMENT = "//" *BYTE (CR / LF) ; *BYTE is string without CR/LF
   BCOMMENT = "/*" *BYTE "*/" ; *BYTE is string without "*/"
   COMMENT  = LCOMMENT / BCOMMENT ; Line comment / Block comment
   S        = *WSP / ( *WSP COMMENT *WSP ) ; Optional white spaces
 
   DTD      = *( S / HBLOCK / TBLOCK / EBLOCK )
   HBLOCK   = "declare" S WSP "header" S "{" *(S / STATEMENT) "}"
   EBLOCK   = "define" S WSP "elements" S "{" *(S / DELEMENT) "}"
   TBLOCK   = "define" S WSP "types" S "{" *(S / DTYPE) "}"
 
   DELEMENT = VELEMENT / CELEMENT / "%children;"
   VELEMENT = NAME S ":=" S ID WSP S TYPE S (PROPERTIES S *1";")/";"
   CELEMENT = NAME S ":=" S ID WSP S "container" S *1PROPERTIES S
              ("{" *DELEMENT "}")/";"
 
   NAME     = [A-Za-z_] 1*[A-Za-z_0-9]
 
   ID       = 1*( 2HEXDIG )
 
   TYPE     = VTYPE / CTYPE
   VTYPE    = "int" / "uint" / "float" / "string" / "date" /
              "binary" / NAME
   CTYPE    = "conainer" / NAME
 
   PROPERTIES = "[" S 1*PROPERTY S "]"
   PROPERTY   = PARENT / LEVEL / CARD / DEF / RANGE / SIZE
 
   PARENT   = "parent" S ":" S PARENTS S ";"
   PARENTS  = NAME / ( NAME S "," S PARENTS )
 
   LEVEL    = "level"  S ":" S 1*DIGIT *(".." *DIGIT) S ";"
   CARD     = "card"   S ":" S ( "*" / "?" / "1" / "+" ) S ";"
 
   ORDERED  = "ordered" S ":" S ( YES / NO ) S ";"
   YES      = "yes" / "1"
   NO       = "no" / "0"
 
   DEF      = "def"    S ":" S DEFS S ";"
   DEFS     = ( INT_DEF / UINT_DEF / FLOAT_DEF / STRING_DEF /
                DATE_DEF / BINARY_DEF / NAME )
 
   RANGE    = "range" S ":" S RANGE_LIST S ";"
   RANGE_LIST = RANGE_ITEM / ( RANGE_ITEM S "," S RANGE_LIST )
   RANGE_ITEM = INT_RANGE / UINT_RANGE / FLOAT_RANGE /
                STRING_RANGE / DATE_RANGE / BINARY_RANGE
 
   SIZE       = "size" S ":" S SIZE_LIST S ";"
   SIZE_LIST  = UINT_RANGE / ( UINT_RANGE S "," S SIZE_LIST )
 
   ; Actual values, but INT_VALUE is too long.
   INT_V   = *1"-" 1*DIGIT
   FLOAT_V = INT "." 1*DIGIT *1( "e" *1( "+"/"-" ) 1*DIGIT )
   ; DATE uses ISO short format, yyyymmddThh:mm:ss.f
   DATE_V  = *1DIGIT 2DIGIT 2DIGIT
             *1(%x54 2DIGIT ":" 2DIGIT ":" 2DIGIT *1( "." *1DIGIT ))
 
   INT_DEF    = INT_V
   UINT_DEF   = 1*DIGIT
   FLOAT_DEF  = FLOAT_V
   DATE_DEF   = INT_DEF / DATE_V
   STRING_DEF = ("0x" 1*( 2HEXDIG )) / ( %x22 *(%x20-7e) %x22 )
   BINARY_DEF = STRING_DEF
 
   INT_RANGE   = INT_V / ( INT_V ".." ) / ( ".." INT_V ) /
                  ( INT_V ".." INT_V )
   UINT_RANGE  = 1*DIGIT *1( ".." *DIGIT )
   FLOAT_RANGE = ( ("<" / "<=" / ">" / ">=") FLOAT_DEF ) /
                   ( FLOAT_DEF "<"/"<=" ".." "<"/"<=" FLOAT_DEF )
   DATE_RANGE   = (1*DIGIT / DATE_V) *1( ".." *(DIGIT / DATE_V) )
   BINARY_RANGE = UINT_RANGE
   STRING_RANGE = UINT_RANGE
 
   STATEMENT = NAME S ":=" S DEFS S ";"
 
   ; TYPE must be defined. PROPERTIES must only use DEF and RANGE.
   DTYPE     = NAME S ":=" S TYPE S (PROPERTIES S *1";")/";"
 
 
Appendix C.  EBML Standard definitions
 
   define elements {
     EBML := 1a45dfa3 container [ card:+; ] {
       EBMLVersion := 4286 uint [ def:1; ]
       EBMLReadVersion := 42f7 uint [ def:1; ]
       EBMLMaxIDLength := 42f2 uint [ def:4; ]
       EBMLMaxSizeLength := 42f3 uint [ def:8; ]
       DocType := 4282 string [ range:32..126; ]
       DocTypeVersion := 4287 uint [ def:1; ]
       DocTypeReadVersion := 4285 uint [ def:1; ]
     }
 
     CRC32 := c3 container [ level:1..; card:*; ] {
       %children;
       CRC32Value := 42fe binary [ size:4; ]
     }
     Void  := ec binary [ level:1..; card:*; ]
   }
 
 
Appendix D.  Matroska DTD
 
   declare header {
     DocType := "matroska";
     EBMLVersion := 1;
   }
   define types {
     bool := uint [ range:0..1; ]
     ascii := string [ range:32..126; ]
   }
   define elements {
     Segment := 18538067 container [ card:*; ] {
 
       // Meta Seek Information
       SeekHead := 114d9b74 container [ card:*; ] {
         Seek := 4dbb container [ card:*; ] {
           SeekID := 53ab binary;
           SeekPosition := 53ac uint;
         }
       }
 
       // Segment Information
       Info := 1549a966 container [ card:*; ] {
         SegmentUID := 73a4 binary;
         SegmentFilename := 7384 string;
         PrevUID := 3cb923 binary;
         PrevFilename := 3c83ab string;
         NextUID := 3eb923 binary;
         NextFilename := 3e83bb string;
         TimecodeScale := 2ad7b1 uint [ def:1000000; ]
         Duration := 4489 float [ range:>0.0; ]
         DateUTC := 4461 date;
         Title := 7ba9 string;
         MuxingApp := 4d80 string;
         WritingApp := 5741 string;
       }
 
       // Cluster
       Cluster := 1f43b675 container [ card:*; ] {
         Timecode := e7 uint;
         Position := a7 uint;
         PrevSize := ab uint;
         BlockGroup := a0 container [ card:*; ] {
           Block := a1 binary;
           BlockVirtual := a2 binary;
           BlockAdditions := 75a1 container {
             BlockMore := a6 container [ card:*; ] {
               BlockAddID := ee uint [ range:1..; ]
               BlockAdditional := a5 binary;
             }
           }
           BlockDuration := 9b uint [ def:TrackDuration; ];
           ReferencePriority := fa uint;
           ReferenceBlock := fb int [ card:*; ]
           ReferenceVirtual := fd int;
           CodecState := a4 binary;
           Slices := 8e container [ card:*; ] {
             TimeSlice := e8 container [ card:*; ] {
               LaceNumber := cc uint [ def:0; ]
               FrameNumber := cd uint [ def:0; ]
               BlockAdditionID := cb uint [ def:0; ]
               Delay := ce uint [ def:0; ]
               Duration := cf uint [ def:TrackDuration; ];
             }
           }
         }
       }
 
       // Track
       Tracks := 1654ae6b container [ card:*; ] {
         TrackEntry := ae container [ card:*; ] {
           TrackNumber := d7 uint [ range:1..; ]
           TrackUID := 73c5 uint [ range:1..; ]
           TrackType := 83 uint [ range:1..254; ]
           FlagEnabled := b9 uint [ range:0..1; def:1; ]
           FlagDefault := 88 uint [ range:0..1; def:1; ]
           FlagLacing  := 9c uint [ range:0..1; def:1; ]
           MinCache := 6de7 uint [ def:0; ]
           MaxCache := 6df8 uint;
           DefaultDuration := 23e383 uint [ range:1..; ]
           TrackTimecodeScale := 23314f float [ range:>0.0; def:1.0; ]
           Name := 536e string;
           Language := 22b59c string [ def:"eng"; range:32..126; ]
           CodecID := 86 string [ range:32..126; ];
           CodecPrivate := 63a2 binary;
           CodecName := 258688 string;
           CodecSettings := 3a9697 string;
           CodecInfoURL := 3b4040 string [ card:*; range:32..126; ]
           CodecDownloadURL := 26b240 string [ card:*; range:32..126; ]
           CodecDecodeAll := aa uint [ range:0..1; def:1; ]
           TrackOverlay := 6fab uint;
 
           // Video
           Video := e0 container {
             FlagInterlaced := 9a uint [ range:0..1; def:0; ]
             StereoMode := 53b8 uint [ range:0..3; def:0; ]
             PixelWidth := b0 uint [ range:1..; ]
             PixelHeight := ba uint [ range:1..; ]
             DisplayWidth := 54b0 uint [ def:PixelWidth; ]
             DisplayHeight := 54ba uint [ def:PixelHeight; ]
             DisplayUnit := 54b2 uint [ def:0; ]
             AspectRatioType := 54b3 uint [ def:0; ]
             ColourSpace := 2eb524 binary;
             GammaValue := 2fb523 float [ range:>0.0; ]
           }
 
           // Audio
           Audio := e1 container {
             SamplingFrequency := b5 float [ range:>0.0; def:8000.0; ]
             OutputSamplingFrequency := 78b5 float [ range:>0.0;
                                                     def:8000.0; ]
             Channels := 94 uint [ range:1..; def:1; ]
             ChannelPositions := 7d7b binary;
             BitDepth := 6264 uint [ range:1..; ]
           }
 
           // Content Encoding
           ContentEncodings := 6d80 container {
             ContentEncoding := 6240 container [ card:*; ] {
               ContentEncodingOrder := 5031 uint [ def:0; ]
               ContentEncodingScope := 5032 uint [ range:1..; def:1; ]
               ContentEncodingType := 5033 uint;
               ContentCompression := 5034 container {
                 ContentCompAlgo := 4254 uint [ def:0; ]
                 ContentCompSettings := 4255 binary;
               }
               ContentEncryption := 5035 container {
                 ContentEncAlgo := 47e1 uint [ def:0; ]
                 ContentEncKeyID := 47e2 binary;
                 ContentSignature := 47e3 binary;
                 ContentSigKeyID := 47e4 binary;
                 ContentSigAlgo := 47e5 uint;
                 ContentSigHashAlgo := 47e6 uint;
               }
             }
           }
         }
       }
 
       // Cueing Data
       Cues := 1c53bb6b container {
         CuePoint := bb container [ card:*; ] {
           CueTime := b3 uint;
           CueTrackPositions := b7 container [ card:*; ] {
             CueTrack := f7 uint [ range:1..; ]
             CueClusterPosition := f1 uint;
             CueBlockNumber := 5378 uint [ range:1..; def:1; ]
             CueCodecState := ea uint [ def:0; ]
             CueReference := db container [ card:*; ] {
               CueRefTime := 96 uint;
               CueRefCluster := 97 uint;
               CueRefNumber := 535f uint [ range:1..; def:1; ]
               CueRefCodecState := eb uint [ def:0; ]
             }
           }
         }
       }
 
       // Attachment
       Attachments := 1941a469 container {
         AttachedFile := 61a7 container [ card:*; ] {
           FileDescription := 467e string;
           FileName := 466e string;
           FileMimeType := 4660 string [ range:32..126; ]
           FileData := 465c binary;
           FileUID := 46ae uint;
         }
       }
 
       // Chapters
       Chapters := 1043a770 container {
         EditionEntry := 45b9 container [ card:*; ] {
           ChapterAtom := b6 container [ card:*; ] {
             ChapterUID := 73c4 uint [ range:1..; ]
             ChapterTimeStart := 91 uint;
             ChapterTimeEnd := 92 uint;
             ChapterFlagHidden := 98 uint [ range:0..1; def:0; ]
             ChapterFlagEnabled := 4598 uint [ range:0..1; def:0; ]
             ChapterTrack := 8f container {
               ChapterTrackNumber := 89 uint [ card:*; range:0..1; ]
               ChapterDisplay := 80 container [ card:*; ] {
                 ChapString := 85 string;
                 ChapLanguage := 437c string [ card:*; def:"eng";
                                               range:32..126; ]
                 ChapCountry := 437e string [ card:*; range:32..126; ]
               }
             }
           }
         }
       }
 
       // Tagging
       Tags := 1254c367 container [ card:*; ] {
         Tag := 7373 container [ card:*; ] {
           Targets := 63c0 container {
             TrackUID := 63c5 uint [ card:*; def:0; ]
             ChapterUID := 63c4 uint [ card:*; def:0; ]
             AttachmentUID := 63c6 uint [ card:*; def:0; ]
           }
           SimpleTag := 67c8 container [ card:*; ] {
             TagName := 45a3 string;
             TagString := 4487 string;
             TagBinary := 4485 binary;
           }
         }
       }
     }
   }

Publicación de Anuncios de Juntas Generales Ordinarias en página web


Los administradores pueden certificar tranquilamente la publicación ininterrumpida de Anuncios Societarios, tales como los de Convocatoria de Juntas Generales Ordinarias en página web, sabiendo que están respaldados por los sistemas de comprobación fehaciente de EADTrust, European Agency of Digital Trust.

No se la juegue en la organización de las juntas generales, y tenga en cuenta estos servicios especializados, llamando al 917160555.

Cumpliendo perfectamente la Ley de Sociedades de Capital