viernes, 2 de diciembre de 2011

JCL: Introducción Sort

     En los JCL's es muy común incluir pasos en los que se utilice el comando SORT. El SORT no sólo es utilizado para ordenar un fichero sino también para realizar todo lo siguiente:
  • copiar de un fichero a otro
  • eliminar duplicados de un fichero
  • eliminar registros que cumplan una determinada condición
  • incluir registros que cumplan una determinada condición
  • obtener dos ficheros en los que cada uno de ellos tengamos registros distintos (por ejemplo, tenemos un fichero principal en el que los registros pueden clasificarse en dos grupos y los que pertenezcan a un grupo irán a un fichero y los que pertenezcan al otro grupo irán al otro fichero)
  • generar un fichero más pequeño debido a que quitamos los últimos campos del fichero principal
     En futuras entradas iremos viendo todas estas cosas y muchas más sobre el SORT.

miércoles, 2 de noviembre de 2011

Cobol: Varchar

     Recuerdo que en una ocasión tuve que crear un módulo de servicio para una tabla DB2 y esa tabla tenía un campo que era un varchar. A la hora de manejar ese campo me daban una serie de errores debido a un manejo incorrecto del mismo. Por lo tanto, ¿cómo se debe manejar un dato de tipo varchar para que no se produzcan errores? Contestaré a esta pregunta mediante un ejemplo.

     Supongamos que tenemos una tabla DB2 llamada TPEDIDOS. En esta tabla tenemos los siguientes campos:

                    01 TPEDIDOS.
                         05 COD-PED     PIC X(06).
                         05 FECHA-PED  PIC X(10).
                         05 PROVEEDOR PIC X(15).
                         05 COD-PROD   PIC 9(03).
                         05 DIR-ENV.
                             49 DIR-ENV-E-LEN   PIC S9(4) COMP.
                             49 DIR-ENV-E-TEXT PIC X(500).

     En azul se ha marcado el campo de tipo varchar.

     Supongamos que el módulo de servicio de la tabla TPEDIDOS (o rutina cobol para realizar las operaciones básicas sobre la tabla como SELECT, INSERT, UPDATE y DELETE) tiene la siguiente copy:


                    01 R-PEDIDOS.
                         05 ENTRADA.
                             10 E-COD-PED     PIC X(06).
                             10 E-FECHA-PED  PIC X(10).
                             10 E-PROVEEDOR PIC X(15).
                             10 E-COD-PROD   PIC 9(03).
                             10 E-DIR-ENV.
                                 15 E-DIR-ENV-E-LEN   PIC S9(4) COMP.
                                 15 E-DIR-ENV-E-TEXT PIC X(500).
                         05 SALIDA.
                             10 S-COD-RETORNO PIC 9(01).
                             10 S-COD-SQLCODE PIC 9(03).
                             10 S-COD-MENSAJE  PIC X(50).


     En azul se ha marcado el campo de tipo varchar.

     A continuación vamos a ver cómo se debe informar el campo de tipo varchar antes de llamar al módulo de servicio (Informar campo de tipo varchar) y cómo se ven afectadas las sentencias SQL en el módulo de servicio al utilizarse un campo de este tipo (Ejecución de sentencias SQL en el módulo de servicio).

Informar campo de tipo varchar

     En el caso de querer realizar un alta (INSERT) o modificación (UPDATE) de la tabla mediante el módulo de servicio, lo primero que hay que hacer antes de llamar al módulo de servicio para ejecutar la sentencia SQL correspondiente es informar el campo de tipo varchar de la copy del módulo de servicio tal y como se indica a continuación:

          MOVE 35                                                        TO E-DIR-ENV-E-LEN
          MOVE 'C\ DESCONOCIDA Nº7 NAVE 1D CP 28045' TO E-DIR-ENV-E-TEXT

     Nótese que se está asignando una cadena a E-DIR-ENV-E-TEXT y, como su longitud es 35, se está asignando dicho valor a E-DIR-ENV-E-LEN. Es muy importante que la longitud de la cadena coincida con el valor numérico que se está asignando a E-DIR-ENV-E-LEN porque de lo contrario, cuando se quisiera mostrar el valor de la dirección, no se mostraría el texto tal cual sino una cadena menor o mayor. Es decir, si en lugar de asignar a E-DIR-ENV-E-LEN la longitud de la cadena, que dijimos es 35, se le asigna:
  • un valor menor, por ejemplo 20, por mucho que asignemos el texto anterior a E-DIR-ENV-E-TEXT lo que se mostraría cuando se hiciera un display de la dirección es un texto de longitud 20 cuyo valor sería el siguiente: C\ DESCONOCIDA Nº7 N
  • un valor mayor, por ejemplo 40, por mucho que asignemos el texto anterior a E-DIR-ENV-E-TEXT lo que se mostraría cuando se hieciera un display del campo es un texto de longitud 40 cuyo valor sería el mostrado anteriormente (C\ DESCONOCIDA Nº7 NAVE 1D CP 28045) con espacios en blanco al final hasta rellenar las otras 5 posiciones
