viernes, 2 de diciembre de 2022

El tweet del día

 El tweet del día está dedicado, como no, al Cobol:


Aunque este tweet sea de hace 2 años, quise rescatarlo porque siempre es interesante ver lo vivo que está el Cobol (muchas veces se nos olvida y siempre quieren "matarlo" por obsoleto). Veremos por cuántos años más seguirá vivo y coleando.

viernes, 4 de noviembre de 2022

Postureo laboral

Me gustaría que leyérais el artículo titulado La increíble estrategia de Infojobs para que nadie encuentre trabajo.

No sólo os vais a reir mucho sino que seguro indentificaréis ese postureo laboral dentro de nuestro mundillo.

viernes, 7 de octubre de 2022

Artículo sobre Cobol

Os animo a todos a leer un artículo que apareció en Xataca titulado Soy desarrollador profesional y sigo programando en Cobol.

En él se ofrecen diferentes puntos de vista de personas que están trabajando con Cobol. Lenguaje que ya ha cumplido 60 años.

viernes, 2 de septiembre de 2022

Excel - Trucos (1)

 Hoy os voy a enseñar un truco en Excel. Veamos lo siguiente antes de nada:


Quiero que os fijéis en la celda B3. Si observáis dicha celda, podréis ver que dentro de ella hay una serie de información distribuida en líneas diferentes. Es decir, que dentro de una misma celda hemos puesto Tarea 1 OK en una línea, Tarea 2 OK en otra línea y Tarea 3 KO en otra línea. ¿Cómo podemos conseguir esto?

Alguien podrá decir "metiendo espacios en blanco hasta que cambie de línea". Es una opción, pero a veces necesitamos que esté en la línea inferior sin necesidad de hacer eso. El objetivo de este post es explicar cómo se consigue sin tener que meter espacios en blanco.

Cuando estemos situados en la celda en la que queremos meter varias líneas, escribimos lo primero que tengamos que escribir. Cuando hayamos acabado y queramos que lo siguiente a escribir esté en la siguiente línea, lo que tenemos que hacer para conseguir ese salto de línea sin tener que meter espacios en blanco es utilizar la siguiente convinación de teclas: ALT + ENTER.

De esa manera conseguimos cambiar de línea dentro de una misma celda sin meter espacios en blanco.

Puesto ha sido todo por hoy.

viernes, 5 de agosto de 2022

Jcl - paso de UNLOAD

En los jcl's podemos descargar en un fichero los registros de una tabla. Podéis buscar en la correspondiente librería de producción de la instalación en la que estás trabajando. Sin embargo, el concepto general de UNLOAD lo puedes consultar pinchando aquí.

Cuando procedemos a realizar una UNLOAD, no sólo se puede utilizar una consulta SELECT sencilla para recoger la información necesaria de una tabla en concreto sino que también podemos hacer auténticas virguerías. ¿Qué virguerías puedes hacer? Pues por ejemplo realizar una JOIN de dos tablas tal y como puedes ver pinchando aquí.

Para recordar la estructura de una JOIN de dos tablas:

     SELECT * FROM TABLA1 A, TABLA2 B
        FROM A.CAMPO1 = 1
          AND A.CAMPO2 IN (10,20,30,40)
          AND A.CAMPO3 > '2000-01-01'
          AND A.CAMPO_CLAVE = B.CAMPO_CLAVE
          AND B.CAMPO1 = 'XXX'
          AND B.CAMPO2 IN (1,2,3,4)

viernes, 1 de julio de 2022

HOST - ver cancelaciones

En ocasiones hay que ver las cancelaciones de un proceso (o jcl). Para ello existe un comando que es TSO CLASESA (o CLA). Dependiendo de en qué instalación estés trabajando puede variar este comando. Pero cuando funciona este comando aparece una pantalla en la que hay que rellenar algunos campos con ciertos valores, veamos cómo configurar dicha pantalla para ver las cancelaciones correctamente.

OPTIONS ===> X

     X puede ser uno de los siguientes valores:

          1. PERMANENT
          2. ACTIVE/MIGRATED
          3. HISTORY

     Elegir la opción 2.

