Cómo agregar pantallas de confirmación/ validación para COMANDOS DELICADOS
Mejore las condiciones de seguridad de algunos comandos delicados en AS400 utilizando programas de validación.
Existen comandos OS/400, que, a pesar de su sensibilidad, no atraviesan por una pantalla de confirmación cuando se los invoca desde la línea de comandos, esto es, no ofrecen una instancia para cancelar en caso de error o presionar Intro para continuar. Por ejemplo, esto ocurre con ENDJOB, DLTSPLF, PWRDWNSYS o ENDSBS.
Sin embargo, algunos de ellos (ENDJOB, DLTSPLF), sí piden confirmación cuando se los invoca desde una interfaz tipo WRK. (Por ejemplo, ejecutando la opción 4 desde un WRKSPLF, o un WRKACTJOB).
Este “cambio de conducta” del comando pone en evidencia una facilidad interesante del OS/400 que consiste en los programas de validación de comandos. Existe un atributo perteneciente a los objetos de tipo *CMD que, de estar especificado, referencia un programa de validación que se ejecutará antes del programa procesador del comando (CPP).
Los programas de validación pueden constituir un importante valor agregado para aquellos comandos que previo a su ejecución, es necesario que efectúen ciertas tareas adicionales no incluidas en el CPP; validaciones extras o solicitud de confirmación son algunos de los casos más comunes, pero existen muchísimos más. Desde ya, ésto complementa a las restricciones que el comando pueda tener a través de la seguridad del objeto, la clase de usuario, o el entorno de ejecución permitido en los atributos del comando.
Programa de validación: creación y requisitos
Los programas de validación deben cumplir con ciertos requisitos para que su ejecución resulte exitosa. El sistema verifica que el *PGM asociado reciba la misma cantidad de parámetros que el mandato posee. Si ésta condición no se verifica, entonces no es posible ejecutar el comando. No debe olvidarse, al contar la cantidad de parámetros del mandato, de presionar F10 para considerar los adicionales.
Cuando se diseña un programa de validación es sumamente importante la forma en la que el programa termina, ya que esto define cómo sigue el curso de la ejecución del comando.
Si el programa finaliza con el envío de un mensaje de tipo *ESCAPE, OS/400 asume que existe una condición de error y finaliza la ejecución del programa emisor. El control regresa al “prompt” del comando (si se presionó F4) o a la línea de mandatos.
En cambio, si la finalización es normal, el sistema deriva el control al programa procesador del mandato. De esta manera, continúa con la ejecución del comando.
El siguiente programa permite agregar al comando ENDSBS un mensaje de confirmación para que el usuario que lo invoca tenga la posibilidad de arrepentirse de su ejecución:
Detalles del programa:
- La sentencia PGM debe incluir la misma cantidad de parámetros que el mandato posee. Para ENDSBS son 4 en total, considerando los que aparecen al presionar F10.
- Los parámetros deben estar declarados. En el ejemplo son variables de caracteres de longitud 1 que actúan como “placeholders”. De esta forma, existe compatibilidad entre los parámetros del comando y los del programa de validación.
- RTVJOBA recupera, a través de la variable &TIPO, de que forma el comando se está ejecutando. Si devuelve ‘1’, indica interactivo; si es ‘0’, batch.
- Si &TIPO es ‘0’, finaliza la ejecución del programa y continúa con el programa procesador del comando.
- El flujo del programa, si la ejecución es interactiva, continúa en esta sentencia. SNDUSRMSG envía el mensaje de confirmación a la cola de mensajes externa y valida la respuesta.
- Si la respuesta es N, el usuario se arrepiente de la ejecución del mandato. El programa maneja esta situación enviando el mensaje CPF0002 con tipo *ESCAPE. El texto del mensaje es “Mandato no ejecutado. Error detectado por el comprobador de validez.”
- Si la respuesta es S, el usuario confirma el ENDSBS. Recibe en la cola de mensajes externa el texto “El mandato se ejecutará”. El tipo de mensaje es informativo. De esta forma, la finalización del programa es normal y continúa con la ejecución del programa procesador del comando.
Los programas de validación no deberían usarse para alterar los valores ingresados en el “prompt”, ya que los parámetros modificados no son siempre pasados al programa procesador del mandato.
Cómo asociar un programa de validación
El mandato DSPCMD permite conocer si un comando dado posee un programa de validación. La siguiente pantalla muestra el resultado de su ejecución aplicada a ENDSBS:
El valor *NONE indica la ausencia de programa de validación.
Para asociar un programa de validación, se aconseja no modificar el mandato original, sino copiarlo en otra biblioteca y hacer el cambio sobre la copia. La biblioteca que recibe el objeto duplicado debería estar en la lista de bibliotecas antes de QSYS.
Para efectuar estas tareas sobre el comando ENDSBS realizar los siguientes pasos:
- Inicie sesión con un perfil con autorización especial *ALLOBJ.
- Promptear CRTDUPOBJ y duplicar ENDSBS.
- Desde línea de comandos ingrese CHGCMD y presione F4.
- En el parámetro Mandato ingrese ENDSBS.
- En el parámetro Biblioteca ingrese el nombre de la que recibió el duplicado de ENDSBS.
- Presione Intro dos veces.
- Busque el parámetro Programa comprobación validez.
- Ingrese el nombre del programa y su biblioteca.
- Presione Intro.
El cambio ya está vigente.
La siguiente pantalla muestra el prompt del comando CHGCMD:
Para tener en cuenta...
- El uso de los programas de validación está orientado al uso en aquellos comandos que se utilizan frecuentemente de manera interactiva. Ej: ENDJOB, ENDSBS, PWRDWNSYS. Cuando el mandato se ejecuta en entornos batch, presenta un comportamiento especial.
- Si se asocia un programa de validación al comando ENDJOB, cuando se lo ejecuta desde WRKACTJOB, el sistema omite la pantalla de confirmación que aparece normalmente, dando lugar a la ejecución del nuevo programa asociado.
- El cambio debe repetirse luego de la instalación de una nueva versión de OS/400.
Copyright Teknoda S.A.
IMPORTANTE: “Notas técnicas de AS/400 - IBM i" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes IBM i - AS/400. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. NS iTech - Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos. |