Ejecución de sentencias SQL en el módulo de servicio

     En el módulo de servicio hay que tener en cuenta los siguientes puntos para poder manejar correctamente ese campo:
  • Tanto en el alta (INSERT) como en la modificación (UPDATE) se deben informar los dos campos que forman parte de E-DIR-ENV tal y como se ha indicado anteriormente, es decir, el campo en el que se guarda la longitud del texto (E-DIR-ENV-E-LEN) y el campo en el que se guarda el texto (E-DIR-ENV-E-TEXT). A la hora de ejecutar la sentencia SQL correspondiente (INSERT o UPDATE), es la variable E-DIR-ENV la que se inserta y/o modifica.
  • Cuando se realiza la consulta (SELECT) se lee el campo de tipo varchar. Tras haber ejecutado la correspondiente sentencia SQL, lo que se hace es asignar el valor de cada uno de los campos que componen el campo de tipo varchar de la tabla (el de la longitud y el del texto) a los correspondientes campos de salida de la copy del módulo de servicio: las cuales son E-DIR-ENV-E-LEN y E-DIR-ENV-E-TEXT (E-DIR-ENV).

lunes, 3 de octubre de 2011

Manuales IBM

     Si pinchais aquí podreis encontrar una serie de manuales de IBM sobre mainframe (cobol, cics, jcl, db2) que espero os sean de utilidad. Eso sí, están inglés.

viernes, 9 de septiembre de 2011

Cobol: Utilizar sentencias SQL: eliminar.


     Para eliminar filas de una tabla lo haremos mediante la sentencia DELETE cuya sintaxis es la siguiente:

              DELETE FROM TABLA[WHERE CONDICIÓN]

     La cláusula WHERE se utiliza para borrar aquellas filas que cumplan dicha condición. Si no se utiliza esta cláusula se borraría la tabla entera.

jueves, 8 de septiembre de 2011

Cobol: Utilizar sentencias SQL: modificar.

     Para modificar filas en una tabla lo haremos mediante la sentencia UPDATE cuya sintaxis es la siguiente:

                 UPDATE TABLA SET {COLUMNA = VALOR,}[WHERE CONDICIÓN]

     En la cláusula SET indicaremos las columnas que queremos modificar y después del igual indicaremos el valor que queremos asignar.
     Con la cláusula WHERE indicaremos una condición de modo que sólo se modificarán las filas que cumplan dicha condición. Se puede omitir pero en este caso las modificaciones indicadas en la cláusula SET se aplicarían en todas las filas de la tabla.

miércoles, 7 de septiembre de 2011

