]> git.llucax.com Git - z.facultad/75.08/llamadas.git/blobdiff - doc/Informe7508.lyx
Agrego material pulenta para el final.
[z.facultad/75.08/llamadas.git] / doc / Informe7508.lyx
index ff754b830090d7fb247b902f5f56e35ed58993c1..260c47a50756eae1a073f202cfd536e306f8522f 100644 (file)
@@ -63,9 +63,6 @@ Ricardo Markiewicz (78226)
 
 \layout Chapter
 
-Desarollo e Implementación
-\layout Section
-
 Hipotesis y Aclaraciones
 \layout Itemize
 
@@ -98,7 +95,7 @@ $PATH_INSTALADOR/conf
  Internamente, en base a la información de paths proporcionada por este
  archivo, busca su los binarios realmente se encuentran en el OS, y en caso
  contrario permite volver a reinstalarlo/s.
-\layout Section
+\layout Chapter
 
 
 \begin_inset LatexCommand \label{sec:Problemas-relevantes}
@@ -132,7 +129,7 @@ As
 root
 \emph default 
  preferimos directamente trabajar en el directorio del usuario.
-\layout Section
+\layout Chapter
 
 Instalación
 \layout Standard
@@ -150,58 +147,58 @@ tar xvzf grupo12.tar.gz
 Esto creará la siguiente estructura de directorios:
 \layout LyX-Code
 
-./
+ ./
 \layout LyX-Code
 
- +- grupo12
+ +-- grupo12
 \layout LyX-Code
 
- |
+   +-- antifraude
 \layout LyX-Code
 
- +-- README
    +-- README
 \layout LyX-Code
 
- +-- COPYING
    +-- COPYING
 \layout LyX-Code
 
- +-- afinstal
    +-- afinstal
 \layout LyX-Code
 
- +-- conf
    +-- conf
 \layout LyX-Code
 
- +---- umbrales.param
      +---- umbrales.param
 \layout LyX-Code
 
- +---- umbrales.id
      +---- umbrales.id
 \layout LyX-Code
 
- +---- oridesti.txt
      +---- oridesti.txt
 \layout LyX-Code
 
- +-- inst
    +-- inst
 \layout LyX-Code
 
- +---- afimonio
      +---- afimonio
 \layout LyX-Code
 
- +---- antifraude.pl
      +---- antifraude.pl
 \layout LyX-Code
 
- +---- aficonf
      +---- aficonf
 \layout LyX-Code
 
- +---- afimonio_daemon.sh
      +---- afimonio_daemon.sh
 \layout LyX-Code
 
- +---- util.sh
      +---- util.sh
 \layout LyX-Code
 
- +---- callgen
      +---- callgen
 \layout LyX-Code
 
- +---- testcalls.tar.gz
      +---- testcalls.tar.gz
 \layout Standard
 
 Para proceder a la instalación del sistema 
@@ -215,26 +212,74 @@ afinstal
 :
 \layout LyX-Code
 
+cd grupo12/antifraude
+\layout LyX-Code
+
 ./afinstal
 \layout Standard
 
 y seguir los pasos que se le indiquen a continuación.
  De no ejecutar apropiadamente la instalación, no se garantiza el correcto
  funcionamiento de los componentes.
 \layout Section
 
