miércoles, 21 de diciembre de 2011

Felices Fiestas y prospero 2012

Os deseo unas felices fiestas y un prospero año 2012, que el sentido común guié  nuestros actos, en un futuro que se prevee difícil, y que los que trabajamos con sistemas AS400 lo tengamos un poco mejor.

pd: Aunque el blog esta en "standby", espero poder reanudar la publicación de nuevos artículos en las próximas semanas.

jueves, 22 de septiembre de 2011

Activada visualizacion en moviles

Activada la funcionalidad de Blogger para la publicación de las entradas de este blog en formato para móviles

jueves, 15 de septiembre de 2011

Tango/04 Computing Group - 20º Aniversario

La empresa Tango/04, dedicada a diseñar productos de visualización de eventos (monitorizacion pero de alto nivel y calidad),  cumple años y ha publicado un "timeline" de los principales hitos de sus productos.
¡¡ Felicidades !!

martes, 21 de junio de 2011

Averiguar cuando se hizo el ultimo SAVSYS

Si nunca habéis tenido la necesidad de averiguar cuando se hizo el ultimo SAVSYS en nuestro sistema AS400, aquí tenéis un enlace a un interesante articulo donde explica como averiguarlo:

miércoles, 11 de mayo de 2011

Control umbral de disco

Una de las preocupaciones de todo administrador de sistemas es la del espacio en disco disponible en el sistema.
Debemos evitar una caída del sistema por ocupación en disco, ya que un IPL anormal por dicha causa tendrá una larga duración, y ademas no es seguro que se libere el espacio en disco suficiente para terminarla sin intervención manual desde la consola.
Nuestro sistema AS400 tiene dos formas de avisarnos cuando el sistema esta llegando al porcentaje de uso del umbral (predefinido) de ocupación en disco:

(A) La de "toda la vida": El sistema operativo empieza a enviar mensajes de aviso cuando la ocupación en disco supera el umbral definido en la configuración del disco, normalmente del 90%. A partir de ese momento empieza a enviar el mensaje CPF0907 "Serious storage condition may exist. Press HELP." a la cola del operador (QSYSOPR) y al histórico del sistema (DSPLOG). Este mensaje nos indica la cantidad de almacenamiento disponible, el usado y el porcentaje de almacenamiento libre en ese instante. Si tenemos creada la cola de mensaje QSYSMSG (ver Cola de mensajes QSYSMSG) también los recibiremos en esa cola de mensajes especial.

Para ver y/o modificar el umbral, debemos arrancar las herramientas de servicio (DST), para ello nuestro perfil de usuario debe ser de tipo *SECOFR y tener autorización *SERVICE como mínimo. Para entrar en la herramienta de las DST teclearemos el mandato STRSST, que nos pedirá el usuario de servicio y contraseña.
 
Seleccionamos la opción 3. Work with disk units  
Después seleccionar la opción 2. Work with disk configuration y a continuación seleccionaremos la opción 3. Work with ASP threshold, que nos mostrara los umbrales de todas las ASP de disco que tengamos configuradas.
Para modificar el umbral de una ASP, seleccionarla con un 1 y pulsar Intro:
Introducir el nuevo umbral, en %, que deseemos que el i5/OS a partir del cual nos envié el mensaje de aviso.
Para salir de las DST iremos pulsando F3 y finalmente nos pedirá confirmación para salir pulsando Intro.

(B) La otra de las opciones es utilizar los valores de sistema de control del almacenamiento, usar WRKSYSVAL SYSVAL(*STG) para verlos:
  • QSTGLOWACN  Auxiliary storage lower limit action
  • QSTGLOWLMT  Auxiliary storage lower limit