DATE FROM ===> DDMMAA TO DDMMAA

     Aquí elegimos el periodo de tiempo entre el cuál queremos consultar las
     cancelaciones. Tenemos dos opciones: (1) no informar ninguna fecha y
     dejar ambas en blanco y (2) informar entre qué fechas queremos reali-
     zar la consulta.
     (1) No ponemos ninguna fecha y, por tanto, dejamos en blanco ambas
     fechas. Con esto lo que hacemos es consultar desde 5 días atrás hasta
     hoy incluido, es decir, si hoy es Martes mostraría desde el Jueves de la
     semana pasada hasta hoy incluido.
     (2) Informamos fechas, esto supondría que las fechas a informar deben
     tener el formato de día, mes y los últimos dos dígitos del año, es decir,
     DDMMAA. Teniendo en cuenta que DDMMAA es el inicio del periodo
     (por ejemplo 101019 si hacemos referencia a 10 de Octubre de 2019) y
     y DDMMAA es el fin del periodo (por ejemplo 151019 si hacemos refe-
     rencia a 15 de Octubre de 2019).
     Se entiende como periodo el periodo de tiempo dentro del cual queremos
     consultar las ejecuciones del proceso (o jcl) y verificar si hubo alguna can-
     celación. Hay que tener en cuenta que, siguiendo el ejemplo de las fechas
     dadas, si consultamos el periodo del 10-10-2019 al 15-10-2019 (101019 y
     151019) es porque estamos a, por ejemplo, 17-10-2019 ya que cuando sea
     a partir del 23 de Octubre en adelante ya no encontraremos información de
     esos días.

JOBMANE ===> XXXXXXXX

     Nombre del proceso (o jcl) a consultar.

SHOW MIGRATED ===> Y

     Se pone a YES para que muestre también los que estén migrados.

DISPLAY TYPE ===> J
SHOW PANEL ===> Y

     Con respecto a estos dos últimos valores se deben poner con J y a YES para
     que se muestre correctamente el listado de las ejecuciones del proceso (o
     jcl) que queremos consultar.

Pues esto ha sido todo...

martes, 21 de junio de 2022

COBOL - ACCEPT en Cobol

A continuación os dejo un enlace muy útil e interesante acerca del ACCEPT en Cobol


Vamos a indicar un supuesto al que daremos solución. Imaginemos que queramos introducir por pantalla un dato por medio del ACCEPT y lo que queremos es que el cursor se quede esperando al lado de la leyenda en lugar de que se quede abajo.

Teniendo en cuenta lo explicado en el anterior enlace, debemos usar dos cláusulas de las indicadas: LINE y COLUM (o COL o POSITION).

Fíjate que la explicación del ACCEPT consta de 3 páginas en el mencionado enlace. Si necesitas ver un ejemplo de cómo se usan estas dos cláusulas del ACCEPT sólo tienes que ir a la segunda página. Para ir a la segunda página debes ir al final de la página actual, donde verás lo siguiente, y desplazarte a la siguiente página:


Espero que os haya servido de ayuda. Cualquier duda que tengáis sobre el ACCEPT, no dudéis en preguntar (realizando un comentario en esta entrada).




viernes, 3 de junio de 2022

Trucos de Redes Sociales (1)

Te vamos a contar cómo puedes evitar que Facebook te envíe publicidad indeseada a tu cuenta.

Lo primero es ir a Configuración. Dentro de la configuración de tu cuenta encontrarás un apartado llamado "Actividad fuera de Facebook". Cuando cliquemos aparecerán las últimas páginas que hayamos visitado.

Dentro de ese aartado tenemos varias opciones. Lo primero que tenemos que hacer es desvincular el historial de actividad para borrar todas nuestras visitas a otras páginas hasta el momento.

Posteriormente, debemos ir a la pestaña "Más Opciones", acceder al apartado "Administrar actividad fuera de Facebook" y desactivarlo para que la aplicación no controle las búsquedas que hagamos por internet.

Intrusismo laboral

En la informática existe mucho intrusismo, gente que nada tiene que ver con la informática (como físicos, matemáticos, químicos, biólogos, filósofos, geólogos o economistas, por decir sólo algunos) pueden trabajar como informáticos.

Esto podía tener su lógica a principios y mediados de los años 80 del siglo pasado porque en aquella época comenzó el boom de la informática profesional y no existía ninguna formación específica. Por lo tanto, había que formar a quien fuese, incluso al primer tonto que pasase por allí (con perdón de los tontos, que nadie se vaya a ofender). Pero a finales de los años 80 y principios de los 90 del siglo pasado las universidades españolas comenzaron a impartir ingeniería informática apareciendo así los primeros informáticos con formación específica. Actualmente, das una patada a una piedra y aparecen miles de titulados en informática (ingenieros y de FP). De manera que, ¿es necesario tirar de gente que no tenga formación en informática?