+Utilización
+\layout Standard
+
+Antifraude es un sistema automatizado, que se vale de un script de bash
+ corriendo en background.
+\layout Standard
+
+Para iniciar el demonio existen varios métodos posibles, pero lo recomendado
+ es utilizar la utilidad 
+\family typewriter 
+\series bold 
+afimonio_daemon.sh
+\family default 
+\series default 
+, que permite iniciar el demonio (si no esta corriendo ya), detener el demonio
+ (si actualmente esta corriendo o consultar el estado actual.
+\layout Section
+
+Modo de uso
+\layout Standard
+
+Desde el directorio donde se instalaron los ejecutables:
+\layout LyX-Code
+
+./afimonio_daemon.sh [start|stop|status]
+\layout Standard
+
+Ver sección 
+\begin_inset LatexCommand \vref{sec:AFIMONIO_DAEMON.SH}
+
+\end_inset 
+
+ para más información.
+\layout Section
+
+Licencia
+\layout Standard
+
+Este software se distribuye bajo licencia GNU GPL versión 2.0 o superior.
+ Para más detalles lea el archivo 
+\family typewriter 
+COPYING
+\family default 
+.
+\layout Chapter
+
 Comandos Desarrollados
-\layout Subsection
+\layout Section
 
 AFIMONIO
-\layout Subsubsection
+\layout Subsection
 
 Tipo de comando
 \layout Standard
 
 Solicitado.
-\layout Subsubsection
+\layout Subsection
 
 Archivos de Input
 \layout Standard
@@ -259,7 +304,7 @@ so
 \family default 
 \series medium 
  según corresponda.
-\layout Subsubsection
+\layout Subsection
 
 Archivos de Output
 \layout Standard
@@ -305,10 +350,10 @@ $USER
 $file
 \family default 
  nombre del archivo que se procesó.
-\layout Subsubsection
+\layout Subsection
 
 Ejemplos de invocación
-\layout Paragraph
+\layout Subsubsection
 
 
 \family typewriter 
@@ -316,7 +361,7 @@ Ejemplos de invocaci
 \layout Standard
 
 Corre el programa en primer plano.
-\layout Paragraph
+\layout Subsubsection
 
 
 \family typewriter 
@@ -330,7 +375,7 @@ Corre el programa en segundo plano, evitando que se cierre al morir el padre
 nohup.out
 \family default 
  a menos que se redirija a otro archivo.
-\layout Subsubsection
+\layout Subsection
 
 Código Fuente
 \layout LyX-Code
@@ -626,16 +671,16 @@ while true; do
 \layout LyX-Code
 
 done #while
-\layout Subsection
+\layout Section
 
-ANTIFRAUDE
-\layout Subsubsection
+ANTIFRAUDE.PL
+\layout Subsection
 
 Tipo de comando
 \layout Standard
 
 Solicitado.
-\layout Subsubsection
+\layout Subsection
 
 Archivos de Input
 \layout Standard
@@ -687,7 +732,7 @@ Antifraude
 \series default 
  corre, pero los mismos no serán tenidos en cuenta (esto es, procesados),
  hasta la próxima invocación del comando.
-\layout Subsubsection
+\layout Subsection
 
 Archivos de Output
 \layout Description
@@ -712,10 +757,10 @@ Alarmas.txt
 umbrales.param
 \family default 
 .
-\layout Subsubsection
+\layout Subsection
 
 Ejemplos de invocación
-\layout Paragraph
+\layout Subsubsection
 
 
 \family typewriter 
@@ -727,7 +772,7 @@ El programa procesa las llamadas
 enproceso
 \family default 
  como indica el enunciado en primer plano.
-\layout Paragraph
+\layout Subsubsection
 
 
 \family typewriter 
@@ -735,7 +780,7 @@ perl antifraude.pl
 \layout Standard
 
 Ídem anterior.
-\layout Paragraph
+\layout Subsubsection
 
 
 \family typewriter 
@@ -743,7 +788,7 @@ perl antifraude.pl
 \layout Standard
 
 Ídem anterior pero procesa en segundo plano.
-\layout Subsubsection
+\layout Subsection
 
 Código Fuente
 \layout LyX-Code
@@ -1479,16 +1524,16 @@ d+$/))
 \layout LyX-Code
 
 unlock();
-\layout Subsection
+\layout Section
 
 AFICONF
-\layout Subsubsection
+\layout Subsection
 
 Tipo de comando
 \layout Standard
 
 Solicitado.
-\layout Subsubsection
+\layout Subsection
 
 Archivos de Input
 \layout Standard
@@ -1514,10 +1559,10 @@ Solo escribe en
 umbrales.param
 \family default 
  de ser solicitado por el usuario, ya sea por la alta o baja de un umbral.
-\layout Subsubsection
+\layout Subsection
 
 Ejemplos de invocación
-\layout Paragraph
+\layout Subsubsection
 
 
 \family typewriter 
@@ -1525,7 +1570,7 @@ Ejemplos de invocaci
 \layout Standard
 
 Realiza lo pedido en el enunciado.
-\layout Subsubsection
+\layout Subsection
 
 Código Fuente
 \layout LyX-Code
@@ -2220,10 +2265,10 @@ done
 \layout LyX-Code
 
 unlock "aficonf"
-\layout Subsection
+\layout Section
 
-UTIL
-\layout Subsubsection
+UTIL.SH
+\layout Subsection
 
 Tipo de comando
 \layout Standard
@@ -2233,14 +2278,14 @@ Auxiliar, escrito en bash.
 
 Sería equivalente a una biblioteca compartida, no es exactamente un comando
  que se pueda ejecutar directamente sino que se incluye desde otros comandos.