El valor de sistema QSTGLOWLMT, nos permite, conjuntamente con el valor QSTGLOWACN, controlar que debe hacer el sistema operativo cuando llega a cierto limite de ocupación en disco. Su valor indica el porcentaje de disco libre (límite inferior), por omisión es el 5%, a partir del cual empezara a ejecutar la acción definida en el valor QSTGLOWACN, en este caso cuando el sistema llegue al 95% de ocupación en disco.
El valor de sistema QSTGLOWACN puede tener los siguientes valores, con los 3 primeros valores hemos de preocuparnos de que hacer cuando el sistema llegue a su limite inferior de almacenamiento:
  • *MSG: Este es el valor por omisión, e indica que se envié el mensaje CPI099C " Critical storage lower limit reached" a la cola del operador QSYSOPR (y por ende al histórico del sistema) y a la cola QSYSMSG, si esta existe.
  • *CRITMSG: Indica que se enviará el mensaje CPI099B "Critical storage condition exists" a los usuarios designados en los atributos de servicio (CHGSRVA).
  • *ENDSYS: Indica que finalizara TODOS los trabajos y subsistemas y dejara el sistema en estado restringido (subsistema QCTL o QBASE activo desde consola). Esta opción es la más recomendable en sistemas de desarrollo, o no críticos, ya que, aunque podrían haber perdidas de datos (ya que se cancelaran los trabajos que se están ejecutando así como dejaremos de dar servicio), en cambio nos protege una parada incontrolada del sistema cuando llegue al 100% de ocupación en disco y que nos forzaría a una IPL anormal, mucho mas lenta, ademas nos permitirá liberar espacio de disco manualmente, desde la consola, con lo que acortaremos el tiempo de recuperación del sistema.
  • *PWRDWNSYS: Ejecutará el mandato PWRDWSYS dejando el sistema apagado. No recomiendo para nada esta opción, antes es mejor tener el valor *ENDSYS para dejarlo en restringido.
  • *REGFAC: Ejecutará el exit program registrado para el exit point "QIBM_QWC_QSTGLOWACN". Con esto podemos conseguir que cuando se llegue al límite inferior de ocupación en disco, el sistema operativo ejecute el  programa que definamos nosotros. Este programa podría ejecutar, entre otras cosas:
  1. La finalización controlada de aplicaciones no necesarias.
  2. La finalización controlada de transcriptores (impresoras).
  3. Retener colas de trabajos batch.
  4. La eliminación de datos, u objetos, temporales y no necesarios.
  5. etc...
  6. Si no podemos corregir la situación, podremos realizar una parada controlada del sistema para evitar daños mayores.
Para ver, definir, o cambiar el valor del exit program, ejecutar el mandato WRKREGINF EXITPNT(QIBM_QWC_QSTGLOWACN) y la opción 8=Work with exit programs.

viernes, 15 de abril de 2011

Utilidad CHGOBJAUT

La utilidad CHGOBJAUT nos permite cambiar los permisos de uno, o varios, objetos de una biblioteca.
Por ejemplo el mandato:
CHGOBJAUT LIB(MYLIB) OBJ(XYZ*) TYPE(*FILE) USER(AN_USER) AUT(*CHANGE)
Otorgara autorización *CHANGE al usuario AN_USER a todos los objetos tipo *FILE de la biblioteca MYLIB que su nombre de objeto empiece por XYZ.

La diferencia con el mandato GRTOBJAUT, es que CHGOBJAUT solo cambiara la autorización si esta es diferente, para comprobar esta diferencia utiliza la utilidad CMPOBJAUT publicada anteriormente en este blog.

Cuando finaliza la ejecución del mandato CHGOBJAUT envía el mensaje CPF9897 informando del resultado de su ejecución: 
Procesados 0000000018 objetos. No se ha otorgado autorización a 0000000000 objetos.

Podéis bajar el código de esta utilidad del grupo Recursos AS400 en IBM developersWorks

sábado, 9 de abril de 2011

Utilidad CMPOBJAUT

El mandato CMPOBJAUT nos permite, dentro de un programa, comparar la autorización de un objeto para un usuario concreto.
Por ejemplo con el siguiente mandato:
CMPOBJAUT LIB(MYLIB) OBJ(AN_OBJECT) TYPE(*FILE) USER(AN_USER) AUT(*USE) LGL (&MATCH)
Verificaremos si el usuario AN_USER tiene autorización *USE al archivo MYLIB/AN_OBJECT, si es así devolverá un '0' en la variable &MATCH, si es diferente devuelve '1'.

Podéis bajar el código de esta utilidad del grupo Recursos AS400 en IBM developersWorks

viernes, 18 de marzo de 2011

Mandato para añadir dias a una fecha (ADDDAT)

Con el mandato ADDDAT podemos sumar o restar días a una fecha, es muy útil para utilizarlo en programas CL.

