lunes, 23 de abril de 2012

Respuestas de la semana

Revisando las búsquedas que llevan a la gente a visitar el Consultorio Cobol, se nos ocurrió crear un artículo semanal en respuesta a esas búsquedas que puede que no hayan encontrado solución a su problema.
Contestaremos a aquellas cuestiones que no necesiten de un artículo entero para ser explicadas, es decir, que la solución se pueda dar en un par de frases.
Vamos con las de esta semana : )

Pregunta 1:
se puede validar una variable numerica y alfanumerica en cobol
Respuesta 1:
En cobol se puede comprobar si una variable contiene solo números (es numérica) o no con la siguiente sentencia:
01 WX-VARIABLE-NUM PIC 9(4) VALUE 1234.
...
IF WX-VARIABLE-NUM IS NOT NUMERIC
DISPLAY 'ERROR'
END-IF


Nota: la validación de IS NUMERIC e IS NOT NUMERIC es válida sólo para campos numéricos o numéricos comprimidos, es decir, PIC 9(X) y PIC 9(X) COMP-3.

Pregunta 2:
quitar numeracion amarrilla cobol
Respuesta 2:
Los números amarillos que aparecen a izquierda y derecha de un programa cobol se puden quitar escribiendo en la linea de comandos (Command ===>) los siguiente:
Primero escribimos NUM STD COB y pulsamos intro. Veréis que el código se mueve hacia la izquierda.
Luego escribimos UNNUM y pulsamos intro. Veréis que el código se vuelve a centrar y los números han desaparecido.









Pregunta 3:
indexed by in cobol como incrementar
Respuesta 3:
Cuando un índice en cobol está definido en una cláusula INDEXED BY, la manera de incrementarlo sería:
SET WI-INDICE UP BY 1

Esto sería para incrementarlo en 1, si le indicamos otro número se incrementaría en esa cantidad.

Pregunta 4:
cargar campos de longitud variable con load bmc vachar position
Respuesta 4:
Supongamos que tenemos un fichero de longitud variable (VB) donde el VARCHAR es el último campo del fichero, de tal modo que es el que hace que la longitud varíe.
Supongamos ahora que con ese fichero queremos hacer una LOAD a la tabla correspondiente. Pueden pasar dos cosas:

1- En la tabla, el campo VARCHAR no es el último:
En este caso tendremos que formatear el fichero con un OUTREC, para colocar el VARCHAR de modo que coincida con la posición en la tabla DB2. Para ello podemos pasar el fichero de VB a FB y después hacer el OUTREC (por ejemplo).
2- En la tabla, el campo VARCHAR también es el último:
Si la LOAD directamente del fichero VB no funciona, podemos pasarlo a FB y funcionará.

Para pasar de VB a FB podemos hacerlo por JCL o, más a lo bestia, hacer una copia y cuando nos pregunte si queremos copiar los atributos del fichero original le diremos que no, que se los queremos indicar (opción 2 de la imagen). Cambiaremos el Record Format de VB a FB, el Record Length a la longitud del fichero con el VARCHAR al máximo, y el Block size a algo coherente con la longitud.













No dudéis en enviarnos vuestras dudas directamente al correo del consultorio o a través del formulario de contacto.

7 comentarios:

Loboc dijo...

Gran idea! Esos malditos números amarillos...siempre te delatan el copia y pega :)

Mauricio Diaz dijo...

Una consultia y cómo saber si un campo no es un numerico de 4 dígitos completados con ceros a la izquierda?

Tallian dijo...

Hola Mauricio.
Si tu variable está definida como numérica, siempre tendrá ceros a la izquierda. Si es alfanumérica puedes redefinirla como numérica y hacer el IS NUMERIC. Si tiene ceros a la izquierda debería ir OK.

osvaldo dijo...

como realizo la busca de un texto en toda una biblioteca de Mainframe?

Tallian dijo...

Hola Osvaldo.
La opción suele estar en el 3.14 y se llama Search-For.
Ahí le indicarás el texto que quieres buscar y la librería donde quieres buscar.
Saludos!

OCTAVIO dijo...

Muchas gracias me sirvió mucho el comando NUM STD COB - UNNUM

Anónimo dijo...

Como pregunto si un campo contiene letras numeros espacios y algunos caracteres especiales en cobol