viernes, 20 de marzo de 2020

Linux

Manual práctico de linux con ejercicios.

Si queréis un ejemplar sólo tenéis que pinchar aquí.

viernes, 6 de marzo de 2020

Cobol - foros de cobol

En la actualidad tenemos que internet está plagado de foros acerca de cualquier tema que nos podamos imaginar. Y "nuestro querido" lenguaje Cobol no podía ser una excepción.

Seguro que alguno de vosotros conoce alguno. O a lo mejor no. Sea como sea nos gustaría hablaros de COBOL Foro, un foro sobre Cobol (valga la redundancia).

¿Por qué queremos hablaros de este foro? Porque nos ha gustado el hecho de que no es necesario darse de alta para crear un post. Esto es muy útil, o al menos nos lo ha parecido desde Programación e Informática Fácil, cuando tienes una duda y quieres que te ayuden desde un foro pero no sabes cuándo será la próxima vez que vas a plantear otra duda.

viernes, 21 de febrero de 2020

Excel - vídeos en youtube

Youtube es un pozo sin fondo para aprender Excel a través de los diferentes vídeos existentes en dicha plataforma. Para muestra un botón:

30 trucos de Excel que todos deben saber

Cómo armar un dashboard en Excel

Espero que os resulten interesantes estos ejemplos.

viernes, 7 de febrero de 2020

Cobol - cruce de ficheros

Veamos cómo es el cruce de ficheros.

La estructura de un programa Cobol (o el cualquier otro lenguaje) suele ser:

     INICIO
     TRATAMIENTO hasta FIN-FICHERO-ENTRADA
     FINAL

En el cruce tendríamos:

     INICIO
     TRATAMIENTO hasta FIN-FICHERO1 y FIN-FICHERO2
     FINAL

En el párrafo INICIO tendríamos la primera lectura de ambos ficheros. En cada  una de las lecturas se debe tener en cuenta lo siguiente:
  1. Si el file-status es 0 se debe mover la clave leída del fichero a CLAVE1 (si hemos leído del FICHERO1) o a CLAVE2 (si hemos leído del FICHERO2).
  2. Si el file-status es 10, no sólo hay que activar el correspondiente switch que indica que se ha llegado a final de fichero, sino que además hay que mover HIHG-VALUES a CLAVE1 (si hemos leído del FICHERO1) o a CLAVE2 (si hemos leído del FICHERO2).

En el párrafo TRATAMIENTO (que se ejecuta hasta que finalicen ambos ficheros) tendríamos la comparación de claves:

     EVALUATE TRUE
           WHEN CLAVE1 = CLAVE2
                  DISPLAY 'HAY CRUCE. CLAVE1: ' CLAVE1 '. CLAVE2: ' CLAVE2
                  PERFORM LEER-FICHERO2
           WHEN CLAVE1 < CLAVE2
                  DISPLAY 'CLAVE1 no existe en FICHERO2'
                  PERFORM LEER-FICHERO1
           WHEN CLAVE1 > CLAVE2
                  DISPLAY 'CLAVE2 no existe en FICHERO1'
                  PERFORM LEER-FICHERO2
           WHEN OTHER
                  CONTINUE
     END-EVALUATE

          Nota: Se pone WHEN OTHER, aunque no llegue a ejecutarse nunca, por-
          que por temas de calidad todo EVALUATE tiene que tener WHEN OTHER.

Espero que os sirva de ayuda si tenéis que hacer un programa de cruce en Cobol.

viernes, 24 de enero de 2020

¿Buscando profesor particular de informática?

Como título de este post se ha realizado una pregunta muy clara, en caso afirmativo os vamos a realizar la siguiente recomendación: no dudéis en poneros en contacto con Sergio Lobo Del Olmo (pinchar aquí para concertar vuestra clase particular).

Da clases tanto a domicilio como online (webcam, skype, classgap). En el caso de las clases a domicilio se desplaza a Madrid capital, Leganés, Getafe, Alcorcón y Fuenlabrada.

En Programación e Informática Fácil le conocemos y os podemos asegurar que es un buen profesor. Si buscáis profesor, es una gran opción (o, incluso, nos atreveríamos a decir que la mejor).

viernes, 10 de enero de 2020

Jcl - OUTREC (1)

Antes de empezar a hablar del OUTREC, vamos a recordar ciertos conceptos tales como los siguientes: los diferentes tipos de dato que hay y la longitud de los mismos.

Para repasar los diferentes tipos de dato que hay podéis pinchar aquí. En dicha entrada se explica cómo ordenar un fichero mediante un sort en un jcl, y de paso se explicó lo de los tipos de dato existentes.