Cobol: Utilizar sentencias SQL: seleccionar 2.

     Como indicamos en la anterior entrada, en la cláusula WHERE se utilizan una serie de operadores para construir la condición a emplear en dicha cláusula. Esos operadores son los operadores de comparación:

         1) Igualdad (=).
         2) Desigualdad (!=, <>, ^=).
         3) Menor que (<).
         4) Mayor que (>).
         5) Menor o igual que (<=).
         6) Mayor o igual que (>=).
         7) Igual a cualquiera de los miembros entre paréntesis (IN). Ejemplo:
                       WHERE COD_DEP IN (100, 200, 300)
         8) Distinto a cualquiera de los miembros entre paréntesis (NOT IN).
             Ejemplo:
         9) Contenido en el rango (BETWEEN). Ejemplo:
                       WHERE COD_EMP BETWEEN 100 AND 199
         10) Fuera del rango (BETWEEN). Ejemplo:
         11) Contiene una determinada cadena (LIKE). Cuando se utiliza el LIKE
               es frecuente el uso de los comodines. Dichos comodines pueden
               equivaler a un caracter ( _ ) o a varios caracteres (%): '_abc%',
               '%abc%', 'abc_' o 'abc%'. Ejemplo:
                       WHERE NOMBRE LIKE 'MA%';

     También existen operadores aritméticos u operadores de cadenas de caracteres. Los primeros pueden emplearse no sólo en la cláusula WHERE sino que también para mostrar información de una determinada manera a partir de las columnas existentes en las tablas. Mientras que los segundos se utilizan para mostrar información de una determinada manera a partir de las columnas existentes en las tablas (NO se utilizan en la cláusula WHERE).

     Dentro de los operadores aritméticos tenemos:

         1) Suma (+). Ejemplo:
                       SELECT NOMBRE, SALARIO+COMISION FROM EMPLEADO
                       WHERE OFICIO='VENDEDOR'
         2) Resta (-). Ejemplo:
                       SELECT NOMBRE FROM EMPLEADO
                       WHERE SYSDATE - FEC_ALTA > 365
         3) Producto (*). Ejemplo:
                       SELECT NOMBRE, SALARIO*12 FROM EMPLEADO
         4) División (/). Ejemplo:
                       SELECT NOMBRE, SALARIO/31 FROM EMPLEADO

     Dentro de los operadores de cadenas de caracteres tenemos:

         1) Concatenación (||). Ejemplo:
                       SELECT NOMBRE||OFICIO FROM EMPLEADO

                       WHERE COD_EMP NOT BETWEEN 100 AND 199
                       WHERE COD_DEP NOT IN (300, 500)

Cobol: Utilizar sentencias SQL: seleccionar 1.


     Para seleccionar filas en una tabla lo haremos mediante la sentencia SELECT cuya sintaxis es la siguiente:

              SELECT {*|{columna,}} FROM {TABLA,}[WHERE CONDICIÓN]
                         [ORDER BY {COLUMNA [ASC|DESC],}

     A tener en cuenta:


        1) Después de escribir SELECT debemos indicar * (se mostraría todas las columnas existentes en la tabla) o indicamos aquellas columnas que queremos ver. Ejemplos:

               SELECT * FROM TABLA


               SELECT COLUMNA3, COLUMNA7 FROM TABLA


        2) Después de escribir FROM debemos indicar la tabla o tablas de donde queremos ver la información. Ejemplos:


               SELECT * FROM TABLA1


               SELECT * FROM TABLA1, TABLA2

               SELECT A.COLUMNA1, B.COLUMNA8 FROM TABLA1 A, TABLA2 B


        3) Cláusula WHERE: se utiliza para seleccionar aquellas filas que cumplan la condición indicada. En esta cláusula se utilizan una serie de operadores que veremos en la siguiente entrada. Ejemplos:


               SELECT * FROM TABLA1 WHERE FECHA_ANTIG >= '20110101'


               SELECT A.NOMBRE, B.SALARIO FROM TABLA1 A, TABLA2 B
               WHERE (B.FECHA_ANTIG >= '20110101' AND
                           A.COD_EMPL = B.COD_EMPL)

        4) Cláusula ORDER BY: se utiliza para ordenar las filas devueltas por la select. Podemos indicar ASC para que muestre los datos ordenados de manera ascendente (de menor a mayor) o DESC para que muestre los datos ordenados de manera descendente (de mayor a menor). Ejemplos:


               SELECT * FROM TABLA1
               WHERE FECHA_ANTIG >= '20110101'
               ORDER BY FECHA_ANTIG         (1)


               SELECT * FROM TABLA1
               WHERE FECHA_ANTIG >= '20110101'
               ORDER BY FECHA_ANTIG ASC         (2)


               SELECT A.NOMBRE, B.SALARIO FROM TABLA1 A, TABLA2 B
               WHERE (B.FECHA_ANTIG >= '20110101' AND
                           A.COD_EMPL = B.COD_EMPL)
               ORDER BY B.FECHA_ANTIG DESC

               (1) y (2) son equivalentes.

lunes, 5 de septiembre de 2011

