Niveles de compatibilidad de aplicaciones (APPLCOMPAT) en Db2 12
El nivel de compatibilidad de aplicaciones (APPLCOMPAT) de sus aplicaciones controla la adopción y el uso de nuevas capacidades y mejoras, y a veces reduce el impacto de los cambios incompatibles. La ventaja es que puede completar el proceso de migración de e Db2 12 s sin necesidad de actualizar sus aplicaciones inmediatamente.
Después de activar el nivel de función 500 o superior, puede seguir ejecutando aplicaciones con las características y el comportamiento de versiones anteriores o niveles de función específicos de Db2 12 . 
Puede cambiar el nivel APPLCOMPAT para cada aplicación cuando esté listo para ejecutarla con las características y el comportamiento de una nueva Db2 versión o un nivel de función Db2 superior. El nivel de compatibilidad de la aplicación se aplica a la mayoría de las sentencias SQL, incluidas las sentencias de definición de datos (como las sentencias CREATE y ALTER) y las sentencias de control de datos (como las sentencias GRANT y REVOKE).
El nivel de compatibilidad de la aplicación de un paquete se establece inicialmente al vincular un paquete, basándose en los siguientes valores:
- El valor de la opción de enlace APPLCOMPAT, si se especifica. Para obtener más información, consulte la opción de enlace APPLCOMPAT.
- Si se omite la opción bind, el parámetro del subsistema APPLCOMPAT. Para obtener más información, consulte el campo NIVEL DE COMPATIBILIDAD DE APLICACIONES (parámetro del subsistema APPLCOMPAT).
Para las sentencias SQL estáticas, la columna APPLCOMPAT de la tabla de catálogo de SYSIBM.SYSPACKAGE almacena la configuración de compatibilidad de la aplicación. Esta configuración cambia por las siguientes razones:
- Usted emite un comando REBIND para el paquete y especifica un valor diferente para la opción APPLCOMPAT. Si omite esta opción, se utilizará el valor anterior del paquete. Si no hay ningún valor anterior disponible (como en el caso de los paquetes vinculados por última vez antes de la introducción de la compatibilidad de aplicaciones), se utiliza el valor del parámetro del subsistema APPLCOMPAT.
- Se produce un enlace automático del paquete. La compatibilidad de la aplicación se establece en el valor anterior. Si no hay ningún valor anterior disponible, se utiliza el valor del parámetro del subsistema APPLCOMPAT.
Para las sentencias SQL dinámicas, el registro especial CURRENT APPLICATION COMPATIBILITY almacena la configuración de compatibilidad de la aplicación. Esta configuración cambia por las siguientes razones:
- El registro especial se inicializa con la compatibilidad de la aplicación del paquete, como se ha descrito anteriormente.
- Durante la ejecución del paquete, las sentencias SET CURRENT APPLICATION COMPATIBILITY pueden cambiar el registro especial. El valor debe ser equivalente a la opción de enlace APPLCOMPAT para el paquete o inferior, si el valor es V12R1M500 o superior. Para obtener más información, consulte el registro especial COMPATIBILIDAD DE APLICACIONES ACTUALES.
Para nuevas instalaciones, el valor predeterminado del parámetro del subsistema APPLCOMPAT es V12R1M500. Sin embargo, puede especificar un valor más alto. Para entornos migrados, el valor predeterminado es el valor del miembro de entrada de migración.
Cuando migre a Db2 12 o active cualquier nivel de función superior, cambie el valor del parámetro del subsistema APPLCOMPAT solo después de que todas las aplicaciones puedan utilizar las capacidades SQL de Db2 12 o el nivel de función superior. Para obtener más información, consulte Especificar el nivel de compatibilidad predeterminado de la aplicación.
Niveles APPLCOMPAT compatibles en Db2 12
Db2 12 admite los siguientes niveles de APPLCOMPAT en la mayoría de los contextos.

V12R1M5nn