Y para repasar la longitud de los mismos podéis pinchar aquí. Bien es verdad que se está explicando desde el enfoque de Cobol pero se puede hacer extensible a los jcl's ya que:

     - un alfanumérico (CH) que sea de 10 posiciones, su longitud es 10.
     - un numérico editado (ZD) que sea de 9 posiciones, su longitud es 9.
     - un numérico COMP tenga o no tenga signo (BI), hay que tener en cuenta
       las posiciones decimales ya que:
              - si no tiene decimales, su longitud se corresponde con el resultado
                de dividir la parte entera entre 2 despreciando los decimales que
                se obtengan en la división
                Ejemplo 1: 7/2 = 3'5 - longitud 3
                Ejemplo 2: 8/2 = 4    - longitud 4
              - si tiene decimales, su longitud se obtiene con la siguiente fórmula:
                    PASO 1. Sumamos la parte entera y los decimales:
                      Ejemplo 1: 7 + 2 = 9
                      Ejemplo 2: 8 + 2 = 10
                    PASO 2. Al anterior resultado le sumamos 1 y obtenemos un 
                    nuevo resultado al que dividimos entre 2:
                      Ejemplo 1: 9 + 1 = 10 ----- 10/2
                      Ejemplo 2: 10 + 1 = 11 ---- 11/2
                    PASO 3. Si el resultado da decimales se redondea al mayor y lo 
                    que se obtiene es la longitud
                       Ejemplo 1: 10/2 = 5
                       Ejemplo 2: 11/2 = 5'5 - se redondea a 6
     - un numérico COMP-3 tenga o no tenga signo (PD), hay que tener en
       cuenta las posiciones decimales como en el caso anterior ya que:
              - si no tiene decimales, partiríamos de la parte entera y le aplicamos
                los pasos 2 y 3 de la fórmula anterior
              - si tiene decimales, su longitud se obtiene aplicando todos los pasos
                de la fórmula anterior.

Bien, ahora que hemos refrescado estos conceptos vayamos a por el OUTREC. Vamos a familiarizarnos con su funcionamiento a base de ejemplos práctios, para ello, vamos a suponer que el campo comienza en la primera posición.

Conversión 9(8) a S9(9) COMP-3 y viceversa

OUTREC FIELDS=(1,8,ZD,TO=PD,LENGTH=5)
OUTREC FIELDS=(1,5,ZD,TO=PD,LENGTH=8)

Conversión 9(8) COMP a 9(8) y viceversa

OUTREC FIELDS=(1,4,BI,TO=ZD,LENGTH=8)
OUTREC FIELDS=(1,8,ZD,TO=BI,LENGTH=4)

Cambiar datos

Imaginemos que tenemos un fichero de entrada como el siguiente:



Para sustituir los espacios por ceros con OUTREC:

OUTREC FIELDS=(1,9,10,10,
           CHANGE=(10,C'          ', C'0000000000'),NOMATCH=(10,10))


Otra forma:

OUTREC FIELDS=(1,9,10,10,CHANGE=(10,C'40404040404040404040'
           C'0000000000'),NOMATCH=(10,10))

Y el fichero de salida quedaría así:



Continuemos con el siguiente OUTREC.

Máscaras de edición


Imaginemos que tenemos un fichero de entrada como el siguiente:



Donde tenemos lo siguiente:

     - una fecha (posiciones del 5 al 10)
     - una hora (posiciones del 20 al 25)
     - importe 1 comprimido (posiciones del 21 al 31)
     - importe 2 (posiciones del 32 al 35)
     - importe 3 (posiciones del 36 al 45)
     - importe 4 (posiciones del 46 al final)

Utilizamos máscaras:

OUTREC FIELDS=(01,04,
                           05,06,ZD,M9,LENGTH=8,
                           11,09,
                           20,06,ZD,M8,LENGTH=8,
                           26,06,PD,
                           32,04,ZD,M18,LENGTH=4,
                           36,10,ZD,M4,LENGTH=11,
                           46,10,ZD,M26,LENGTH=11)

Tras la utilización de las máscaras mostradas obtenemos el siguiente fichero de salida:



Esto ha sido todo por hoy.

viernes, 20 de diciembre de 2019

Excel - cómo hacer una web sencilla

En TICbeat (perteneciente a ComputerHoy.com) ha aparecido un artículo en el que se explica cómo hacer una web sencilla con Excel.

Si quieres leer el artículo para saber cómo se hace, sólo tienes que pinchar aquí.

Al final del artículo hay un vídeo explicativo de cómo hacer una web sencilla (se explica con Excel 2013).

viernes, 13 de diciembre de 2019

JCL - LOAD y UNLOAD

¿Quién no se ha pegado alguna vez con las cargas (LOAD's) y descargas (UNLOAD's)?

