Gravatar de Kujaku

Mi primer programa en COBOL-CICS

Bueno, en el tocho de hoy, vamos a centrarnos en como crear un programa COBOL que mediante una transacción CICS, se ejecute y nos saque por pantalla un “Hola Mamones”.

Pero antes de meternos en el rollo de programar, primero hay que aclarar una serie de conceptos de CICS.

Para empezar, una transacción CICS puede ser de muy diversa índole y puede ser lanzada de muchas maneras: La puedes teclear en tu terminal, la puedes lanzar por un socket, o incluso puedes hacer un FTP y lanzar un JCL que a su vez lance una transacción, siempre y cuando se cumplan los requisitos de seguridad, y demás que obviaremos porque me eternizaría (aun mas). En nuestro caso, vamos a centrarnos en la parte más tradicional del CICS, es decir, que un usuario teclee una transacción y le salga por pantalla un mensaje.

Ni que decir tiene que CICS es un sistema muy robusto, tanto, que se queja por todo. Pero por TO-DO. Esa es una de las razones por las que es muy difícil que se cuelgue un programa, porque tienes que tener en cuenta todas las variables posibles de error y codificarlas, porque de lo contrario, CICS cancela la transacción así por las buenas, y con un bonito ABEND de regalo. Así que hay que tener cuidado a la hora de programar, pero no os preocupéis, el programa que vamos a codificar es tan sencillo que no hará falta realizar ningún tipo de control de errores. De hecho, ni siquiera lo haremos pseudo-conversacional, porque solo haremos que se muestre un mensaje y saldremos del programa, con lo que el CICS finalizará la transacción. No obstante, si os animáis, en una entrega posterior, podemos complicar un poco el programa para que veáis más conceptos de CICS.

Así que vamos al meollo de la cuestión: Hemos hablado de Transacciones, de Programas y de Pantallas de usuario. Pues en CICS hay que crear las 3 cosas: Hay que crear un programa, hay que crear la transacción que llamará al programa, y hay que crear la pantalla del usuario. Empezaremos por este último paso.

Creación de la Pantalla

Una Pantalla de usuario, o, en la jerga CICSera, mapa BMS (Basic Mapping Support), es una plantilla de lo que queremos que aparezca por la pantalla del terminal cuando invoques a la transacción: Puede ser un título, o unos campos a rellenar, o cualquier cosa que se te ocurra en 24 lineas por 80 columnas. En nuestro caso, pondremos un cuadrado mas o menos centrado y su interior, el texto Hola Mamones, y podemos utilizar alguna característica 3270, como poner un color, por ejemplo. Todo esto lo voy a hacer a mano, pero existen muchas herramientas como VisualAge por ejemplo que te hacen las pantallas automáticamente. Pero a mi me gusta mas hacerlo a mano, porque se optimiza mucho mas el código (si, también me gusta escribir HTML en el Notepad, ¿pasa algo? xDDD).

Un MAPSET es un conjunto de mapas, que, al igual que los <div> de las webs, pueden definir regiones dentro de la pantalla que cada una tenga características distintas, pero en nuestro caso, vamos a crear un mapset y un mapa que ocupe toda la pantalla, para hacerlo mas fácil. El código que yo he hecho ha sido este:

HOLAMP   DFHMSD TYPE=DSECT,MODE=INOUT,TERM=ALL,STORAGE=AUTO,LANG=COBOL  
HOLAMP   DFHMDI SIZE=(24,80),LINE=1,COLUMN=1,COLOR=GREEN,HILIGHT=OFF,  X
               MAPATTS=(COLOR,HILIGHT),DSATTS=HILIGHT,CTRL=FREEKB       
         DFHMDF POS=(10,10),LENGTH=20,INITIAL='********************',  X
               COLOR=BLUE,ATTRB=(ASKIP,NORM)                            
         DFHMDF POS=(11,10),LENGTH=20,INITIAL='*                  *',  X
               COLOR=BLUE,ATTRB=(ASKIP,NORM)                            
         DFHMDF POS=(12,10),LENGTH=20,INITIAL='*  HOLA, MAMONES!  *',  X
               COLOR=BLUE,ATTRB=(ASKIP,NORM)                            
         DFHMDF POS=(13,10),LENGTH=20,INITIAL='*                  *',  X
               COLOR=BLUE,ATTRB=(ASKIP,NORM)                            
         DFHMDF POS=(14,10),LENGTH=20,INITIAL='********************',  X
               COLOR=BLUE,ATTRB=(ASKIP,NORM)                            
         DFHMSD TYPE=FINAL                                              
         END                                                            