-\layout Subsubsection
+\layout Subsection
 
 Justificación de su uso
 \layout Standard
 
 Es un archivo con varias funciones generales, sirve para no duplicar código
  común entre los varios scripts de bash.
-\layout Subsubsection
+\layout Subsection
 
 Archivos de Input
 \layout Standard
@@ -2248,31 +2293,31 @@ Archivos de Input
 Al ser de propósito general, no tiene ningún archivo de input específico,
  aunque hay funciones que utilizan archivos, no se describen aquí sino en
  los comandos que usan este archivo.
-\layout Subsubsection
+\layout Subsection
 
 Archivos de Output
 \layout Standard
 
 Ídem anterior.
-\layout Subsubsection
+\layout Subsection
 
 Parámetros
 \layout Standard
 
 Al no ser un comando ejecutable, no aplica.
-\layout Subsubsection
+\layout Subsection
 
 Opciones
 \layout Standard
 
 Ídem anterior.
-\layout Subsubsection
+\layout Subsection
 
 Ejemplos de invocación
 \layout Standard
 
 Ídem anterior.
-\layout Subsubsection
+\layout Subsection
 
 Código fuente
 \layout LyX-Code
@@ -2752,11 +2797,412 @@ clean_log()
 \layout LyX-Code
 
 }
+\layout Section
+
+
+\begin_inset LatexCommand \label{sec:AFIMONIO_DAEMON.SH}
+
+\end_inset 
+
+AFIMONIO_DAEMON.SH
 \layout Subsection
 
-CALLGEN
+Tipo de comando
+\layout Standard
+
+Auxiliar, escrito en 
+\family typewriter 
+bash
+\family default 
+.
+\layout Subsection
+
+Justificación de su uso
+\layout Standard
+
+Sirve para correr 
+\family typewriter 
+\series bold 
+afimonio
+\family default 
+\series default 
+ en segundo plano, desasociado de la terminal.
+\layout Subsection
+
+Archivos de Input
+\layout Standard
+
+Ninguno, toma los datos necesarios por la entrada estándar, aunque es común
+ redireccionarle el archivo 
+\family typewriter 
+oridesti.txt
+\family default 
+.
+ De la entrada estándar toma los códigos de origen y destino.
+ Cada código debe encontrarse en una línea y al comienzo de ésta.
+ Sólo toma los 2 primeros caracteres, e ignora el resto de la línea (para
+ compatibilidad con el archivo oridesti.txt).
+\layout Subsection
+
+Archivos de Output
+\layout Standard
+
+Crea una cantidad 
+\family typewriter 
+N
+\family default 
+ (especificada por el usuario) de archivos con nombre y formato de 
+\emph on 
+Archivo de Llamadas
+\emph default 
+ en el directorio actual.
+ Tanto el nombre como la cantidad de líneas y su contenido es generado aleatoria
+mente (respetando el formato mencionado y con valores racionales).
+\layout Subsection
+
+Parámetros
+\layout Standard
+
+La invocación es al estilo SysV, tomando como parámetro la acción a realizar,
+ que puede ser:
+\layout Description
+
+start Arranca el 
+\family typewriter 
+\series bold 
+afimonio
+\family default 
+\series default 
+.
+\layout Description
+
+stop Detiene el 
+\family typewriter 
+\series bold 
+afimonio
+\family default 
+\series default 
+.
+\layout Description
+
+status Indica si 
+\family typewriter 
+\series bold 
+afimonio
+\family default 
+\series default 
+ está corriendo o no.
+\layout Subsection
+
+Opciones
+\layout Standard
+
+Al comienzo del script, abajo de 
+\family typewriter 
+Configuración
+\family default 
+, se pueden cambiar algunas variables:
+\layout Description
+
+WAIT Cantidad de segundos a esperar para que arranque o se detenga 
+\family typewriter 
+\series bold 
+afimonio
+\family default 
+\series default 
+ antes de asumir un error.
+\layout Description
+
+DAEMON Nombre del programa a ejecutar.
+ Este programa es lo suficientemente genérico como para correr cualquier
+ comando en modo 
+\emph on 
+daemon
+\emph default 
+, por eso se provee una variable de configuración para cambiar el comando
+ a ejecutar.
+\layout Subsection
+
+Ejemplos de invocación
+\layout Subsubsection
+
+
+\family typewriter 
+./afimonio_daemon.sh start
+\layout Standard
+
+Arranca el 
+\family typewriter 
+\series bold 
+afimonio
+\family default 
+\series default 
+.
+\layout Subsubsection
+
+
+\family typewriter 
+./afimonio_daemon.sh stop
+\layout Standard
+
+Detiene el 
+\family typewriter 
+\series bold 
+afimonio
+\family default 
+\series default 
+.
+\layout Subsubsection
+
+
+\family typewriter 
+./afimonio_daemon.sh status
+\layout Standard
+
+Si 
+\family typewriter 
+\series bold 
+afimonio
+\family default 
+\series default 
+ está corriendo lo indica con un mensaje y muestra su PID.
+ Si no está corriendo da otro mensaje indicándolo.
 \layout Subsubsection
 