Cobol: Utilizar sentencias SQL: insertar.

     Para insertar filas en una tabla lo haremos mediante la sentencia INSERT cuya sintaxis es la siguiente:

                 INSERT INTO TABLA VALUES (VALOR1, VALOR2, ..., VALORN)

viernes, 2 de septiembre de 2011

Cobol: Utilizar sentencias SQL. Introducción.

     En los programas se utilizan sentencias SQL para insertar, modificar, seleccionar o eliminar filas en tablas. Estas sentencias se denomina Lenguaje de Manipulación de Datos o DMLEn sucesivas entradas iremos viendo la sintaxis de las sentencias SQL mecionadas anteriormente.

     Aprovecho esta entrada, ya que lo que voy a decir es común para las sentencias SQL mencionadas en el anterior párrafo, para hablar de la sentencia COMMIT. Esta sentencia se utiliza para hacer permanentes los cambios realizados a través de cualquiera de las sentencias SQL mencionadas (a excepción de la select ya que sólo recupera información). Hay programas que no la utilizan pero en otros sí. El problema de no usarla es que todas las modificaciones realizadas en una tabla, en caso de que falle un programa en el proceso batch en el que se ejecuta, se pierden pues se hace automáticamente ROLLBACK. En este caso se relanzaría la cadena a partir del paso cascado con todos los registros del fichero de entrada (en ocasiones se elimina el registro que ha provocado el error).

     ¿Cómo se emplea la sentencia COMMIT y en qué casos? Es muy fácil, normalmente se utiliza cuando estamos ante un proceso en el que se quiere, en caso de error en un determinado registro de un fichero y falle el jcl en el que se procesa, procesar aquellos registros no procesados a partir del último registro del que se ha hecho COMMIT. La manera en que normalmente se utiliza es la siguiente: cuando alguna sentencia SQL (insert, update o delete) termina bien (SQLCODE = 0) incrementamos en 1 una variable que previamente hayamos definido, por ejemplo W-COMMIT, e inicializado a 0 ó 1 (esto va en gustos) al inicio del programa, cuando esa variable sea mayor que un determinado valor, por ejemplo 50, se realizarán tres acciones: ejecutar la sentencia COMMIT, inicializar la variable W-COMMIT y mostrar por pantalla qué registro del fichero de entrada ha sido el último que ha provocado la realización del COMMIT. Este proceso supone que para cada cierto número de sentencias SQL hagamos COMMIT y no perdamos los cambios hechos en una tabla. Es importante mostrar en pantalla el registro del fichero a partir del cual se ha hecho la sentencia SQL que ha provocado que el incremento en 1 de la variable W-COMMIT haya cumplido la condición para hacer COMMIT ya que si después del COMMIT se procesan muy pocas filas y casca el proceso debemos saber cuál esl último registro procesado para eliminar del fichero de entrada ese registro y los anteriores y así lanzar de nuevo el jcl desde el paso cascado con aquellos registros del fichero de entrada que queden por procesar.

     Bien es verdad que mediante sentencias SQL podemos manejar tablas (crear una tabla, modificar campos de la tabla, añadir campos nuevos a la tabla,...) pero no lo vamos a ver ya que dichas sentencias no se utilizan en programas cobol.

    Las sentencias SQL que veremos en siguientes entradas, para ser utilizadas en programas cobol, debemos realizar lo siguiente:

                EXEC SQL
                        [sentencia SQL]
                END-EXEC

     En  [sentencia SQL]  se indicará la sentencia SQL que corresponda (y que veremos en sucesivas entradas).

   Se debe controlar el SQLCODE devuelto tras la ejecución de la correspondiente sentencia SQL.

    Lo más importante de todo es no olvidarnos de incluir un INCLUDE muy importante cuando manejamos sentencias SQL en un programa COBOL. Dicho INCLUDE tan importante es: SQLCA.

martes, 16 de agosto de 2011

MS-DOS

     Cuando estudié MS-DOS, había dos puntos importantes: los comandos y la parte de programación para crear ficheros por lotes (ficheros BAT).

COMANDOS

     En cuanto a los comandos, hay un punto muy importante y son todos los posibles parámetros que se pueden utilizar con cada uno de ellos. Para consultar los comandos y los posibles parámetros que se pueden usar con cada uno de ellos tenemos los siguientes enlaces:


Web: si en lugar de descargarte un pdf prefieres consultar una página:
http://usuaris.tinet.cat/pcarmona/dos/comandos.htm

Programación BAT

Para programar ficheros por lotes, ficheros BAT, no sólo tenemos que conocer los comandos existentes en MS-DOS sino también la parte correspondiente a la programación (variables, programas, ...) que se suele usar en los ficheros por lotes. Para ello se puede consultar la siguiente página: http://www.wikilearning.com/tutorial/tutorial_programacion_bat-comandos_msdos/92-9

lunes, 1 de agosto de 2011

Cobol: ¿Cómo concatenar un nombre y dos apellidos en una sola cadena?

Para concatenar un nombre y sus apellidos dejando un espacio en blanco entremedias se usa la instrucción STRING tal y como se indica a continuación:

IDENTIFICATION DIVISION.
PROGRAM-ID.    CONCATENAR-NA.
AUTHOR.        DESCONOCIDO.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
     01 WHOLE-NAME                PIC X(25).
     01 FIRST-NAME                  PIC X(25).
     01 MIDDLE-NAME               PIC X(25).

     01 LAST-NAME                   PIC X(25).
PROCEDURE DIVISION.
MAIN-STREET.
    MOVE 'GEMA'           TO FIRST-NAME.
    MOVE 'FERNANDEZ'  TO MIDDLE-NAME.
    MOVE 'TEJEDOR'      TO LAST-NAME.
    STRING FIRST-NAME  DELIMITED BY SPACE
           ' '                     DELIMITED BY SIZE
           MIDDLE-NAME    DELIMITED BY SPACE
           ' '                     DELIMITED BY SIZE
           LAST-NAME        DELIMITED BY SPACE
           INTO WHOLE-NAME.
    DISPLAY WHOLE-NAME.

    STOP RUN.

martes, 26 de julio de 2011

Cobol: ¿Cómo separar una cadena compuesta de nombre y dos apellidos?

Para separar un nombre y los apellidos debemos usar la instrucción UNSTRING tal y como se indica a continuación:

IDENTIFICATION DIVISION.
PROGRAM-ID.    SEPARAR-NAME.
AUTHOR.        DESCONOCIDO.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.

    01 WHOLE-NAME              PIC X(25).
    01 FIRST-NAME                PIC X(25).
    01 MIDDLE-NAME             PIC X(25).
    01 LAST-NAME                 PIC X(25).
PROCEDURE DIVISION.
MAIN-STREET.
    MOVE 'MARIAN GONZALEZ MARTINEZ' TO WHOLE-NAME.
    UNSTRING WHOLE-NAME
        DELIMITED BY SPACE        INTO FIRST-NAME MIDDLE-NAME LAST-NAME.
    DISPLAY 'FIRST NAME:  ' FIRST-NAME.
    DISPLAY 'MIDDLE NAME: ' MIDDLE-NAME.
    DISPLAY 'LAST NAME:   ' LAST-NAME.
    STOP RUN.

jueves, 7 de julio de 2011

Cobol: redefines

El redefines en cobol es muy útil cuando a un tipo de dato le queremos dar un determinado formato o cambiarlo a otro tipo de dato. También se usa para crearnos "arrays" de elementos.

Ejemplo 1: es muy corriente que un dato que sea un PIC X lo queramos pasar a un PIC 9 -> esto se consigue mediante la cláusula redefines tal y como se indica a continuación:

             01  WS-CADENA          PIC X(3).
             01  WS-CADENA-R REDEFINES WS-CADENA PIC 9(3).

Ejemplo 2: a veces queremos pasar un dato definido como PIC X a una estructura con varios campos -> esto se consigue mediante la cláusula redefines tal y como se indica a continuación:

             01  WS-FEC             PIC X(10).
             01  WS-FECHA  REDEFINES WS-FEC.
                  05  WS-FEC-A      PIC X(4).
                  05  WS-FILLER     PIC X(1) VALUE '-'.
                  05  WS-FEC-M      PIC X(2).
                  05  WS-FILLER     PIC X(1) VALUE '-'.
                  05  WS-FEC-D      PIC X(2).