Debemos pasar en el parámetro DAYS el numero de días a añadir, o sustraer, a la fecha que le pasamos en el parámetro DATE, por omisión tiene el valor especial *TODAY que recuperara la fecha del sistema. La nueva fecha la devuelve en la variable que pongamos en el parámetro TOVAR.

miércoles, 16 de marzo de 2011

Autoarranque servicios TCP/IP

El mandato STRTCPSVR tiene el valor *ALL por omisión para el parámetro SERVER. Si no tenemos controlado el uso de este mandato, se arrancaran un montón de servicios TCP/IP y que puede que no necesitemos en nuestras aplicaciones, consumiendo además, recursos del sistema para nada.
Un ejemplo podría ser el servidor de correo SMTP que, evidentemente si no lo usamos en nuestro sistema, puede consumir recursos y darnos algún dolor de cabeza.

Por esta razón recomiendo cambiar el valor por defecto del comando STRTCPSVR (solo válido solo para las versiones del OS/400 V4R5 o superiores):
CHGCMDDFT  CMD(STRTCPSVR) NEWDFT('SERVER(*AUTOSTART)')

De esta forma si se ejecuta un STRTCPSVR sin parámetros, en lugar de arrancar todos los servicios TCP/IP, solo se arrancaran los que hayamos definido como autoarranque nosotros. Además prevendremos posibles ataques por los puertos de los servicios que no estamos utilizando.

¿Como hacemos esto?, pues con el mandato CFGTCP, seleccionamos la opción 20, y vamos modificando todos servicios, que nos interese arrancar automáticamente, con el parámetro AUTOSTART(*YES), el resto los dejamos con el valor *NO. Eso si hemos de tener muy claro que servicios usamos y cuales no.
Para algunos servicios existen comandos para cambiarlos directamente desde la linea de mandatos, por ejemplo para el FTP Trivial: CHGTFTPA AUTOSTART(*NO)

¡¡Ojo!! Hay algunos servicios que solo se pueden configurar desde el "Navegador de Operaciones" (menú Network, Servers, TCP/IP). Para modificarlos usar el botón derecho sobre cada servicio (Propiedades) y desmarcar o marcar la casilla "Start when TCP/IP is started".

¡¡Ojo!!  También deberemos verificar el programa QSTRUP, o el que utilicemos en nuestro sistema, no tenga "hardcode" el mandato STRTCPSVR SERVER(*ALL).

sábado, 5 de marzo de 2011

Gestionar mejor la configuracion de subsistemas

En varias de las entradas del blog se mostraba como "tunear" nuestros subsistemas:
Asignar prioridad automáticamente
Cola de trabajos independiente
Memoria para subsistema
Colas de trabajos
Entradas de direccionamiento
Cambiar inicio de sesión

La gente de System i Network publica utilidades y artículos muy interesantes, y muchos de ellos nos pueden ser de mucha utilidad. Entre ellas han publicado unas utilidades de Carsten Flensburg que nos pueden facilitar las tareas de configuración de los subsistemas.

Están divididas en cuatro artículos titulados:
Carsten's Corner - New Subsystem Entry Commands
New Subsystem Entry Commands - Part 1
New Subsystem Entry Commands - Part 2
New Subsystem Entry Commands - Part 3
New Subsystem Entry Commands - Part 4

viernes, 25 de febrero de 2011

Nueva version utilidad CPYJOBSPL

La utilidad CPYJOBSPL ha sido modificada para habilitar el parámetro MAXSIZ cuando seleccionamos la opción *TEXT en el parámetro TOFMT. Esta opción solo funcionaba con la opción *SPL y esta pensada para evitar copiar archivos demasiado grandes, cuando solo queremos documentar una parte del proceso.


Ir al articulo Copiar archivos spool.

sábado, 12 de febrero de 2011

Copiar archivos fuentes a un directorio

Utilidad que copia miembros, de un archivo de fuentes, a archivos en formato de pc (ANSI), en un directorio del AS400.
El archivo de salida lo renombra con esta nomenclatura:
Miembro.Atributo_Descripcion.TXT
Utilidad publicada, en el año 2000, en mi antigua web "Utilitats per a..., Utilidades para..., Tools for AS/400 iSeries"