+
+\family typewriter 
+./afimonio_daemon.sh
+\layout Standard
+
+Da un mensaje de ayuda.
+\layout Subsection
+
+Código Fuente
+\layout LyX-Code
+
+#!/bin/bash
+\layout LyX-Code
+
+\layout LyX-Code
+
+# Configuración
+\layout LyX-Code
+
+WAIT=10
+\layout LyX-Code
+
+DAEMON=afimonio
+\layout LyX-Code
+
+\layout LyX-Code
+
+# --------------- SCRIPT ---------------------
+\layout LyX-Code
+
+BASE_DIR="$HOME/.antifraude"
+\layout LyX-Code
+
+.
+ "$BASE_DIR/conf/$DAEMON.conf"
+\layout LyX-Code
+
+.
+ "$BASE_DIR/util.sh"
+\layout LyX-Code
+
+\layout LyX-Code
+
+ayuda () {
+\layout LyX-Code
+
+        perr "Parámetros válidos : start, stop, status"
+\layout LyX-Code
+
+}
+\layout LyX-Code
+
+\layout LyX-Code
+
+case "$1" in
+\layout LyX-Code
+
+        "start")
+\layout LyX-Code
+
+                echo -n "Iniciando demonio '$DAEMON' en modo daemon "
+\layout LyX-Code
+
+                if is_lock "$DAEMON"; then
+\layout LyX-Code
+
+                        echo " ERROR!"
+\layout LyX-Code
+
+                        perr "$DAEMON ya está corriendo" 
+\backslash 
+
+\layout LyX-Code
+
+                             "(PID=`lock_pid $DAEMON`)."
+\layout LyX-Code
+
+                        exit 1
+\layout LyX-Code
+
+                fi
+\layout LyX-Code
+
+                nohup "$AFIM_BINDIR/$DAEMON" > /dev/null &
+\layout LyX-Code
+
+                for i in `seq $WAIT`; do
+\layout LyX-Code
+
+                        if is_lock "$DAEMON"; then
+\layout LyX-Code
+
+                                echo " OK! (PID=`lock_pid $DAEMON`)"
+\layout LyX-Code
+
+                                exit 0
+\layout LyX-Code
+
+                        fi
+\layout LyX-Code
+
+                        echo -n '.'
+\layout LyX-Code
+
+                        sleep 1;
+\layout LyX-Code
+
+                done
+\layout LyX-Code
+
+                # Tardó más de 5 segundos en arrancar, algo anda mal...
+\layout LyX-Code
+
+                echo "ERROR!"
+\layout LyX-Code
+
+                perr "$DAEMON tardó más de $WAIT segundos en arrancar,"
+\backslash 
+
+\layout LyX-Code
+
+                     "probablemente haya algún problema."
+\layout LyX-Code
+
+                exit 1
+\layout LyX-Code
+
+        ;;
+\layout LyX-Code
+
+        "stop")
+\layout LyX-Code
+
+                echo -n "Parando el demonio '$DAEMON' "
+\layout LyX-Code
+
+                if ! is_lock "$DAEMON"; then
+\layout LyX-Code
+
+                        echo " ERROR!"
+\layout LyX-Code
+
+                        perr "$DAEMON no esta corriendo."
+\layout LyX-Code
+
+                        exit 1
+\layout LyX-Code
+
+                fi
+\layout LyX-Code
+
+                kill `lock_pid $DAEMON`
+\layout LyX-Code
+
+                for i in `seq $WAIT`; do
+\layout LyX-Code
+
+                        if ! is_lock "$DAEMON"; then
+\layout LyX-Code
+
+                                echo " OK!"
+\layout LyX-Code
+
+                                exit 0
+\layout LyX-Code
+
+                        fi
+\layout LyX-Code
+
+                        echo -n '.'
+\layout LyX-Code
+
+                        sleep 1;
+\layout LyX-Code
+
+                done
+\layout LyX-Code
+
+                # Tardó más de 5 segundos en parar, algo anda mal...
+\layout LyX-Code
+
+                echo "ERROR!"
+\layout LyX-Code
+
+                perr "$DAEMON tardó más de $WAIT segundos en parar," 
+\backslash 
+
+\layout LyX-Code
+
+                     "probablemente haya algún problema."
+\layout LyX-Code
+
+                exit 1
+\layout LyX-Code
+
+        ;;
+\layout LyX-Code
+
+        "status")
+\layout LyX-Code
+
+                if is_lock "$DAEMON"; then
+\layout LyX-Code
+
+                        echo "$DAEMON está corriendo actualmente" 
+\backslash 
+
+\layout LyX-Code
+
+                             "(PID=`lock_pid $DAEMON`)."
+\layout LyX-Code
+
+                else
+\layout LyX-Code
+
+                        echo "$DAEMON no está corriendo."
+\layout LyX-Code
+
+                fi
+\layout LyX-Code
+
+        ;;
+\layout LyX-Code
+
+        *) ayuda ;;
+\layout LyX-Code
+
+esac
+\layout Section
+
+CALLGEN
+\layout Subsection
+
 Tipo de comando
 \layout Standard
 
