Vistas de página en total
viernes, 2 de julio de 2021
CICS (2): comandos de interés
En esta nueva entrada sobre el CICS trataremos los comandos que podemos usar. Cada vez que me acuerde de otro comando o aprenda uno nuevo actualizaré esta entrada.
Comencemos...
CEMT I PROG(<<pgm-cob-online>>)
CEMT S PROG(<<pgm-cob-online>>)
CEMT FI PROG(<<pgm-cob-online>>)
Vemos si el programa cobol online se ha ejecutado o no.
Desde aquí se hace el NEWCOPY (con N), sólo si se ha ejecutado previamente y estamos en el CICS por el que ha corrido la transacción asociada al programa.
XPED <<pgm-cob-online>>
Xpediter online. Consultar el post dedicado a este comando pinchando aquí.
viernes, 4 de junio de 2021
Apple ha sido hackeada (2)
Como ya sabéis por una entrada anterior, a la que podéis acceder pinchando aquí, apple fue hackeada por un joven de 16 años.
Con una noticia así, no puedo evitar acordarme de todas aquellas personas que creen que Apple es de lo más seguro que hay. Si es tan fácil hackearlo (véase la noticia del joven de 16 años), ¿por qué no hay más ataques a Apple? A lo mejor la respuesta no es tan sencilla pero a primera vista, podría decirse que, si partimos de la premisa de que los hackers buscan hacer el mayor daño posible (por ejemplo, atacando al mayor número de personas posible), y a ello le añadimos que hay más dispositivos con sistema operativo android que con sistema operativo ios, pues diría que está claro: los hackers van a atacar aquellos dispositivos con sistema android pues son la mayoría.
Relativo a este tema, os recomiendo ver el siguiente vídeo en el que Chema Alonso, experto en ciberseguridad, asegura que tu iphone es tan (in)seguro como tu windows:
Bien es verdad que dicho vídeo fue incluido en la entrada que se menciona al inicio de este post pero no está mal que lo veáis si no lo habéis visto todavía. Os lo recomiendo 100%.
sábado, 22 de mayo de 2021
Internet Explorer, adios a partir de Agosto de 2021
A continuación os dejo un enlace acerca del "fin" de Internet Explorer:
Como habréis leído, Microsoft dejará de dar soporte a Internet Explorer a partir de Agosto de este año.
Adios Internet Explorer, adios. Para muchos fuiste nuestro primer explorador de internet, te acabamos sustituyendo por otros exploradores y ahora (bueno, en pocos meses) serás historia para todos nosotros.
viernes, 7 de mayo de 2021
COBOL - cláusula REPLACING
Partamos del siguiente ejemplo, en donde tenemos una copy llamada PERSONAS cuya estructura es la siguiente:
01 :REG:.
05 :REG:-NOMBRE PIC X(20).
05 :REG:-APELLIDOS PIC X(50).
05 :REG:-DIRECCION PIC X(50).
05 :REG:-LOCALIDAD PIC X(20).
05 :REG:-PROVINCIA PIC X(20).
05 :REG:-TLF-FIJO PIC 9(09).
05 :REG:-TLF-MOVIL PIC 9(09).
05 :REG:-EMAIL PIC X(30).
Al tener una copy con una estructura definida con :REG: nos facilita mucho las cosas porque podemos usar la misma copy tanto en un fichero de entrada como en un fichero de salida dentro del mismo programa. Para diferenciar una copy de otra sólo tendremos que hacer lo siguiente:
COPY PERSONAS REPLACING ==:REG:== BY ==FE-PERSONA==.
COPY PERSONAS REPLACING ==:REG:== BY ==FS-PERSONA==.
Los ficheros de entrada y salida estarán definidos así:
-> "INPUT-OUTPUT SECTION"/"FILE CONTROL":
SELECT FENTRADA ASSIGN TO FENTRADA
ORGANITAZION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS FS-FENTRADA.
SELECT FSALIDA ASSIGN TO FSALIDA
ORGANITAZION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS FS-FSALIDA.
-> "DATA DIVISION"/"FILE SECTION":
FD FENTRADA
BLOCK CONTAINS 0 RECORDS
RECORD 0 CHARACTERS
DATA RECORD R-FENTRADA.
01 R-FENTRADA PIC X(208).
FD FSALIDA
BLOCK CONTAINS 0 RECORDS
RECORD 0 CHARACTERS
DATA RECORD R-FSALIDA.
01 R-FSALIDA PIC X(208).
Cuando se haga referencia a estas copys tendremos que:
Leer del fichero de entrada:
READ FENTRADA INTO FE-PERSONA.
Escribir en el fichero de entrada:
WRITE R-FSALIDA FROM FS-PERSONA.
Y cuando hagamos referencia a uno de los campos de la copy PERSONAS, en función de si es del fichero de entrada o del fichero de salida, lo diferenciaremos de la siguiente manera:
FE-PERSONA-NOMBRE -> Campo NOMBRE de la copy del fichero de entrada
FS-PERSONA-NOMBRE -> Campo NOMBRE de la copy del fichero de salida
Basándonos en la misma copy del ejemplo, ¿cómo se hace para inicializar dicha copy? Muy fácil, de la siguiente manera:
INITIALIZE PERSONAS
REPLACING ALPHANUMERIC DATA BY SPACES
NUMERIC DATA BY ZEROES
Pues esto ha sido todo por hoy. Espero que os haya sido de utilidad este post.
viernes, 16 de abril de 2021
Crear un blog con blogger
En un post anterior te contamos cómo crear un blog con blogger (pinchar aquí para verlo).
Pues bien, os presentamos Blog de Pruebas de PIF, un blog dedicado a la creación de un blog, así como a su mantenimiento y realización de trucos para que podáis hacer lo que queráis.
viernes, 2 de abril de 2021
Creación de una página web o blog con blogger
Os dejo una serie de enlaces útiles para la creación de una página web (o blog) con blogger.
Estos vídeos forman parte del curso "Introducción al diseño Web, parte 1" de Google Actívate (https://learndigital.withgoogle.com/activate/courses).
viernes, 5 de marzo de 2021
Jcl - tratamiento de fechas (3)
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 = %%$ODATE
//*------------------------------------------------------------------------
//* %%SET %%AAAA = %%SUBSTR %%FECHAX 1 4
//* %%SET %%MM = %%SUBSTR %%FECHAX 5 2
//* %%SET %%DD = %%SUBSTR %%FECHAX 7 2
//* %%SET %%FECDIA = %%AAAA-%%MM-%%DD
//*------------------------------------------------------------------------
//* %%SET %%FECHAD = %%$OYEAR-%%OMONTH-%%ODAY
//*------------------------------------------------------------------------
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 sistema, es decir, el ODATE (20170808).
La variable AAAA contendrá el año de la fecha existente en FECHAX (2017).
La variable MM contendrá el mes de la fecha existente en FECHAX (08).
La variable DD contendrá el día de la fecha existente en FECHAX (08).
La variable FECDIA contendrá la unión de las tres variables antes mencionadas separadas por guiones (2017-08-08).
La variable FECHAD contendrá la fecha del sistema en el formato AAAA-MM-DD (20170808). Si os fijáis se obtiene el mismo resultado que el obtenido en la variable FECDIA pero en una sola línea.
viernes, 5 de febrero de 2021
viernes, 8 de enero de 2021
Jcl - error SB37
Cuando un jcl falla en un paso de sort dando un error SB37 significa que el fichero que se está intentando generar en dicho paso necesita más espacio.
¿Recuerdas el post File Status 34 en Cobol publicado en este mismo blog? Si no te acuerdas puedes acceder al mismo pinchando aquí.
¿Por qué hacemos referencia a dicho post? Muy sencillo. Ambos errores son primos hermanos, es decir, el error SB37 en un jcl es lo que el file status 34 en un programa Cobol. Por lo tanto, se aplica la misma solución. Se debe aumentar el espacio al fichero que se está intentando alocar en el paso de sort.
Ejemplo, tenemos lo siguiente en la cláusula SORTOUT del paso de sort:
Si nos diera un error SB37 habría que aplicar la siguiente modificación:
Se ha marcado en otro color el lugar en el que se ha aplicado la modificación y, si se compara con lo que se tenía previamente, se observa que se ha aumentado el espacio con el que se pretende alocar el fichero generado en el paso de sort.
¿Por qué hacemos referencia a dicho post? Muy sencillo. Ambos errores son primos hermanos, es decir, el error SB37 en un jcl es lo que el file status 34 en un programa Cobol. Por lo tanto, se aplica la misma solución. Se debe aumentar el espacio al fichero que se está intentando alocar en el paso de sort.
Ejemplo, tenemos lo siguiente en la cláusula SORTOUT del paso de sort:
//SORTOUT DD DSN=<<fichero_salida>>
// DISP=(,CATLG,DELETE)
// SPACE=(CYL,(500,50))
Si nos diera un error SB37 habría que aplicar la siguiente modificación:
//SORTOUT DD DSN=<<fichero_cabecera>>
// DISP=(,CATLG,DELETE)
// SPACE=(CYL,(1000,100))
Se ha marcado en otro color el lugar en el que se ha aplicado la modificación y, si se compara con lo que se tenía previamente, se observa que se ha aumentado el espacio con el que se pretende alocar el fichero generado en el paso de sort.
viernes, 4 de diciembre de 2020
Estas son las cosas que hacen que los informáticos se rían de nosotros
El título del post coincide con el de un artículo aparecido en la versión digital del periódico El Confidencial. En este artículo se reflejan anécdotas vividas por todos aquellos informáticos que se dedican al soporte. Y cuando decimos "soporte" no nos referimos al hecho de soportar (a veces puede que sí) sino al ámbito del soporte a usuario o, como se dice más técnicamente, asistencia técnica o soporte técnico.
Puedes leer el artículo pinchando aquí.
viernes, 6 de noviembre de 2020
COBOL - cómo terminar un programa cobol
Pensemos en la típica estructura de un programa Cobol:
INICIO
TRATAMIENTO hasta <<fin-fichero-entrada>>
FIN
Dentro del párrafo FIN solemos tener el cierre de los ficheros utilizados por el programa (los de entrada y salida) y los display's necesarios para mostrar las estadísticas (si tienes costumbre de ponerlos para reflejar cuántos registros se han leído del fichero de entrada, cuántos registros se han grabado en el fichero de salida y alguna cosa más que resulte de interés).
Si el programa ha llegado al párrafo FIN y ha sido capaz tanto de cerrar correctamente los ficheros utilizados como de mostrar las estadísticas significa que el programa ha terminado correctamente. Pero necesitamos algo más para que el jcl donde se ejecuta se entere de que ese programa ha finalizado correctamente.
Y te preguntarás: "Y, ¿qué es lo que se necesita?". Pues la respuesta es muy sencilla. Incluir las siguientes dos sentencias:
MOVE ZEROS TO RETURN-CODE
GOBACK
Éste es todo el código que necesitas para indicar la correcta finalización del programa.
Ahora bien, imagínate que necesitas que el programa finalice con un código distinto (por ejemplo, un código de retorno 2) en determinadas situaciones como puede ser que el fichero de salida esté vacío o que el fichero de errores contenga información. Antes de que te preguntes cómo se hace te lo voy a contar ya. Se hace de la siguiente manera:
IF CONT-GRAB-FIC-SALIDA = 0
MOVE 2 TO RETURN-CODE
GOBACK
END-IF
IF CONT-GRAB-FIC-ERRORES > 0
MOVE 2 TO RETURN-CODE
GOBACK
END-IF
OJO!!! Las líneas de código que acabamos de indicar como ejemplo para finalizar el programa con un código de retorno distinto de 0 se deben codificar en el programa antes que las otras líneas de código de finalización correcta. Y, ¿por qué? Porque si invertimos el orden y pusiéramos primero el código que indica la correcta finalización del programa, siempre finalizaríamos el programa correctamente y NUNCA devolvería el código de retorno 2 aunque se cumplan las casuísticas indicadas.
viernes, 2 de octubre de 2020
MongoDB
Aquí os dejamos interesantes vídeos acerca de MongoDB (base de datos de tipo NoSQL).
MongoDB en 20 minutos
¿Qué es SQL y NoSQL?
NoSQL VS SQL
viernes, 4 de septiembre de 2020
HOST - comando unnum
Seguro que te ha pasado alguna que al final del fichero aparece los números de secuencia. Si quieres eliminarnos y poder editar el fichero sólo tienes que ejecutar el comando unnum o unnumber.
En la línea donde pone Command ===> sólo tienes que poner el comando indicado y solucionado.
Para más información acerca de este comando sólo tienes que pinchar aquí.
viernes, 14 de agosto de 2020
Fundamentos de la programación
Apuntes muy interesantes y completos de la asignatura Fundamentos de la programación de la Facultad de Informática (UCM).
Pinchar aquí para acceder a dichos apuntes en formato pdf (interesantes por la abstracción procedimental y por la visión completa de C++).
Suscribirse a:
Entradas (Atom)