{
    S7_Author := "ABH";
    S7_BlockComment := "MLC_Tf";
    S7_BlockNumber := "11";
    S7_BlockTitle := "MLC_47u";
    S7_EditorMode := "SCL";
    S7_Family := "ZeusControl";
    S7_IECCheck := "TRUE";
    S7_Optimized := "TRUE";
    S7_Version := "1.0"
}
FUNCTION "FC11_ZC_INF_GESTOR" : Void
    VAR_INPUT
        { S7_MLC := "MLC_Ub" }
        Pulso1Seg : Bool;
    END_VAR
    VAR_TEMP
        { S7_MLC := "MLC_3zX" }
        for_i : Int;
        { S7_MLC := "MLC_3S2" }
        t_PosicionRegistro : Int;
        { S7_MLC := "MLC_4z2" }
        t_RegistroEncontrado : Bool;
        { S7_MLC := "MLC_3wk" }
        t_RetVal : Int;
    END_VAR
    VAR CONSTANT
        { S7_MLC := "MLC_PN" }
        REPOSO : Int := 0;
        { S7_MLC := "MLC_339" }
        ESPERA_ENTRE_AVISOS : Int := 10;
        { S7_MLC := "MLC_3MX" }
        LANZAR_AVISO : Int := 20;
        { S7_MLC := "MLC_3dt" }
        ESPERA_CONFIRMACION : Int := 30;
        { S7_MLC := "MLC_39e" }
        FALLO : Int := 40;
        { S7_MLC := "MLC_3Gy" }
        BORRAR_DATOS : Int := 50;
    END_VAR

    { S7_Language := "SCL" }
    NETWORK
        REGION DESCRIPCION
        (*
        ###### (C)Copyright ZeusControl 2024 - 2024
        
        ---
        ### Información del Sistema
        | Hardware Compatible | Entorno de Ingeniería |
        |---------------------|-----------------------|
        | PLC serie 1200/1500 | TIA Portal 18         |
        
        ---
        > **Restricciones:** Ninguna.
        
        ---
        ### Descripción Funcional
        
        Función para la gestión e interfaz de escritura de informes hacia el sistema SCADA/HMI mediante una máquina de estados y la lectura de un buffer.
        
        Las tareas que realiza son las siguientes:
        
        - Extracción de datos del buffer: Búsqueda inversa del registro más antiguo pendiente de envío evaluando la condición `Registrar` = 1 mediante un bucle `FOR`.
        - Transferencia del registro a la estructura estática `Gestion.Datos` y generación de un `Id` único basado en la fecha y hora actual.
        - Limpieza inmediata de todas las variables (Booleanos, Reales, Enteros, Fechas y Strings) en la posición original del buffer.
        - Ejecución de la etapa **REPOSO**: Activación de la secuencia ante la orden `OrdenIniciar`, siempre que se detecte conexión con el SCADA y la habilitación general esté activa.
        - Ejecución de la etapa **ESPERA_ENTRE_AVISOS**: Temporización basada en pulsos de 1 segundo (`Pulso1Seg`) antes de un reintento. Deriva a fallo si se supera el máximo de intentos.
        - Ejecución de la etapa **LANZAR_AVISO**: Activación de la señal `Aviso.Registrar` hacia el SCADA y paso a espera tras cumplirse el tiempo parametrizado.
        - Ejecución de la etapa **ESPERA_CONFIRMACION**: Monitoreo de la respuesta del sistema superior. Si `Aviso.Estado` es igual a 4, el envío es exitoso. Si hay error (estado 12) o agotamiento de tiempo, se incrementa el contador de intentos y se repite el ciclo.
        - Ejecución de la etapa **FALLO**: Generación de una traza de sistema (`TRZ_CAT_1_SYS`) registrando el código de error `TRZ_SYS_INF_ERR` ante la imposibilidad de entrega del informe.
        - Ejecución de la etapa **BORRAR_DATOS**: Reseteo íntegro de la estructura `Gestion.Datos` para preparar el sistema para el próximo ciclo de comunicación y retorno al estado de reposo.
        
        ---
        ### Dependencias Requeridas
        | Tipo | Elementos |
        |------|-----------|
        | FC   | - |
        | FB   | - |
        | DB   | - |
        | UDT  | - |
            
        ---
        ### Historial de Cambios
        | Versión  | Fecha      | Técnico | Cambios |
        |----------|------------|---------|---------|
        | 01.00.00 | 30.07.2024 | (ABH)   | Primera version. |
        | 01.00.01 | 11.09.2024 | (ABH)   | Se añade la generacion de ID con fecha y hora en el momento del guardar en SQL. |
        *)
        END_REGION DESCRIPCION
        
        
        //  ==========================================================================================================
        REGION GESTION_INFORMES
            
            // =============================================================================
            //  COPIAMOS EL ULTIMO REGISTRO (El mas antiguo) A LA VARIABLE REGISTRO QUE ES LA 
            //  ENCARGADA DE COMUNICARLA CON EL SCADA/HMI
            IF "DB11_INF".Gestion.HabilitacionGeneral AND "DB11_INF".Gestion.Datos.Registrar = 0 AND #Pulso1Seg THEN
                
                // =============================================================================
                // Buscamos el ultimo registro
                FOR #for_i := "N_MAX_INF_BUFFER" TO 0 BY -1 DO
                    
                    // =============================================================================
                    // Registro encontrado
                    IF "DB11_INF".Buffer[#for_i].Registrar = 1 THEN
                        #t_PosicionRegistro := #for_i;
                        #t_RegistroEncontrado := TRUE;
                        EXIT;
                    END_IF;
                    
                END_FOR;
                
                // =============================================================================
                // Si hemos encontrado el registro, copiamos a variable estatica
                IF #t_RegistroEncontrado THEN
                    
                    // =============================================================================
                    //  Copiamos el los datos de la traza a variable estatica para tratarla
                    "DB11_INF".Gestion.Datos := "DB11_INF".Buffer[#t_PosicionRegistro];
                    "DB11_INF".Gestion.Datos.Id := "FC15006_ZC_DTL_TO_STRING"(FechaDTL := "DB1_SYS".FechaHoraActual, Formato := 3);
                    
                    // =============================================================================
                    //  Quitamos el registro del buffer
                    "DB11_INF".Buffer[#t_PosicionRegistro].Registrar := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Id := '';
                    "DB11_INF".Buffer[#t_PosicionRegistro].Tipo := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Codigo := '';
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_1.Ano := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_1.Mes := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_1.Dia := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_1.DiaSemana := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_1.Hora := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_1.Minuto := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_1.Segundo := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_1.NanoSegundo := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_2.Ano := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_2.Mes := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_2.Dia := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_2.DiaSemana := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_2.Hora := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_2.Minuto := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_2.Segundo := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_2.NanoSegundo := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_3.Ano := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_3.Mes := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_3.Dia := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_3.DiaSemana := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_3.Hora := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_3.Minuto := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_3.Segundo := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Fecha_3.NanoSegundo := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_1 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_2 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_3 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_4 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_5 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_6 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_7 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_8 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_9 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_10 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_11 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_12 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_13 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_14 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_15 := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_1 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_2 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_3 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_4 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_5 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_6 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_7 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_8 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_9 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_10 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_11 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_12 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_13 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_14 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_15 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_16 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_17 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_18 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_19 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_20 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_21 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_22 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_23 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_24 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_25 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_26 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_27 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_28 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_29 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_30 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_31 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Bool_32 := FALSE;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_1 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_2 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_3 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_4 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_5 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_6 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_7 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_8 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_9 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_10 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_11 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_12 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_13 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_14 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_15 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_16 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_17 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_18 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_19 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Real_20 := 0.0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_1 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_2 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_3 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_4 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_5 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_6 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_7 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_8 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_9 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_10 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_11 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_12 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_13 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_14 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_15 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_16 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_17 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_18 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_19 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].Int_20 := 0;
                    
                END_IF;
                
            END_IF;
            
            
            // =============================================================================
            //  Si existe registro a trazar, lanzamos la orden de iniciar la secuencia
            IF "DB11_INF".Gestion.Datos.Registrar = 1 AND "DB11_INF".Gestion.Etapa = #REPOSO AND "DB11_INF".Gestion.EstadoConexion THEN
                
                //  Lanzamos la orden de iniciar la secuencia de registro
                "DB11_INF".Gestion.OrdenIniciar := TRUE;
                
            END_IF;
            
            
        END_REGION
        
        
        //  ==========================================================================================================
        REGION SECUENCIA_INFORME    
            
            
            IF NOT "DB11_INF".Gestion.HabilitacionGeneral AND "DB11_INF".Gestion.Etapa <> #REPOSO THEN
                "DB11_INF".Gestion.Etapa := #BORRAR_DATOS;
            END_IF;
            
            
            CASE "DB11_INF".Gestion.Etapa OF
                    
                    
                    // =============================================================================
                #REPOSO:
                    IF "DB11_INF".Gestion.OrdenIniciar THEN
                        "DB11_INF".Gestion.Etapa := #LANZAR_AVISO;
                        "DB11_INF".Gestion.OrdenIniciar := FALSE;
                        "DB11_INF".Gestion.Aviso.Registrar := 0;
                        "DB11_INF".Gestion.TiempoActual := 0;
                        "DB11_INF".Gestion.Aviso.NumeroIntentosActual := 0;
                    END_IF;
                    
                    
                    
                    // =============================================================================
                #ESPERA_ENTRE_AVISOS:
                    //  Contador de tiempo de etapa
                    IF #Pulso1Seg THEN
                        "DB11_INF".Gestion.TiempoActual += 1;
                    END_IF;
                    //  Tiempo maximo de espera
                    IF ("DB11_INF".Gestion.TiempoActual >= "DB11_INF".Gestion.SP_Tiempo) THEN
                        "DB11_INF".Gestion.TiempoActual := 0;
                        "DB11_INF".Gestion.Etapa := #LANZAR_AVISO;
                    END_IF;
                    
                    //  Si ya se ha alcanzado el numero maximo de intentos, generamos la traza
                    IF "DB11_INF".Gestion.Aviso.NumeroIntentosActual >= "DB11_INF".Gestion.NumeroMaxIntentos THEN
                        "DB11_INF".Gestion.Etapa := #FALLO;
                        "DB11_INF".Gestion.Aviso.Registrar := 0;
                    END_IF;
                    
                    
                    
                    // =============================================================================
                #LANZAR_AVISO:
                    
                    IF #Pulso1Seg THEN
                        "DB11_INF".Gestion.TiempoActual += 1;
                    END_IF;
                    "DB11_INF".Gestion.Aviso.Registrar := TRUE;
                    
                    
                    
                    IF ("DB11_INF".Gestion.TiempoActual >= "DB11_INF".Gestion.SP_Tiempo) THEN
                        "DB11_INF".Gestion.Etapa := #ESPERA_CONFIRMACION;
                    END_IF;
                    
                    
                    // =============================================================================
                #ESPERA_CONFIRMACION:
                    
                    IF #Pulso1Seg THEN
                        "DB11_INF".Gestion.TiempoActual += 1;
                    END_IF;
                    
                    //  Confirmacion desde SCADA OK
                    IF "DB11_INF".Gestion.Aviso.Estado = 4 THEN
                        "DB11_INF".Gestion.TiempoActual := 0;
                        "DB11_INF".Gestion.Aviso.Estado := 0;
                        "DB11_INF".Gestion.Aviso.Registrar := FALSE;
                        "DB11_INF".Gestion.Etapa := #BORRAR_DATOS;
                    END_IF;
                    
                    //  Tiempo maximo de espera
                    IF ("DB11_INF".Gestion.TiempoActual >= "DB11_INF".Gestion.SP_Tiempo)
                        OR
                        ("DB11_INF".Gestion.Aviso.Estado = 12)
                    THEN
                        "DB11_INF".Gestion.TiempoActual := 0;
                        "DB11_INF".Gestion.Aviso.Estado := 0;
                        "DB11_INF".Gestion.Aviso.Registrar := FALSE;
                        "DB11_INF".Gestion.Etapa := #ESPERA_ENTRE_AVISOS;
                        "DB11_INF".Gestion.Aviso.NumeroIntentosActual += 1;
                    END_IF;
                    
                    
                    // =============================================================================
                #BORRAR_DATOS:
                    
                    "DB11_INF".Gestion.Datos.Registrar := 0;
                    "DB11_INF".Gestion.Datos.Id := '';
                    "DB11_INF".Gestion.Datos.Tipo := 0;
                    "DB11_INF".Gestion.Datos.Codigo := '';
                    "DB11_INF".Gestion.Datos.Fecha_1.Ano := 0;
                    "DB11_INF".Gestion.Datos.Fecha_1.Mes := 0;
                    "DB11_INF".Gestion.Datos.Fecha_1.Dia := 0;
                    "DB11_INF".Gestion.Datos.Fecha_1.DiaSemana := 0;
                    "DB11_INF".Gestion.Datos.Fecha_1.Hora := 0;
                    "DB11_INF".Gestion.Datos.Fecha_1.Minuto := 0;
                    "DB11_INF".Gestion.Datos.Fecha_1.Segundo := 0;
                    "DB11_INF".Gestion.Datos.Fecha_1.NanoSegundo := 0;
                    "DB11_INF".Gestion.Datos.Fecha_2.Ano := 0;
                    "DB11_INF".Gestion.Datos.Fecha_2.Mes := 0;
                    "DB11_INF".Gestion.Datos.Fecha_2.Dia := 0;
                    "DB11_INF".Gestion.Datos.Fecha_2.DiaSemana := 0;
                    "DB11_INF".Gestion.Datos.Fecha_2.Hora := 0;
                    "DB11_INF".Gestion.Datos.Fecha_2.Minuto := 0;
                    "DB11_INF".Gestion.Datos.Fecha_2.Segundo := 0;
                    "DB11_INF".Gestion.Datos.Fecha_2.NanoSegundo := 0;
                    "DB11_INF".Gestion.Datos.Fecha_3.Ano := 0;
                    "DB11_INF".Gestion.Datos.Fecha_3.Mes := 0;
                    "DB11_INF".Gestion.Datos.Fecha_3.Dia := 0;
                    "DB11_INF".Gestion.Datos.Fecha_3.DiaSemana := 0;
                    "DB11_INF".Gestion.Datos.Fecha_3.Hora := 0;
                    "DB11_INF".Gestion.Datos.Fecha_3.Minuto := 0;
                    "DB11_INF".Gestion.Datos.Fecha_3.Segundo := 0;
                    "DB11_INF".Gestion.Datos.Fecha_3.NanoSegundo := 0;
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_1 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_2 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_3 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_4 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_5 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_6 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_7 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_8 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_9 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_10 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_11 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_12 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_13 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_14 :=
                    "DB11_INF".Buffer[#t_PosicionRegistro].CodString_15 := 0;
                    "DB11_INF".Gestion.Datos.Bool_1 :=
                    "DB11_INF".Gestion.Datos.Bool_2 :=
                    "DB11_INF".Gestion.Datos.Bool_3 :=
                    "DB11_INF".Gestion.Datos.Bool_4 :=
                    "DB11_INF".Gestion.Datos.Bool_5 :=
                    "DB11_INF".Gestion.Datos.Bool_6 :=
                    "DB11_INF".Gestion.Datos.Bool_7 :=
                    "DB11_INF".Gestion.Datos.Bool_8 :=
                    "DB11_INF".Gestion.Datos.Bool_9 :=
                    "DB11_INF".Gestion.Datos.Bool_10 :=
                    "DB11_INF".Gestion.Datos.Bool_11 :=
                    "DB11_INF".Gestion.Datos.Bool_12 :=
                    "DB11_INF".Gestion.Datos.Bool_13 :=
                    "DB11_INF".Gestion.Datos.Bool_14 :=
                    "DB11_INF".Gestion.Datos.Bool_15 :=
                    "DB11_INF".Gestion.Datos.Bool_16 :=
                    "DB11_INF".Gestion.Datos.Bool_17 :=
                    "DB11_INF".Gestion.Datos.Bool_18 :=
                    "DB11_INF".Gestion.Datos.Bool_19 :=
                    "DB11_INF".Gestion.Datos.Bool_20 :=
                    "DB11_INF".Gestion.Datos.Bool_21 :=
                    "DB11_INF".Gestion.Datos.Bool_22 :=
                    "DB11_INF".Gestion.Datos.Bool_23 :=
                    "DB11_INF".Gestion.Datos.Bool_24 :=
                    "DB11_INF".Gestion.Datos.Bool_25 :=
                    "DB11_INF".Gestion.Datos.Bool_26 :=
                    "DB11_INF".Gestion.Datos.Bool_27 :=
                    "DB11_INF".Gestion.Datos.Bool_28 :=
                    "DB11_INF".Gestion.Datos.Bool_29 :=
                    "DB11_INF".Gestion.Datos.Bool_30 :=
                    "DB11_INF".Gestion.Datos.Bool_31 :=
                    "DB11_INF".Gestion.Datos.Bool_32 := FALSE;
                    "DB11_INF".Gestion.Datos.Real_1 :=
                    "DB11_INF".Gestion.Datos.Real_2 :=
                    "DB11_INF".Gestion.Datos.Real_3 :=
                    "DB11_INF".Gestion.Datos.Real_4 :=
                    "DB11_INF".Gestion.Datos.Real_5 :=
                    "DB11_INF".Gestion.Datos.Real_6 :=
                    "DB11_INF".Gestion.Datos.Real_7 :=
                    "DB11_INF".Gestion.Datos.Real_8 :=
                    "DB11_INF".Gestion.Datos.Real_9 :=
                    "DB11_INF".Gestion.Datos.Real_10 :=
                    "DB11_INF".Gestion.Datos.Real_11 :=
                    "DB11_INF".Gestion.Datos.Real_12 :=
                    "DB11_INF".Gestion.Datos.Real_13 :=
                    "DB11_INF".Gestion.Datos.Real_14 :=
                    "DB11_INF".Gestion.Datos.Real_15 :=
                    "DB11_INF".Gestion.Datos.Real_16 :=
                    "DB11_INF".Gestion.Datos.Real_17 :=
                    "DB11_INF".Gestion.Datos.Real_18 :=
                    "DB11_INF".Gestion.Datos.Real_19 :=
                    "DB11_INF".Gestion.Datos.Real_20 := 0.0;
                    "DB11_INF".Gestion.Datos.Int_1 :=
                    "DB11_INF".Gestion.Datos.Int_2 :=
                    "DB11_INF".Gestion.Datos.Int_3 :=
                    "DB11_INF".Gestion.Datos.Int_4 :=
                    "DB11_INF".Gestion.Datos.Int_5 :=
                    "DB11_INF".Gestion.Datos.Int_6 :=
                    "DB11_INF".Gestion.Datos.Int_7 :=
                    "DB11_INF".Gestion.Datos.Int_8 :=
                    "DB11_INF".Gestion.Datos.Int_9 :=
                    "DB11_INF".Gestion.Datos.Int_10 :=
                    "DB11_INF".Gestion.Datos.Int_11 :=
                    "DB11_INF".Gestion.Datos.Int_12 :=
                    "DB11_INF".Gestion.Datos.Int_13 :=
                    "DB11_INF".Gestion.Datos.Int_14 :=
                    "DB11_INF".Gestion.Datos.Int_15 :=
                    "DB11_INF".Gestion.Datos.Int_16 :=
                    "DB11_INF".Gestion.Datos.Int_17 :=
                    "DB11_INF".Gestion.Datos.Int_18 :=
                    "DB11_INF".Gestion.Datos.Int_19 :=
                    "DB11_INF".Gestion.Datos.Int_20 := 0;
                    "DB11_INF".Gestion.Aviso.Registrar := 0;
                    "DB11_INF".Gestion.Etapa := #REPOSO;
                    
                    // =============================================================================
                #FALLO:
                    
                    "FC8_ZC_TRZ_REGISTRO"(FechaHora := "DB1_SYS".FechaHoraActual,
                                            Registrar := 1,
                                            Categoria := "TRZ_CAT_1_SYS",
                                            User := '',
                                            CodInt_1 := "TRZ_SYS_INF_ERR",
                                            CodInt_2 := 0,
                                            CodInt_3 := 0,
                                            CodInt_4 := 0,
                                            CodInt_5 := 0,
                                            CodReal_1 := 0.0,
                                            CodReal_2 := 0.0);
                    "DB11_INF".Gestion.Datos.Registrar := 0;
                    "DB11_INF".Gestion.Etapa := #REPOSO;
                    
            END_CASE;
            
        END_REGION
        
        
    END_NETWORK
END_FUNCTION