@@ -2765,14 +3211,14 @@ Auxiliar, escrito en
 perl
 \family default 
 .
-\layout Subsubsection
+\layout Subsection
 
 Justificación de su uso
 \layout Standard
 
 Sirve para realizar lotes de prueba con gran cantidad de entradas y variaciones
  de forma rápida y cómoda.
-\layout Subsubsection
+\layout Subsection
 
 Archivos de Input
 \layout Standard
@@ -2787,7 +3233,7 @@ oridesti.txt
  Cada código debe encontrarse en una línea y al comienzo de ésta.
  Sólo toma los 2 primeros caracteres, e ignora el resto de la línea (para
  compatibilidad con el archivo oridesti.txt).
-\layout Subsubsection
+\layout Subsection
 
 Archivos de Output
 \layout Standard
@@ -2803,7 +3249,7 @@ Archivo de Llamadas
  en el directorio actual.
  Tanto el nombre como la cantidad de líneas y su contenido es generado aleatoria
 mente (respetando el formato mencionado y con valores racionales).
-\layout Subsubsection
+\layout Subsection
 
 Parámetros
 \layout Standard
@@ -2940,7 +3386,7 @@ M
 \end_inset 
 
 
-\layout Subsubsection
+\layout Subsection
 
 Opciones
 \layout Standard
@@ -2949,10 +3395,10 @@ Pueden cambiarse los valores por defecto editando el c
  en la sección de configuración que se encuentra al comienzo del mismo.
  También puede cambiarse el mínimo y máximo año (por defecto 1999 y 2004)
  y el mínimo y máximo código de central (por defecto 0000 y 9999).
-\layout Subsubsection
+\layout Subsection
 
 Ejemplos de invocación
-\layout Paragraph
+\layout Subsubsection
 
 
 \family typewriter 
@@ -2970,7 +3416,7 @@ Ctrl-D
 \series medium 
  para cerrar el descriptor de archivo de la entrada estándar y se generan
  10 archivos con entre 1000 y 5000 líneas cada uno.
-\layout Paragraph
+\layout Subsubsection
 
 
 \family typewriter 
@@ -2985,7 +3431,7 @@ Genera 2 archivos con entre 1000 y 5000 l
 origesti.txt
 \family default 
 .
-\layout Paragraph
+\layout Subsubsection
 
 
 \family typewriter 
@@ -3000,7 +3446,7 @@ Genera 5 archivos con entre 10 y 5000 l
 origesti.txt
 \family default 
 .
-\layout Paragraph
+\layout Subsubsection
 
 
 \family typewriter 
@@ -3015,7 +3461,7 @@ Genera 50 archivos con entre 10 y 50 l
 origesti.txt
 \family default 
 .
-\layout Subsubsection
+\layout Subsection
 
 Código Fuente
 \layout LyX-Code
@@ -3435,13 +3881,13 @@ for (my $i = 0; $i < $cant; ++$i)
 \layout LyX-Code
 
 # vim: set fdm=marker ts=4 sw=4 :
-\layout Section
+\layout Chapter
 
 Archivos
-\layout Subsection
+\layout Section
 
 Archivos del Enunciado
-\layout Subsubsection
+\layout Subsection
 
 
 \family typewriter 