Compatibilidad con el comportamiento del nivel de función Db2 12 identificado. Por ejemplo,
V12R1M510especifica la compatibilidad con el nivel de función Db2 12 más alto disponible. Debe activarse el nivel de función equivalente o superior.
Para obtener información sobre las nuevas capacidades que estarán disponibles en cada nivel de compatibilidad de aplicaciones, consulte Niveles de compatibilidad de aplicaciones V12R1Mnnn.
Sugerencia:
Es posible que se requieran pasos adicionales de preparación del programa para aumentar el nivel de compatibilidad de las aplicaciones que utilizan clientes o controladores de servidor de datos para acceder a Db2 for z/OS®. Para obtener más información, consulte Configuración de niveles de compatibilidad de aplicaciones para clientes y controladores de servidores de datos.

V12R1
Compatibilidad con el comportamiento de Db2 12 nivel de función 500. Este valor tiene el mismo resultado que especificar V12R1M500.
- V11R1
- Compatibilidad con el comportamiento de la modalidad de nueva función de Db2 11. Después de la migración a Db2 12, este valor tiene el mismo resultado que especificar
V12R1M100. Para más información, consulte V11R1 nivel de compatibilidad de la aplicación - V10R1
- Compatibilidad con el comportamiento de la modalidad de nueva función de DB2® 10. Para más información, consulte V10R1 nivel de compatibilidad de la aplicación.
Para obtener los mejores resultados, configure su entorno de desarrollo para utilizar el nivel de compatibilidad de aplicaciones más bajo al que se ejecutará la aplicación en el entorno de producción. Para SQL dinámico, recuerde tener en cuenta los niveles de compatibilidad de la aplicación de los paquetes cliente y NULLID. Si desarrolla y prueba aplicaciones en un nivel de compatibilidad de aplicaciones superior e intenta ejecutarlas en un nivel inferior en producción, es probable que se encuentre con el código SQL -4743 y otros errores cuando despliegue las aplicaciones en producción.
Ejemplo: compatibilidad de la aplicación V10R1
El siguiente ejemplo muestra los resultados de utilizar una capacidad que se introduce en el nivel de compatibilidad de la aplicación V11R1, con el nivel de compatibilidad de la aplicación establecido en V10R1. Supongamos que el valor del parámetro del subsistema APPLCOMPAT es V10R1. La instrucción CREATE PROCEDURE de ejemplo no especifica la palabra clave APPLCOMPAT. En este ejemplo la sentencia CREATE TYPE tiene éxito pero la sentencia CREATE PROCEDURE da como resultado el código SQL -4743.
CREATE TYPE PHONENUMBERS AS VARCHAR(12) ARRAY ??(1000000??)
DSNT400I SQLCODE = 000, SUCCESSFUL EXECUTION
CREATE PROCEDURE FIND_CUSTOMERS(
IN NUMBERS_IN KRAMSC01.PHONENUMBERS,
IN AREA_CODE CHAR(3),
OUT NUMBERS_OUT KRAMSC01.PHONENUMBERS)
BEGIN
SET NUMBERS_OUT =
(SELECT ARRAY_AGG(T.NUM)
FROM UNNEST(NUMBERS_IN) AS T(NUM)
WHERE SUBSTR(T.NUM, 1, 3) = AREA_CODE);
END
DSNT408I SQLCODE = -4743, ERROR: ATTEMPT TO USE A FUNCTION WHEN THE
APPLICATION COMPATIBILITY SETTING IS SET FOR A PREVIOUS LEVEL
El valor de la opción de enlace APPLCOMPAT para la sentencia CREATE PROCEDURE se establece en V11R1 o superior y el resultado de la sentencia es correcto.
CREATE PROCEDURE FIND_CUSTOMERS(
IN NUMBERS_IN KRAMSC01.PHONENUMBERS,
IN AREA_CODE CHAR(3),
OUT NUMBERS_OUT KRAMSC01.PHONENUMBERS)
APPLCOMPAT V11R1
BEGIN
SET NUMBERS_OUT =
(SELECT ARRAY_AGG(T.NUM)
FROM UNNEST(NUMBERS_IN) AS T(NUM)
WHERE SUBSTR(T.NUM, 1, 3) = AREA_CODE);
END
DSNT400I SQLCODE = 000, SUCCESSFUL EXECUTION