Tanto al mapset como al mapa, lo he llamado HOLAMP. También guardaremos el fichero con el mismo nombre, ya que el CICS va a ir a buscar ese fichero y debe coincidir con el nombre del mapa. Como podréis ver, hay 3 tipos de “instrucciones”:

  • DFHMSD, hace referencia al MAPSET. Tiene una serie de variables que no comentaré aquí porque me alargaría todavía más, pero ya veis que el subtipo TYPE da la referencia de donde empieza y donde acaba.

  • DFHMDI, hace referencia al MAPA en cuestión, y como podréis ver entre otros parámetros, muestra el tamaño de dicho mapa.

  • DFHMDF, hace referencia a los CAMPOS de ese mapa. Cada campo puede ser editable o no, y podría cada uno tener colores distintos, etc. También se le indica la posición de ese campo dentro del mapa con el parámetro POS. En nuestro caso, este mapa solo va a mostrar datos, nada mas, por lo que en el campo INITIAL pondremos el contenido que queramos poner, en nuestro caso, el banner, y queremos que sea de color azul.

Con esto, ya tenemos los datos que saldrán por pantalla. Lo siguiente que haríamos, será compilar dicho mapa con el compilador de COBOL, con un JCL, finalizado el cual dejará dos ficheros: Uno, el mapa compilado y linkeditado que usará el CICS para mostrarlo por pantalla, y el otro, la COPY del mapa. Este último fichero sirve para que, añadiéndolo al programa en la WORKING-STORAGE SECTION, el programa tenga la referencia de a que llamar para que el CICS lo llame.

Generalmente, este fichero si tuviera campos editables y para rellenar, sería muy larga, porque todo mapa tiene un campo que se trata como entrada (I) que es cuando el usuario ha introducido algo, y otro que se trata como Salida(O) que es cuando el CICS le debe responder en un campo. Por ejemplo, si tuviéramos un campo llamado DNI para rellenar, el compilador haría 2 Redefines de ese campo: DNII cuando el usuario Introduzca el DNI, y DNIO cuando el programa quiera escribir ahí un DNI de una base de datos, por ejemplo. El caso es que nos ha salido un churro como este:

01  HOLAMP PIC X(100).                  
01  HOLAMPI REDEFINES HOLAMP.
    02  FILLER PIC X(12).     
01  HOLAMPO REDEFINES HOLAMPI.
    02  FILLER PIC X(12).     

Traduciendo, el mapa ocupará 100 bytes, y luego deja 12 bytes (no me digáis para que, que no tengo ni idea), y como no tiene campos editables de entrada ni de salida, el mapa de entrada HOLAMPI es redefinido con el de salida (HOLAMPO). Pues esas 5 líneas las pegaremos en nuestro programa COBOL cuando lo escribamos, en la zona WORKING-STORAGE SECTION.

Creación del programa

Lo malo del COBOL, es que es estricto de narices en su escritura y su estructura, y un espacio de más o de menos en ciertas columnas puede hacer que el programa (por ejemplo, los comentarios empiezan con asterisco en la columna 8, y solo en la 8) dé mil quebraderos de cabeza. Lo bueno, es que una vez superada esa tocada de narices, programas líneas una detrás de otra como si estuvieras manteniendo una conversación en ingles, y es tremendamente fácil y potente. Para mí, mucho más fácil que JAVA o C.

Sin mas, el programa sería algo tan sencillo como esto:

*************************************************
*
*  PROGRAMA HOLA MAMONES DE CICS-COBOL
*
*************************************************
 IDENTIFICATION DIVISION.
 PROGRAM-ID. HOLA.
 ENVIRONMENT DIVISION.
 DATA DIVISION.
 WORKING-STORAGE SECTION.
 01 HOLAMP  PIC X(1000).
 01  HOLAMPI REDEFINES HOLAMP.
     02  FILLER PIC X(12).
 01  HOLAMPO REDEFINES HOLAMPI.
     02  FILLER PIC X(12).
*
 PROCEDURE DIVISION.
*
 MOSTRAR-MAPA.
     EXEC CICS SEND MAP('HOLAMP')
               MAPONLY
               ERASE
               NOHANDLE
     END-EXEC.
 FIN-PGM.
     EXEC CICS RETURN
     END-EXEC.
     GOBACK.