@@ -3452,7 +3898,7 @@ Los archivos de log generados por los distintos comandos, presentan todos
  la misma estructura de registro que se detalla a continuación: 
 \family typewriter 
 YYYYMMDD-hhmm $usuario $comando: ¨$Mensaje¨
-\layout Subsubsection
+\layout Subsection
 
 
 \family typewriter 
@@ -3526,7 +3972,7 @@ N caracteres
 \end_inset 
 
 
-\layout Subsubsection
+\layout Subsection
 
 
 \family typewriter 
@@ -3708,7 +4154,7 @@ Hora
 \end_inset 
 
 
-\layout Subsubsection
+\layout Subsection
 
 
 \family typewriter 
@@ -3890,7 +4336,7 @@ N caracteres
 \end_inset 
 
 
-\layout Subsubsection
+\layout Subsection
 
 
 \family typewriter 
@@ -4108,10 +4554,10 @@ Hora
 \end_inset 
 
 
-\layout Subsection
+\layout Section
 
 Archivos Auxiliares
-\layout Subsubsection
+\layout Subsection
 
 
 \family typewriter 
@@ -4129,7 +4575,7 @@ afimonio
 \family default 
  y la ruta, nombre, y tamaño máximo del archivo de log.
  
-\layout Subsubsection
+\layout Subsection
 
 
 \family typewriter 
@@ -4147,7 +4593,7 @@ antifraude.pl
 \family default 
  y la ruta, nombre, y tamaño máximo del archivo de log.
  
-\layout Subsubsection
+\layout Subsection
 
 
 \family typewriter 
@@ -4177,7 +4623,11 @@ Estos archivos fueron creados para que los diferentes scripts tengan un
 .
 \layout Subsection
 
-Set de Prueba (testcalls.tar.gz)
+Set de Prueba (
+\family typewriter 
+testcalls.tar.gz
+\family default 
+)
 \layout Standard
 
 Para probar el comportamiento del sistema, se preparo un set de prueba distribui
@@ -4917,7 +5367,7 @@ Close match umbral 22, difiere tipo de llamada
 \end_inset 
 
 
-\layout Paragraph
+\layout Subsubsection
 
 Archivo 
 \family typewriter 
@@ -4928,51 +5378,56 @@ Archivo
 \series medium 
 Posee registros no válidos detallados a continuación.
  Los registros se contabilizan de 0 a N (Línea 1 = Reg 0)
-\layout Itemize
+\layout Description
 
+Registro\SpecialChar ~
 
 \series bold 
-Registro 3
+3
 \series default 
-> Posee un 9no campo 
+ Posee un 9no campo 
 \emph on 
 bogus
-\layout Itemize
+\layout Description
 
+Registro\SpecialChar ~
 
 \series bold 
-Registro 27
+27
 \series default 
-> Posee un 9no campo 
+ Posee un 9no campo 
 \emph on 
 bogus
-\layout Itemize
+\layout Description
 
+Registro\SpecialChar ~
 
 \series bold 
-Registro 31
+31
 \series default 
-> Posee un tipo de llamada 
+ Posee un tipo de llamada 
 \family typewriter 
 W
 \family default 
  no valida
-\layout Itemize
+\layout Description
 
+Registro\SpecialChar ~
 
 \series bold 
-Registro 41
+41
 \series default 
-> El número de línea (campo1) no es numérico, es un string 
+ El número de línea (campo1) no es numérico, es un string 
 \family typewriter 
 'ABCD'
-\layout Itemize
+\layout Description
 
+Registro\SpecialChar ~
 
 \series bold 
-Registro 52
+52
 \series default 
-> Tiene cantidad de campos insuficiente (siete)
+ Tiene cantidad de campos insuficiente (siete)
 \layout Standard
 
 Estos registros emitirán errores plasmados en el 
@@ -4987,7 +5442,7 @@ antifraude.log
 Inicio proceso de: 199908220733.4515
 \family default 
 ¨.
-\layout Paragraph
+\layout Subsubsection
 
 Archivo 
 \family typewriter 
@@ -4998,7 +5453,7 @@ Archivo
 \series medium 
 Es un archivo de texto el cual pasa el control de Afimonio, pero luego sus
  lineas son descartadas por antifraude y dicho error emitido en el antifraude.log
-\layout Paragraph
+\layout Subsubsection
 
 Archivo 
 \family typewriter 
@@ -5015,7 +5470,7 @@ afimonio
 \family default 
 \series medium 
 .
-\layout Section
+\layout Chapter
 
 Apéndice A
 \layout Comment