Pues bien, siempre surgen dudas y tenemos que buscar sitios donde poder consultarlas. A continuación indico sitios donde podemos consultar:

Introducción a JCL | Adictos al trabajo - ver punto 5. Utilidades no MVS

Espero que os sirva de utilidad. Si encuentro otros lugares de consulta que puedan ser de utilidad lo incluiré como una actualización del post.

viernes, 22 de noviembre de 2019

Macros en Outlook 2010

Si quieres saber cómo crear una macro y habilitarla en Outlook 2010, te recomendamos la siguiente introducción a VBA en Outlook 2010:

viernes, 8 de noviembre de 2019

HOST - comando CAPS

En HOST hay un comando muy interesante sobretodo cuando estás montando un jcl y quieres que ciertas cosas se escriban en minúsculas (y se quede en minúsculas sin que se convierta automáticamente a mayúsculas cuando das al PF8/PF7 o al INTRO).

Pues bien, dicho comando es CAPS y tiene dos variantes:

CAPS ON - Todo lo que se escriba se convertirá en mayúsculas al dar INTRO (si en el texto ya había algo escrito en minúscula se quedará así). Esta es la opción  que tiene el HOST por defecto.

CAPS OFF - Lo que se escriba en minúsculas, se quedará en minúsculas.

viernes, 18 de octubre de 2019

Cómo exportar un archivo txt a Excel

En el post Jcl: Generar un fichero para exportar a EXCEL vimos cómo generar un fichero host, el típico fichero de listado con los datos separados por el carácter ";" o separados por tabuladores, y se mencionaba que dicho fichero se podía descargar al equipo como txt para ser exportado a Excel posteriormente.

Pues bien, ahora vamos a ver esta parte.

¿Cómo se descarga un fichero host al equipo como archivo txt? Se realiza a través del File Transfer del propio host. Hay que indicar la siguiente información:
  • Nombre archivo sistema principal: Es el nombre del fichero host (se pone entre comillas). Ejemplo: 'XXX.YYY.JJJJJJJJ.PPPPPPPP.FLISTADO'
  • Nombre del archivo local: Se indica la ruta y el nombre del archivo txt (si no nos sabemos la ruta de memoria la podemos seleccionar pinchando en Examinar). Ejemplo: Ruta\listado.txt
  • Modalidad de transferencia: Nos da a elegir entre binario y ASCII (o texto). Seleccionamos ASCII (o texto) porque la información está editada en este tipo de ficheros, se elige binario en los ficheros en los que vienen datos numéricos comprimidos del tipo COMP-3.
  • Opciones: Pinchamos aquí y se abre una ventana cuya opción por defecto es la siguiente: ASCII CRLF RECFM(V) LRECL(133). Hay que realizar dos pequeños cambios. Uno de ellos es en RECFM(V) ya que hay que sustituir la V por FB (fijo bloqueado) que es la manera usual de crear los ficheros en host. El otro cambio a realizar es en LRECL(133) ya que hay que sustituir el 133 por la longitud del fichero host que será la que corresponda según lo indicado en el jcl donde se haya creado.
  • Pinchamos en "Añadir a la lista" y a continuación en "Enviar".

Tras realizar todos estos pasos tendremos el fichero host descargado como archivo txt en la ruta que se haya indicado.

Tenemos el archivo txt, ¿cómo se exporta a Excel? Lo primero de todo es abrir una hoja Excel. Desde el menú Inicio > Todos los programas > Office Applications pinchamos en Microsoft Excel y ya tenemos una Excel abierta.

Lo siguiente es pinchar en Abrir en la hoja Excel que tenemos abierta:



A continuación aparece una pantalla:


En donde se elige Todos los archivos (*.*) para así poder seleccionar el archivo listado.txt y a continuación pinchamos en Abrir.

Ahora aparece la siguiente pantalla:

          Aparece marcada por defecto la opción "Delimitados".
          No tocamos nada y pinchamos en Siguiente.

          En esta pantalla podemos seleccionar entre dos posibles opciones:
               Punto y coma - los datos del archivo están separados por ";".
               Tabulación - los datos del archivo están separados por tabuladores.
          Tras seleccionar lo que corresponda pinchamos en Siguiente.

          Aparece marcada por defecto la opción "General".
          No tocamos nada y pinchamos en Siguiente.
          Tras hacer todo esto veríamos lo siguiente:
           Ya tenemos los datos del archivo txt exportados en la Excel.

Y para guardar la Excel sólo tenemos que hacer lo siguiente:


En "Tipo" se elige la opción que indique Libro de Excel y la terminación .xls

Pues ya hemos exportado un archivo txt a Excel.

viernes, 4 de octubre de 2019

Jcl - tratamiento de fechas (2)