Ejemplo 3: para crearnos tablas de elementos -> esto se consigue mediante la cláusula redefines tal y como se indica a continuación:

             01  TABLA-D.
                  05 FILLER     PIC X(9) VALUE "LUNES    ".
                  05 FILLER     PIC X(9) VALUE "MARTES   ".
                  05 FILLER     PIC X(9) VALUE "MIERCOLES".
                  05 FILLER     PIC X(9) VALUE "JUEVES   ".
                  05 FILLER     PIC X(9) VALUE "VIERNES  ".
                  05 FILLER     PIC X(9) VALUE "SABADO   ".
                  05 FILLER     PIC X(9) VALUE "DOMINIGO ".
             01  TABLA-DIAS  REDEFINES TABLA-D.
                  05  DIA        PIC X(9) OCCURS 7 TIMES.


Cuando queramos hacer referencia a alguno de los días de la semana tenemos que hacer lo siguiente: DIA(X) siendo X un valor entre 1 y 7. Hay que tener mucho cuidado de no poner cosas como por ejemplo DIA(0) o poner cualquier otro valor mayor a 7 pues estaríamos haciendo referencia a posiciones de la tabla que no existen y el programa daría error de ejecución. Has leído bien, error de ejecución. No da error de compilación porque el compilador es incapaz de detectar que se está accediendo a una posición errónea.

Hay que tener en cuenta dos cosas:
1) La tabla de este ejemplo es una tabla 'cerrada', es decir, no se va a aumentar con más elementos pero nos podemos enfrentar en alguna ocasión a tablas que tengan que ser modificadas para incluir nuevos elementos. ¿Cómo se actuaría en este caso? Imagínate que tenemos la siguiente tabla con sólo 3 elementos:

             01  TABLA-T.
                  05 FILLER     PIC X(10) VALUE "VISA ORO  ".
                  05 FILLER     PIC X(10) VALUE "VISA GOLD ".
                  05 FILLER     PIC X(10) VALUE "MASTERCARD".
             01  TABLA-TARJETAS  REDEFINES TABLA-T.
                  05 TARJETA   PIC X(10) OCCURS 3 TIMES.


Y queremos incluir una nueva tarjeta. El hecho de incluir una nueva tarjeta supone que se deben incluir los cambios que se han marcado en rojo:

             01  TABLA-T.
                  05 FILLER     PIC X(10) VALUE "VISA ORO  ".
                  05 FILLER     PIC X(10) VALUE "VISA GOLD ".
                  05 FILLER     PIC X(10) VALUE "MASTERCARD".
                  05 FILLER     PIC X(10) VALUE "PLATINUM  ".            
            01  TABLA-TARJETAS  REDEFINES TABLA-T.
                  05 TARJETA   PIC X(10) OCCURS 4 TIMES.


2) Hay que tener en cuenta el tema de índices. En este caso, para hacer referencia a un elemento de la tabla hay que hacer lo siguiente:

             TARJETA(X)

             siendo X -> un valor entre 1 y 3 (antes  de añadir el elemento)
                              un valor entre 1 y 4 (tras añadir el nuevo elemento)

Es decir, la tabla se ha incrementado en una posición por lo que el índice que se emplea para acceder a la tabla puede acceder a una (y sólo a UNA!!!) posición más. Mucho ojo con acceder a la posición 0 o a posiciones superiores al máximo número de elementos existentes en la tabla pues vamos a provocar un error de ejecución en cuanto se ejecutase el programa.

jueves, 30 de junio de 2011

Cobol: Lista de FILE STATUS

     Cuando un programa cobol utiliza ficheros, éstos pueden dar un error. Dicho error, o FILE STATUS, es un númerico de dos posiciones.

     Como es imposible saberse todos los FILE STATUS existentes, adjunto enlace con listado de FILE STATUS: Listado FILE STATUS

miércoles, 22 de junio de 2011

Cobol: Lista de SQLCODE

     Es muy frecuente utilizar sentencias SQL en los programas cobol. Cuando dichas sentencias SQL no terminan correctamente devuelven un SQLCODE distinto de 0.

     Como no nos sabemos todos los SQLCODE existentes, adjunto enlace con listado de SQLCODE: Lista SQLCODE

martes, 14 de junio de 2011

