Llamada a un FTP desde un pgm cobol.

Todo lo relacionado con Cobol en ambientes batch, online(CICS,IMS) con bases de datos(DB2, Adabas) etc.
Responder
ATEJ

Llamada a un FTP desde un pgm cobol.

Mensaje por ATEJ » 15 Oct 2004, 04:16

Buenos dias, alguien sabe como se hace una llamada a un FTP desde un programa cobol???.
Salud. Gracias de antemano.

Bagual

Re: Llamada a un FTP desde un pgm cobol.

Mensaje por Bagual » 22 Ene 2005, 20:47

ATEJ escribió:Buenos dias, alguien sabe como se hace una llamada a un FTP desde un programa cobol???.
Salud. Gracias de antemano.
Empecemos poniendo un poco de orden.
1. FTP es un protocolo con una arquitectura cliente-servidor.
2. Asumo que queremos que nuestro programa sea cliente.
3. O utilizamos algun cliente ya escrito, o escribimos codigo para dialogar a traves de un socket por el port 21.

Si nos pasas mas datos del escenario, podriamos ser mas precisos en las sugerencias.

Saludos.

admin
Administrador
Administrador
Mensajes: 22
Registrado: 12 Oct 2003, 15:58
País: Argentina
Ciudad: Zárate
Ocupación: Otra

Mensaje de ATEJ

Mensaje por admin » 25 Ene 2005, 13:58

Dado que ATEJ tiene un problema técnico para entrar el foro, me mando por mail lo que pudiron ser respuestas a esta pregunta. Son transcriptas a continuacion:
-------------------------------------------------------------------------------------
Marta Isabel, mira éste manual para los códigos del FTP y su explicación, el capítulo 3, esto es un extracto.
IBM Communications Server
IP User's Guide
http://www-1.ibm.com/servers/eserver/zs ... mserv.html

Parameters
-d Starts the generation of tracing output. Equivalent to TRACE.
-e Terminates FTP, for certain FTP errors, with a nonzero MVS return code.
Equivalent to EXIT.
-g Turns off metacharacter expansion (globbing). Equivalent to the GLOB
subcommand.
-i Turns off interactive prompting for MDELETE, MGET, and MPUT
subcommands. Equivalent to the PROMPT subcommand.
-n Inhibits automatic login. If you have defined a NETRC data set, it will not be
used to log on to this session.
-p tcpip
Indicates the name of the TCP on the local host to which the FTP client should
connect. This parameter is ignored if your system is not configured for multiple
instances of TCP/IP. This is equivalent to TCP tcpip.
-t dsn
Specifies the name of a nonstandard translation table. Equivalent to
TRANSLATE dsn.
-v Enables verbose mode. This parameter gives you extra information (such as
message IDs) when running in OS/390 UNIX.
Note: If you are running the FTP client in TSO, you can have message
numbers appended to client messages by using the profile option
MSGID.
-w nn
Specifies the number of seconds to be used for the TIMEOUT parameters.
Equivalent to TIMEOUT nn.
foreign_host
Specifies the name of the host to which you are connecting. Specify the host by
its host name or its IP address. The host can be a remote host or your local
host.
You are prompted for a host name if you do not specify a foreign_host with the
FTP command. If you specify foreign_host incorrectly, or if the host is not
accessible, you enter the FTP environment without connecting to a host. You
should then use either the OPEN subcommand to attempt another connection
with a host, or the QUIT subcommand (or Ctrl-C, in OS/390 UNIX) to exit the
FTP environment.
port_number
Specifies the port number of the FTP server on the remote host. The default is
well-known port 21. The maximum port number that can be specified is 65534.
(This parameter should not be used unless you are sure there is a server
listening on a port other than the well-known port 21 at the destination.)
Exit
Terminates FTP, for certain FTP errors, with a nonzero MVS return code. See
Table 15 on page 91 for examples of these return codes.
Exit=nn
Terminates FTP with a nonzero return code of your choice when an FTP error
occurs. Valid values are in the range 0-255.
TRACe
Starts the generation of tracing output. TRACe is used in debugging.

--------------------------------------------------------------------------------------

Attachments: PRESENTACION.pdf


Marta Isabel, la idea original era hacer referencia a la exit y la he olvidado. En nuestro caso la usamos para que devuelva el código de error si falla el jcl.
Si no tiene Exit acaba con código 00 aunque falle el JCL.
Te adjunto una presentación por si te sirve de algo.

-------------------------------------------------------------------------------------


Antonio,
Es exactmente esto.
Solo que me queda una duda, a que apunta la EXIT=12 en la ParM, Que parametros le puedo pasar ?


Desde un Cobol todavía no he encontrado la manera de hacerlo.

Desde un batch esto es lo que usamos:

//JOBNAME JOB ,xxxx,CLASS=x,MSGCLASS=X,NOTIFY=&SYSUID
//* ******* TRANSMISION FTP BATCH ****************** *
//FTP EXEC PGM=FTP,
// PARM='(exit=12'
//STEPLIB DD DSN=OS28.MVSTCPIP.SEZALNK2,DISP=SHR
//SYSFTPD DD DSN=OS28.MVSTCPIP.USER.LIB(FTCDATA),DISP=SHR
//SYSMDUMP DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//OUTPUT DD SYSOUT=*
//INPUT DD *
FTP.S390.IBM.COM ********* DIRECCION, EN ESTE CASO IBM.
ANONYMOUS ********* USUARIO
PASSWORD ********* PASSWORD
locsite lrecl=80 filetype=seq recfm=fb ********* Caracteristicas del fichero de salida
GET os390/racf/racfice/RACFICE.SAMPADU.XMIT + ********* Comando, fichero de entrada, fichero de salida.
'SALE.FILE'
CLOSE ********* Comandos
QUIT *********
/*
*************************************************************
//* TRANFERENCIA DE UN FICHERO A PC CON FTP, DESDE UN JCL.
//* EL FICHERO DE SALIDA ESTA ENLA DIRECCION DEL PC:
//* \\PEPE\SOFT\TRANSFER\ATEJ\DIARIO.TXT, A PESAR DE QUE EN LA
//* LINEA @@ SE LE INDICA SOLAMENTE "PEPE\ATEJ\DIARIO.TXT"
//* ASUME LO QUE FALTA.

//JOBNAME JOB ,ATEJ,CLASS=X,MSGCLASS=X,NOTIFY=&SYSUID
//* TRANSMISION FTP BATCH *
//FTP EXEC PGM=FTP,
// PARM='(exit=12'
//STEPLIB DD DSN=OS28.MVSTCPIP.SEZALNK2,DISP=SHR
//SYSFTPD DD DSN=OS28.MVSTCPIP.USER.LIB(FTCDATA),DISP=SHR
//SYSMDUMP DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//OUTPUT DD SYSOUT=*
//INPUT DD *
000.000.000.000 @@q Direccion IP
usuario @@@@ Usuario
Password @@@@ Password
PUT 'EXP.SIPRTEJ.SALIDA' + @@@@ Comando y fichero de Entrada
PEPE\ATEJ\DIARIO.TXT @@@@ Fichero de salida
CLOSE Comandos
QUIT
/*


No sé si es esto lo que buscas, espero que sí.

Un Saludo.

------------------------------------------------------------------------------------

HOLA
Sabes que tengo el mismo problema , necesito hacer un FTP desde un COBOL, o desde un BATCH, lograste descubrir si hay forma.
muchas gracias
merma

--------------------------------------------------------------------------------------

Aqui terminan los mails cursados.

Agradeceré que usen el foro y si tienen inconvenientes (como ATEJ) se comuniquen conmigo para ver la forma de solucionalos.

guille

FTP desde Cobol

Mensaje por guille » 25 Ene 2005, 19:18

Hola:

Te paso un ejemplo de ejecución BATCH en mi instalación (z/OS 1.4).-
La PARM='(EXIT ' permite que el FTP te devuelva el código de retorno,
que es el producto de la división del código de FTP propiamente dicho por
4096 y el resto obtenido de esa operación, será el código de retorno
que devuelva el JCL.-
Antes de submitir el JCL, verificá que no tenga los números de líneas
a partir de la columna 73, de ser así, sacalos (Con NUMBER ON y UNNUM)
ya que te los toma como parte del 1er comando que ejecutás.-

//**********************************************************
//* Envío ftp a PC (función PUT)
//**********************************************************
//FTP00010 EXEC PGM=FTP,PARM='(EXIT '
//INPUT DD *
Dirección IP (es la dirección IP de la PC de destino)
Usuario (Usuario definido en el servidor FTP de la PC de destino)
Password (Password definida para el Usuario en PC de destino)
PUT 'Nombre de archivo en Mainframe' nombre de archivo en PC
quit
//OUTPUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//************************************************************

Te paso también un ejemplo de ejecución FTP desde un Pgm REXX

/* REXX */
/*-------------------------------------------------------------------*/
/* Función: Ejecución de comandos FTP desde REXX.- */
/*-------------------------------------------------------------------*/
/* Coloco los comandos FTP en el stack */
QUEUE "Dirección IP" /* Dirección IP PC de Destino */
QUEUE "Usuario Password" /* userid/password */
QUEUE "PUT 'Archivo en Mainframe' Archivo en PC"
QUEUE "quit"
FTPPARM = '(EXIT ' /* Parámetros para el FTP */
"FTP" FTPPARM /* Ejecuto el FTP */
ftprc = RC /* Código de retorno del FTP */
If ftprc ¬= 0 then
do
Say Copies("*",79)
Say '*** EL FTP TERMINO MAL CON RETURN CODE' ftprc '***'
Say Copies("*",79)
Exit ftprc
end
else
Say Copies("*",79)
Say '*** EL FTP TERMINO BIEN. ***'
Say Copies("*",79)
exit ftprc

Espero te sirva y cualquier duda, volvé a preguntar.-
Saludos

merma06

Mensaje por merma06 » 26 Ene 2005, 10:21

GUILLE,
Muchas gracias por tu respuesta.
Muy clarificadora. ya lo estoy probando. :lol:

Responder