Lo cojonudo del caso es que casi hay más líneas de código de la “estructura” obligatoria a seguir de COBOL, que lo que realmente hace el programa. Pero vamos, lo que hemos puesto es lo siguiente:

  • En la Working, hemos pegado la copy del mapa que hemos hecho antes.

  • Hemos escrito un procedimiento llamado MOSTRAR-MAPA que no hace más que un EXEC CICS enviando el mapa. Con la opción MAPONLY, te curas en salud y te pasas por el forro la gestión de errores porque con esto le dices al CICS que solo va a mostrar un mapa, y que el usuario no va a teclear nada más.

  • Y hemos escrito otro procedimiento llamado FIN-PGM que lo que hace es devolver el control al CICS. Como van seguidos, una vez ejecutado el MOSTRAR-MAPA, ejecutará este y por lo tanto, saldrá del CICS.

Con otro JCL, compilaremos dicho programa y su programa “linkeditado” se quedará en una librería que el CICS tenga configurada como de carga de programas (al igual que el mapa), y deberá llamarse igual que el PROGRAM-ID que hemos puesto (en nuestro caso, el fichero se llamará HOLA).

Creación de la Transacción y definición en el CICS

Bueno, estamos en la recta final del tocho. Ahora que tenemos el programa y el mapa compilados, hay que molestar al CICS para decirle que tiene disponibles un programa y un mapa para que vía una transacción, muestre todo. Para ello, la herramienta que utilizaremos para molestar al CICS es la transacción CEDA.

Usando la CEDA (no tiene nada que ver con ceder el paso xDDD), definiremos la transacción, el programa y el mapa. CICS, para poder administrarse mejor, esta dividido en Grupos de aplicaciones, ya que si no, nos volveríamos locos si tenemos miles de programas y hay que buscar alguno en concreto. Es por ello, que crearemos un grupo llamado HOLA, en el que definiremos el programa, la transacción y el mapa. Decir también que el grupo se crea cuando creemos el primer miembro del grupo, por ejemplo, si empezamos definiendo el programa, y siempre que tengamos los permisos adecuados para ejecutar la transacción CEDA, haremos lo siguiente:

CEDA DEF PROG (HOLA) GROUP (HOLA)

Ahora, definiremos el mapa con el comando siguiente:

CEDA DEF MAP (HOLAMP) GROUP (HOLA)

Y por último, definiremos la transacción, la llamaremos HOLA (como tiene 4 caracteres, va que ni pintado) y le pondremos como parámetro cual es el programa que tiene que llamar en primer lugar, que, como en nuestro caso es HOLA, pues lo pondremos así:

CEDA DEF TRANS(HOLA) PROG(HOLA) GROUP(HOLA)

Bien, hasta aquí tenemos todo definido. Si hacemos un CEDA DI GROUP (HOLA), aparecerá una lista tal que esta:

DI GROUP(HOLA)                                                                
ENTER COMMANDS                                                                
 NAME     TYPE         GROUP                                   DATE   TIME    
 HOLAMP   MAPSET       HOLA                                    07.137 13.00.01
 HOLA     PROGRAM      HOLA                                    07.137 12.59.45
 HOLA     TRANSACTION  HOLA                                    07.137 12.59.32

Pero faltan dos pasos todavía: Hay que INSTALAR lo definido para que el CICS lo recuerde siempre a partir de ahora, y eso con poner una I a continuación del grupo en las tres líneas, y damos al enter, se instalará todo, y debería quedarse la pantalla algo como esto:

DI GROUP(HOLA)                                                                
ENTER COMMANDS                                                                
 NAME     TYPE         GROUP                                   DATE   TIME    
 HOLAMP   MAPSET       HOLA     i                           INSTALL SUCCESSFUL
 HOLA     PROGRAM      HOLA     i                           INSTALL SUCCESSFUL
 HOLA     TRANSACTION  HOLA     i                           INSTALL SUCCESSFUL

¿Ya estamos listos? No. Falta un último paso: Cargar el programa. Con la CEDA, hemos definido el programa y lo hemos instalado, pero con eso no basta, el código binario del programa se debe cargar en la región del CICS, para así poder ser ejecutado. Con el mapa no es necesario, porque es el programa quien llama al mapa, pero el programa debe estar siempre cargado. Así que haremos uso de la transacción CEMT para cargarlo.

Si hacemos un CEMT S PROG(HOLA), tendría que salir algo similar a esto:

S PROG(HOLA)                                            
STATUS:  RESULTS - OVERTYPE TO MODIFY                   
 Prog(HOLA    ) Leng(0000000000) Cob Pro Ena Pri     Ced
    Res(000) Use(0000000000) Bel Uex Ful Qua            

Como podréis observar, el campo Leng está a ceros, es decir, el CICS sabe que tiene algo reservado, pero no está ocupado. Así que si ponemos el cursor entre el campo Pri y el campo Ced, y tecleamos una N (Newcopy), al pulsar Enter el valor de Leng debe cambiar y mostrar el tamaño en bytes del programa, quedando algo así como esto:

S PROG(HOLA)                                                       
STATUS:  RESULTS - OVERTYPE TO MODIFY                              
 Prog(HOLA    ) Leng(0000004736) Cob Pro Ena Pri  N  Ced     NORMAL
    Res(000) Use(0000000000) Bel Uex Ful Qua                       

Pues bien, ya está todo preparado. Si tecleamos en nuestra pantalla, la transacción HOLA, veremos lo siguiente:

 ********************  
 *                  *  
 *  HOLA, MAMONES!  *  
 *                  *  
 ********************  

Y con esto, se acaba la transacción, y evidentemente ha sido instantánea.

Si lo pedís y estáis interesados, podría escribir en otra entrega la manera de complicar un poquito el programa y hacer que interactúe el usuario, de tal forma, que según la opción que teclee, le salga un mensaje u otro, y todo de manera conversacional.

