Hace algún tiempo
escribí un breve artículo sobre como interconectar un SQL Server con AS/400.
Ahora que ya tienes un Linked Server (termino técnico de Microsoft para
denominar este tipo de conexiones) lo
siguiente sin duda es aprovecharlo. Para empezar, estoy asumiendo que ya tienes
una conexión entre tu SQL y algún AS/400 pero si no es así, te recomiendo visitar
este articulo.
Ahora bien, ¿Cómo
ejecutas un programa RPG desde SQL Server?
Primero que nada,
SQL “visualiza” —por decir de algún modo— los programas de AS/400 como
procedimientos almacenados. Estoy seguro que a estas alturas ya te habrás
imaginado que vamos a usar EXCEC… si fue así, te felicito sinceramente.
Ahora la sintaxis
requerida para ejecutar un RPG sería más o menos esta:
EXEC (‘call somelib.somerpg’) AT MYAS400
Donde somelibrary
es la librería donde se almacena el programa de RPG, somerpg es el programa RPG
que deseas ejecutar y MYAS400 es el nombre de tu linked server.
Hasta aquí, todo
de maravilla. Pero ¿Qué sucede si necesito pasar parámetros? Si ese fuera el
caso, será necesario realizar unos pequeños ajustes. Uno de ellos es almacenar
primero los valores que usarás como parámetro en variables de tipos compatible
con AS/400. En este sencillo ejemplo,
voy a pasar un texto como parámetro: Notarán que usé CHAR en vez de VARCHAR.
DECLARE @param AS CHAR(11)
SET @param='Luis Osorio'
EXEC ('call somelib.newrpg(?)',@param) AT MYAS400
La razón de usar variables con tipos de datos compatibles
con AS/400 es simple: integridad de datos. Para muestra, un botón. A continuación
observamos la salida del programa RPG en dos diferentes circunstancias: una
usando el ejemplo anterior y otra pasando directamente el valor.