A la pregunta anteriormente planteada habrá quien diga "sí", sobretodo los que no tienen formación relacionada con la informática porque según ellos "si estamos aquí es porque los informáticos hacéis las cosas mal". Otros intentan justificarlo, sobretodo los filósofos, con argumentos del estilo de "en filosofía nos han enseñado a pensar y tenemos mucha lógica". Ambas afirmaciones son muy discutibles, vayamos por partes. Con respecto a lo segundo, me pregunto yo: si una carrera que nada tiene que ver con la informática, te enseña a pensar de manera estructurada y a usar la lógica, ¿puedes trabajar en la informática sin tener formación en dicha área? Yo tengo la respuesta muy clara y es la misma a las siguientes preguntas: si yo tengo muchos conocimientos de anatomía y conozco los síntomas de cientos de enfermedades, ¿puedo ejercer la medicina si no tengo la correspondiente licenciatura?; si soy bilingüe en inglés, ¿puedo dar clases de inglés en ciertos lugares aunque no tenga la carrera de filología inglesa? Pues eso. Con respecto a lo primero, al hecho de que los intrusistas estén en esto porque los informáticos lo hagamos mal, esto también es muy discutible y lo es por los siguientes motivos:

1º) Todos los licenciados que he mencionado al inicio del post están en el mundo de la informática por su "incapacidad" de encontrar trabajo en lo suyo. Sí, habéis leído bien, su "incapacidad" para encontrar trabajo en lo suyo. Algunos diréis que en ciertos campos no hay trabajo pero una cosa os diré: siempre hay gente que trabaja de lo suyo en esas áreas y lleva años, ¿por qué otros se tienen que meter a informáticos? Ejem, ejem, no digo nada y lo digo todo (o ¿será que ellos también hacen las cosas mal y no duran ni un "padre nuestro" en sus respectivos trabajos?). Pues bueno, vayámonos a la informática que ahí hay trabajo para todo el mundo.

2º) Gracias a ellos se bajan los sueldos en el mundo de la informática: "curra por esta cifra o vete a trabajar de lo tuyo (uy, perdón, que eres incapaz de encontrar trabajo de lo tuyo)".

3º) Cualquier informático hemos conocido a gente que ha realizado auténticas cagadas a nivel de análisis y casualmente eran "intrusistas". Por ello amigos informáticos (de formación, eso sí), os animo a dejar un comentario donde nos contéis las cagadas de nuestros queridos "intrusistas" y comprueben con vuestras experiencias, ya sean propias o ajenas, lo "bien" que trabajan. Nota: esto último se llama ironía.

En relación al punto 3, para evitar las cagadas de los "intrusistas", porque sí, amigos, vosotros no sois perfectos tampoco y en ocasiones la cagáis pero bien, ¿no será mejor contratar a alguien a quien han enseñado a analizar y a programar? Para que todo salga bien debéis contar con un profesional con la formación y los conocimientos adecuados. Esto se explica muy bien en los siguientes enlace:

http://ssti.es/ingenieria-informatica/

https://www.lne.es/cartas-director/1814/realidad-informatica-espana/575176.html

Y esto sólo se consigue con informáticos con formación específica en dicho terreno. Ya que, por ejemplo, alguien de FP que haya estudiado Desarrollo de Aplicaciones Informáticas habrá adquirido las siguientes competencias y tendrá las siguientes salidas profesionales:

Fuente: https://www.fp-informatica.es/

Y esto en el caso de los ingenieros informáticos:


Fuente: https://grados.ugr.es/informatica/pages/salidas_profesionales

Se puede decir más alto pero no más claro.

viernes, 6 de mayo de 2022

HOST - cruce de ficheros con joinkeys

¿Sabes cómo realizar un cruce de ficheros mediante joinkeys? Pues si no sabemos cómo hacerlo, ya que es un tanto complejo, te vamos a indicar dónde y cómo puedes consultarlo.

mundohost
Blog en el que encontrarás dos entradas muy útiles. Una de ellas se titula Cruce de ficheros con Joinkeys básico y la otra se titula Cruce de ficheros con Joinkeys avanzado.

dinoland
Pagina web con diferentes foros para solucionar dudas. Una de esas dudas es: Unión de ficheros con Joinkeys.

En ocasiones no es una cuestión de saber cómo hacer algo sino de saber dónde buscarlo.

viernes, 1 de abril de 2022

QMF basico

A lo ya explicado en una entrada anterior (pichar aquí), podemos ampliar alguna cosilla con el magnífico post elaborado por Consultorio Cobol acerca del QMF basico.

