Foros del Web » Programando para Internet » PHP »

Llamar un programa de AS400 con parametros desde PHP

Estas en el tema de Llamar un programa de AS400 con parametros desde PHP en el foro de PHP en Foros del Web. Hola, puestos a complicarnos la vida en nuestra empresa, me han preguntado si puedo llamar a un programa, q esta en el servidor de la ...
  #1 (permalink)  
Antiguo 29/06/2006, 10:26
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 11 meses
Puntos: 10
Llamar un programa de AS400 con parametros desde PHP

Hola,
puestos a complicarnos la vida en nuestra empresa, me han preguntado si puedo llamar a un programa, q esta en el servidor de la empresa q es un AS400, con paso de parametros, y retorno de resultados.
Asi podriamos pasar toda la programacion hecha en Visual Basic a PHP e incorporarlo todo a una intranet!
La verdad q no ser si se puede llegar hacer?
Lo q habia llegado hacer hasta ahora es conectarme via ODBC para hacer consultas! pero por temas de rapidez es mejor llamar a un programa de AS q cree un fichero y me retorne el resultado.
tengo control total sobre los servidores, ya sea el servidor web(LINUX) como el AS400.
Alguna idea?
una llamada a un programa de AS 400 en visual seria asi...
ejemplo sencillo
Código:
    CL = "call programaas400 "
    Set conexio = New ADODB.Connection
    conexio.Open "PROVIDER=IBMDA400;DATA SOURCE=" & SYSNAME & ";", "user", "passwd"
    conexio.Execute (CL)
    conexio.Close
Gracias de antemano,

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 29/06/2006 a las 11:22
  #2 (permalink)  
Antiguo 29/06/2006, 12:38
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
El programa es un ejecutable que corre en windows y realiza las conexiones y todo eso, o es un programa que esta en server as400 y hay que invocarlo remotamente?
  #3 (permalink)  
Antiguo 30/06/2006, 08:27
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 11 meses
Puntos: 10
Buenas Tardes,
esta en el AS400 y tengo q invocarlo remotamente, para obtener una serie de resultados.

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #4 (permalink)  
Antiguo 30/06/2006, 11:54
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
De que forma pueden comunicarse el servidor Linux y el servidor AS400?
  #5 (permalink)  
Antiguo 04/07/2006, 01:28
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 11 meses
Puntos: 10
Hola, q tal?
a q te refieres?
en linux se puede programar un script para llamar rutinas de AS400!
las rutinas q ahora estan creadas para la comunicacion estan hechas en JAVA.
el problema esta con los programas mas antiguos q estan hechos en visual basic... y esos son los q me han pedido pasar a PHP, pero no empezare hasta saber si se puede llamar una CL del AS400..

gracias,
saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 04/07/2006 a las 03:49
  #6 (permalink)  
Antiguo 04/07/2006, 09:10
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Si puedes programar script para llamar rutinas AS400, desde php invoca esos scripts, que los scripts llamen a las rutinas, que las rutinas creen archivos con datos procesados y que php lea los resultados y los muestre.
Para ejecutar script en Linux desde php sólo haces:

system("nombre_script [parametros]");

Otra opción es que estos mismos script trabajen como cgis y generen ellos mismos las paginas con la información al ser invocados desde el navegador.
  #7 (permalink)  
Antiguo 04/07/2006, 09:26
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 11 meses
Puntos: 10
pero directamente no puedo 'invocar' directamente CL del AS400 no?
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #8 (permalink)  
Antiguo 04/07/2006, 09:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por claudiovega
Si puedes programar script para llamar rutinas AS400, desde php invoca esos scripts, que los scripts llamen a las rutinas, que las rutinas creen archivos con datos procesados y que php lea los resultados y los muestre.
Para ejecutar script en Linux desde php sólo haces:

system("nombre_script [parametros]");

