Lea en AS/400 System i . . .

Aprovechando las posibilidades del WRKACTJOB a través de sus parámetros

Obtenga una salida diferente de la habitual al ejecutar el comando WRKACTJOB, aprovechando lo ofrecido por algunos parámetros interesantes que posibilitan entre otras acciones la de renovar automáticamente la pantalla resultante.

FaceBookTwitterGoogle+

Recursos y curiosidades de programación CL – Parte I

Conozca las amplias posibilidades de la programación CL a través de herramientas sencillas y obvias, pero a menudo sub-explotadas por los programadores, entre ellas:

- Uso de caracteres de prompteo selectivo dentro de programas CL como alternativa a la codificación de Display Files.
-  Monitoreo de mensajes utilizando “Datos de comparación”.

 

Caracteres de prompteo selectivo

Los caracteres de prompteo selectivo son un conjunto de símbolos que, codificados de la forma correcta, permiten mostrar al usuario el prompt completo o parcial de un comando e ingresar valores para los parámetros que se exhiben. Si esto se hace dentro de un programa CL, luego de presionar intro, se sale del “prompteo” y continúa la ejecución del programa.

La utilización de esta herramienta dentro de un programa CL puede evitar, en algunos casos, la creación  de una pantalla (objeto de tipo *FILE DSPF) y su posterior declaración dentro de un programa CL (recordar que dentro de un programa CL sólo se puede declarar (comando DCLF) un único archivo). También es posible usar esta opción sobre los comandos asociados a los items de un menú (opciones definidas en objetos de tipo *MENU).

Sintaxis

La siguiente tabla muestra los caracteres de prompteo disponibles. Las distintas posibilidades existentes permiten controlar qué parámetros aparecen en el prompt de un comando, cuáles se pueden cambiar y cuáles sólo se pueden visualizar:

AS400-recursos-programacion-Cl-1

Ejemplo:

El siguiente programa muestra un ejemplo de utilización de los caracteres de prompteo:

AS400-recursos-programacion-Cl-2

Observar las siguientes consideraciones:

  • En la sentencia 1 se promptea el comando SAVLIB, pero no todos sus parámetros. Los parámetros Biblioteca y Release destino (palabras claves LIB y TGTRLS respectivamente) se pueden visualizar y modificar. Los parámetros Dispositivo, Vías de acceso y Compresión de datos (palabras claves DEV, ACCPTH y DTACPR respectivamente) sólo son visualizables. De esta manera, el usuario podrá elegir qué biblioteca salvar y para qué versión de sistema operativo, pero sólo podrá realizar la operación sobre el dispositivo TAP01, incluyendo siempre vías de acceso y  comprimiendo.
  • Si el parámetro DEV tuviera caracteres de prompteo “??”, se podría seleccionar el dispositivo para realizar la operación. El valor *SAVF no será aceptado, debido a que el parámetro Archivo de salvar (palabra clave SAVF)  no fue seleccionado para su aparición en el prompt.
  • Si al visualizar el prompt, durante la ejecución del programa se presiona F3 o F12, se produce el error  CPF6801. En las sentencias señaladas con 2, se utiliza MONMSG para evitar la pantalla de cancelación.
  • Al permitir que el usuario cargue valores en los parámetros, deben monitorearse los errores que se pueden producir si se ingresa, por ejemplo, el nombre de una biblioteca que no existe.  En las sentencias señaladas con 3, se monitorea el error CPF3781 que se puede producir si se ingresa el nombre de una librería inexistente.

Prompteo selectivo y autoridad adoptada

Los caracteres de prompteo selectivo son una excelente herramienta para combinar con “autoridad adoptada”. Cuando un usuario necesita acceder al prompt de un comando al cual no posee permiso, un programa que incluya al comando y que adopte las autorizaciones de un perfil con acceso al mandato en cuestión, puede ser una solución interesante para resolver el acceso sin otorgar una autorización específica sobre el mandato.

MONMSG y el parámetro “Datos de comparación”

El comando MONMSG es una importante herramienta de la programación CL utilizada para capturar mensajes de cancelación dentro de los programas CL, definir un tratamiento para ese error y continuar así la ejecución del programa sin solicitar la intervención del usuario.

El funcionamiento del mandato MONMSG es similar al del comando IF, ya que la acción especificada en el parámetro Mandato a ejecutar (palabra clave EXEC)  se realizará solamente cuando se produce el código de error que monitorea. Por ejemplo, en el programa de la página anterior, en la sentencia 2, MONMSG se ejecuta solamente cuando se produce el código de error CPF6801 (si el usuario presiona F3 o F12).

Cuando se promptea el mandato MONMSG se puede visualizar el parámetro “Datos de comparación” (palabra clave CMPDTA). Para comprender el uso de este parámetro es necesario observar que la mayoría de los mensajes predefinidos que envía OS/400 contienen variables dentro de su texto. Por ejemplo, el texto del mensaje de código CPF3781 es: “No se ha encontrado la biblioteca &1”. “&1” es una variable contenida dentro del texto del mensaje, que en el momento real del envío será reemplazada por el nombre de una biblioteca.

La utilización del parámetro CMPDTA del mandato MONMSG permite definir que la acción a realizar para una situación de error (parámetro EXEC) se ejecutará no solamente cuando se produzca determinado código de error, sino también cuando los datos de comparación especificados coincidan con la información variable del mensaje a monitorear.

Ejemplo:

En el siguiente programa se puede observar un ejemplo de uso del parámetro CMPDTA o “Datos de comparación”:

AS400-recursos-programacion-Cl-3