viernes, 4 de marzo de 2022

Cobol - Coboloco 052

¿No sabéis qué es Coboloco 052? Es un canal de Youtube dedicado al cobol, su enlace es: https://www.youtube.com/channel/UCOaLW9s-x5DRlb8_wTpg-lw

Espero que os sea de utilidad.

viernes, 4 de febrero de 2022

Jcl - error S837

Para saber cómo solucionar el error S837 en un jcl puedes pinchar aquí.

Quizás te acuerdes de un post publicado en este mismo blog titulado Jcl - error SB37 (pinchar aquí para consultar el mencionado post).

Tal y como verás, dicho error y el que estamos viendo en este post se debe a lo mismo: el fichero que se está generando necesita más espacio cuando se está alocando. La solución es la misma: dar más espacio al fichero. Sin embargo, hay una diferencia: el error del post Jcl - error SB37 sucede en un paso de sort mientras que el error que estamos viendo hoy sucede cuando el jcl intenta volcar los datos de una tabla DB2 en un fichero secuencial.

Por lo tanto, sólo os tenéis que quedar con la siguiente idea: cuando se produzca cualquier error del tipo SB37 o S837 la solución corre por ampliar el espacio del fichero en el momento en que se está alocando.

viernes, 7 de enero de 2022

DB2 - filas leídas por un cursor

Primero refrescaremos la memoria con los cursores y las operaciones básicas que se pueden realizar con los cursores. Para ello pincharemos aquí (eso sí, si consideras necesario refrescar la memoria; en caso contrario, no es necesario).

En ocasiones es necesario utilizar un cursor por las especificaciones dadas para implementar en un determinado programa. Si además queremos saber cuántas filas ha leído dicho cursor, ¿cómo se puede hacer? En un principio puede parecer un tanto complejo por los siguientes motivos:
  1. En la copy SQLCA no existe una variable para tal efecto.
  2. Si consultas diferentes foros en los que se trata esta duda, se llega a esta conclusión: no se puede saber de antemano cuántas filas va a leer dicho cursor.
  3. La variable ROWCOUNT se utiliza en gestores de BBDD como Sql Server  para saber cuántas filas devuelve una consulta, pero en DB2 no existe y, por tanto, en Cobol no encontrarás una variable que se use con tal fin (a menos que no definas por programa una variable auxiliar con dicho nombre).

Por lo tanto, llegados a este punto, ¿cómo podemos saber cuántas filas ha leído un cursor? A continuación explicamos una posible solución.

Al realizar el FETCH del cursor, cuando el SQLCODE es igual a 0 podemos incrementar en 1 una variable auxiliar, por ejemplo AUX-ROWCOUNT, que previamente estará inicializada a 0 (si se inicializa antes de abrir/tratar/cerrar el cursor, mejor que mejor).

Cuando hayamos realizado el tratamiento del cursor, con lo que ello implica, podremos saber cuántas filas han sido leídas por el cursor. Tratar un cursor implicaría lo siguiente:
  1. Abrir cursor
  2. Leer cursor
  3. Tratar cursor hasta el final del mismo, en donde se realizan dos operaciones:
    1. Operaciones a realizar con la fila recuperada del cursor
    2. Leer cursor
  4. Cerrar cursor

Y tras tratar el cursor dando estos pasos sabremos las filas leídas por el cursor gracias a la variable auxiliar que habremos ido incrementando en 1 con cada FETCH. En el caso de que el cursor no recuperara ninguna fila tendríamos dicha variable auxiliar con su valor de inicialización (es decir, 0).

¿Qué sucede si el cursor está dentro de un módulo o rutina? No es mayor problema. En la copy de E/S de dicho módulo o rutina, si estuviera correctamente codificada, debería haber una variable dentro de las variables de salida de la misma que se encargara de informarnos de cuántas filas han sido leídas por el cursor en cuestión. Dicha variable se podría llamar, por ejemplo, COPY-S-FIL-RECU-CURSOR o COPY-S-ROWCOUNT.

Si el programa o módulo/rutina no tiene definida una variable a tal efecto puesss....va a ser difícil saber cuántas filas ha leído el cursor. Es difícil pero no imposible, ¿sabéis por qué? Porque se puede aprovechar una modificación en el código para incluir dicha variable que cuente las filas leídas por el cursor y en ese momento ya tendríamos dicha información.

Pues esto ha sido todo, espero que os haya servido de ayuda.