Otra opción es que estos mismos script trabajen como cgis y generen ellos mismos las paginas con la información al ser invocados desde el navegador.
Pero .. PHP ha de correr para usar system() y funciones afines en el mismo servidor que ejecute esas aplicaciones es decir, en ese AS400. El tipo de proceso que se puede invocar de esa forma desde PHP sería algo que no requiera iteracción con un "humano" .. por ejemplo .. llamar a alguna aplicación que le pases X parámetros o simplemente la llames y te arroje un resultado .. de preferencia generar un archivo o alguna acción con una BBDD en concreto.

De todas formas .. el ejemplo que expones en principio se trata de una conexión ODBC a cierta BBDD o DSN creado (o DNS "less" por ruta directa). En ese caso si PHP corre bajo el mismo servidor y tienes instalados los driver ODBC correspondiente + a PHP la extensión para ODBC: www.php.net/odbc podras conectarte sin problemas.

Si PHP lo tienes corriendo en otro servidor (Linux por ejemplo) y tu BBDD ODBC en ese AS400, realmente dá igual si es un "AS400 o es otro tipo de servidor y/o Sistema Operativo que este corra, lo que importa es que sólo te puedes conectar "al parecer" a esa BBDD por ODBC y las conexiones ODBC por su naturaleza sólo son "locales" en principío o indicando -en el driver ODBC- o DSN creado donde está los "archivos" de la BBDD en sí.

En resumen, .. si tienes ese tipo de configuración tendrás que recurrir a un driver ODBC que funcione por Sockets para que te "sirva" ese "DSN" o conexión ODBC por TCP/IP y en PHP su correspondiente "cliente" (un script para tal fin que se conecte a ese socket-servidor ODBC que va actuar).

Por ejemplo tienes este:
http://odbcsock.sourceforge.net/

Está diseñado para ODBC basados en Windows ...

Otro tutorial sobre esta técnica:
http://www.phpbuilder.com/columns/timuckun20001207.php3

Busca información al respecto "ODBC socket" ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 06/07/2006, 09:18
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 11 meses
Puntos: 10
Hola de nuevo, antetodo muchas gracias por vuestras respuestas.
perdon si no me he explicado bien pero el problema q tengo no es de conexion,traves de odbc lo he conseguido, he hecho algunas consultas y demas... la duda q tengo es de como puedo llamar a un procedimiento del AS400, o cual es la funcion q me haria falta para hacer un "CALL".
lo unico q encontrado de informacion es esto: http://www.i5php.net/ pero tmp me lo deja muy claro...
es posible...?

gracias,

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 06/07/2006 a las 10:40
  #10 (permalink)  
Antiguo 06/07/2006, 10:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. un "CALL" supongo que será un "Store procedure" (o procedimiento almacenado) .. el cual debes llamar vía SQL (el adecuado).

Si es así .. no menciones más "programa" por qué así confundes .. Y en tal caso será un problema que debas resolver en el foro de "Base de datos" para ver que sentencia SQL será la más adecuada.

Por cierto .. hablas de "AS400" .. pero en realidad usarás tal o cual BBDD: tal vez DB2? .. no sé .. como "servidor" que es esa máquina supongo que podrás correr cualquier tipo de BBDD que corra bajo el Sistema Operativo que use esa máquina .. así que no estaría de más concretar que BBDD usas realmente. (por qué no todo el mundo maneja AS400 pero tal véz si que use esa BBDD en otros ambientes y te podría ayudar).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 06/07/2006, 10:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Por cierto .. en el URL mencionado .. ya vistes este "tutorial"?:
http://www.i5php.net/index.php?name=...iewtopic&p=775

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 06/07/2006, 10:27
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 12 años, 11 meses
Puntos: 10
Buenas...
las base de datos son db2, el servidor es un iseries de ibm, un mainframe, el tipico de pantalla verde por decirlo asi. pero no trabajo contra db2 directamente, sino q tengo q llamar a ese procedure o programa para q ese me devuelva varios resultados...

lo siento.. es q no ser como explicarme mejor...

editado: x cierto.. vi el tutorial.. y tengo q hacer varias pruebas a ver q tal... pero como el ingles no es mi fuerte.. en algunos sitios me encallo... q le vamos hacer...

muchas gracias Cluster...

cuando tenga algo ya lo posteare...

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier

Última edición por sergi_climent; 06/07/2006 a las 10:45
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:34.