Observar las siguientes consideraciones:

  • En las sentencias marcadas con 1, se monitorea la ocurrencia del código de error CPF2110 (“Biblioteca &1 no encontrada”) con el dato de comparación “AUDITS”. Esto significa que los comandos encerrados entre DO y ENDDO se realizarán cuando se produzca el error de Biblioteca no encontrada”  para la biblioteca AUDITS. El grupo de comandos señalados con 2, capturarán el error de “Biblioteca no encontrada” para bibliotecas con cualquier otro nombre distinto de AUDITS. Se debe destacar, en este caso, la importancia del orden en el cual se monitorean los mensajes. Si el bloque de sentencias 2 estuviera antes que el bloque 1, todos los mensajes de error serían capturados por el MONMSG que carece de datos de comparación, y el MONMSG con datos de comparación nunca se ejecutaría.

  • En las sentencias señaladas con  3 y 4 se puede observar un caso muy particular de monitoreo con datos de comparación. En ambos grupos de sentencias se monitorea el código de error CPF2817 (“El mandato de copiar ha finalizado debido a un error”). Este mensaje posee una variable que no forma parte de su  texto. Para comprobarlo, utilizar DSPMSGD CPF2817 y luego opción 2.  Cuando los datos de comparación son “CPF2802” (Archivo origen &1 en &2 no encontrado), se detecta la ocurrencia de problemas en la copia, debido a que el archivo origen no existe. Con datos de comparación “CPF2861” (El archivo destino &1 en &2 no se ha encontrado o no se ha creado), se captura el error que ocurre cuando el archivo destino no existe y tampoco se ha especificado el parámetro CREATE(*YES) en el mandato CPYF. En este caso, el orden en el que se escriban las sentencias MONMSG no altera el funcionamiento del programa.

A través de estos ejemplos se puede observar que el comando MONMSG combinado con Datos de comparación permite flexibilizar la captura de mensajes de error, posibilitando definir más de un tratamiento para un mismo código de error,  según los valores presentes en las variables del mensaje.

 

Para tener en cuenta...

  • Una forma práctica de agregar caracteres de prompteo es la siguiente: promptear el comando, ingresar los caracteres de prompteo en el parámetro seleccionado, limpiar el resto del campo y luego presionar intro 2 veces. En la pantalla del editor se pueden visualizar los caracteres ingresados y los valores *N que incorpora como valor default para los parámetros.
  • Es posible realizar pruebas con caracteres de prompteo desde la línea de comandos.
  • Si en un programa CL se incluye la  sentencia  DSPLIB ??LIB(&BIBL) el efecto es el siguiente: cuando se muestra el prompt del comando, el campo Biblioteca aparece con el contenido de la variable &BIBL. Esto no quita la posibilidad de ingresar otro nombre de biblioteca, pero ese nuevo valor no se almacenará dentro de la variable &BIBL.
  • Recordar que en el parámetro EXEC del comando MONMSG es posible ingresa un único comando. Cuando el monitoreo se realiza a nivel de comando (MONMSG ubicado debajo del mandato que produce el error), y se necesita ejecutar más de una sentencia, se deben utilizar los comandos DO y ENDDO para abrir y cerrar un bloque de mandatos respectivamente. Si el monitoreo es a nivel de programa (MONMSG antes de la primer sentencia ejecutable o luego de las declaraciones de variables), el único comando permitido en el parámetro EXEC es GOTO.
Los monitoreos de mensajes locales o a nivel de comando tienen prioridad sobre monitoreos globales o a nivel de programa. La utilización del parámetro “Valor de comparación” no altera este esquema.

Copyright Teknoda S.A.

IMPORTANTE:
“Notas técnicas de AS/400" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes AS/400. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos.
Si desea suscribir otra dirección de e-mail para que comience a recibir las Notas Técnicas AS400, envíe un mensaje desde esa direcciónletter400@teknoda.com, aclarando nombre, empresa, cargo y país del suscriptor.

AS400 , iSeries y System i son marcas registradas de IBM. IBM no es el editor de esta publicación y no es responsable de la misma en ningún aspecto. La información contenida en esta publicación ha sido generada por nuestros especialistas a partir de fuentes consideradas confiables y del ejercicio profesional cotidiano. No obstante, por la posibilidad de error humano, mecánico, cambio de versión u otro, Teknoda no garantiza la exactitud o completud de la misma.
COPYRIGHT TEKNODA S.A. PROHIBIDA SU REPRODUCCION TOTAL O PARCIAL SIN CONSENTIMIENTO DE TEKNODA


 

Escribir un comentario


Código de seguridad
Refescar

Suscribirse a Teknodatips


Recibirá un mail cada vez que se publique un nuevo tip. Seleccionar AL MENOS un casillero:
  • AS/400 Tips
  • SAP/ABAP Tips



Joomla Extensions powered by Joobi

Lea en AS/400 Tips . . .

Infografía comparativa Comandos de SAVE RESTORE del AS400

save_restore_thumbnail

Conozca y diferencie visualmente qué partes del almacenamiento resguarda y restaura cada comando y cada opción del Menú Salvar y Restaurar. PUEDE DESCARGAR UN FORMATO POSTER PARA IMPRESION.

Para lograr un entendimiento conceptual es de suma utilidad contar con una ayuda gráfica, que  permita diferenciarlos a primera vista. Nuestro equipo de especialistas ha desarrollado el "Infographics" que presentamos con este tip. Por supuesto, el mismo debe complementarse con la información detallada de los innumerables parámetros de cada comando, pero es un útil marco de referencia  para recordar el área de injerencia de cada comando.

LEER ESTE ARTICULO >>>>>

 

 

 

Copyright © 2017 Teknoda tips - Tecnologia SAP Netweaver - IBM AS400 - System i - iSeries. Todos los derechos reservados.