Cobol y Jcl

     Para muchos programadores el cobol es un lenguaje tan arcacico que creen que ha desaparecido pero no es así, aún se sigue usando y muy especialmente en el sector bancario (entre otros sectores). Os recomiendo leer el siguiente artículo aparecido en la versión online del periódico El Pais (pinchar aquí), os sorprendereis de lo que se sigue usando cobol hoy en día...hasta va a haber Visual Cobol!!!

     Cuando se utiliza en entorno HOST hay otro elemento tan importante como un programa cobol y es el JCL (Job Control Language). Un JCL se utiliza para ejecutar procesos batch en los que se ejecutan una serie de pasos, unos detrás de otros, y alguno de esos pasos puede ejecutar un programa cobol.

     En esta entrada adjuntaré algunas páginas de interés, más adelante iré indicando cómo hacer determinadas cosas en un programa cobol o en un jcl.

     Páginas de interés:


     Si quieres descargarte un manual sencillo pero a la vez bastante completo, aquí tienes el siguiente enlace: Manual Cobol

martes, 7 de junio de 2011

Cursos Online de Informática

     Existen diversas páginas Web en las que puedes realizar cursos online de informática. Una de ellas es Aula Fácil. Algunos de sus cursos pueden parecer muy simples e incluso incompletos. Un ejemplo es el curso de Excel al que, a mi parecer, le faltaría la parte de macros (ver Macros en excel).

     Otras páginas que podrían estar bien a la hora de hacer cursos online de informática son: aulaclic y Cursos Informatica.

     Y a vosotros, ¿qué os parecen estas páginas para ampliar vuestros conocimientos de informática? ¿Conoceis otras páginas que os gusten más o que os hayan resultado más útiles?

viernes, 3 de junio de 2011

Búsqueda de empleo

     A la hora de buscar empleo sería una buena idea no centrarse en una única opción. Es decir, la inmensa mayoría de la gente centra buena parte de su tiempo en buscar a través de una única web de empleo (siendo la más utilizada Infojobs). Recomendaría utilizar tres métodos simultáneamente:

  1. Mantener un CV online. Existen diversas páginas a tal efecto como por ejemplo http://www.easy-cv.es/ o http://www.curriculum-web.com/
  2. Utilizar alguna página web de empleo de las cuales cabe destacar Infojobs, Monster, Tecnoempleo o Computrabajo.
  3. Acceder a las páginas web de las empresas. En ellas suele existir una sección del estilo Trabaja con nosotros, Contactar, Incorpórate o Trabajar en XXX (siendo XXX el nombre de la empresa en cuestión).
  4. Darse de alta en alguna red social en la que poder estar en contacto con otros profesionales de la informática y con técnicos de selección. En este punto cabe destacar redes sociales como por ejemplo linkedin o xing.
     De este modo, tenemos varios frentes abiertos y nos aseguramos de que nos puedan llamar para una entrevista (quien dice una dice más de una) desde alguno de los métodos mencionados anteriormente.

      En caso de que quieras redactar tu CV en inglés viene bien que conozcas el siguiente traductor: Linguee. En él podrás encontrar la traducción al inglés de todo aquello que necesites para redactar el CV como formación y títulos. Yo he probado con Ingeniería Informática, Técnico Superior en desarrollo de aplicaciones informáticas y Técnico Superior en administración de sistemas informáticos; y he encontrado lo siguiente:
  • Computer Engineering
  • Advanced Technician in software applications development
  • Advanced Technician in Computer Systems Administration
     En tu incesante búsqueda de empleo en el mundillo de la informática...sólo te puedo decir una cosa: SUERTE!!!! Si utilizas todas estas herramientas seguro que te llaman para muchas entrevistas.

martes, 31 de mayo de 2011

Oracle

     Se adjuntan una serie de enlaces que te ayudarán a aprender Oracle y especialmente determinados aspectos como SQL, gestión de seguridad de una base de datos y de usuarios, vistas, PL/SQL, triggers, paquetes, forms, report:

http://www.desarrolloweb.com/manuales/tutorial-oracle.html
http://mygnet.net/manuales/oracle/oracle_form.608
http://flanagan.ugr.es/docencia/2005-2006/2/developer/reports.html
www.jorgesanchez.net/bd/oracleSQL.pdf (Manual de SQL para Oracle 9i)
http://www.recursosvisualbasic.com.ar/htm/tutoriales/manual-de-oracle.htm
http://www.zonaoracle.com/