Vamos a continuar con el tratamiento de fechas por jcl. Para ello vamos a partir de la fecha del sistema y a suponer que la fecha del día es 15 de Enero de 2018 (15-01-2018).


//* %%SET %%FECHA     = %%$CALCDTE %%$ODATE -M3
//*------------------------------------------------------------------------
//* %%SET %%AAAA       = %%SUBSTR %%FECHA 1 4
//* %%SET %%MM          = %%SUBSTR %%FECHA 5 2
//* %%SET %%DD           = %%SUBSTR %%FECHA 7 2
//* %%SET %%GUION     = -
//*------------------------------------------------------------------------
//* %%SET %%FECCAL    = %%AAAA.%%GUION.%%MM.%%GUION.%%DD



ODATE - contiene la fecha del día que según el ejemplo dado sería 20180115 (OJO!!!! fíjate en el formato, va primero el año y a continuación el mes y el día, todo junto, sin ningún tipo de separación).

FECHA - contiene la fecha resultante de restar 3 meses a la fecha del día (20171015).

AAAA - contiene el año de la fecha calculada (2017).

MM - contiene el mes de la fecha calculada (10).

DD - contiene el día de la fecha calculada (15).

GUION - se le asigna el valor "-".

FECCAL - contiene el la fecha calculada con formato AAAA-MM-DD (es decir, 2017-10-15).

viernes, 20 de septiembre de 2019

Excel - eliminar duplicados

Vamos a ver cómo eliminar duplicados. Imagina que tenemos lo siguiente:


Como puedes observar hay repetidos por nombre (tenemos Ana dos veces).

Para eliminar una de las ocurrencias sólo tenemos que dar los siguientes pasos:

          1) Seleccionar todas las filas:



          2) En el menú "Datos" existe la opción "Quitar duplicados":


          3) Pinchamos en Datos > Quitar duplicados.
              Si hacemos esto se abre la siguiente pantalla:


          4) Pinchamos en "Aceptar" y se muestra el siguiente mensaje:


El resultado de dar estos pasos es el siguiente:


Se observa que se ha eliminado los valores duplicados por nombre.

viernes, 6 de septiembre de 2019

Jcl - tratamiento de fechas (1)

Vamos a ver cómo se puede realizar tratamiento de fechas en un jcl. Para ello vamos a partir de la fecha del sistema y a suponer que la fecha del día es 8 de Agosto de 2017 (08-08-2017).


//* %%SET %%FECHAX = %%$CALCDTE %%$ODATE +M1
//*------------------------------------------------------------------------
//* %%SET %%AAAAX     = %%SUBSTR %%FECHAX 1 4
//* %%SET %%MMX        = %%SUBSTR %%FECHAX 5 2
//* %%SET %%DDX         = 01
//* %%SET %%FECHAY    = %%AAAAX.%%MMX.%%DDX
//*------------------------------------------------------------------------
//* %%SET %%FECHA      = %%$WCALC %%FECHAY -1 TODOS
//*------------------------------------------------------------------------
//* %%SET %%AAAA       = %%SUBSTR %%FECHA 1 4
//* %%SET %%AA           = %%SUBSTR %%FECHA 3 2
//* %%SET %%MM          = %%SUBSTR %%FECHA 5 2
//* %%SET %%DD           = %%SUBSTR %%FECHA 7 2
//* %%SET %%FECHDA    = %%AAAA-%%MM-%%DD

ODATE - contiene la fecha del día que según el ejemplo dado sería 20170808 (OJO!!!! fíjate en el formato, va primero el año y a continuación el mes y el día, todo junto, sin ningún tipo de separación).

La variable FECHAX contendrá la fecha del día más un mes (20170908).

La variable AAAAX contendrá el año de la fecha calculada en FECHAX (2017).

La variable MMX contendrá el mes de la fecha calculada en FECHAX (09).

La variable DDX contiene el valor 01, se le está asignando un valor fijo.

La variable FECHAY contendrá la unión de las tres variables antes mencionadas (20170901).

La variable FECHA contendrá el resultado de restarle un día a la fecha contenida en FECHAY (20170901 - 1 día = 20170831).

La variable AAAA contendrá el año de la fecha calculada en FECHA (2017).

La variable AA contendrá los dos últimos dígitos del año de la fecha calculada en FECHA (17).

La variable MM creada en la línea 54 contendrá el mes de la fecha calculada en FECHA (08).

La variable DD contendrá el día de la fecha calculada en FECHA (31).

La variable FECHDA contendrá la unión de las variables AAAA (2017), MM (08) y DD (31), es decir, 2017-08-31. Fíjate que aquí hay separación entre el año, el mes y el día. Fíjate cómo se ha creado esta variable para que vaya el "-" como separador.