29 Comentarios (feed)

  1. Gravatar de Leonardo Leonardo nos comenta:

    Buenisimo Kujaku, mas claro no lo podias explicar y si estoy muy interesado en ver un ejemplo con interacción del usuario. También me interesaria si puedes en algún momento explicar algo de RACF.

    Saludos y Gracias.

    Martes, 22 de Mayo/2007 @ 6:27

  2. Gravatar de dee dee nos comenta:

    Como estímulo extra para la consecución de una serie de artículos relacionados con la programación en COBOL tendrías(is) que comentar los pelotazos que puedes conseguir en este mundillo.

    Conozco un caso de un chaval que se mudó de Barcelona a Madrid, pasando de cobrar 42.000 sencillamente por saber programar en cobol.

    Más allá de allí …

    Martes, 22 de Mayo/2007 @ 7:56

  3. Gravatar de dee dee nos comenta:

    mierda de preview en IE … lo correcto era:
    “pasando de cobrar 42.000″

    Martes, 22 de Mayo/2007 @ 7:57

  4. Gravatar de Kujaku Kujaku nos comenta:

    Leonardo: Cada cosa a su tiempo, ya le llegará el Turno al RACF (pero eso va a ser la de Dios, porque como Dios, RACF ,está por todas partes, es onmipresente y solo explicar la filosofía va a ser un trabajo de la hostia). Pero alguna cosilla basica si que podré explicar ;)

    Martes, 22 de Mayo/2007 @ 10:01

  5. Gravatar de Ana Ana nos comenta:

    Hola, yo trabaje en RM-COBOL y
    MS-COBOL hace casi 20 años!!!
    ahora veo que estan solicitando
    gente que conozca de COBOL CICs
    y COBOL VAX, como posteriormente
    trabaje en ORACLE y visual BASIC
    tengo una idea de lo que has explicado, pero que es COBOL VAX o
    cual es su diferencia con el CICS

    crees que seria muy dificil aprender
    estos teniendo como base el cobol
    que aprendi….

    Gracias.

    Ah, tu explicacion me parecio muy
    buena.

    Jueves, 31 de Mayo/2007 @ 5:46

  6. Gravatar de acosvi acosvi nos comenta:

    Me parece muy bien aunque me falta por entender mucho aun
    acerca de Cobol, de CICS y de JVL.
    Espero siga explicando claros ejemplos y donde conseguir
    los mas actuales compiladores para Cobol.
    Muchas Gracias y saludos a todos.

    Viernes, 1 de Junio/2007 @ 20:01

  7. Gravatar de Angelica Angelica nos comenta:

    Soy de Perú y yo se cobol vax, quisiera aprender cobol cics
    y me parecio muy ilustrativo tu ejemplo.
    Podrias hacer uno pero utilizando archivos…
    gracias

    Miércoles, 18 de Julio/2007 @ 23:10

  8. Gravatar de jorge jorge nos comenta:

    oye recurro a ustedes para ver si me pueden ayudar con urgencia. necesito hacer un programa en cobol. y el enunciado dice asi. lo que nesecito entregar deba mostrar un menu de 4 opciones un consulta para solicitar un presupuesto para un vehiculo el monto del vehiculo es de 10.000.000, la inicial es de 5.000.000, el saldo deudor es de 5.000.000, financiamiento es de 12, 24, 36, 48 meses y los intereses son de 1.500.000 . les sabria agradecer porfavor .. gracias

    Viernes, 20 de Julio/2007 @ 2:15

  9. Gravatar de Celeste Celeste nos comenta:

    Hola ..tu ejemplo estuvo claro pero hay algunas cosas que quedaron sueltas como la definición CEDA y cargar el programa con CEMt necesito mas detalle de esto y si siempre se tiene que hacer
    esto para todos los programas cobol cics

    Domingo, 29 de Julio/2007 @ 6:23

  10. Gravatar de yampool yampool nos comenta:

    todo ok yo quiciera saber como se imprime en
    cics en toso caso como se usa el spooll
    gracias

    Sábado, 15 de Septiembre/2007 @ 19:22

  11. Gravatar de Kujaku Kujaku nos comenta:

    @Jorge: Googlea un poco, hay muchos programas COBOL de ejemplo para lo que buscas.

    @Celeste: No entiendo como no puedes entenderlo (valga la rebuznancia), si esto es “sota, caballo y Rey”: Con CEDA DEF, defines la transaccion, programa, fichero o mapa. Con CEDA DISPLAY, displayas lo que tienes, y pones una I para instalarlo (es decir, alocas las regiones de memoria para cada cosa). Y por ultimo, con CEMT S PROG listas todo lo instalado, y con poner una N de Newcopy, esas regiones alocadas en el CEDA las llenas con los ficheros binarios, o datos de programa. Que complicación puede tener? Y si, lo tienes que hacer para TODOS los programas, ficheros, acceso a datos, mapas BMS, etc.

    Lunes, 1 de Octubre/2007 @ 9:43

  12. Gravatar de enrique enrique nos comenta:

    tengo el mayor interes de aprender cobol, por lo interesante q es en el ambito laboral. tiene mucha dificultad? soy ignorante en el tema y quiero dominarlo. se puede en breve.?

    Lunes, 8 de Octubre/2007 @ 4:34

  13. Gravatar de jcromeroc jcromeroc nos comenta:

    Muy buena explicacion Kujaku, podrias por favor dar otros ejemplos. Se te saluda desde Venezuela. Gracias

    Lunes, 15 de Octubre/2007 @ 4:12

  14. Gravatar de PsIcHoTiC PsIcHoTiC nos comenta:

    Hola gracias por tus aportes al mundo mainframe, justo estoy postulando a un trabajo nuevo en una multinacional y hacia mas de 10 años que no veia nada de mainframe.
    Espero que continues con tus articulos ya que son muy utiles.

    Saludos desde Chile

    Martes, 23 de Octubre/2007 @ 21:50

  15. Gravatar de FHER FHER nos comenta:

    Geniales notas !!!!!

    Martes, 6 de Noviembre/2007 @ 19:25

  16. Gravatar de Alazne Alazne nos comenta:

    Hola buenos días, trabajo para una consultora y estamos buscando programadores de Cobol/Cics/db2 que vivan en Madrid (España) Si estas interesado mándame tu currículo a la siguiente dirección :
    alazne@loyalinfinity.com REF:trabajo cobol madrid,

    Un saludo,

    Lunes, 26 de Noviembre/2007 @ 11:27

  17. Gravatar de María María nos comenta:

    Estas explicaciones son geniales. Ayudan un montón a hacerse una idea más clara de todo esto. Gracias

    Viernes, 30 de Noviembre/2007 @ 13:17

  18. Gravatar de PEPELUIS PEPELUIS nos comenta:

    Me interesaria tener el programa COBOL para poder estudiar en mi ordenador particular. Decidme como lo puedo conseguir.i

    Lunes, 17 de Diciembre/2007 @ 18:17

  19. Gravatar de wilfredo wilfredo nos comenta:

    podrias enviarme alguna informacion referida a las colas TS y su tratamiento.

    saludos

    Jueves, 31 de Enero/2008 @ 18:29

  20. Gravatar de Jaime Jaime nos comenta:

    Estan buenos los ejemplos, existe software para PC que simule un MAINFRAME con COBOL, CICS Y JCL’S

    Viernes, 15 de Febrero/2008 @ 19:20

  21. Gravatar de jose jose nos comenta:

    Buenas , me adhiero a un comentario, es muy complicado el paso ce cobol rm a cobol cics, quisiera mas informaciòn… gracias

    Viernes, 28 de Marzo/2008 @ 15:54

  22. Gravatar de Carlos Carlos nos comenta:

    Muy buen artículo, siento haberlo descubierto tan tarde “lo digo por fechas”, estoy bastante interesado en la administración del Cics si puedes pasarme algo te estaré muy agradecido.

    Miércoles, 2 de Abril/2008 @ 14:17

  23. Gravatar de Dinosaurio Dinosaurio nos comenta:

    Kujaku te cuento que llevo dias estudiando los manuales oscuros de cics y revisando comandos en la terminal y programas de la empresa. Estoy de acuerdo en que se necesita saber y querer transmitir el conocimiento. Lo haces muy bien, no se de quien fue la idea pero con entregas sencillas y claras podemos entender con facilidad temas algo reservados. Las cosas son difíciles cuando no las conocemos, pero cuando lo sabemos se tornan faciles aunque mantengan su complejidad.
    Pienso que la funcion del ser humano en el universo es el servicio a los demas y en general. Te imaginas donde estariamos si nuestro motor de vida fuera el amor? A donde habriamos alcanzado a llegar sin egoismos ni temores? En lo que te pueda servir por aca (bogota - colombia) por favor escribe mas entregas de ejemplos en programacion cics. Un abrazo y muchisimas gracias.

    Domingo, 20 de Abril/2008 @ 5:23

  24. Gravatar de April April nos comenta:

    Hola necesito saber como se usa el linkage section en un mapa, si alguien me pued ayudar gracias!!!!!!!!!!!!!!!!!!!!1

    Viernes, 25 de Abril/2008 @ 20:43

  25. Gravatar de Gallegojls Gallegojls nos comenta:

    Kujaku, es muy buena tu iniciativa de comunicar lo que sabes, tambien yo lo hago ejerciendo docencia. Conozco bastante de cobol, rm, ms, wow, mainframe, etc, me interesa seguir conociendo mas sobre cics. Existos. Argentina al habla.

    Lunes, 28 de Abril/2008 @ 16:31

  26. Gravatar de drackcom drackcom nos comenta:

    Hola muchas gracias por el articulo no he tenido tiempo de leerlo con tiempo pero ya esta en los favoritos. Yop estoy trabajando en el mundo oscuro del cobol y pense que estaba perdiendo el tiempo y todo lo aprendido en la U, pero me di cuenta que es una muy buena fuente de ingresos a explotar, cualquier cosas en que pueda colaborar con gusto.

    Pero no un poco más de delicadeza al pedirlo y que se note un poco de esfuerzo de quien lo pide.

    Lunes, 5 de Mayo/2008 @ 16:37

  27. Gravatar de CARLOS CARLOS nos comenta:

    CARLOS

    Hola, yo trabaje en RM -OBOL y
    MS-COBOL hace casi 20 años!!!
    ahora veo que estan solicitando
    gente que conozca de COBOL CICs
    y COBOL VAX, como posteriormente
    CONCRETAMENTE PARA QUE SIRVE EL CICS

    crees que seria muy dificil aprender
    estos teniendo como base el cobol
    que aprendi….

    Gracias.

    Sábado, 24 de Mayo/2008 @ 1:47

  28. Gravatar de Gabriel Duròn Gabriel Duròn nos comenta:

    Hola Kujaku mucho gusto, soy mexicano y estoy estudiando algo de CICS y la verdad es que tu entraga no es buena, es buenisima, o como decimos en Mexico (Chingonsisima) ya que en tres patadas has definido todo el puto manual, felicidades por tu estilo y por tu apoyo gracias. De ser posible me gustaria me enviaras la siguiente entrega que mencionas, la de interactar con usuario, de tal forma, que según la opción que teclee, le salga un mensaje u otro, y todo de manera conversacional. De antemano gracias

    Miércoles, 11 de Junio/2008 @ 19:12

  29. Gravatar de Azucena Azucena nos comenta:

    Que recuerdos el cobol, de mi época estudiantil, ahora estoy con el SAP/ABAP, y tiene mucho más futuro que el Cobol, por eso recomiendo a la gente que de aprender, se vayan al ABAP

    Martes, 24 de Junio/2008 @ 16:25

No seas tímido, da tu opinión

Sé respetuoso con los demás, la diferencia de opiniones enriquece la discusión, los comentarios bajo ciertas circunstancias pueden ser moderados y requerir aprobación.