FP bilingüe

     Primero fueron las universidades las que comenzaron a darse cuenta de la importancia del inglés e impartían algunas de sus carreras en ese idioma. Luego fueron los colegios e institutos (con cada curso académico que empieza aumenta el número de centros bilingües). Y ahora le toca a la FP como puede verse en el siguiente artículo aparecido recientemente en la versión digital del periódico 20minutos: Formacion profesional bilingue.

     Dentro de unos años todos aquellos que decidan estudiar informática (ya sea mediante carrera universitaria o FP) tendrán la opción de hacerlo en inglés con lo que su CV mejorará notablemente.

lunes, 30 de mayo de 2011

.NET FRAMEWORK Y LENGUAJES .NET

Cuando aprendí Visual Basic allá por el curso académico 2004-2005, no aprendí Visual Basic 6 sino Visual Basic .NET

Visual Basic .NET así como C#, ASP.NET o ADO.NET están integrados dentro del .NET Framework

En la época en la que estudié Visual Basic .NET me resultó de bastante utilidad la página del Guille (ver elguille) en donde hay un curso bastante interesante de Visual Basic .NET (curso curso VB.NET). A la hora de acceder a las bases de datos, lo hacíamos a través de ADO.NET (ver ADONET).

Durante las prácticas del CFGS tuve que programar una pequeña aplicación en VB .NET realizando accesos a bases de datos mediante ADO.NET y, posteriormente, tuve que migrar esa misma aplicación a C# y a ASP.NET (ver C# y ASPNET).

Ahora puedes seguir al Guille a través de su grupo en Facebook: elGuille.info en FACEBOOK

Para más información puedes consultar en otras páginas relacionadas:
Hay más páginas en las que se pueden consultar todas las dudas que se tengan así como encontrar apuntes y manuales. Puedes buscarlos a traves de google. Incluso alguien que conozcas te puede recomendar alguna página que esté bien sobre alguno de estos temas.

CFGS vs Ingeniería Informática

     Tras tres años estudiando Ingeniería Técnica en Informática de Gestión en una universidad madrileña decidí estudiar el Ciclo Formativo de Grado Superior en Desarrollo de Aplicaciones Informáticas.

     ¿Diferencias que noté?
     La relación teoría-práctica: en la carrera había mucha más teoría que práctica pero en el ciclo formativo era al revés. Cada uno tendrá su opinión pero en mi caso yo prefiero tener más horas prácticas que teóricas, especialmente en una rama que es eminentemente práctica. Una de las cosas que noté fue que gracias a tener más horas prácticas aprendí mejor determinadas cosas que en la carrera se quedaron un poco cojas.
     Además, al final del ciclo formativo (durante el tercer trimestre del segundo curso) se realizan practicas en una empresa. Esto es un valor añadido que tiene el ciclo formativo ya que sirve para fijar determinados conocimientos adquiridos durante el tiempo que se ha ido a clase.

     ¿Que aprendí?
     Durante el ciclo formativo de grado superior en Desarrollo de Aplicaciones Informáticas aprendí lo siguiente:

     1) Análisis y diseño de Aplicaciones Informáticas 
     2) Sistemas Operativos: MS-DOS, Windos 2000 Profesional, Windows 2000 Server, Linux (Unix, Editor vi)
     3) Programación: Turbo Pascal, C, Visual Basic .NET, C#, ASP .NET
     4) ADO .NET
     5) Crystal Report
     6) Oracle: SQL* PLUS, Administración, PL/SQL, Developer (Form y Report)

     Conclusión
    En mi caso, me quedo con el CFGS porque en la informática prefiero aprender mediante la práctica, es decir, teniendo más horas prácticas que teóricas y eso lo encontré en el Ciclo Formativo de Grado Superior.

     Más Información
     Para más información acerca del CFGS en DAI, pinchar en el siguiente enlace: DAI
     En FP puedes estudiar otros Ciclos Formativos de informática (tanto de grado superior como de grado medio): Consultar Ciclos Formativos

     Otros enlaces de interés relacionados con la FP:

          FP Informática