Está en la página 1de 5

Usando PHP Toolkit IBM i

en Codeigniter

Ing. Hector Curbelo Barrios


Intoduccion
PHP Toolkit para IBM i es un conjunto de clases que permite que los programas
de PHP interactúen con servicios, aplicaciones y datos nativos de IBM i. Esto
incluye realizar llamadas al programa RPG y COBOL, acceder a DB2 / 400 y colas
de datos, utilizar API nativas del sistema y acceder a los archivos de spool. Es
un componente del Servidor Zend para IBM i, especialmente para los sistemas
IBM i que desean modernizar sus aplicaciones de pantalla, mediante la
construcción de nuevas interfaces Web PHP. La versión inicial de PHP Toolkit
para IBM i fue desarrollada por la empresa de software francesa IBM i AURA
Equipments, que se asoció con Zend para ofrecer una versión OEM de su
producto EasyCom. Se lanzó por primera vez en 2006 en Zend Core para IBM
i, y hoy se distribuye a través del nuevo producto Zend Server para IBM.

http://www.seidengroup.com/toolkit/
https://es.slideshare.net/aseiden/new-php-toolkit-from-zend-and-ibm-open-
source-on-ibm-i
https://www.youtube.com/watch?v=A9L5IJQvoJE
En estos enlaces se define claramente la funcionalidad de PHP Toolkit para
IBM i, son excelentes materiales prácticos del uso de esta librería, ya que en
este artículo solo veremos como configurarlo para que funcione
correctamente en Codeigniter.
Desarrollo
PHP Toolkit para IBM i nos permiten ejecutar programas RPG en los sistemas
AS-400 de IBM, dándole una gran fortaleza a los programas escritos en php
para estos Sistemas Operativos.
Codeigniter es un framework sencillo y muy fácil de adaptar a diferentes
escenarios y los sistemas As-400 son uno de estos escenarios donde no
cualquier framework puede trabaja eficazmente.
Descargar PHP Toolkit para IBM i:
https://github.com/zendtech/IbmiToolkit

Descargamaos Codeigniter:
https://codeigniter.com/download
Configuración:
Nos dirigimos a application - > libraries y copiamos dentro el paquete que
hemos descargado (ToolkitApi).
Para poder usar este librería en nuestro proyecto solo debemos incluir la clase
ToolkitService: 'ToolkitService' es la clase principal, que gestiona las
conexiones y la comunicación. Incluye métodos para manejar las conexiones,
las opciones del kit de herramientas, los comandos CL, las llamadas a
programas y los objetos relacionados, como los parámetros del programa.
La clase ToolkitService usa los siguientes métodos / funciones:
http://files.zend.com/help/Zend-Server-IBMi/content/toolkit_service_class.htm

En este caso vamos a ver el uso de unas de ellas en un controlador en


Codeigniter.

$ToolkitServiceObj = ToolkitService::getInstance($databaseName, $user, $password,


$transportType, $isPersistent)

Crea una conexión especificando el nombre de la base de datos, el suario y la


contraseña.
AddParameterChar( $IOType, $Size, $Comment, $Name, $Value)

Con esta función podemos definir los tipos de los parámetros que pasamos a
las funciones que vamos a ejecutar dentro del As-400.

PgmCall($Program, $Library, $Parameters, $Returnvalue, $options)

Con esta función permite llamar al programa (* PGM) o al programa de servicio


(* SRVPGM).
$ToolkitServiceObj->disconnect()

El método Disconnect detiene una conexión, finalizando el trabajo del toolkit.


Un ejemplo de como podemos usar en la práctica en un Controlador:
public function createCustomer( )
{

include(APPPATH.'libraries/ToolkitApi/ToolkitService.php');

$extension='ibm_db2';
//--Conection intance
try
{
$ToolkitServiceObj = ToolkitService::getInstance('S65F316D',
'WEBPROD','WEBPROD1', $extension);
}
catch (Exception $e)
{
$ansrw=['error'=>$e->getMessage()];
echo json_encode($ansrw);
exit();
}
$ToolkitServiceObj-
>setToolkitServiceParams(array('InternalKey'=>"/tmp/Webtest"));
//--Parameter Value
$SysValueName = 'P56RCI';
$VERS= 'VERS0001';
//--Add Parameter
$param[] = $ToolkitServiceObj->AddParameterChar('both', 10,'Program
ID','PROGRAMID', $SysValueName);
$param[] = $ToolkitServiceObj->AddParameterChar('both',
10,'Version','VERSION', $VERS);
//--Call the Program
$OutputParams = $ToolkitServiceObj->PgmCall('J56RCI','CUSTOBJ', $param, null,
null);
//Close Session
$ToolkitServiceObj->disconnect();
//--Evaluate result
if( isset($OutputParams))
{
$ansrw=['menssage'=>'success'];
echo json_encode($ansrw);
exit();
}
else
{
$ansrw=['menssage'=>'failed'];
echo json_encode($ansrw);
exit();
}
}

En este caso lo incluimos dentro de una función (createCustomer) de uno de


nuestros controladores donde queremos usar esta librería.
Incluir usando Composer:
https://github.com/zendtech/IbmiToolkit/wiki/Installation

También podría gustarte