COBOL - 400 Guía Del Usuario PDF
COBOL - 400 Guía Del Usuario PDF
Antes de utilizar esta información y el producto al que le da soporte, asegúrese de leer la información general que
aparece en el apartado “Avisos” en la página ix.
Esta publicación es la traducción del original en inglés COBOL/400 User's Guide, SC09-1812-00.
Esta edición se aplica al programa bajo licencia IBM ILE* COBOL/400* (Programa 5763-CB1), Versión 3 Release 1 Modificación 0, y
a todas los releases posteriores y modificaciones hasta que se indique lo contrario en nuevas ediciones. Asegúrese de que está
utilizando la edición adecuada para el nivel del producto.
Solicite sus publicaciones a través de su representante o sucursal IBM de su localidad. En la dirección que figura a continuación no
se pueden adquirir publicaciones.
Al final de esta publicación se incluye un impreso para los comentarios del lector. Si falta dicho impreso puede enviar sus comenta-
rios a:
IBM, S.A.
Centro de Traducción y Publicaciones
Avda. Diagonal, 571
08029 Barcelona
España
Si tiene acceso a Internet, puede enviar sus comentarios por correo electrónico a [email protected].
Al enviar información a IBM se cede a dicha firma el derecho no exclusivo de utilizar o distribuir dicha información de la manera que
crea más conveniente, sin incurrir por ello en ninguna obligación hacia el lector.
Copyright International Business Machines Corporation 1994. Reservados todos los derechos.
Contenido
Avisos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Información acerca de la Interfaz de Programación . . . . . . . . . . . . . . . . . ix
Marcas Registradas y Marcas de Servicio . . . . . . . . . . . . . . . . . . . . . . x
Contenido v
Deseditar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Ejemplos de Deseditar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Manejo de Errores de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Consideraciones acerca del Rendimiento . . . . . . . . . . . . . . . . . . . . . 280
Cláusulas PICTURE para Ítems Numéricos . . . . . . . . . . . . . . . . . . 280
Ítems Binarios de Ocho Bytes . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Segmentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Llamadas a un Programa COBOL desde un Programa que no es COBOL 281
Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Opción *NORANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Opción *DUPKEYCHK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Archivos Relativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Indicadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Control de Compromiso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Lectura sin Bloqueos de Registros . . . . . . . . . . . . . . . . . . . . . . . 283
Inicialización de Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Bloqueo de Registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Bucles en un Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Rastreo de un Bucle en un Programa . . . . . . . . . . . . . . . . . . . . . 284
Errores que Pueden Causar un Bucle . . . . . . . . . . . . . . . . . . . . . 284
Contenido vii
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
IBM puede tener patentes o solicitudes de patentes pendientes que cubren el tema
tratado en este documento. El hecho de que esté en posesión de este documento
no le otorga ninguna licencia sobre dichas patentes. Puede enviar las solicitudes
| de licencia, por escrito, al IBM Director of Licensing, IBM Corporation, 208 Harbor
| Drive, Stamford, Connecticut, USA 06904-2501
Las interfaces de programación de uso general permiten que el cliente escriba pro-
gramas que reciban servicios del compilador COBOL/400.
Una flecha que vuelve hacia la izquierda por encima de un ítem indica que
dicho ítem puede repetirse:
┌────────────────┐
6 │
55───STATEMENT─────ítem repetible ──┴─────────────────────────────────5%
Formato
.3/
┌──────────┐
.1/ .2/ 6 │
55───STATEMENT──┬─identificador-1┬──────┬──────────┼───────────────────5
└──literal─1─────┘ └──ítem─1──┘
5─┬────┬identificador-3┬───────────┬─┬─────────────────────────────────5 ±
└─TO─┘ └──ROUNDED──┘ │ ┌────────────────────────┐ .5/
│ 6 .4/ │
└identificador4┬───────────┼──────5 ²
└──ROUNDED──┘
± 5──────────────────────────────────────────────┬─┬─────────────────┬──5%
.6/ │ └──END─STATEMENT──┘
² 5─┬─────────────────────────────────────────┬──┘ .7/
└─┬────┬SIZE ERROR sentencia imperativa ─┘
└─ON─┘
╔══════════════════════════╗
5────RECORD─┬─────┬──┬────┬──┬──╫─EXTERNALLY-DESCRIBED-KEY─╫──┬─────────5
└─KEY─┘ └─IS─┘ │ ╚══════════════════════════╝ │
└────nomb-fech-2─────────────────┘
Ampliación de IBM
Las ampliaciones del lenguaje COBOL/400 para ANSI X3.23-1985 COBOL que
forman parte de la descripción de texto están encerradas en líneas de Ampliación
IBM, como en este párrafo.
Las cláusulas e instrucciones COBOL que aparecen en los diagramas que se com-
prueban por sintaxis, pero que el compilador COBOL/400 trata como documen-
tación, están encerradas dentro de asteriscos, de la manera siguiente:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
5────┬──────────────────────────────────────────┬─────────────────────────────5
\ └──RESERVE────entero ────┬────────────┬────┘ \
\ ├────AREA────┤ \
\ └────AREAS───┘ \
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Continuación
Área-A Área-B
FILE -CONTROL.
Para obtener una descripción completa sobre la instalación del programa mediante
el SEU, consulte el manual SEU Guía del Usuario y Manual de Consulta.
Cada vez que se entra o modifica una línea fuente, se puede comprobar la sintaxis
de 496 líneas de código fuente como una unidad. La longitud de una sola unidad
de comprobación de sintaxis viene determinada por la ampliación de una línea
entrada o modificada:
Una unidad de comprobación de sintaxis se extiende hacia el comienzo de un
miembro fuente hasta la primera línea fuente, o hasta que se encuentra una
línea que finalice en un punto.
ADD A
TO BCD.
Un mensaje de error se genera una vez que se especifica la primera línea y des-
aparece cuando se especifica la segunda línea, una vez completada la instrucción.
Una instrucción COBOL puede extenderse en un máximo de 496 líneas. Asi-
mismo, si una línea fuente se especifica o se modifica, puede comprobarse la sin-
taxis de hasta 496 líneas de códigos fuente como una unidad.
Para obtener más información sobre las instrucciones SQL, consulte el manual
SQL/400* Manual de Consulta.
5──EXEC CICS──instrucción-cics──END-EXEC.─────────────────────────────5%
Para obtener más información sobre las instrucciones CICS/400 consulte la publi-
cación CICS/400 Application Programming Guide.
┌───────────┐ ┌─────────┐
│ Programa │ │ Programa│
│ Fuente ├──────────5Compilador COBOL ─┬─────5│ objeto │
│ COBOL │ & & & │ │ COBOL │
└───────────┘ │ │ │ │ └─────────┘
│ │ 6 │
┌───────────┐ │ │ Sistema │
│ Archivos │ │ │ Operativo │ ┌────────────────────────┐
│ Descritos ├───────────┘ │ OS/4ðð └─────5│ Listado │
│ Externam. │ │ │ - Resumen de mandatos │
└───────────┘ │ │ - Opciones compilador │
& │ │ - Listado fuente │
│ │ │ - Utilización de verbos│
│ │ │ - Correl. Div. Datos │
┌─────┴─────┐ │ │ - Mensajes FIPS │
│ DDS para │ ┌──────┴─┐ │ - Mensajes SAA │
│ Archivos │ │ Copiar │ │ - Referencia Cruzada │
│ Descritos │ │ Texto │ │ - Mensajes │
│ Externam. │ │ Fuente │ └────────────────────────┘
└───────────┘ └────────┘
Cada parámetro de esta pantalla muestra un valor por omisión. Desplace el cursor
más allá de los ítems en los que desee aplicar los valores por omisión. Escriba
encima de cualquier ítem para establecer los distintos valores u opciones. Si no
está seguro acerca del valor del parámetro, teclee un interrogante (?) en la
primera posición del campo y pulse Intro o F4 (Solicitud), para recibir más infor-
mación detallada. El signo de interrogación debe ir seguido de un espacio en
blanco.
Parámetros Adicionales
Más...
F3=Salir F4=Solicitud F5=Renovar F12=Cancelar F13=Cómo util. esta pantalla
F24=Más teclas
á ñ
à Crear Programa COBOL (CRTCBLPGM)
ð
Escriba la elección, pulse Intro.
Límite de Mensaje:
Número de mensajes . . . . . . \NOMAX 1-9999, \NOMAX
Gravedad límite de mensaje . . 29 ð-29
Imprimir archivo . . . . . . . . QSYSPRT Nombre
Biblioteca . . . . . . . . . . \LIBL Nombre, \LIBL, \CURLIB
Señalización FIPS. . . . . . . .
+ para más valores
Señalización SAA . . . . . . . . \NOFLAG \NOFLAG, \FLAG
Opciones de pantalla ampliada. . \DFRWRT, \NODFRWRT...
+ para más valores
Gravedad de señalización . . . . ð ð-99
Sustituir programa . . . . . . . \YES \NO, \YES
Release destino. . . . . . . . . \CURRENT \CURRENT, \PRV, V2R1Mð...
Perfil usuario . . . . . . . . . \USER \USER, \OWNER
Más...
F3=Salir F4=Solicitud F5=Renovar F12=Cancelar F13=Cómo util. esta pantalla
F24=Más teclas
á ñ
à Crear Programa COBOL (CRTCBLPGM)
ð
Escriba la elección, pulse Intro.
Final
F3=Salir F4=Solicitud F5=Renovar F12=Cancelar F13=Cómo util. esta pantalla
F24=Más teclas
á ñ
Figura 3. Pantallas de Solicitud CRTCBLPGM
Todos los nombres de objetos especificados para el mandato CRTCBLPGM deben respetar los convenios
de denominación de AS/400: deben ser nombres básicos, de 10 caracteres de longitud, estar com-
puestos por caracteres alfanuméricos, el primero de los cuales debe ser alfabético; o bien pueden ser
nombres entrecomillados de 8 caracteres de longitud.
Si desea relacionar estas descripciones de parámetros con el diagrama de sintaxis CRTCBLPGM, con-
sulte la Figura 4 en la página 30.
QLBLSRC
Especifica que el archivo fuente,
Parámetro PGM:
QLBLSRC, contiene el fuente COBOL a
Especifica el nombre del programa así como
compilar.
el nombre de biblioteca para el objeto pro-
grama COBOL que se está creando. Los nombre-archivo-fuente
valores posibles son: Entre el nombre del archivo fuente que
contiene el fuente COBOL que se debe
*PGMID
compilar. Este archivo fuente debe tener
El nombre del objeto programa se obtiene
92 caracteres de longitud de registro.
del párrafo PROGRAM-ID del programa
fuente COBOL. Los valores posibles de la biblioteca son:
nombre-programa *LIBL
Entre un nombre para identificar el pro- Si no especifica ningún nombre de biblio-
grama COBOL compilado. Si especifica teca, el sistema busca en la lista de biblio-
un nombre de programa para este pará- tecas la biblioteca en la que se ubica el
metro, y la compilación se ejecuta por archivo fuente.
lotes, el primer programa del trabajo por
*CURLIB
lotes utilizará este nombre; cualquier otro
Se utiliza la biblioteca actual. Si no ha
programa utilizará el nombre especificado
asignado una biblioteca como biblioteca
en el párrafo PROGRAM-ID del programa
actual, se utiliza QGPL.
fuente.
*LINENUMBER
Los números de secuencia que el compi- *NOSECLVL
lador crea se utilizan para los números de No se lista un texto de mensaje de
referencia. Esta opción combina el código segundo nivel para esta compilación.
fuente del programa y el código fuente
introducido mediante instrucciones COPY *SECLVL
en una secuencia numerada consecuti- Se lista un texto de mensaje de segundo
vamente. Utilice esta opción si especifica nivel para esta compilación junto con el
la señalización FIPS (Federal Information texto de error de primer nivel.
Processing Standards) o la señalización Nota: Se imprime el texto de error de
SAA. * primer nivel cada vez que se
produce un error.
*NOMAP
El compilador no lista la correlación de *PRTCORR
División de Datos. El compilador inserta líneas de comenta-
*MAP rios en los listados del compilador que
El compilador lista la correlación de Divi- indican los ítems elementales que se han
sión de Datos. incluido como resultado de utilizar la frase
CORRESPONDING.
*NOPRTCORR
*NOOPTIONS El compilador no inserta líneas de comen-
No se listan las opciones en activo para tario en el listado del compilador cuando
esta compilación. se utiliza la frase CORRESPONDING.
*OPTIONS
Se listan las opciones en activo para esta
compilación. *NOSRCDBG
Esta opción determina el tipo de infor-
mación que se visualiza en la estación de
trabajo programable cuando se utiliza el
CoOperative Development
*NOPRINT
*NOLSTDBG El listado no produce ningún listado de
Esta opción determina el tipo de infor- spool.
mación que se visualiza en la estación de
trabajo programable cuando se utiliza el Parámetro GENOPT:
CoOperative Development Especifica las opciones a utilizar cuando el
Environment/400 para compilar programas objeto programa se ha creado. Los listados
COBOL. Véase la nota de la página 21 podrían utilizarse si se produce algún error en
para obtener más información. COBOL. Los valores posibles son:
*PATCH *UNREF
Reserva un espacio en el programa com- Incluye ítems de datos no referenciados
pilado para un área de parche de pro- en el programa compilado.
grama. El área de parche de programa
*NOUNREF
se puede utilizar para operaciones de
No incluye ítems de datos no referen-
depuración.
ciados en programas compilados. De
este modo, se reduce el número de
entradas ODT (tabla de definición de
*NODUMP
objetos) utilizadas, lo que permite la com-
No lista la plantilla del programa.
pilación de un programa más grande. Los
*DUMP ítems de datos no referenciados siguen
Lista la plantilla del programa. apareciendo en el listado de referencias
cruzadas que se ha producido a raíz de la
especificación de OPTION (*XREF).
*NOATR
No lista los atributos de un fuente IRP.
*NOOPTIMIZE
*ATR El compilador sólo realiza optimizaciones
Lista los atributos de un fuente IRP. estándar para el programa.
*OPTIMIZE
*RANGE El compilador intenta generar un pro-
En el tiempo de ejecución, el sistema veri- grama que opere de forma más eficiente y
fica que los subíndices se encuentren que utilice menos almacenamiento. Sin
dentro de los rangos correctos, pero no embargo, al especificar *OPTIMIZE el
verifica los rangos de los índices. Asi- tiempo necesario para compilar el pro-
mismo, comprueba las modificaciones de grama puede aumentar conside-
referencia y las operaciones de subserie rablemente.
de caracteres generadas por el compi-
lador.
*NODDSFILLER
*NORANGE Si no se encuentran campos coincidentes
No verifica los rangos en el tiempo de eje- mediante una instrucción COPY DDS, no
cución. se generará ninguna descripción de
Nota: La opción *RANGE genera un campo.
código para comprobar los rangos *DDSFILLER
subindexados. Por ejemplo, se Cuando no se encuentran campos coinci-
asegura de que el usuario no dentes mediante una instrucción COPY
intente acceder al elemento 21 de DDS, se genera siempre una descripción
una matriz de 20 elementos. de campo FILLER de carácter único "07
La opción *NORANGE no genera FILLER PIC X".
un código para comprobar los
rangos de subíndices.
*NOSYNC
Estas opciones no eliminan la
Se comprueba la sintaxis de la cláusula
comprobación del subíndice cero
SYNCHRONIZED.
realizada por el sistema operativo.
*EXTACCDSP
*NOCRTF El compilador permite instrucciones
Los archivos que no están disponibles ACCEPT y DISPLAY ampliadas. Con-
durante una operación OPEN, no se sulte el Apéndice E del manual
crean dinámicamente. COBOL/400 Reference para obtener infor-
mación sobre los cambios en las listas de
*CRTF
palabras reservadas que se producen
Los archivos que no están disponibles
cuando se utiliza esta opción.
durante una operación OPEN se crean
| dinámicamente. Una vez creados, el
| archivo obtendrá la autorización del perfil
*NOINZDLT
| de trabajo. (Consulte la explicación de la
Los archivos relativos con acceso secuen-
instrucción OPEN en el manual
cial no se inicializan con registros supri-
COBOL/400 Reference para conocer
midos durante la operación CLOSE si los
mejor las condiciones bajo las que se
archivos se han abierto para OUTPUT.
pueden producir creaciones de archivos
Es decir, la cantidad de registros escritos
dinámicos.)
determinan el límite de registros. Las
Nota: La longitud máxima de los regis- operaciones OPEN subsiguientes sólo
tros de un archivo que se creará permiten acceder hasta el límite de regis-
dinámicamente es 32 766. tros.
*INZDLT
*NODUPKEYCHK Los archivos relativos con acceso secuen-
No comprueba las claves duplicadas de cial se inicializan con registros suprimidos
los archivos INDEXED. durante la operación CLOSE si los
archivos se han abierto para OUTPUT.
*DUPKEYCHK Los registros activos de los archivos no se
Comprueba las claves duplicadas de los verán afectados. En otras palabras, el
archivos INDEXED. (Consulte la expli- límite de registro se define como el
cación sobre la instrucción READ en el tamaño de archivo para ulteriores ope-
| manual COBOL/400 Reference para raciones de E/S.
| comprender mejor las condiciones bajo
las que se indica a un programa la exis-
| tencia de registros con claves duplicadas.) *NOBLK
| Aviso: Si se especifica esta opción, el El compilador permite bloquear sólo los
| rendimiento del compilador puede verse archivos de acceso SEQUENTIAL que no
| afectado. tengan una instrucción START.
Si se especifica una cláusula BLOCK
CONTAINS, esta cláusula se omite,
*STDERR excepto para los archivos de cinta.
Se utiliza el manejo de errores estándar.
Consulte el Capítulo 6, “Manejo de *BLK
Errores y Excepciones COBOL/400” en la Cuando se utilizan BLOCK CONTAINS, el
página 71 para obtener más información. compilador permite el bloqueo desde los
archivos de acceso DYNAMIC y
*NOSTDERR SEQUENTIAL con una instrucción
Se utiliza el método de manejo de errores START. Para los archivos RELATIVE que
de la Versión 1, Releases 1 y 2. se han abierto para operaciones de
salida, no está permitido el bloqueo.
*NOMAX *LIBL
La compilación se completa con nor- Si no se especifica un nombre de biblio-
malidad independientemente del teca, el sistema busca en la lista de biblio-
número de errores producidos. tecas *LIBL, para encontrar la biblioteca
en la que se encuentra el archivo.
1-9999
La compilación se detiene si el *CURLIB
número de errores del nivel de gra- Se utiliza la biblioteca actual. Si no ha
vedad especificado supera la cantidad asignado la biblioteca como biblioteca
especificada por el usuario. Si la can- actual, se utiliza QGPL.
tidad máxima de mensajes de error no nombre-biblioteca
se supera ni se iguala, la compilación Introduzca el nombre de la biblioteca en la
continúa independientemente de la que se encuentra el archivo.
cantidad de errores producidos.
Parámetro FLAGSTD:
gravedad-mensaje Especifica las opciones de la señalización
Los posibles valores para el nivel máximo FIPS. (Seleccione la opción *LINENUMBER
de gravedad de error son: para asegurarse de que los números de refe-
29 La compilación se detiene si la can- rencia que se utilizan en los mensajes FIPS
tidad de errores con un nivel de gra- sean únicos.) Los valores posibles son:
vedad 29 o superior sobrepasa el *NOFIPS
número máximo de mensajes de error El programa fuente no dispone de la
especificado. señalización FIPS.
nivel-gravedad-máximo *MINIMUM
Especifique un número de uno o dos Señal FIPS para el subconjunto menor o
dígitos del 0 al 29. La compilación se mayor.
detiene si la cantidad de errores con
el nivel de gravedad especificado o *INTERMEDIATE
superior sobrepasa la cantidad Señal FIPS para el subconjunto inter-
máxima de mensajes de error especi- medio o mayor.
ficada por el usuario.
*HIGH
Parámetro PRTFILE: Señal FIPS para el subconjunto mayor.
Especifica el nombre del archivo al que se
dirige el listado del compilador, así como la
biblioteca en la que está ubicado el archivo. *NOSEG
El archivo debe tener un longitud mínima de No se señala con FIPS el módulo
registro de 132. Si se especifica un archivo opcional SEGMENTATION.
*DEB2
Señal FIPS para el módulo opcional *UNDSPCHR
DEBUG de nivel 2. Las instrucciones ACCEPT y DISPLAY
ampliadas manejan los caracteres que se
pueden visualizar y los que no.
*NOOBSOLETE
Los elementos de lenguaje obsoletos no *NOUNDSPCHR
se señalan. | Utilice esta opción cuando los datos que
| se deben visualizar contengan caracteres
*OBSOLETE | DBCS ampliados. Las instrucciones
Los elementos de lenguaje obsoletos se ACCEPT y DISPLAY ampliadas manejan
señalan. únicamente caracteres que se pueden
visualizar.
Parámetro SAAFLAG:
Especifica si se desea señalar las funciones Aunque el usuario debe utilizar esta
COBOL/400* que no están soportadas por opción para estaciones de pantallas
COBOL SAA. (Seleccione la opción conectadas a controladores 3174 y 3274,
*LINENUMBER para asegurarse de que los también puede utilizarla para estaciones
números de referencia que se utilizan en los de trabajo locales. Si no se utiliza esta
mensajes COBOL SAA sean únicos.) Los opción, los datos deben contener carac-
valores posibles son: teres visualizables. Si los datos contienen
valores menores que el hexadecimal 20,
*NOFLAG
los resultados obtenidos no serán los
No se realiza la señalización de COBOL
esperados, ya que aparecerán errores
SAA.
graves e incluso algún formato de pantalla
*FLAG erróneo.
Se realiza la señalización de COBOL
SAA.
*ACCUPDALL
Parámetro EXTDSPOPT: Todos los tipos de datos se visualizan
Especifica las opciones que se deben utilizar previamente en las instrucciones ACCEPT
para las instrucciones ACCEPT y DISPLAY ampliadas, independientemente de la
ampliadas para la estación de trabajo de E/S. existencia de la frase UPDATE.
Los valores posibles son:
*ACCUPDNE
*DFRWRT Tan sólo los datos de edición numéricos
Las instrucciones DISPLAY ampliadas se se visualizan previamente en las instruc-
mantienen en un almacenamiento inter- ciones ACCEPT ampliadas que no con-
medio hasta que se produce una instruc- tengan la frase UPDATE.
Ejemplo 1
CRTCBLPGM SRCFILE(QGPL/QLBLSRC) SRCMBR(SAMPLE) SAAFLAG(\FLAG)
Ejemplo 2
CRTCBLPGM PGM(TEST) SRCFILE(SOURCE1) CVTOPT(\GRAPHIC)
En el ejemplo anterior, el compilador busca el archivo SOURCE1 en la lista de
bibliotecas y busca el miembro llamado TEST dentro de ese mismo archivo. (El
valor del parámetro SRCMBR ha tomado el valor por omisión *PGM, lo que signi-
fica que ha de buscar un miembro que tenga el mismo nombre que el programa
que se ha de crear). El compilador crea un programa COBOL/400 denominado
TEST a partir del programa fuente que se ha encontrado en el miembro TEST del
archivo SOURCE1. El hecho de especificar *GRAPHIC para el parámetro
CVTOPT indica que si DDS contiene tipos de datos DBCS gráficos, el programa
COBOL deberá poder referenciarlos como campos alfanuméricos.
55──CRTCBLPGM───PGM──(─┬─\CURLIB/──────┬─┬─\PGMID───────┬─)───────────────────5
└─nombre-bibl./─┘ └─nombre-prgm.─┘
5───────────┬────────────────────────────────────────────────────────────┬────5
└─SRCFILE──(──┬─\LIBL/────────┬──────┬─QLBLSRC──────────┬──)─┘
├─\CURLIB/──────┤ └─arch-fuente-nomb─┘
└─nombre-bibl./─┘
5───────────┬─────────────────────────────────────────┬───────────────────────5
└─SRCMBR──(─┬─\PGM────────────────────┬─)─┘
└─arch-fuente-miembr-nomb─┘
5───────────┬────────────────────────────┬───┬────────────────────────────┬───5
└─OPTION──(─detalle-opción─)─┘ └─GENOPT──(─detalle-genopt─)─┘
5───────────┬──────────────────────────────────────────────────────────────┬──5
└─CVTOPT────(─┬─\NOVARCHAR─┬──┬─\NODATETIME─┬──┬─\NOGRAPHIC─┬─)┘
└─\VARCHAR───┘ └─\DATETIME───┘ └─\GRAPHIC───┘
5───────────┬───────────────────────────────────────────────────────────┬─────5
└─MSGLMT──(─┬──\NOMAX─────────┬───┬──29─────────────────┬─)─┘
└──límit-mensaje──┘ └──gravedad-máx-nivel─┘
5───────────┬────────────────────────────────┬────────────────────────────────5
└─GENLVL──(─┬─29─────────────┬─)─┘
└─nivel-gravedad─┘
5───────────┬─────────────────────────────────────────────────┬───────────────5
└─PRTFILE──(─┬─\LIBL/─────────┬──┬─QSYSPRT───┬─)──┘
├─\CURLIB/───────┤ └─nomb-arch─┘
└─nombre-bibl./──┘
5───────────┬──────────────────────────────────────────────────────────────┬──5
└─FLAGSTD─(─┬\NOFIPS──────┬─┬\NOSEG┬─┬\NODEB┬─┬\NOOBSOLETE─┬─)─┘
├\MINIMUM─────┤ ├\SEG1─┤ ├\DEB1─┤ └\OBSOLETE───┘
├\INTERMEDIATE┤ └\SEG2─┘ └\DEB2─┘
└\HIGH────────┘
5───────────┬──────────────────────────┬──────────────────────────────────────5
└─SAAFLAG──(─┬─\NOFLAG─┬─)─┘
└─\FLAG───┘
5───────────┬───────────────────────────────────────────────────────────────┬─5
└─EXTDSPOPT─(─┬─\DFRWRT───┬───┬─\UNDSPCHR───┬──┬─\ACCUPDALL─┬─)─┘
└─\NODFRWRT─┘ └─\NOUNDSPCHR─┘ └─\ACCUPDNE──┘
5───────────┬──────────────────────────────┬──────┬─────────────────────┬─────5
└─FLAG──(─┬─ð──────────────┬─)─┘ └─REPLACE─(─┬─\YES─┬)─┘
└─nivel-gravedad─┘ └─\NO──┘
5───────────┬──────────────────────────────────────┬──────────────────────────5
└─AUT──(─┬─\LIBCRTAUT──────────────┬─)─┘
├─\ALL────────────────────┤
├─\CHANGE─────────────────┤
├─\USE────────────────────┤
├─\EXCLUDE────────────────┤
└─nomb-lista-autorización─┘
5───────────┬──────────────────────────────────────┬──────────────────────────5
└─TEXT──(─┬─\SRCMBRTXT───────────┬─)───┘
├─\BLANK───────────────┤
└─'descripción-text'───┘
5───────────┬───────────────────────────────────────────────────────────┬─────5
└─DUMP──(───instrucción-inicio───────instrución-final───)───┘
5───────────┬───────────────────────┬────────────────────────────────────────5%
└─ITDUMP─(─opc.-vuelco─)┘
┌───────────────────────────────────┐
│Job: B,I Pgm: B,I REXX: B,I Exec│
└───────────────────────────────────┘
Detalles de OPTION:
5──┬─\SRC──────┬─┬─\NOXREF─┬─┬─\GEN─────┬─┬─\NOSEQUENCE─┬─┬─\NOVBSUM────┬─────5
├─\SOURCE───┤ └─\XREF───┘ └─\NOGEN───┘ └─\SEQUENCE───┘ └─\VBSUM──────┘
├─\NOSRC────┤
└─\NOSOURCE─┘
5──┬─\NONUMBER───┬─┬─\NOMAP──┬─┬─\NOOPTIONS┬─┬───\QUOTE────┬─┬─\NOSECLVL───┬──5
├─\NUMBER─────┤ └─\MAP────┘ └─\OPTIONS──┘ └───\APOST────┘ └─\SECLVL─────┘
└─\LINENUMBER─┘
5──┬─\PRTCORR───┬─┬─\NOSRCDBG──┬─┬──\NOLSTDBG──┬─┬─\PRINT──────┬──────────────5
└─\NOPRTCORR─┘ └─\SRCDBG────┘ └──\LSTDBG────┘ └─\NOPRINT────┘
Detalles de GENOPT:
5──┬─\NOLIST─┬───┬─\NOXREF─┬───┬─\NOPATCH─┬───┬─\NODUMP─┬───┬─\NOATR─┬────────5
└─\LIST───┘ └─\XREF───┘ └─\PATCH───┘ └─\DUMP───┘ └─\ATR───┘
5──┬─\RANGE───┬─┬\UNREF───┬─┬\NOOPTIMIZE─┬─┬\NODDSFILLER─┬─┬─\NOSYNC─┬────────5
└─\NORANGE─┘ └\NOUNREF─┘ └\OPTIMIZE───┘ └\DDSFILLER───┘ └─\SYNC───┘
5──┬─\NOCRTF─┬───┬─\NODUPKEYCHK─┬───┬─\STDERR────┬───┬─\NOEXTACCDSP──┬────────5
└─\CRTF───┘ └─\DUPKEYCHK───┘ └─\NOSTDERR──┘ └─\EXTACCDSP────┘
5──┬─\NOINZDLT──┬──┬──\NOBLK────┬───┬──\STDINZ───┬───┬─\FS21DUPKY────┬────────5
└─\INZDLT────┘ └──\BLK──────┘ └──\NOSTDINZ─┘ └─\NOFS21DUPKY──┘
Para obtener más información acerca del parámetro TGTRLS, vea la página 27.
Formato
┌─────────┐
6 │
55───PROCESS────opción-1──┴─────┬─────┬────────────────────────────────5%
└─ . ─┘
Ampliación de IBM
Cada una de las instrucciones SKIP anteriores origina una sola inserción de una,
dos o tres líneas.
Las instrucciones fuente COBOL se pueden listar o suprimir de forma selectiva uti-
lizando las instrucciones *CONTROL, *CBL o COPY:
*CONTROL NOSOURCE y *CBL NOSOURCE suprimen el listado de las ins-
trucciones fuente.
*CONTROL SOURCE y *CBL SOURCE continúan el listado de las instruc-
ciones fuente.
Una instrucción COPY que lleva la frase SUPPRESS suprime el listado de ins-
trucciones copiadas. Por su duración, esta instrucción prevalece sobre cual-
quier instrucción *CONTROL o *CBL. Si el miembro copiado contiene
instrucciones *CONTROL o *CBL, la última se ejecuta una vez cuando el
miembro COPY se ha procesado.
à ð
Columnas. . . : 1 71 Editar XMPLIB/QLBLSRC
SEU==> XMPLE
FMT CB ......-A+++B+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ðð14.ðð DATA DIVISION.
ðð15.ðð FILE SECTION.
ðð16.ðð FD FILE1
ðð17.ðð RECORD CONTAINS 56 CHARACTERS
ðð18.ðð LABEL RECORDS ARE OMITTED
ðð19.ðð DATA RECORD IS REB-1.
ðð2ð.ðð ð1 REC-1 PIC X(56).
_______________________________________________________________________________
Columnas . . . : 1 71 Examinar Archivo Spool . . : XMPLE
SEU==>
ðððð.5ð STMT
ðððð.51 \ 19 MSGID: LBL1327 SEVERITY: 3ð SEQNBR: ðð19ðð
ðððð.52 Mensaje . . . . : 'REB-1' no definido en el programa. Cláusula
ðððð.53 ignorada.
ðððð.54 \ \ \ \ \ F I N D E M E N S A J E S \ \
ðððð.55 Resumen de Mensajes
ðððð.56 Total Info(ð-4) Aviso(5-19) Error(2ð-29) Gravedad(3ð-39)
Al mismo tiempo que se examina el listado del compilador, se pueden corregir las
sentencias fuente que contengan errores. Para buscar errores, escriba F \ERR en
la línea de mandatos del SEU.
Para obtener información completa sobre cómo examinar un listado del compilador,
consulte el manual SEU Guía del Usuario y Manual de Consulta.
Resumen de Mandatos
Este resumen, que se obtiene después de la compilación, lista todas las opciones
especificadas en el mandato CRTCBLPGM. Consulte el apartado “Utilización del
Mandato Crear Programa COBOL (CRTCBLPGM)” en la página 15 para obtener
más información sobre las opciones definidas por el usuario.
Listado Fuente
La Figura 8 muestra un listado fuente. Las instrucciones del programa fuente se
listan tal y como se someten. El fuente no se lista si se especifica la opción
NOSOURCE. Después de la página en la que aparece listado el párrafo
PROGRAM-ID, todas las páginas de salida del compilador tienen el nombre del
identificador de programa listado en el encabezamiento antes del nombre del
sistema.
5763CB1 V3RðM5 ðð1ððð Uso de Verbos COBOL AS/4ðð por Recuento TESTER/SAMPLE AS4ððSYS ð3/27/94 11:ð1:51 Página 6
VERB COUNT
ADD 1
CLOSE 2
DISPLAY 1
GO 2
IF 1
MOVE 5
OPEN 2
PERFORM 1
READ 1
STOP 1
WRITE 1
\ \ \ \ \ F I N D E V E R B O P O R R E C U E N T O \ \ \ \ \
5763CB1 V3RðM5 ðð1ððð Mapa de División de Datos COBOL AS/4ðð TESTER/SAMPLE AS4ððSYS ð3/27/94 11:ð1:51 Página 7
INST NIV NOMBRE FUENTE SECCIÓN DISP LONG TIPO I-NOMBRE ATRIBUTOS
.F/ .G/ .H/ .I/ .J/ .K/ .L/ .M/ .N/
18 FD FILE-1 FS .Fð1 DEVICE DISK, ORGANIZATION SEQUENTIAL,
ACCESS SEQUENTIAL, RECORD CONTAINS 2ð
CHARACTERS, LABEL RECORDS STANDARD
22 ð1 RECORD-1 FS ðððððððð 2ð GROUP .Dðð633C
23 ð2 FIELD-A FS ðððððððð 2ð AN .Dðð63AE
25 ð1 FILLER WS ðððððððð 56 GROUP .Dðð642ð
26 ð2 KOUNT WS ðððððððð 2 PACKED .Dðð649ð
27 ð2 LETTERS WS ððððððð2 26 AN .Dðð6512 VALUE
28 ð2 ALPHA WS ððððððð2 1 AN .Dðð65Bð REDEFINES .Dðð6512, DIMENSION(26)
3ð ð2 NUMBR WS ðððððð28 2 PACKED .Dðð6632
31 ð2 DEPENDENTS WS ðððððð3ð 26 AN .Dðð66B4 VALUE
32 ð2 DEPEND WS ðððððð3ð 1 AN .Dðð6754 REDEFINES .Dðð66B4, DIMENSION(26)
35 ð1 WORK-RECORD WS ðððððððð 19 GROUP .Dðð67D6
36 ð2 NAME-FIELD WS ðððððððð 1 AN .Dðð684C
37 ð2 FILLER WS ððððððð1 1 AN .Dðð68Cð VALUE
38 ð2 RECORD-NO WS ððððððð2 3 ZONED .Dðð693C
39 ð2 FILLER WS ððððððð5 1 AN .Dðð69C2 VALUE
4ð ð2 LOCATION WS ððððððð6 3 A .Dðð7A98 VALUE
41 ð2 FILLER WS ððððððð9 1 AN .Dðð7B2ð VALUE
42 ð2 NO-OF-DEPENDENTS WS ðððððð1ð 2 AN .Dðð7B9C
44 ð2 FILLER WS ðððððð12 7 AN .Dðð7C16 VALUE
45 77 WORKPTR WS ðððððððð 16 POINTR .Dðð7C92
FILE SECTION utiliza 2ð bytes de almacenamiento
WORKING-STORAGE SECTION utiliza 75 bytes de almacenamiento
\ \ \ \ \ F I N D E M A P A D E D I V I S I O N D E D A T O S \ \ \ \ \
.M/ Nombre interno: Aquí se listan los nombres internos generados por el
compilador y se asignan de la manera siguiente:
Nombre de archivos
El nombre interno utiliza el formato .Fnn, donde .F indica el nombre de
archivo y nn es un número de dos dígitos único.
Nombres de Datos
El nombre interno utiliza el formato .Dxxxxxx, donde .D indica un nombre
de índice o un nombre de datos, y xxxxxx es un valor hexadecimal de seis
dígitos único. Estos nombres aparecen en el listado IRP si se genera.
.N/ Atributos: Los atributos del ítem se listan de la siguiente manera:
Para los archivos, puede darse la información siguiente:
Tipo de dispositivo
ORGANIZATION
ACCESS MODE
Información BLOCK CONTAINS
Información RECORD CONTAINS
Información LABEL
Se indica RERUN
Mensajes FIPS
Los mensajes FIPS en la Figura 11, se listan cuando se especifica el parámetro
FLAGSTD. Consulte la página 25 para obtener más información sobre cómo espe-
cificar la opción para la opción FIPS. Sólo se listan los mensajes para el
subconjunto FIPS solicitado, los módulos opcionales y/o los elementos obsoletos.
Nota: Se proporciona el número de secuencia y columna cada vez que se emite
el mensaje.
5763CB1 V3RðM5 ðð1ððð Mensajes FIPS COBOL AS/4ðð TESTER/SAMPLE AS4ððSYS ð3/27/94 11:ð1:51 Página 8
FIPS-ID DESCRIPCIÓN Y NÚMEROS SECUENCIA SEÑALIZADOS.P/
.O/
LBL82ðð Los siguientes ítems que no se ajustan al estándar son válidos a un nivel FIPS intermedio o superior.
LBL82ð1 Instrucción COPY.
ðð34ðð ððð8
LBL83ðð Los siguientes ítems que no se ajustan al estándar son válidos a un nivel FIPS o superior. .Q/
LBL83ð3 Párrafo DATE-COMPILED.
ððð8ðð ðð1ð
LBL85ðð Los siguientes ítems que no se ajustan al estándar son definidos por IBM o son extensiones IBM. .Q/
LBL85ð4 Nombre de asignación en cláusula ASSIGN.
ðð15ðð ðð36
LBL8518 USAGE IS COMPUTATIONAL-3.
ðð26ðð ðð36
ðð3ððð ðð36
LBL852ð USAGE IS POINTER.
ðð35ðð ðð26
LBL8561 Instrucción COPY con bliblioteca por omisión asumida.
ðð34ðð ðð19
7 violaciones FIPS señalizadas. .R/
\ \ \ F I N D E M E N S A J E S F I P S C O B O L \ \ \
Opción Encabezamiento
NONUMBER DESCRIPCION Y NUMEROS DE SECUENCIA
SEÑALIZADOS
NUMBER DESCRIPCIÓN Y NÚMEROS SUMINISTRADOS POR
USUARIO SEÑALIZADOS
LINENUMBER DESCRIPCIÓN Y NÚMEROS DE LÍNEAS SEÑALIZADOS
.Q/ Ítems agrupados por nivel: Estos encabezamientos subdividen los men-
sajes FIPS por nivel y categoría.
.R/ Violaciones FIPS señalizadas: El número total de violaciones FIPS
señalizadas se incluye al final del listado FIPS.
Mensajes SAA
La Figura 12 muestra los mensajes SAA que se listan cuando se especifica la
opción de señalización SAA. Consulte el apartado Parámetro SAAFLAG en la
página 26 o “Uso de la Instrucción PROCESS para Especificar las Opciones del
Compilador” en la página 33 para obtener más información sobre cómo especificar
esta opción.
5763CB1 V3RðM5 ðð1ððð Mensajes COBOL SAA TESTER/SAMPLE AS4ððSYS ð3/27/94 11:ð1:51 Página 9
MSGID DESCRIPCIÓN, NÚMEROS DE SECUENCIA Y NÚMEROS DE COLUMNA SEÑALIZADOS
LBL88ðð Los siguientes ítems se han señalizado como no portables por otros sistemas COBOL SAA.
LBL88ð1 Las opciones APOST,NUMBER,SEQUENCE,GRAPHIC,NOCRTF,NODUPKEYCHK,NOSYNC y EXTACCDSP no son COBOL SAA.
ððð1ðð ððð8
LBL88ð9 Instrucción PROCESS.
ððð1ðð ððð8
LBL8843 USAGE IS POINTER.
ðð35ðð ðð26
Se han señalizado 3 mensajes COBOL SAA.
\ \ \ F I N D E M E N S A J E S C O B O L S A A \ \ \
5763CB1 V3RðM5 ðð1ððð Listado de referencias cruzadas COBOL AS/4ðð TESTER/SAMPLE AS4ððSYS ð3/27/94 11:ð1:51 Página 1ð
NOMBRES (\ = Nombre-procedimiento) REFERENCIAS DEFINIDAS (\ = Modificado)
.S/ .T/ .U/
ALPHA 28 5ð
DEPEND 32 51
DEPENDENTS 31 32
\DUMMY-SECTION 47
FIELD-A 23
FILE-1 18 15 47 56 57 58 63
KOUNT 26 48\ 49\ 5ð 51 55
LETTERS 27 28
LOCATION 4ð
NAME-FIELD 36 5ð\
NO-OF-DEPENDENTS 42 51\ 6ð 61\
NUMBR 3ð 48\ 49\ 52
RECORD-NO 38 52\
RECORD-1 22 21 54\
\STEP-1 47
\STEP-2 49 55
\STEP-3 53 55
\STEP-4 55
\STEP-5 56
\STEP-6 58 62
\STEP-7 6ð
\STEP-8 63 59
WORK-RECORD 35 53 54 58\
WORKPTR 45
\ \ \ \ \ F I N D E R E F E R E N C I A S C R U Z A D A S \ \
Mensajes
La Figura 14 muestra los mensajes que se generan durante la compilación del pro-
grama.
ðð Informativo
1ð Aviso
2ð Error
3ð Error Grave
4ð Irrecuperable (generalmente error del usuario)
5ð Irrecuperable (generalmente error del compilador)
1 El número de instrucciones y el número de referencia no aparecen en ciertos mensajes que hacen referencia a ítems desapare-
cidos. Por ejemplo, si el párrafo PROGRAM-ID no aparece, el mensaje LBL0031 aparecerá en el listado sin ninguna instrucción
ni número de referencia listado.
Un mandato CALL del lenguaje de control puede formar parte de un trabajo por
lotes, entrarlo un usuario de la estación de trabajo en forma interactiva o incluirlo
en un programa CL. Un ejemplo del mandato CALL sería CALL NOMINA.
NOMINA es el nombre de un programa COBOL que se llama y se ejecuta.
à ð
MENÚ DEL DEPARTAMENTO DE NÓMINAS
Opción:____
Por ejemplo, puede crear un mandato, PAGA, que llame a un programa, NOMINA.
PAYROLL es el nombre de un programa COBOL que se llama y se ejecuta. El
usuario puede entrar el mandato de forma interactiva o en un trabajo por lotes.
Consulte la publicación CL Guía del Programador para más información acerca de
la utilización de la definición de mandato.
Cuando se ejecuta un trabajo por lotes que utiliza la instrucción ACCEPT, los datos
de entrada se toman de la corriente de trabajos. Estos datos deben colocarse
inmediatamente después del mandato CALL para el programa en COBOL. Es res-
ponsabilidad del usuario la solicitud (mediante varias instrucciones ACCEPT) de la
misma cantidad de datos disponibles. Consulte la sección “Instrucción ACCEPT”
de la publicación COBOL/400 Reference para obtener más información.
Nota: Si se solicitan más datos de los disponibles, el mandato CL que sigue a los
datos se trata como dato de entrada. Si hay más datos disponibles de los
que se solicitan, cada línea de datos de más se trata como un mandato CL.
En cada uno de estos casos, pueden producirse resultados no deseados.
Se puede añadir los mensajes de consulta a una lista de respuestas del sistema
para proporcionar respuestas automáticas a los mensajes. Las respuestas para
estos mensajes pueden especificarse de forma individual o general. Este método
de respuesta a mensajes de consulta es especialmente útil para los programas por
lotes que, de lo contrario, necesitarían un operador para emitir las respuestas.
Las funciones OS/400 le permitirán probar programas a la vez que proteger los
archivos de producción; podrá, asimismo, observar y depurar operaciones a
medida que se ejecuta un programa. No se necesita ningún código fuente especial
para utilizar las funciones OS/400.
Mientras prueba los programas, asegúrese de que la lista de bibliotecas haya cam-
biado, para direccionar los programas a una biblioteca de prueba que contenga
datos de prueba; de esta manera, ningún dato real existente se verá afectado.
A continuación viene una serie de errores que sólo aparecen cuando se ejecuta el
programa:
Imposibilidad de hacer coincidir la descripción de registros en el programa
fuente con el formato de los registros reales en el archivo que debe leerse.
Puede ser un error producido por el usuario (los registros son correctos, pero
la descripción es incorrecta) o un error causado por la persona que ha creado
los registros que lee el programa. (Por ejemplo, la descripción es correcta,
pero se han entrado uno o más registros de forma incorrecta.)
Traslado de un ítem de datos cuyo subíndice o índice es demasiado grande,
es negativo o es 0. Este traslado puede recubrir y destruir parte del código o
puede recoger datos defectuosos.
Olvidar la definición de un campo de signo para ítems que pueden tener
valores negativos. (En tal caso, se pierde el signo y el número negativo se
convierte, por error, en positivo).
Traslado de datos en un área demasiado pequeña para ellos, provocando un
truncamiento no deseado.
Olvidar inicializar los ítems de datos en la sección de Almacenamiento de
Trabajo antes de utilizarlos. Esto puede dar como resultado un error de datos
decimal.
En un programa llamado, la coincidencia incorrecta entre la descripción de
datos de la Sección de Enlace con los del llamador. O, en el programa de
llamada, la identificación errónea de los datos que se van a pasar.
Traslado de un ítem de grupo a otro ítem de grupo cuando las descripciones
de datos subordinados son incompatibles.
Mandatos OS/400:
STRDBG TESTPRT
ADDBKP STMT(43)
ADDBKP STMT(52)
PGMVAR(KOUNT)
5763CB1 V3RðM5 ðð1ððð Fuente COBOL AS/4ðð TESTER/TESTPRT AS4ððSYS ð3/3ð/94 17:ð5:37 Página 2
INST NUMSEC -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S NOMCOPIA FECH/CAM
1 ððð1ðð IDENTIFICATION DIVISION.
2 ððð2ðð PROGRAM-ID. TESTPRT.
3 ððð3ðð AUTHOR. PROGRAMMER NAME.
4 ððð4ðð INSTALLATION. COBOL DEVELOPMENT CENTRE. ð3/3ð/94
5 ððð5ðð DATE-WRITTEN. 11/27/87.
6 ððð6ðð DATE-COMPILED. ð3/3ð/94 17:ð5:37 .
7 ððð7ðð ENVIRONMENT DIVISION.
8 ððð8ðð CONFIGURATION SECTION.
9 ððð9ðð SOURCE-COMPUTER. IBM-AS4ðð. ð3/3ð/94
1ð ðð1ððð OBJECT-COMPUTER. IBM-AS4ðð. ð3/3ð/94
11 ðð11ðð INPUT-OUTPUT SECTION.
12 ðð12ðð FILE-CONTROL.
13 ðð13ðð SELECT FILE-1 ASSIGN TO DISK-SAMPLE.
14 ðð14ðð DATA DIVISION.
15 ðð15ðð FILE SECTION.
16 ðð16ðð FD FILE-1
17 ðð17ðð LABEL RECORDS ARE STANDARD
18 ðð18ðð RECORD CONTAINS 2ð CHARACTERS
19 ðð19ðð DATA RECORD IS RECORD-1.
2ð ðð2ððð ð1 RECORD-1.
21 ðð21ðð ð2 FIELD-A PIC X(2ð).
22 ðð22ðð WORKING-STORAGE SECTION.
23 ðð23ðð ð1 FILLER.
24 ðð24ðð ð5 KOUNT PIC S9(2) COMP-3.
25 ðð25ðð ð5 LETTERS PIC X(26) VALUE "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
26 ðð26ðð ð5 ALPHA REDEFINES LETTERS
27 ðð27ðð PIC X(1) OCCURS 26 TIMES.
28 ðð28ðð ð5 NUMBR PIC S9(2) COMP-3.
29 ðð29ðð ð5 DEPENDENTS PIC X(26) VALUE "ð1234ð1234ð1234ð1234ð1234ð".
3ð ðð3ððð ð5 DEPEND REDEFINES DEPENDENTS
31 ðð31ðð PIC X(1) OCCURS 26 TIMES.
32 ðð32ðð ð1 WORK-RECORD.
33 ðð33ðð ð5 NAME-FIELD PIC X(1).
34 ðð34ðð ð5 FILLER PIC X(1) VALUE SPACE.
35 ðð35ðð ð5 RECORD-NO PIC S9(3).
36 ðð36ðð ð5 FILLER PIC X(1) VALUE SPACE.
37 ðð37ðð ð5 LOCATION PIC A(3) VALUE "NYC".
38 ðð38ðð ð5 FILLER PIC X(1) VALUE SPACE.
39 ðð39ðð ð5 NO-OF-DEPENDENTS
4ð ðð4ððð PIC X(2).
41 ðð41ðð ð5 FILLER PIC X(7) VALUE SPACES.
ðð42ðð\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
ðð43ðð\ EL SIGUIENTE PARRAFO ABRE EL ARCHIVO DE SALIDA QUE\
ðð44ðð\ HA DE CREARSE E INICIALIZA LOS CONTADORES \
ðð45ðð\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
42 ðð46ðð PROCEDURE DIVISION.
ðð47ðð STEP-1.
43 ðð48ðð OPEN OUTPUT FILE-1. .1/
44 ðð49ðð MOVE ZERO TO KOUNT, NUMBR.
Figura 16 (Parte 1 de 2). Ejemplo de Programa COBOL que Utiliza Puntos de Interrupción
Figura 16 (Parte 2 de 2). Ejemplo de Programa COBOL que Utiliza Puntos de Interrupción
.1/ El primer punto de interrupción se utiliza para saber dónde está el usuario en
el programa. Cuando se produce la interrupción, se visualiza la información
siguiente:
á ñ
Figura 17. Primer Punto de Interrupción Visualizado
Variable. . . . . . . . . . . . . . . . : ð5 KOUNT
Tipo. . . . . . . . . . . . . . . . . : PACKED
Longitud . . . . . . . . . . . . . . : 2 ð
' 26'
á ñ
Figura 18. Segundo Punto de Interrupción Visualizado
Para especificar una variable para el parámetro PGMVAR, empiece cada nombre
que entre con un carácter alfanumérico (A a la Z, $, #, o @). Puede ir seguido de
los caracteres (de la A a la Z, del 0 al 9, $, #, @, o _ ).
STRDBG TESTPRT
ADDBKP STMT(58)
PGMVAR('RECORD-NO')
Para visualizar el valor de un ítem de tabla, entre los números de apariciones ade-
cuadas (subíndices) con el nombre de variable. Se permiten hasta siete dimen-
siones de subíndices, que deben estar separados por comas.
Se permiten uno o más espacios en blanco después de cada coma que separa
subíndices, pero la longitud total de la variable más los subíndices, paréntesis,
comas y espacios en blanco especificados con la palabra clave PGMVAR no
puede sobrepasar los 132 caracteres. Para más información acerca de la codifi-
cación de variables en mandatos CL, consulte el manual CL Reference.
PGMVAR('NAME-FIELD OF WORK-RECORD')
Puede utilizarse otra técnica para visualizar variables que no sean ítems de una
tabla multidimensional. Por ejemplo, para visualizar el campo NAME-FIELD, puede
utilizar el mapa de la correlación de División de Datos COBOL para encontrar su
nombre interno en COBOL (I-NAME). A continuación, utilice el listado de referen-
cias cruzadas IRP para encontrar el numero de la Tabla de Definición de Objetos
(ODT) para el nombre interno. (Consulte el apartado “Uso de la Instrucción
PROCESS para Especificar las Opciones del Compilador” en la página 33 para
más información sobre la obtención estos listados). La Figura 19 muestra el mapa
de la correlación de División de Datos, y la Figura 20 en la página 64 muestra el
listado de referencias cruzadas para el ejemplo de programa, TESTPRT.
5763CB1 V3RðM5 ðð1ððð Mapa de División de Datos COBOL AS/4ðð TESTER/TESTPRT AS4ððSYS ð3/3ð/94 17:ð5:37 Página 4
INST NIV NOMBRE FUENTE SECCIÓN DISP LONG TIPO I-NOMBRE ATRIBUTOS
16 FD FILE-1 FS .Fð1 DEVICE DISK, ORGANIZATION SEQUENTIAL,
ACCESS SEQUENTIAL, RECORD CONTAINS 2ð
CHARACTERS, LABEL RECORDS STANDARD
2ð ð1 RECORD-1 FS ðððððððð 2ð GROUP .Dðð633C
21 ð2 FIELD-A FS ðððððððð 2ð AN .Dðð63AE
23 ð1 FILLER WS ðððððððð 56 GROUP .Dðð642ð
24 ð2 KOUNT WS ðððððððð 2 PACKED .Dðð649ð
25 ð2 LETTERS WS ððððððð2 26 AN .Dðð6512 VALUE
26 ð2 ALPHA WS ððððððð2 1 AN .Dðð65Bð REDEFINES .Dðð6512, DIMENSION(26)
28 ð2 NUMBR WS ðððððð28 2 PACKED .Dðð6632
29 ð2 DEPENDENTS WS ðððððð3ð 26 AN .Dðð66B4 VALUE
3ð ð2 DEPEND WS ðððððð3ð 1 AN .Dðð6754 REDEFINES .Dðð66B4, DIMENSION(26)
32 ð1 WORK-RECORD WS ðððððððð 19 GROUP .Dðð67D6
33 ð2 NAME-FIELD WS ðððððððð 1 AN .Dðð684C .1/
34 ð2 FILLER WS ððððððð1 1 AN .Dðð68Cð VALUE
35 ð2 RECORD-NO WS ððððððð2 3 ZONED .Dðð693C
36 ð2 FILLER WS ððððððð5 1 AN .Dðð69C2 VALUE
37 ð2 LOCATION WS ððððððð6 3 A .Dðð6A98 VALUE
38 ð2 FILLER WS ððððððð9 1 AN .Dðð6B2ð VALUE
39 ð2 NO-OF-DEPENDENTS WS ðððððð1ð 2 AN .Dðð6B9C
41 ð2 FILLER WS ðððððð12 7 AN .Dðð6C16 VALUE
FILE SECTION utiliza 2ð bytes de almacenamiento
WORKING-STORAGE SECTION utiliza 75 bytes de almacenamiento
\ \ \ \ \ F I N D E M A P A D E D I V I S I O N D E D A T O S \ \ \ \ \
Figura 20. Sección del Listado de Referencias Cruzadas IRP para TESTPRT
Ahora podrá utilizar el número ODT 021C (para NAME-FIELD), con los mandatos
siguientes, para añadir un punto de interrupción al ejemplo de programa en la ins-
trucción 52.
STRDBG TESTPRT
ADDBKP STMT(52)
PGMVAR('/ð21C')
Variable. . . . . . . . . . . . . . . . : /ð21C
Tipo. . . . . . . . . . . . . . . . . : CHARACTER
Longitud. . . . . . . . . . . . . . . : 2
\...+....1....+....2....+....3....+....4....+....5
'Z'
á ñ
Figura 21. Punto de Interrupción en la Instrucción 52
Utilización de un Rastreo
Un rastreo es un registro de algunas o todas las instrucciones que se ejecutan en
un programa. Si se solicita, un rastreo también registra los valores de variables
específicas utilizadas en las instrucciones del programa.
Programa Rastreo
┌─────────────┐ ┌─────────────────────────────────────┐
│ Instrucción │ │ Orden de Proceso Variables │
│ 1 ...... │ │ 1 ────────5 ....... │
│ 2 ...... │ │ 6 ────────5 ....... │
│ 3 ...... │ │ 7 ────────5 ....... │
│ 4 ...... │ │ 8 ────────5 ....... │
│ 5 ...... │ │ 6 ────────5 ....... │
│ 6 ...... │ │ 7 ────────5 ....... │
│ 7 ...... │ │ 2 ────────5 ....... │
│ 8 ...... │ │ 6 ────────5 ....... │
│ . │ │ 7 ────────5 ....... │
│ . │ │ . │
│ . │ │ . │
│ │ │ │
│ │ │ │
└─────────────┘ └─────────────────────────────────────┘
Si elige la opción F, el vuelco también incluye una lista de campos generados por
el compilador y sus contenidos.
Tanto la opción D como la opción F volcarán los primeros 256 caracteres de las
variables del programa. Cualquier variable mayor que 256 caracteres se truncará.
Durante las operaciones aritméticas, los errores típicos son errores de tamaño
(MCH1210) y errores de datos decimales (MCH1202); la frase correspondiente
para el manejo de errores es la frase SIZE ERROR.
COBOL detecta errores que se producen mediante la división por cero durante una
operación aritmética. Si el COBOL los detecta, estos errores provocan que se
ejecute la instrucción imperativa SIZE ERROR.
Para operaciones de E/S, hay varias frases y cláusulas importantes para el manejo
de errores. Son las frases AT END/INVALID KEY y NO DATA (codificadas a nivel
de la instrucción COBOL), el procedimiento USE y la cláusula FILE STATUS (codi-
ficada a nivel de archivo). Durante las operaciones aritméticas y de E/S, el
sistema detecta los errores y envía mensajes; es entonces cuando COBOL super-
visa los mensajes. Al igual que sucede con un error resultante de una división por
cero, COBOL detecta algunos errores durante una operación de E/S. Sin tener en
cuenta cómo se detecta un error durante una operación de E/S, el resultado
| siempre será un estado de archivo interno en el que el primer carácter no será
| cero, será un mensaje en tiempo de ejecución o ambas cosas.
Para obtener más información sobre estas API, consulte el manual System
Programmer’s Interface Reference.
COBOL guarda sus propias copias de estos dos ítems de datos, que se almacenan
en el Bloque de Información de Archivos (FIB) COBOL. En este capítulo, el estado
de archivo y códigos de retorno (principal/secundario) hacen referencia a copias de
COBOL a no ser que se especifique lo contrario.
El estado del archivo se establece mediante una de las tres maneras siguientes:
Método A (todos los archivos):
COBOL comprueba el contenido de variables en los bloques de control de
archivos. Si el contenido no es el esperado, se establece un estado de archivo
que no sea cero. La mayoría de estados de archivo que se establecen de esta
forma son el resultado de la comprobación del Bloque de Información de
Archivos (FIB) y del Bloque de Control de Archivos (UFCB).
Método B (archivos de transacción):
COBOL comprueba los códigos de retorno principal y secundario del sistema.
Si el código de retorno principal no es cero, el código de retorno (compuesto
por códigos de retorno principal y secundario) se transforma en estado de
archivo. Si el código de retorno principal es cero, el Método A o C puede esta-
blecer el estado de archivo.
Observe que para las operaciones READ, WRITE y REWRITE de subarchivo,
sólo se aplican los Métodos A y C.
Para obtener una lista de códigos de retorno y sus correspondientes estado de
archivo, consulte el apartado “Resumen del soporte de estructuras de archivos
y valores claves de estado” en la publicación COBOL/400 Reference.
Método C (todos los archivos):
El sistema envía un mensaje cuando el COBOL llama la gestión de datos para
realizar una operación de E/S. COBOL supervisa estos mensajes y establece
un estado de archivo concordante.
002
Llame la gestión de datos para realizar la operación de E/S
– Método C: Supervise los mensajes enviados por la gestión de datos
y establezca el estado de archivo interno de acuerdo
a los mismos.
– Método A: Compruebe los bloques de información del sistema y
establezca el estado de archivo interno si no lo
hizo utilizando el Método C.
¿Es un archivo de transacciones?
Sí No
003
Establezca el estado de archivo externo
– Transfiera el estado de archivo interno al estado de archivo externo
(especificado en la cláusula de estado de archivo). Basándose en el
estado de archivo interno, ejecute el código para el manejo de errores.
004
Compruebe los códigos de retorno principal y secundario del sistema
– Método B: Si la gestión de datos ha enviado un mensaje, convierta
los códigos de retorno principal y secundario asociados al
mensaje del sistema en estado de archivo interno.
Continúe en el Paso 003
005
Continúe en el Paso 003
Una instrucción STOP RUN implícita o explícita, o una instrucción GOBACK que
aparezca en un programa principal, provoca la finalización de toda la unidad de
ejecución COBOL. Si se emite un mensaje de escape (LBE9001) como paso final
de una unidad de ejecución, el llamador del primer programa COBOL puede super-
visarlo. (Esto es debido a que el primer programa COBOL que se ha de llamar se
convierte en el programa principal).
Códigos de Retorno
Cuando se especifica un archivo TRANSACTION en el programa, la cláusula FILE
STATUS de la instrucción SELECT puede contener dos nombres de datos: el
estado de archivo externo y el código de retorno (principal y secundario). Tal y
como se describe en el apartado “Estado de archivo Interno y Externo” en la
página 73, un estado de archivo puede establecerse en una de las tres formas
descritas; no obstante, el sistema establece los códigos de retorno después de
cualquier transacción de E/S que llame la gestión de datos. Por lo tanto, la
mayoría de condiciones de error que dan como resultado un mensaje del sistema
también poseen un código de retorno asociado.
Los códigos de retorno son similares a los valores del estado de archivo. Es decir,
los mensajes CPF que envía el sistema se agrupan juntos bajo supervisores de
mensaje, y cada supervisor de mensajes establece uno o más estados de archivo.
De forma similar, los mensajes CPF se agrupan juntos, y cada grupo de mensajes
genera el mismo código de retorno principal. (El código de retorno secundario no
tiene que ser el mismo).
La principal diferencia entre los estados de archivo y los códigos de retorno es que
la agrupación de mensajes CPF es distinta.
¿Error
Ye s Emitir mensaje ¿Cuál es la C,D,F Finalizar
grave no
de error respuesta a programa COBOL
supervisado? E
LBE7200 LBE7200?
No
Vo l v e r a l
Establecer programa COBOL
estado del
archivo interno
Emitir mensaje
¿Error informativo (por
Fin de archivo ¿De qué Resto S í
grave ejemplo, LBE7421);
error
supervisado? establecer estado
se trata?
de archivo en 90
Clave no No
válida
¿Existe ¿Existe
¿Existe
No No ¿Existe una No una claúsula No
una frase una frase
Declarativa de estado de
AT E N D ? I N VA L I D K E Y ?
de error? archivo?
S í S í S í S í
Ejecutar Ejecutar
Ejecutar
sentencia sentencia
declarativa
imperativa imperativa
de error
AT E N D I N VA L I D K E Y
Vuelva a l
programa COBOL
sa je d e e rro r
L B E 7 2 0 7
¿Cuál es
D,F C F ina liza r
Realizar
la respuesta
vuelco COBOL programa COBOL
a L B E 7 2 0 7 ?
F ina liza r Vo l v e r a
¿ E x is t e u n
V o lv e r a l
m a n e ja d o r
d ia g r a m a a n t e r io r
d e e r r o r e s ?
S í
L la m a r a l
m a n e ja d o r d e
e r r o r e s
¿ El c ó d ig o
S í
d e re to rn o es un
e s p a c io n o
v á lid o ?
N o
¿ C u á l e s
E je c u t a r e l F in a liz a r e l
e l c ó d ig o d e
v u e lc o C O B O L p ro g ra m a d e C O B O L
r e t o r n o ?
F in a liz a r e l F in a liz a r e l
p ro g ra m a d e C O B O L p ro g ra m a d e C O B O L
Vo l v e r a l
programa COBOL
G
*1 ¿Error S í
Emitir mensaje ¿Cuál es Finalizar
grave no C,D,F
E de error la respuesta programa COBOL
supervisado?
error? LBE7200 a LBE7200?
No
*2 ¿Error
S í Emitir mensaje
grave Finalizar
d e e r r o r, p o r e j e m p l o
supervisado? E programa COBOL
LBE7021
No
Establecer
estado de
archivo interno
*3
¿El estado ¿Existe Ejecutar
S í S í
de archivo es una declarativa declarativa
igual a 90 de error? de error
ó 9P?
No No
¿De
Fin de archivo Resto
qué error se
trata?
Clave no
válida
¿Existe
¿Existe No ¿Existe una
No una frase No
una frase declarativa de
I N VA L I D K E Y ?
AT E N D ? error?
S í S í S í
Ejecutar Ejecutar
sentencia sentencia Ejecutar
AT E N D I N VA L I D K E Y de error
Vo l v e r a l
programa COBOL
Estas excepciones de E/S dan como resultado mensajes de escape COBOL espe-
cíficos seguidos por la finalización del programa siguen a la rama Sí desde la posi-
ción *2 en la Figura 25.
Ejemplo: CPF4238 - discrepancia INDARA entre el programa y el archivo
Hay supervisión específica para este mensaje, y el resultado es el mensaje de
error LBE7021 seguido por una finalización del programa.
Otros mensajes COBOL que entran en esta categoría son LBE7020 y
LBE7022.
Observe que el estado de archivo que se muestra aquí hace referencia al estado
de archivo interno.
Se ha establecido
el estado de archivo
¿Cuál es
¿El carácter
E je c u ta r
0 el carácter 2 o su p erior No ¿Existe un S í
que se encuentra
el procedimiento
de estado más a procedimiento
más a la izquierda
U S E
la izquierda? U S E ?
es el 2?
1 S í No
E je c u ta r ¿ E x is te E je c u ta r
¿ E x is te
S í S í
la sentencia una frase la sentencia
una frase
imperativa I N VA L I D K E Y ? imperativa
AT END?
AT END I N VA L I D K E Y
No No
¿ E x is te E je c u ta r
S í
un procedimiento el procedimiento
U S E ? U S E
No
Continuar el
programa COBOL
N o ta : = Ir a en la página siguiente
¿Existe Ejecutar la
condición
S í S í
una frase sentencia imperativa
N O D ATA e s
N O D ATA ? NO DATA
verdadera?
No
¿El
carácter ¿Existe
S í S í Ejecutar la
m ás a la izq uierd a una frase
sentencia imperativa
d e l e s ta d o d e NOT I N VA L I D
N O T I N VA L I D KEY
arc hivo es
K E Y ?
el 0?
No
¿El
No No
Continuar
el programa COBOL
Nota: Siga las partes del diagrama que se apliquen en sus instrucciones.
En una anomalía de trabajo (debido a un error del usuario o del sistema) los
archivo bajo control de compromiso se restauran como parte de la finalización de
trabajo al estado de archivo del límite de compromiso anterior.
Para obtener una descripción sobre los códigos de retorno principales y secunda-
rios que pueden servir de ayuda para diagnosticar errores de E/S en el archivo
TRANSACTION, consulte el manual ICF Programmer’s Guide o la publicación Guía
para la Gestión de Datos.
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
(b/O/I/B/H/M/N/P)
Ubicación
(A/O/*)
Nombre Co ndición
Espec
Formula rio
And/Or/Coment.
N om b re Longitud Funciones
Referencia (R)
Nombre
Nú mero de
U t i l i z a c/i ó n
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
de
No (N)
No (N)
No (N)
Línea P os
Tipo
Tipo
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 19 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A * A R C H I VO D E P A N T A L L A P A R A E J E MP L O D E R E C U P E R AC I ON D E E R R OR
A *
A I ND A R A
A R F O R MA T 1 C F 0 1 ( 0 1 ' F I N D E P R OG R A M A ' )
A *
A 1 2 2 8 ' I N T R OD U C I R E N T R AD A '
A I N P U T F L D 5 I 1 2 4 2
A 2 8 2 6 ' F 1 = T E R M I N A R '
El número máximo de archivos que el usuario puede definir y abrir en una serie de
archivos utilizados por un programa COBOL es de 99. Si utiliza opciones de
visualización ampliada, el número máximo es 98. Para más información acerca de
la especificación de las opciones de visualización ampliada, consulte la página 23 .
P ro g ra m a e n C O B O L F IL E X
S E L E C T n o m b r e a r c h iv o
A S S IG N T O P R IN T E R -F IL E X D E V (Q P R IN T )
( n o m b r e - a s ig n a c ió n )
Im p re s o ra
P ro g ra m a e n C O B O L F IL E Y
S E L E C T n o m b r e - a r c h iv o D E V (Q P R IN T )
A S S IG N T O F O R M A T F IL E -F IL E Y
Im p re s o ra
F IL E X
T ie m p o d e
C o m p ila c ió n D E V (Q P R IN T )
P ro g ra m a e n C O B O L
M a n d a to d e A lte r a c ió n T e m p o r a l:
S E L E C T n o m b r e - a r c h iv o O V R D K T F F IL E (F IL E X ) T O F IL E (F IL E A )
A S S IG N T O F O R M A T F IL E -F IL E X
F IL E A
D is q u e te
T ie m p o d e D E V (Q D K T )
E je c u c ió n
Hay otras redirecciones de archivo que no están permitidas por el sistema ope-
rativo y que provocan la terminación del programa. Por ejemplo, si el nombre de
dispositivo COBOL es DATABASE o DISK y se especifica una operación READ
por clave en el programa, el programa se termina si el archivo real que utiliza el
programa no es un archivo de disco o de base de datos.
Spooling
El sistema AS/400 proporciona la utilización de funciones de spool de entrada y
salida. Cada descripción de archivo AS/400 contiene un atributo de spool que
determina si se utiliza el spooling para el archivo en tiempo de ejecución. El pro-
grama COBOL no sabe que está utilizando el spool. El lector o el transcriptor de
spool determinan el dispositivo físico real desde el que se lee un archivo o al que
se graba un archivo. Consulte la publicación Guía para la Gestión de Datos para
obtener una información más detallada acerca del spooling.
Spool de Salida
El spool de salida es válido para los trabajos por lotes e interactivos. La descrip-
ción del archivo que se especifica en COBOL mediante el nombre del sistema con-
tiene la especificación para el spool, tal como se muestra en el ejemplo siguiente:
S E L E C T n o m b r e - a r c h iv o S P O O L (*Y E S ) Q P R IN T
A S S IG N T O P R IN T E R -Q P R IN T O U T Q (Q P R IN T )
T ie m p o d e E je c u c ió n
T r a n s c r ip to r
d e Im p r e s ió n
T ie m p o d e
T r a n s c r ip to r
d e Im p r e s ió n
D is p o s itiv o
Im p re s o ra
Spool de Entrada
El spool de entrada sólo es válido para los archivos de datos incorporados en tra-
bajos por lotes. Si los datos de entrada que lee COBOL provienen de un archivo
en spool, COBOL no sabe desde qué dispositivo se han puesto en spool los datos.
D is q u e te
F IL E A P ro g ra m a e n C O B O L
*N O
D E V (Q D K T ) S E L E C T n o m b r e - a r c h iv o
Spool A S S IG N T O D IS K E T T E -F IL E A
S P O O L (*Y E S )
*Y E S
A r c h iv o
en Spool
Consulte la publicación Guía para la Gestión de Datos para obtener más infor-
mación acerca de los archivos de datos incorporados.
El estado de bloqueo compartido para lectura permite que otro usuario abra el
archivo con un estado de bloqueo compartido para lectura, compartido para actuali-
zación, compartido sin actualización y de lectura admisible exclusiva, pero el
usuario no puede especificar el uso exclusivo del archivo. El estado de bloqueo
compartido para actualización permite que otro usuario abra el archivo con un
estado de bloqueo compartido para lectura o compartido para actualización.
Para más información acerca de la duración del bloqueo de registro con o sin
control de compromiso, consulte la Tabla 2 en la página 101.
Este bloqueo no sólo se aplica para otros programas, sino también para el pro-
grama original si intenta actualizar el mismo registro físico subyacente a través de
un segundo archivo.
Nota: Cuando un archivo con organización indexada o relativa se abre para E/S,
utilizando acceso al azar o dinámico, una operación de E/S anómala en
En algunas aplicaciones, sería deseable sincronizar los cambios para los registros
de base de datos. Si el programa determina que los cambios son válidos, estos se
efectúan permanentemente en la base de datos (se procesa una instrucción
COMMIT). Si los cambios no son válidos, o si se produce un problema durante el
proceso, los cambios pueden cancelarse (se procesa una instrucción ROLLBACK).
Tenga en cuenta que cuando se borra un archivo después de abrirse para
OUTPUT, el proceso de una instrucción ROLLBACK no restaura los registros
borrados para el archivo. Los cambios realizados en los registros de un archivo
que no está bajo el control de compromiso siempre son permanentes. A tales
cambios no les afectan nunca las instrucciones COMMIT o ROLLBACK poste-
riores.
El resto de los trabajos, en los que los archivos no están bajo control de compro-
miso, siempre pueden leer registros bloqueados, prescindiendo del nivel de
bloqueo utilizado, con tal de que los archivos se abran como INPUT. Debido a que
en algunos casos es posible que otros trabajos lean registros bloqueados, puede
accederse a los datos antes de que estén permanentemente comprometidos para
una base de datos. Si se procesa una instrucción ROLLBACK después de que
otro trabajo haya leído registros bloqueados, los datos accedidos no reflejarán el
contenido de la base de datos.
*ALL
READ INPUT READ │
.
Sin control de compromiso │
.
Con control de compromiso *CHG ────────────────────────────┼────────────────────────────5
*ALL
READ I-O READ │
.
WITH Sin control de compromiso │
NO .
Con control de compromiso *CHG ────────────────────────────┼────────────────────────────5
LOCK
*ALL
READ I-O READ │
───────────────────────────5
Sin control de compromiso │
───────────────────────────5
Con control de compromiso *CHG ────────────────────────────┼─────────────────────────────5
*ALL
REWRITE I-O REWRITE │
.
Sin control de compromiso │
─────────────────────────────────────────────────────────5
Con control de compromiso *CHG ────────────────────────────┼────────────────────────────5
*ALL
START INPUT START │
.
Sin control de compromiso │
.
Con control de compromiso *CHG ────────────────────────────┼────────────────────────────5
*ALL
START I-O START │
───────────────────────────5
Sin control de compromiso │
───────────────────────────5
Con control de compromiso *CHG ────────────────────────────┼────────────────────────────5
*ALL
WRITE I-O WRITE │
.
Sin control de compromiso │
─────────────────────────────────────────────────────────5
Con control de compromiso *CHG ────────────────────────────┼────────────────────────────5
*ALL
WRITE OUTPUT WRITE │
.
Sin control de compromiso │
─────────────────────────────────────────────────────────5
Con control de compromiso *CHG ────────────────────────────┼────────────────────────────5
*ALL
Todos los archivos bajo el control de compromiso dentro del mismo trabajo deben
registrarse por diario en el mismo diario. Para más información acerca de la
gestión de diario y de sus funciones relacionadas, así como acerca del control de
compromiso, consulte la publicación Advanced Backup and Recovery Guide.
T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )
Condicionamiento
U t i l i z a c/i ó n ( b / O / I / B / H / M / N / P )
And/Or/Com ent. (A/O/*)
Nombre Condición
Tipo de Formula rio
Referencia (R)
Nú mero d e
Secuencia
Posiciones
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea Pos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
Hay algunos casos en los que el factor de bloqueo especificado por el usuario
puede cambiarse. Consulte la publicación Guía para la Base de Datos para más
información acerca de estas situaciones.
Para los archivos de base de datos, puede que no vea los cambios cuando se
producen, si los cambios se producen en programas distintos. Para obtener una
descripción del efecto de la agrupación en los cambios en archivos de base de
datos, consulte el análisis sobre el proceso sólo secuencial en la publicación Guía
para la Base de Datos.
╔═════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 55───ACCEPT──identific.──FROM──nomb-nemotéc.──┬─────────────────┬────────────5% ║
║ └──FOR──nomb-arch─┘ ║
║ ║
╚═════════════════════════════════════════════════════════════════════════════════╝
Descripciones de Archivos
Todos los archivos en el sistema AS/400 se definen en el sistema operativo
OS/400. La amplitud hasta la que pueden definirse los archivos presenta las
siguientes diferencias:
Un archivo descrito por programa se describe a nivel de campo dentro del
programa COBOL en la División de Datos. La descripción del archivo para el
sistema operativo incluye la información acerca del tipo de archivo y de la lon-
gitud de los registros en el archivo.
Un archivo descrito externamente se describe a nivel de campo para el
sistema operativo mediante el IDDU, los mandatos SQL/400* o las DDS. Si
crea un archivo (por ejemplo, utilizando el mandato CRTPF) sin especificar las
DDS para éste, dicho archivo todavía tendrá una descripción de campo. El
campo único tendrá el mismo nombre que el archivo, y tendrá la longitud de
registro especificada en el mandato de crear.
La descripción incluye la información acerca del tipo de archivo, como por
ejemplo de base de datos o de dispositivo, y una descripción de cada campo y
sus atributos. El archivo debe crearse antes de que se compile el programa.
Tanto los archivos descritos externamente como los archivos descritos por pro-
grama deben definirse en el programa COBOL dentro de las secciones
INPUT-OUTPUT SECTION y FILE SECTION. Las descripciones de registros en la
sección FILE SECTION para los archivos descritos externamente pueden definirse
con la instrucción COPY de Formato 2.
Las DDS pueden utilizarse junto con los mandatos de Crear Archivo. En un
archivo indexado COBOL, debe crearse una vía de acceso por claves. Especifique
una clave en las DDS cuando se cree el archivo. La clave de registro en COBOL
debe coincidir con la clave definida cuando se creó el archivo.
Figura 31. Ejemplo que Muestra Cómo se Relaciona el COBOL con Archivos del AS/400
Las claves para un formato de registro se especifican en las DDS. Cuando utiliza
la instrucción COPY de Formato 2, se genera una tabla de comentarios en el
listado del programa fuente mostrando cómo se definen las claves en las DDS
para el formato.
Consulte la publicación DDS Reference para obtener una lista completa de las
palabras clave de las DDS válidas para un archivo de base de datos.
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
Datos/Desplazamiento Teclado
(b/O /I/B/H/M/N/P)
Ubicación
(A/O/*)
Espec
Nombre Condición
Formula rio
And/Or/Coment.
Referencia (R)
Nombre
Nú mero d e
U t i l i z a c/i ó n
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
de
No (N)
No (N)
No (N)
Línea P o s
Tipo
Tipo
Tipo
1 2 3 4 5 6 7 8 9 10 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A * * F L D R E F D S T R E F T E X T O CON S U L T A C AMP O D E A P L I C AC I ON E S D E D I S T R I B U C I ÓN
A B A S D A T 6 0 E D T CD E ( Y )
A T E X T ( ' C AM P O D A T O S B A S E )
A * C AMP O S U T I L I Z A DO S P O R A R C H . MA E S T R O C L I E N T E S
A C U S T 5 C H E C K ( M F )
A N AM E 2 0 CO L H DG ( ' N OM B R E D E C L I E N T E ' )
A A D D R R R E F F L D ( N OM B R E )
A CO L H DG ( ' D I R E CC I ON D E C L I E N T E ' )
A C I T Y R R E F F L D ( N OM B R E )
A CO L H DG ( ' C I U D A D D E C L I E N T E ' )
A S T A T E 2 C H E C K ( M F )
A CO L H DG ( ' P R OV I NC I A ' )
A S R H COD 6 C H E C K ( M F )
A Z I P 5 0 C H E C K ( M F )
A C U S T Y P 1 0 R A NG E ( 1 5 )
A T E X T ( ' T I P O C L I E N T E 1 = GO B 2 = P L A N 3 = B +
A U S 4 = P T 5 = O T R ' )
A E D T CD E ( J )
A OR D B A L R R E F F L D ( A R B A L )
A L S T AM T R R E F F L D ( A R B A L )
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
(b/O/I/B/H/M/N/P)
Ubicación
(A/O/*)
Nombre Co ndición
Espec
Formula rio
And/Or/Coment.
N om b re Longitud Funciones
Referencia (R)
Nombre
Nú mero de
U t i l i z a c/i ó n
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
de
No (N)
No (N)
No (N)
Línea P os
Tipo
Tipo
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 19 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A * * L OG I C A L C U S M S T L A R C H I VO MA E S T R O D E C L I E N T E
A U N I Q U E
A * R C U S R E C P F I L E ( C U S M S T P )
A T E X T ( ' R E G I S T R O MA E S T R O C L I E N T E ' )
A C U S T
A N AM E
A A D D R
A C I T Y
A S T A T E
A Z I P
A S R H COD
A C U S T Y P
A A R B A L
A OR D B A L
A L S T AM T
A L S T D A T
A C R D L M T
A S L S Y R
A S L S L Y R
A K C U S T
Figura 33. Ejemplo de las Especificaciones de Descripción de Datos para un Archivo Lógico
ð1 CUS-MASTER.
COPY DDS-CUSREC OF CUSLIB-CUSTMAST.
\FORMATO E-S: CUSREC DE ARCHIVO CUSTMAST DE BIBL. CUSLIB CUSREC
\ REGISTRO MAESTRO CLIENTE CUSREC
\LAS DEFINICIONES DE CLAVE PARA FORMATO DE REGISTRO CUSREC CUSREC
\NUMERO NOMBRE RECUPERAC. TIPO SECALT CUSREC
\ððð1 CLIENTE ASCENDENTE AN NO CUSREC
ð5 CUSREC. CUSREC
ð6 CUST PIC X(5). CUSREC
\ NUMERO CLIENTE CUSREC
ð6 NAME PIC X(2ð). CUSREC
\ NOMBRE CLIENTE CUSREC
ð6 ADDR PIC X(2ð). CUSREC
\ DIRECCION CLIENTE CUSREC
ð6 CITY PIC X(2ð). CUSREC
\ CIUDAD CLIENTE CUSREC
ð6 STATE PIC X(2). CUSREC
\ ABREVIATURA PROVINCIA CUSREC
ð6 ZIP PIC S9(5) COMP-3. CUSREC
\ CODIGO POSTAL CUSREC
ð6 SHRCOD PIC X(6). CUSREC
\ CODIGO BUSQUEDA NOMBRE CLIENTE CUSREC
ð6 CUSTYP PIC 9(1). CUSREC
\ TIPO CLIENTE CUSREC
ð6 ARBAL PIC S9(6)V9(2) COMP-3. CUSREC
\ SALDO CUENTAS PEND. CUSREC
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
Datos/Desplazamiento Teclado
(b/O /I/B/H/M/N/P)
Ubicación
(A/O/*)
Espec
Nombre Condición
Formula rio
And/Or/Coment.
Referencia (R)
Nombre
Nú mero d e
U t i l i z a c/i ó n
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
de
No (N)
No (N)
No (N)
Línea P o s
Tipo
Tipo
Tipo
1 2 3 4 5 6 7 8 9 10 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A * * L OG I C A L C U S M S T L A R C H I VO MA E S T R O C L I E N T E S
A U N I Q U E
A * R C U S R E C P F I L E ( C U S M S T P )
A T E X T ( ' R E G I S T R O MA E S T R O C L I E N T E ' )
A C U S T A L I A S ( N U M E R O _C L I E N T E )
A N AM E A L I A S ( N OM B R E _C L I E N T E )
A A D D R A L I A S ( D I R E CC I ON )
A C I T Y
A S T A T E
A Z I P
A S R H COD A L I A S ( COD I GO _B U S Q U E D A )
A C U S T Y P A L I A S ( T I P O _C L I E N T E )
A A R B A L A L I A S ( S A L D O _C U E N T A S _P O R CO B R A R )
A OR D B A L
A L S T AM T
A L S T D A T
A C R D L M T
A S L S Y R
A S L S L Y R
A K C U S T
.1/ Este es el nombre asociado con la palabra clave ALIAS, que se incluirá en
el programa. Disponible en la opción ALIAS de DDS, un alias es un nombre
alternativo que sirve para que un nombre de datos de hasta 30 caracteres
se incluya en un programa COBOL/400.
Figura 36. Ejemplo de los Resultados de la Instrucción COPY de Formato 2 (DD) con la
Palabra Clave ALIAS
Ampliación de IBM
╔═══════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 55───COPY──┬─DD-nombre-formato ┬──┬────────┬──┬───────────────┬───────────────5 ║
║ ├─DD-ALL-FORMATS── ─┤ ├─ -I───┤ ├─ -INDICATOR──┤ ║
║ ├─DDR-nombre-formato┤ ├─ -O───┤ ├─ -INDICATORS─┤ ║
║ ├─DDR-ALL-FORMATS── ┤ └─ -I-O─┘ └─ -INDIC──────┘ ║
║ ├─DDS-nombre-formato┤ ║
║ ├─DDS-ALL-FORMATS─ ─┤ ║
║ ├DDSR-nombre-formato┤ ║
║ └──DDSR-ALL-FORMATS─┘ ║
║ ║
║ ║
║ 5────┬─OF─┬──┬───────────────────┬nombre-archivo┬────────────┬────────────────5 ║
║ └─IN─┘ └nombre-biblioteca──┘ └──SUPPRESS──┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────────────────────────────────────┬────5% ║
║ │ ┌──────────────────────────────────────────────────┐ │ ║
║ │ 6 │ │ ║
║ └──REPLACING──┬─ ==pseudotexto -1==─┬─BY─┬─ ==pseudotexto -2==─┬─┴──┘ ║
║ ├────identificador-1──┤ ├────identificador-2──┤ ║
║ ├────literal-1────────┤ ├────literal-2────────┤ ║
║ └────palabra-1────────┘ └────palabra-2────────┘ ║
║ ║
╚═══════════════════════════════════════════════════════════════════════════════════╝
La opción DDR hace todo lo que hace la opción DD. También copia los nombres
de campo de formato DDS internos, sustituyendo los caracteres COBOL no válidos
(@, #, $ y _) por los caracteres COBOL válidos A, N, D y - según proceda. Esta
opción también elimina cualquier subrayado desde el final de los nombres de
campo.
La opción DDS copia los nombres de campos de formato interno DDS. Para ver
ejemplos de claves y nombres de claves que pueden generarse cuando utilice la
opción DDS de la instrucción COPY de Formato 2, consulte las páginas 127 a 133.
La opción DDSR hace todo lo que hace la opción DDS. También copia los
nombres de campo de formato DDS internos, sustituyendo los caracteres COBOL
no válidos (@, #, $, y _) por los caracteres COBOL válidos A, N, D, y -, según
proceda. Esta opción también elimina cualquier subrayado desde el final de los
nombres de campo.
SELECT FILE-X
ASSIGN TO DATABASE-CUSTMASTER.
..
.
FD FILE-X
LABEL RECORDS ARE STANDARD.
01 FILE-X-RECS.
COPY DDS-ALL-FORMATS OF
CUSTMASTER-QGPL. (Vea Nota 1.)
..
.
WORKING-STORAGE SECTION.
01 ADR-REC.
COPY DDS-CUSTADR OF
CUSTMASTER. (Vea Nota 2.)
01 DETAIL-REC.
COPY DDS-CUSTDETL OF
CUSTMASTER. (Vea Nota 2.)
Notas:
1. Esta instrucción COPY sólo genera un área de almacenamiento para todos los
formatos.
2. Estas instrucciones COPY generan áreas de almacenamiento separadas.
Indicadores
Los indicadores son ítems de datos Booleanos que pueden tener los valores B"0"
ó B"1".
Cuando define un formato de registro para un archivo utilizando las DDS, puede
condicionar las opciones utilizando indicadores; los indicadores también pueden uti-
lizarse para reflejar respuestas particulares. Estos indicadores se conocen como
OPTION y RESPONSE, respectivamente. Los indicadores de opción proporcionan
opciones tales como espaciado, subrayado y permiso o petición de transferencia
de datos desde un programa a una impresora o dispositivo de pantalla. Los indi-
cadores de respuesta proporcionan información de respuesta a un programa desde
un dispositivo, como por ejemplo las teclas de función pulsadas por un usuario de
estación de trabajo, y si se han introducido los datos.
05 nombre-archivo-RECORD
PIC X(tamaño del mayor registro).
06 nombre-campo PIC
Nota: Consulte la Figura 38 en la página 123 para la definición COBOL
PICTURE adecuada.
ARCHIVOS DE PANTALLA
␣(En Por omisión PIC X(n) PIC S9(n-m)V9(m)
blanco)
X Sólo alfabético PIC X(n) —
N Desplazamiento numérico PIC X(n) PIC S9(n-m)V9(m)
Y Sólo numérico — PIC S9(n-m)V9(m)
I Entrada de teclado no habilitada PIC X(n) PIC S9(n-m)V9(m)
W Katakana PIC X(n) —
A Desplazamiento alfanumérico PIC X(n) —
D Sólo dígitos PIC X(n) PIC S9(n)
F Coma flotante ñ
precisión simple PIC 9(5) COMP-4 PIC 9(5) COMP-4
precisión doble PIC 9(10) COMP-4 PIC 9(10) COMP-4
M Carácter sólo numérico PIC X(n) —
S Desplazamiento numérico — PIC S9(n-m)V9(m)
marcado
E Cualquier tipo de datos DBCS PIC X(n) —
J Sólo DBCS PIC X(n) —
O Datos DBCS abiertos PIC X(n) —
G Datos DBCS gráficos PIC X(2n) —
ñ COBOL considera los campos de coma flotante como de RELLENO. Véase "Campos de coma flotante".
ò En DDS, si el campo tiene un atributo VARLEN, se añaden dos bytes adicionales al comienzo del campo.
ó Ítems FILLER por omisión. Véase "Campos de Fecha, Hora y de indicación horaria".
Estructuras de Indicador
Si se solicitan los indicadores, y existen en el formato, se genera un nombre de
grupo adicional (nivel 06) al principio de la estructura, seguido de las entradas
(nivel 07) para los indicadores individuales relevantes.
06 nombre-formato(-I o -O)-INDIC.
07 INxx PIC 1 INDIC xx.
Por ejemplo:
06 SAMPLE1-I-INDIC.
07 IN01 PIC 1 INDIC 01.
07 IN04 PIC 1 INDIC 04.
07 IN05 PIC 1 INDIC 05.
07 IN07 PIC 1 INDIC 07.
06 FLD1 PIC ... .
06 FLD2 PIC ... .
Por ejemplo:
ð1 RCUSREC.
COPY DDS-CUSREC-I OF CUSFILE.
\ FORMATO E-S: CUSREC DESDE ARCHIVO CUSFILE DE BIBL. CUSLIB CUSREC
\ DEFINICIONES DE CLAVE PARA FORMATO DE REGISTRO CUSREC
\ NUMERO NOMBRE RECUPERACION TIPO SECALT
\ ððð1 ARBAL ASCENDING SIGNED NO
\ ððð2 AREACD DESCENDING ABSVAL NO
ð5 CUSREC.
ð6 ARBAL PIC S9(7)V9(2) COMP-3 CUSREC
ð6 AREACD PIC S9(3) COMP-3. CUSREC
ð6 BOSTAZ PIC X(1). CUSREC
ð6 CNTCT PIC X(15). CUSREC
ð6 CRCHKZ PIC S9(2). CUSREC
ð6 CSTAT PIC X(1). CUSREC
ð6 CUSTNZ PIC S9(6). CUSREC
ð6 DLORD PIC S9(6). CUSREC
ð6 DSCPCZ PIC S9(2)V9(3) COMP-3. CUSREC
ð6 INDUS PIC S9(2). CUSREC
ð6 NAME1 PIC X(25). CUSREC
ð6 NAME2 PIC X(25). CUSREC
ð6 NAME3 PIC X(25). CUSREC
ð6 NAME4 PIC X(25). CUSREC
ð6 PHONE PIC S9(7) COMP-3. CUSREC
ð6 PRICIZ PIC S9(2). CUSREC
ð6 SHPINZ PIC X(25). CUSREC
ð6 SLSMAZ PIC X(3). CUSREC
ð6 TAXCDZ PIC S9(2). CUSREC
ð6 TERMSZ PIC S9(2). CUSREC
Redefinición de Formatos
Preste especial atención a la cláusula REDEFINES que puede generarse para las
frases ALL-FORMATS o -I-O. Debido a que todos los formatos se redefinen en la
misma área (generalmente un área de almacenamiento intermedio), varios
nombres de campo pueden describir la misma área de almacenamiento, y pueden
producirse resultados imprevisibles si no se vuelve a inicializar todo el área del
formato antes de cada operación de salida.
Los ítems de datos que están subordinados a los ítems de datos especificados en
una instrucción MOVE CORRESPONDING no se corresponden y no se trasladan
cuando contienen una cláusula REDEFINES o están subordinados a un ítem
redefinitorio.
FD ORDER-ENTRY-SCREEN ...
ð1 ORDER-ENTRY-RECORD ...
..
.
WORKING-STORAGE SECTION.
ð1 ORDSFL-I-FORMAT.
COPY DDS-ORDSFL-I OF DOESCR.
ð1 ORDSFL-O-FORMAT.
COPY DDS-ORDSFL-O OF DOESCR.
..
.
PROCEDURE DIVISION.
..
.
READ SUBFILE ORDER-ENTRY-SCREEN NEXT MODIFIED RECORD
INTO ORDSFL-I-FORMAT FORMAT IS "ORDSFL"
AT END SET NO-MODIFIED-SUBFILE-RCD TO TRUE.
..
.
MOVE CORR ORDSFL-I TO ORDSFL-O.
REWRITE SUBFILE ORDER-ENTRY-RECORD FROM ORDSFL-O-FORMAT
FORMAT IS "ORDSFL" ...
..
.
T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )
Condicionamiento
U t i l i z a c/i ó n ( b / O / I / B / H / M / N / P )
And/Or/Com ent. (A/O/*)
Nombre Condición
Tipo de Formula rio
Referencia (R)
Nú mero d e
Secuencia
Posiciones
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea Pos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
A * AR CH I VO F I S I CO P F 1 P AR A E J E MP L O S D E G E N E R AC I ON D E C L AV E S
A *
A R P F R E COR C
A *
A M T H 2
A * DA Y 2
A Y E AR 4
A I T EM 8
A
A
A K M T H
A K DA Y
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
El archivo físico de la Figura 40 constituye una base para los ejemplos que apa-
recen a continuación. Cada ejemplo hace referencia a un archivo lógico (derivado
del archivo físico) que especifica EXTERNALLY-DESCRIBED-KEY en su cláusula
SELECT.
T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )
Condicionamiento
U t i l i z a c/i ó n ( b / O / I / B / H / M / N / P )
And/Or/Com ent. (A/O/*)
Nombre Condición
Tipo de Formula rio
Referencia (R)
Nú mero d e
Secuencia
Posiciones
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea Pos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
A * A R CH I VO L OG I C O L F 1 P AR A E J E MP L O S D E CONCA T E N A R C L AV E S
A *
A R R E COR D 1 P F I L E ( P F 1 )
A *
A DA T E CONCA T ( ME S D I A A ÑO )
A *
A K M T H
A K DA Y
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
Para el archivo lógico de la Figura 41, COPY DDS genera claves y nombres de
claves derivados del archivo físico:
La instrucción COPY añade el sufijo -DDS a los nombres de campos MTH y DATE
porque MTH es una clave que tiene su origen en el archivo físico, y DATE es una
palabra reservada COBOL. La instrucción COPY añade el sufijo -DDS dos veces
en el nombre de campo DAY porque DAY es a la vez una clave que se origina en
el archivo físico y una palabra reservada COBOL.
WORKING-STORAGE SECTION.
ð1 WRK-RECORD.
COPY DDS-ALL-FORMATS OF LF1.
ð5 LF1-RECORD PIC X(8).
\ FORMATO E-S:RECORD1 DESDE ARCHIVO LF1 DE BIBLIOTECA COPYDDS
\
ð5 RECORD1 REDEFINES LF1-RECORD.
ð6 DATE-DDS PIC X(8).
Figura 43. Ejemplo que Utiliza la Palabra Clave CONCAT-- Sección de Almacenamiento de
Trabajo
T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )
Condicionamiento
U t i l i z a c/i ó n ( b / O / I / B / H / M / N / P )
And/Or/Com ent. (A/O/*)
Nombre Condición
Tipo de Formula rio
Referencia (R)
Nú mero d e
Secuencia
Posiciones
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea Pos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
A * AR CH I VO L OG I C O L F 2 P AR A E J E MP L O S R E D E N OM I N A R P A L AB R A C L AV E
A *
A R R E COR D 2 P F I L E ( P F 1 )
A *
A MO N T H R E N AM E ( M E S )
A *
A K M T H
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
Para el archivo lógico descrito en la Figura 44, COPY DDS genera una clave y un
nombre de clave derivados del archivo físico:
La instrucción COPY añade el sufijo -DDS al nombre de campo MTH porque MTH
es una clave que tiene su origen en el archivo físico.
T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )
Condicionamiento
U t i l i z a c/i ó n ( b / O / I / B / H / M / N / P )
And/Or/Coment. (A/O/*)
Nombre Co ndición
Tipo de Formula rio
N om b re Longitud Funciones
Referencia (R)
Nú mero de
Secuencia
Posiciones
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea Pos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
A * AR CH I VO L OG I C O L F 3 P AR A E J E MP L O S D E P A L AB R A C L AV E S S T
A *
A R R E COR D 3 P F I L E ( P F 1 )
A *
A Y Y I S S T ( AÑO 2 2 )
A *
A K Y Y
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
Figura 46. Especificaciones de Descripción de Datos que Utilizan la Palabra Clave SST
Vía de Acceso
La descripción de un archivo descrito externamente contiene la vía de acceso que
describe cómo se recuperan los registros del archivo. Los registros pueden recu-
perarse basándose en una vía de acceso en secuencia de llegada (sin clave) o en
una vía de acceso en secuencia de claves.
Consulte la publicación Guía para la Base de Datos para una descripción completa
de las vías de acceso para un archivo de base de datos descrito externamente.
La clave para un archivo se determina mediante las claves válidas para los tipos
de registros en ese archivo. La clave del archivo se determina de la manera
siguiente:
Si todos los tipos de registro en un archivo tienen el mismo número de campos
de clave definidos en las DDS que sean idénticos en sus atributos, la clave del
archivo se compone de todos los campos en la clave para los tipos de registro.
(Los campos correspondientes no tienen que tener el mismo nombre). Por
ejemplo, si el archivo tiene tres tipos de registro y la clave para cada tipo de
registro consta en los campos A, B y C, la clave del archivo consta de los
campos A, B y C. Es decir, la clave del archivo es la misma que la clave de
los registros.
Si todos los tipos de registro en el archivo no tienen los mismos campos de
clave, la clave del archivo consta de los campos de clave comunes para todos
los tipos de registro. Por ejemplo, un archivo tiene tres tipos de registro y los
campos de clave se definen de la manera siguiente:
– REC1 contiene el campo de clave A.
– REC2 contiene los campos de clave A y B.
– REC3 contiene los campos de clave A, B y C.
Luego la clave del archivo es el campo A, el campo de clave común para
todos los tipos de registro.
Si no hay ningún campo clave común para todos los tipos de registro, cual-
quier referencia por clave para el archivo devolverá siempre el primer registro
en el archivo.
En COBOL, deberá especificar RECORD KEY para un archivo indexado para iden-
tificar el registro que desee procesar. COBOL compara el valor de clave con el
valor del archivo o registro y procesa la operación especificada en el registro cuya
clave coincida con el valor RECORD KEY.
Comprobación de Nivel
Cuando un programa COBOL/400 utiliza un archivo descrito externamente, el
sistema operativo proporciona una función de comprobación de nivel (LVLCHK).
Esta función asegura que el formato no se ha modificado desde el momento de la
compilación.
Deberá extremar las precauciones cuando utilice programas COBOL sin compro-
bación de nivel o sin recompilar los programas.
Puesto que el valor máximo que ITEM1-LENGTH puede mantener es 9 999, ésta
será la longitud del campo de longitud variable más largo que se pueda escribir
desde un programa COBOL.
Si los dos primeros bytes del campo carecen de un número binario válido, se pro-
ducirá un error si se intenta efectuar WRITE o REWRITE a un registro que con-
tenga el campo (o UPDATE o PUT el campo en una base de datos), y se devuelve
el estado de archivo 90.
──┬────────┬────────────────┬─────
──5 │ long. │ datos-caract. │ ──5
──┴────────┴────────────────┴─────
BIN(2) CHAR(N)
&
Para campos tipos datos DBCS gráfi.: 2 + 2(N) = long. de campo COBOL/4ðð
Los tipos de datos de fecha, hora e indicación de la hora disponen cada uno de
ellos de un formato propio.
└────────┴────────┴────────┴────────┘
1 carác. 1 carác. 1 carác. 1 carác.
┌────────┬────────┬────────┬────────┐
│ 1 byte │ 1 byte │ 1 byte │ 1 byte │ Datos DBCS
└────────┴────────┴────────┴────────┘ gráficos
└─────────────────┴─────────────────┘
1 carácter 1 carácter
Figura 51. Comparación de Datos de un Solo Byte y Datos Gráficos
Ejemplos
La Figura 52 muestra un ejemplo de archivo DDS que define un ítem de datos
DBCS gráficos de longitud variable. La Figura 53 en la página 142 muestra un
programa COBOL/400 que utiliza una instrucción DDS COPY, así como el listado
resultante que se obtiene cuando se compila el programa.
A R SAMPLEFILE
A\
A VARITEM 1ðð VARLEN
A\
A TIMEITEM T TIMFMT(\HMS)
A DATEITEM L DATFMT(\YMD)
A TIMESTAMP Z
A\
A GRAPHITEM 1ððG
A VGRAPHITEM 1ððG VARLEN
Figura 52. Archivo DDS que Define un Campo de Datos Gráficos de Longitud Variable
Figura 53. Programa COBOL/400 que utiliza Ítems de Datos DBCS Gráficos de Longitud Variable
Para obtener más información acerca de las CCSID y CDRA, consulte las publi-
caciones Operación del Sistema, SC10-9280 (SC41-3203) y Guía para la Gestión
de Datos.
Ampliación de IBM
Esta capítulo describe las ampliaciones del lenguaje COBOL/400 que dan soporte
a las estaciones de trabajo y las comunicaciones programa a programa.
Además de las descripciones de campo (como, por ejemplo, los nombres y atri-
butos de los campos), las especificaciones de descripción de datos (DDS) para un
archivo de dispositivo de pantalla:
Especifican las entradas de número de línea y número de posición para cada
campo y constante con el fin de dar formato a la colocación del registro en la
pantalla.
Especifican las funciones de atención, como pueden ser las de campos de
subrayado y resaltado, contraste invertido o un cursor parpadeante.
Especifican la comprobación de validez para los datos entrados en la estación
de trabajo de pantalla. Las funciones para la comprobación de validez
incluyen:
– Detectar campos en los que se requieren datos
– Detectar los campos de relleno obligatorio
– Detectar los tipos de datos incorrectos
– Detectar los datos con un rango específico
– Comprobar los datos para una entrada válida
– Realizar la verificación de comprobación de dígitos de los módulos 10 u
11.
Controlan las funciones de gestión de pantallas (por ejemplo, en qué momento
se van a borrar, dar formato previamente o retener cuando se visualicen
nuevos datos).
Asocian indicadores del 01 al 99 con claves de función designadas como de
tipo CA o CF. Si una tecla de función se diseña como CF, tanto el registro de
datos modificados como el indicador de respuesta se devuelven al programa.
Si una tecla de función se designa como CA, el indicador de respuesta se
devuelve al programa, pero el registro de datos contiene, generalmente,
valores por omisión para campos sólo de entrada y valores grabados en el
formato para campos de entrada/salida ocultos. Para más información acerca
de los tipos de teclas de función CF y CA, consulte la publicación DDS
Reference.
Asignan un código de edición (palabra clave EDTCDE) o palabra de edición
(palabra clave EDTWRD) a un campo para especificar cómo deben
visualizarse los valores del campo.
Especifican subarchivos.
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
Datos/Desplazamiento Teclado
(b/O/I/B/H/M/N/P)
Ubicación
(A/O/*)
Espec
Nombre Condición
Formula rio
And/Or/Coment.
Referencia (R)
Nombre
Nú mero d e
U t i l i z a c/i ó n
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
de
No (N)
No (N)
No (N)
Línea P os
Tipo
Tipo
Tipo
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A * A R C H I VO MA E S T R O D E CON S U L T A S D E C L I E N T E - - C U S M I NQ
A *
A R E F ( C U S M S T P )
A R C U S P M T T E X T ( ' S O L I C I T U D D E C L I E N T E ' )
A C A 0 3 ( 1 5 ' F I N D E P R OG R A M A )
A 3 3 ' N UM E R O D E C L I E N T E '
A C U S T R I 3 2 /0
A 9 9 E R R M S G ( ' N UM E R O C L I E N T E NO E NCON T R +
A ADO P U L S E R E S T A U R A R , A CON T I N U AC I ON +
A I N T R OD U Z C A N UM E R O V A L I DO ' 9 9 )
A 5 3 ' U T I L I C E F 3 P A R A F I N A L I Z A R P R OG R A M A , +
A P U L S E I N T R O P A R A P A R A VO L V E R A S O L I '
A R C U S F L D S C I T A R P A N T A L L A . T E X T O ( P A N T A L L A D E
A C L I E N T E C A 0 3 ( 1 5 ' F I N D E P R OG R A M A ' )
A R E C U B R I M I E N T O
A 8 3 ' N OM B R E '
A N AM E R 8 1 1
A 9 3 ' D I R E CC I ON '
A AD D R R 9 1 1
A 1 /
0 3 ' C I U D AD '
A C I T Y R 1 /
0 1 1
A 1 1 3 ' P R OV I NC I A '
A S T A T E R 1 1 1 1
A Z I P R 1 1 3 1
A 1 2 3 ' B A L A NC E A / R '
A A R B A L R 1 2 1 7
Figura 54. Ejemplo de las Especificaciones de Descripción de Datos para un Archivo de Dispositivo de Pantalla
55───ASSIGN──┬────┬─────WORKSTATION───── -nomb-arch──┬───────┬───────────────5%
└─TO─┘ └─ -SI─┘
╔═══════════════════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 55───número-nivel──┬───────────────┬──┬──────────────────────────┬──────────────────────5 ║
║ ├──nomb-fech-1──┤ ├──REDEFINES──nomb-fech-2──┤ ║
║ └──FILLER───────┘ └──LIKE ─ nomb-fech-3 ─────┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────┬──────────────────────────────────────────────────────5 ║
║ └──┬──PICTURE──┬─┬────┬──1──┘ ║
║ └──PIC──────┘ └─IS─┘ ║
║ ║
║ ║
║ 5────┬──────────────────────────────┬───────────────────────────────────────────────────5 ║
║ └──┬───────────────┬──DISPLAY──┘ ║
║ └──USAGE─┬────┬─┘ ║
║ └─IS─┘ ║
║ ║
║ ║
║ 5──┬────────────────────────────────────────────────────────────────────────────────────5 ± ║
║ └─OCCURS─┬─entero--1─TO─entero--2─┬───────┬─DEPENDING─┬────┬─nomb-fech-4─┬───────────5 ² ║
║ │ └─TIMES─┘ └─ON─┘ │ ║
║ └─entero--2─┬───────┬───────────────────────────────────────────┘ ║
║ └─TIMES─┘ ║
║ ║
║ ║
║ ± 5──────────────────────────────────────────────┬────────────────────────────────────────5 ║
║ ² 5────┬──────────────────────────────────────┬──┘ ║
║ │ ┌─────────────┐ │ ║
║ │ 6 │ │ ║
║ └──INDEXED──┬────┬────nom-índice-1──┴──┘ ║
║ └─BY─┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────┬──────────────────────────────────────────────────────5 ║
║ └─┬─INDICATOR──┬──entero--3─┘ ║
║ ├─INDICATORS─┤ ║
║ └─INDIC──────┘ ║
║ ║
║ ║
║ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ║
║ 5────┬───────────────────────────────────┬──┬────────────────────────────┬──────────────5 ║
║ \ └──┬──SYNCHRONIZED──┬──┬─────────┬──┘ └──┬─JUSTIFIED─┬──┬───────┬──┘ \ ║
║ \ └──SYNC──────────┘ ├──LEFT───┤ └─JUST──────┘ └─RIGHT─┘ \ ║
║ \ └──RIGHT──┘ \ ║
║ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ║
║ ║
║ ║
║ 5────┬─────────────────────────────────┬──.────────────────────────────────────────────5% ║
║ └──VALUE─┬────┬──Literal-boolean──┘ ║
║ └─IS─┘ ║
║ ║
╚═══════════════════════════════════════════════════════════════════════════════════════════════╝
ð7 SWITCHES PIC 1
OCCURS 1ð TIMES
INDICATOR 16.
Frase INDICATORS
Cuando la frase INDICATORS se utiliza en las instrucciones READ, REWRITE y
WRITE (vea la Figura 57 en la página 158), especifica los indicadores que se van
a leer, regrabar y grabar.
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
(b/O/I/B/H/M/N/P)
Ubicación
(A/O/*)
Nombre Condición
Espec
de Formula rio
And/Or/Coment.
Referencia (R)
Nombre
Nú mero d e
Utilización
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea P os
Tipo
Tipo
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A * D D S D E A R C H I VO D E P A N T A L L A P A R A E J E MP L O S D E I ND I C ADOR E S
A *
A R F OR MA T 1 / 3 ( 9 9
C F 0 ' F I N D E P R OG R A M A ' )
A / 5 ( 5 1
C F 0 ' I N F OR M E D I A R I O ' )
A / 9 ( 5 2
C F 0 ' I N F OR M E ME N S U A L ' )
A *
A 1 0 1 0 ' N UM E R O D E D E P A R T AM E N T O : '
A D E P T NO 5 I 1 0 3 2
A 0 1 2 0 2 6 ' P R OD U C I R I N F OR M E S M E N S U A L E S '
A D S P A T R ( B L )
A *
A 2 4 0 1 ' F 5 = I N F OR M E D I A R I O '
A 2 4 2 6 ' F 9 = I N F OR M E M E N S U A L '
A 2 4 5 3 ' F 3 = T E R M I N A R '
Figura 55. Ejemplo de un Programa que Utiliza Indicadores en el Área de Registros sin Utilizar la Frase
INDICATORS en la Sentencia–Datos de E/S: Especificaciones de Descripción
Figura 56 (Parte 1 de 2). Ejemplo de un Programa que Utiliza Indicadores en el Área de Registros sin la Frase
INDICATORS en la Sentencia–COBOL de E/S: Programa Fuente
Figura 56 (Parte 2 de 2). Ejemplo de un Programa que Utiliza Indicadores en el Área de Registros sin la Frase
INDICATORS en la Sentencia–COBOL de E/S: Programa Fuente
Figura 57 (Parte 1 de 2). Ejemplo de un Programa que Utiliza Indicadores en el Área de Registros y la Frase
INDICATORS en las Instrucciones de E/S–Programa Fuente COBOL
Figura 57 (Parte 2 de 2). Ejemplo de un Programa que Utiliza Indicadores en el Área de Registros y la Frase
INDICATORS en las Instrucciones de E/S–Programa Fuente COBOL
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
(b/O/I/B/H/M/N/P)
Ubicación
(A/O/*)
Nombre Condición
Espec
de Formula rio
And/Or/Coment.
Referencia (R)
Nombre
Nú mero d e
U t i l i z a c/i ó n
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea P os
Tipo
Tipo
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A * V I S U A L I Z A R D D S D E A R C H I VO P A R A E J E MP L O S D E I ND I C ADOR E S
A *
A I ND A R A
A R F OR MA T 1 C F 0 3 ( 9 9 ' F I N D E P R OG R A M A ' )
A C F 0 5 ( 5 1 ' I N F OR M E D I A R I O ' )
A C F 0 9 ( 5 2 ' I N F OR M E ME N S U A L ' )
A *
A 1 0 1 0 ' N UM E R O D E D E P A R T AM E N T O : '
A D E P T NO 5 I 1 0 3 2
A 0 1 2 0 2 6 ' P R OD U C I R I N F OR M E S M E N S U A L E S '
A D S P A T R ( B L )
A *
A 2 4 0 1 ' F 5 = I N F OR M E D I A R I O '
A 2 4 2 6 ' F 9 = I N F OR M E M E N S U A L '
A 2 4 5 3 ' F 3 = T E R M I N A R '
Figura 58. Ejemplo de un Programa que Utiliza Indicadores en una Área de Separada de Indicadores, Definido en
WORKING-STORAGE mediante la Sentencia COPY, Formato DDS
Figura 59 (Parte 1 de 2). Listado COBOL que Utiliza Indicadores en un Área de Indicadores Separada
Figura 59 (Parte 2 de 2). Listado COBOL que Utiliza Indicadores en un Área de Indicadores Separada
Figura 60 (Parte 1 de 2). Ejemplo de un Programa que Utiliza Indicadores en una Área Separada de Indicadores,
Definido en una Tabla en WORKING-STORAGE
Figura 60 (Parte 2 de 2). Ejemplo de un Programa que Utiliza Indicadores en una Área Separada de Indicadores,
Definido en una Tabla en WORKING-STORAGE
Subarchivos
Pueden especificarse subarchivos en las DDS para un archivo de pantalla que per-
mitan al usuario manejar varios registros del mismo tipo en una pantalla. Consulte
la Figura 61 en la página 165 para ver un ejemplo de una pantalla de subarchivo.
Un subarchivo es un grupo de registros que se leen desde un dispositivo de pan-
talla o se graban a dicho dispositivo. El programa procesa un registro a la vez,
á ñ
Figura 61. Pantalla de Subarchivo
Utilización de Subarchivos
Algunas utilizaciones típicas de los subarchivos incluyen:
Utilización Significado
Sólo Visualizar El usuario de la estación de trabajo revisa la pantalla.
Visualizar con Selección El usuario solicita más información acerca de uno de los ítems en
la pantalla.
Modificación El usuario modifica uno o más registros.
Sólo Entrada (sin comprobación de Se utiliza un subarchivo para una función de entrada de datos.
validez)
Sólo Entrada (con comprobación de Se utiliza un subarchivo para una función de entrada de datos, y
validez) se comprueban los registros.
Combinación de Tareas Puede utilizarse un subarchivo como visualización con modifi-
cación.
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
Datos/Desplazamiento Teclado
(b/O/I/B/H/M/N/P)
Ubicación
(A/O/*)
Espec
Nombre Condición
Formula rio
And/Or/Coment.
Referencia (R)
Nombre
Nú mero d e
U t i l i z a c/i ó n
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
de
No (N)
No (N)
No (N)
Línea P os
Tipo
Tipo
Tipo
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 16 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A * D D S P A R A E L A R C H I VO D E D I S P O S I T I VO D E P A N T A L L A P A Y U P D T D
A * AC T U A L I Z AC I ON D E P AGO I N T E R AC T I VO D E C U E N T A S P OR CO B R A R
A *
A R S U B A R C H 1 S F L
A *
A 5 1 D S P A T R ( R I MD T )
A N 5 1 D S P A T R ( ND P R )
A *
A C U S T 5 B 5 1 5 T E X T ( ' N UM E R O C L I E N T E ' )
A 5 2 D S P A T R ( R I )
A 5 3 D S P A T R ( ND )
A 5 4 D S P A T R ( P R )
A *
A C H E C K ( F E )
A A U T O ( R A B )
A CMP ( G T 0 )
A 5 2 D S P A T R ( R I )
A 5 3 D S P A T R ( ND )
A 5 4 D S P A T R ( P R )
A *
A E C P M S G 3 1 A O 5 3 7 T E X T ( ' M E N S A J E D E E X C E P C I ON ' )
A 5 2 D S P A T R ( R I )
A 5 3 D S P A T R ( ND )
A 5 4 D S P A T R ( B L )
A *
A E D T CD E ( 1 )
A 5 5 D S P A T R ( B L )
A N 5 6 D S P A T R ( ND )
A *
de Grabación
Programador Fecha Tecla
(b/R/H/J/K/S/O)
Condicionamiento
Teclado
(b/O /I/B/H/M/N/P)
Ubicación
Datos/Desplazamiento
(A/O/*)
Espec
Nombre Condición
Formula rio
And/Or/Coment.
Referencia (R)
Nombre
Nú mero d e
U t i l i z a c/i ó n
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
de
No (N)
No (N)
No (N)
Línea P o s
Tipo
Tipo
Tipo
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 16 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A S F L C T L ( S U B A R C H 1 )
A S F L S I Z ( 1 7 )
A S F L P AG ( 1 7 )
A 6 1 S F L C L R
A 6 2 S F L D S P
A 6 2 S F L D S P C T L
A R E C U B R I M I E N T O
A B L OQ U E O
A *
A H E L P ( 9 9 ' T E C L A D E A Y U D A ' )
A C A 1 1 ( 9 7 ' I G NO R A R E N T R AD A ' )
A *
A 9 9 S F L M S G ( ' F 1 1 - I G NO R A R E N T R NO V A L I D A +
A F 1 2 - F I N D E AC T U A L I +
A Z AC I ON D E P AGO ' )
A *
A 1 6 5 ' F E C H A '
A 1 7 8 F E C H A E D T CD E ( Y )
A 6 3 3 2 ' AC E P T A R '
A 3 1 4 ' C L I E N T E '
A 6 4 3 3 7 ' M E N S A J E D E E X C E P C I ON '
Figura 63. Especificaciones de Descripción de Datos para un Formato de Registro de Control de Subarchivo
El formato de registro de control del subarchivo define los atributos del subarchivo,
el campo de entrada de búsqueda, las constantes y las teclas de mandatos. Las
palabras clave utilizadas indican lo siguiente:
.1/ SFLCTL identifica este registro como un registro de control de subarchivo y
nombra los registros de subarchivo asociados (SUBFILE1).
.2/ SFLSIZ indica el número total de registros a incluir en el subarchivo (17).
.3/ SFLPAG indica el número total de registros en una pagina (17).
.4/ SFLCLR indica cuándo debe borrarse el subarchivo (cuando el indicador 61
está activo).
.5/ SFLDSP indica cuándo se visualiza el subarchivo (cuando el indicador 62
está activo).
.6/ SFLDSPCTL indica cuándo se visualiza el registro de control de subarchivo
(cuando el indicador 62 está activo).
Los archivos ICF pueden tener dispositivos múltiples de programa cuando el pará-
metro MAXPGMDEV del mandato CRTICFF sea mayor que 1. Para más infor-
mación acerca de la creación y utilización de archivos ICF, consulte la ICF
Programmer’s Guide.
T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )
Condicionamiento
U t i l i z a c/i ó n ( b / O / I / B / H / M / N / P )
And/Or/Com ent. (A/O/*)
Nombre Condición
Tipo de Formula rio
Referencia (R)
Nú mero d e
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea Pos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
A*
A* DD S P AR A E L A R C H I VO DE P AN T A L L A DE MU L T I P L E S D I S P O S I T I VO S
A*
A R S I GNON I NV I T E
A O 5 / b
/ ' b
20 / /b /b /b /b /b /b/b/b/b/b/b/b/ b/ b/ b/ b/ b
/b/ '
A DSPATR ( R I )
A O 6 / ' b
20 /b/ '
A DSPATR ( R I )
A O 6 /b
38 ' b / '
A DSPATR ( R I )
E l formato SIGNON tiene
A O 7 / ' b
20 /b/ '
la palabra clave INVITE
A DSPATR ( R I )
asoc
Aia d a . A sí, si se u tiliza O 7 27 'M D F '
e l f oAr m a t o S I G N O N e n u n a DSPATR ( H I B L )
A O 7 /b
38 ' b / '
s e n tAe n c i a W R I T E , s e i n v i t a r á DSPATR ( R I )
a l dA
ispositivo en el que se O 8 / ' b
20 /b/ '
e s t áA e s c r i b i e n d o . DSPATR ( R I )
A O 8 38 ' b/b / '
A DSPATR ( R I )
A O 9 / ' /b /b /b /b/b/b/b/b/b/b/ b/ b/ b/ b/ b/ b
20 /b/b
/ b
/ b
/ '
A DSPATR ( R I )
A O /
2 0 / ' I N I C I E L A
2 0 S E S I ON '
A DSPATR ( H I )
A P A S S WO R D 1 /0 A I 20
/ 4 3D S P A T R ( PC ND )
A WR ONG 2 /0 A O 2 1 4 3
A R UPDA T E
A O 3 5 ' AC T U A L I Z AC I ON A R C H I VO DE P E R S ON A L '
A DSPATR ( B L )
A O 7 5 ' T ECL E E N UME R O E MP L E ADO +
A A AC T U A L I Z A R '
A N UM 7A I 7 4 4D S PA T R ( R I PC )
A R E MP L O Y E E
A O 3 5 ' N UME R O E MP L E ADO '
A N UM 7A B 3 2 5D S PA T R ( PC )
A O 5 5 ' N OM B R E E MP L E ADO '
A N AM E 3 /0 A B 5 2 5D S PA T R ( PC )
A O 7 5 ' D I R E CC I ON E MP L E ADO '
A O 9 5 ' CA L L E '
A S TRE E T 3 /0 A B 9 2 5D S PA T R ( PC )
A O 1 1 5 ' N UME R O A P A R T AM E N T O '
A A P T NO 5A B 1 1 2 5 ' D S PA T R ( PC )
A O 13 5 ' C I U D AD '
A C I T Y 2 /0 A B 13 2 5D S PA T R ( PC )
A O 15 5 ' P R OV I NC I A '
A P R OV 2 /0 A B 15 2 5D S PA T R ( PC )
A R R E CO V E R Y
A O 3 5 ' E L N UME R O DE E MP L E ADO QU E HA +
A D ADO NO E S VA L I DO '
A O 6 5 ' T ECL E E S P AR A R E I N T E N T AR '
A O 8 5 ' T ECL E E N P AR A SAL I R '
A AN SWE R 1X I /
10 5D S PA T R ( R I PC )
A V A L OR E S ( ' S ' ' N ' )
A
A
A
A
A
A
T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )
Condicionamiento
Utilización (b/O/I/B/H/M/N/P)
And/Or/Coment. (A/O/*)
Nombre Co ndición
Tipo de Formula rio
N om b re Longitud Funciones
Referencia (R)
Nú mero de
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea Pos
1 2 3 4 5 6 7 8 9 10 11 12 13 1 4 15 16 17 18 19 20 2 1 22 2 3 24 2 5 26 27 2 8 29 3 0 3 1 32 3 3 34 3 5 36 37 38 39 4 0 4 1 4 2 4 3 44 4 5 46 4 7 48 49 5 0 5 1 5 2 5 3 5 4 55 5 6 5 7 58 5 9 60 6 1 6 2 63 6 4 65 6 6 6 7 68 6 9 70 7 1 7 2 7 3 7 4 75 7 6 77 7 8 7 9 80
A *
A * DD S P A R A L A CON T R A S E Ñ A D E A R C H I VO F I S I CO
A *
A U N I QU E
A R P A S S WO R D S
A P A S S K E Y 1 0
/
/
A P A S S WO R D 1 0
A K P A S S K E Y
de Grabación
Programador Fecha Tecla
T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )
Condicionamiento
(b/O/I/B/H/M/N/P)
And/Or/Com ent. (A/O/*)
Nombre Condición
Tipo de Formula rio
Referencia (R)
Nú mero d e
Utilización
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea Pos
1 2 3 4 5 6 7 8 9 10 1 1 12 13 14 15 16 17 18 19 20 2 1 22 2 3 24 2 5 26 2 7 28 2 9 30 31 3 2 33 3 4 35 3 6 37 3 8 39 4 0 4 1 4 2 4 3 4 4 45 46 47 48 49 5 0 5 1 52 5 3 54 5 5 56 5 7 58 5 9 60 6 1 6 2 6 3 6 4 65 6 6 67 6 8 69 7 0 7 1 7 2 7 3 7 4 75 7 6 7 7 78 7 9 80
A *
A * DD S P A R A E L T E R M I NO D E A R C H I VO F I S I CO
A * QU E CON T I E N E L A L I S T A D E T E R M I NA L E S
A *
A R T E R M
A T E R M 1 0
/
Figura 65 (Parte 1 de 4). Listado Fuente COBOL para el Soporte de Archivos de Múltiples Dispositivos
Figura 65 (Parte 2 de 4). Listado Fuente COBOL para el Soporte de Archivos de Múltiples Dispositivos
Figura 65 (Parte 3 de 4). Listado Fuente COBOL para el Soporte de Archivos de Múltiples Dispositivos
Figura 65 (Parte 4 de 4). Listado Fuente COBOL para el Soporte de Archivos de Múltiples Dispositivos
Formato
╔═══════════════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ \\\\\\\\\\\\\\\\\\\\\\\\\ ║
║ \ ┌───────────────────┐ \ ║
║ \ │ │ \ ║
║ \\6\\\\\\\\\\\\\\\\\\\│\\ ║
║ 55───SELECT──nomb-arch────ASSIGN──┬────┬────┬─nomb-asignación-1─┼───────────────────────5 ║
║ └─TO─┘ └─literal-1─────────┘ ║
║ ║
║ ║
║ ║
║ ║
║ 5────┬───────────────────────┬──TRANSACTION─────────────────────────────────────────────5 ║
║ └──ORGANIZATION─┬────┬──┘ ║
║ └─IS─┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────────────────────────────────────────────────┬──5 ║
║ └──ACCESS──┬──────┬──┬────┬──┬─SEQUENTIAL───────────────────────────────────────┤ ║
║ └─MODE─┘ └─IS─┘ └─DYNAMIC───RELATIVE──┬─────┬──┬────┬──nomb-fech-3─┘ ║
║ └─KEY─┘ └─IS─┘ ║
║ ║
║ 5────┬──────────────────────────────────────────────────────────┬───────────────────────5 ║
║ └─┬──────┬──STATUS─┬────┬──nomb-fech-1──┬───────────────┬──┘ ║
║ └─FILE─┘ └─IS─┘ └──nomb-fech-5──┘ ║
║ ║
║ ║
║ 5────┬─────────────────────────────────────┬────.──────────────────────────────────────5% ║
║ └──CONTROL-AREA──┬────┬──nomb-fech-6──┘ ║
║ └─IS─┘ ║
║ ║
╚═══════════════════════════════════════════════════════════════════════════════════════════╝
Formato
55───ASSIGN──┬────┬─────WORKSTATION───── -nomb-arch──┬───────┬───────────────5%
└─TO─┘ └─ ─SI─┘
El atributo -SI se utiliza para especificar la opción a nivel de archivo para un área
de indicadores separada. Consulte el apartado “Utilización de Indicadores con
Archivos Transaction” en la página 149 para más detalles.
Cláusula ORGANIZATION
La cláusula ORGANIZATION especifica la estructura lógica de un archivo. La
organización TRANSACTION significa una interacción entre el programa y un
usuario de estación de trabajo u otro sistema.
En algunos casos, todos los registros son homogéneos; es decir, una transacción
lógica se completa con un intercambio de registros. En otras situaciones, una
serie de registros se transfiere hacia atrás y hacia adelante en progresión lógica
con varios tipos de registro seleccionados por el iniciador o como parte del proceso
basándose en los valores de datos de entrada.
Para información acerca del papel que desempeña el estado del archivo en el
manejo de errores, consulte el Capítulo 6, “Manejo de Errores y Excepciones
COBOL/400” en la página 71.
01 nombre datos 6.
02 tecla-función PIC X(2).
(Campo de realimentación de tecla de función).
02 nombre-dispositivo PIC X(10).
(Nombre de dispositivo de programa).
02 formato-registro PIC X(10).
(Formato de registro)
00 Tecla Intro
01-24 Teclas de función 1 a 24
90 Tecla de Giro Arriba
91 Tecla de Giro Abajo
92 Tecla Impr
93 Tecla Ayuda
94 Tecla Borra
95 Tecla Inicio
99 No definido
División de Datos
╔═══════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 55───FD────nomb-arch──────────────────────────────────────────────────────────5 ║
║ ║
║ ║
║ 5────┬─────────────────────────────────────────────────────────────────────┬──5 ║
║ └──RECORD─┬──────────┬──┬─────────────────┬─entero--4──┬────────────┬─┘ ║
║ └─CONTAINS─┘ └──entero--3 TO───┘ └─CHARACTERS─┘ ║
║ ║
║ ║
║ 5────┬────────────────────────────────────────────────────┬───────────────────5 ║
║ │ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ │ ║
║ └────LABEL──┬──RECORD──┬────┬───┬──┬──STANDARD──┬────┘ ║
║ \ │ └─IS─┘ │ └──OMITTED───┘ \ ║
║ \ └──RECORDS─┬─────┬──┘ \ ║
║ \ └─ARE─┘ \ ║
║ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ║
║ ║
║ ║
║ 5────┬─────────────────────────────────────────────────┬──.──────────────────5% ║
║ │ ┌───────────┐ │ ║
║ │ 6 │ │ ║
║ └──DATA──┬──RECORD──┬────┬───┬─────nomb-fech-2─┴──┘ ║
║ │ └─IS─┘ │ ║
║ └──RECORDS─┬─────┬──┘ ║
║ └─ARE─┘ ║
║ ║
║ ║
╚═══════════════════════════════════════════════════════════════════════════════════╝
División de Procedimiento
╔═════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 55───ACCEPT────identific.-1────FROM────nomb-nemotéc.──────────────────────────5 ║
║ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────────────────────┬───────────────────5% ║
║ └──FOR──┬──identific.-2──┬──┬────────────────────┬──┘ ║
║ └──literal-1─────┘ └──FOR──nomb-arch-1──┘ ║
║ ║
╚═════════════════════════════════════════════════════════════════════════════════╝
Este formato de la instrucción ACCEPT sólo puede utilizarse para archivos con una
organización de TRANSACTION. El nombre mnemotécnico debe asociarse al
nombre de función ATTRIBUTE-DATA en el párrafo SPECIAL-NAMES.
Si se omiten ambas frases FOR (indicando que se está utilizando el archivo por
omisión TRANSACTION), la instrucción ACCEPT utiliza el dispositivo de programa
desde el que se realizó más recientemente una operación READ, WRITE,
REWRITE o ACCEPT (Datos de Atributo). Si la única operación anterior del
archivo fue una OPEN, la instrucción ACCEPT utiliza el dispositivo de programa
adquirido implícitamente por el archivo cuando éste se abrió. Cuando se omiten
ambas frases FOR, ha de haberse adquirido un dispositivo de programa con el fin
de utilizar este formato particular de la instrucción ACCEPT.
Instrucción ACQUIRE
La instrucción ACQUIRE adquiere un dispositivo de programa para un archivo
TRANSACTION.
╔═════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 55───ACQUIRE──┬──identific.──┬──FOR──nomb-arch──────────────────────────────5% ║
║ └──literal─────┘ ║
║ ║
╚═════════════════════════════════════════════════════════════════════════════════╝
El literal o los contenidos del identificador indican el nombre del dispositivo de pro-
grama que debe adquirir el archivo especificado. Si se especifica el literal, debe
ser no numérico con una longitud de 10 caracteres o menos. Si se especifica el
identificador, debe hacer referencia a un ítem de datos alfanuméricos con una lon-
gitud de 10 caracteres o menor.
Para una descripción de las condiciones que deben cumplirse antes de que se
pueda adquirir un dispositivo de comunicaciones, consulte la publicación ICF
Programmer’s Guide. Para más información acerca de los requisitos para panta-
llas, consulte la publicación Guía para la Gestión de Datos.
Instrucción CLOSE
La instrucción CLOSE termina el proceso de volúmenes y archivos, con bloqueo
opcional donde sea procedente.
╔═════════════════════════════════════════════════════════════════════════════════╗
║ ┌──────────────────────────────┐ ║
║ 6 │ ║
║ 55───CLOSE──nomb-arch-1──┬─────────────────┼─────────────────────────────────5% ║
║ └──┬──────┬─LOCK──┘ ║
║ └─WITH─┘ ║
╚═════════════════════════════════════════════════════════════════════════════════╝
Instrucción DROP
╔═════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 55───DROP──┬─identific.─┬──FROM──nomb-arch───────────────────────────────────5% ║
║ └─literal────┘ ║
║ ║
╚═════════════════════════════════════════════════════════════════════════════════╝
Instrucción OPEN
La instrucción OPEN inicia el proceso de archivos.
╔═════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ ┌─────────┐ ║
║ 6 │ ║
║ 55───OPEN I-O──nomb-arch─┴───────────────────────────────────────────────────5% ║
║ ║
╚═════════════════════════════════════════════════════════════════════════════════╝
Frase FORMAT
El literal o identificador especificado debe ser una serie de caracteres con una lon-
gitud de 10 caracteres o menos.
Varios registros de datos, cada uno con un formato distinto, pueden estar activos
de forma simultánea para un archivo TRANSACTION. Si se especifica la frase
FORMAT, debe especificar un nombre de formato válido que se define para el
sistema, y debe realizarse la operación de E/S en un registro de datos del mismo
formato. Si el formato es un nombre no válido o si no existe, el ítem de datos FILE
STATUS, si se especifica, se establece con un valor 9K y el contenido del área de
registro es indefinido.
Cuando se lee un registro de datos, los indicadores pueden leerse con él. Los
indicadores pueden utilizarse para pasar información acerca de los registros de
datos y y de su entrada en el programa.
Frase SUBFILE
Si se especifica la frase SUBFILE, ésta indica que todos los formatos referenciados
por la instrucción son subarchivos. Cuando no se especifica SUBFILE en una ins-
trucción TRANSACTION I/O, indica que ninguno de los formatos referenciados por
la instrucción son subarchivos. Esta información no se verifica en tiempo de com-
pilación. Si se especifica de manera incorrecta, el archivo se procesa como una
serie de operaciones de entrada/salida directamente al dispositivo de pantalla.
Cuando el nombre de formato especificado exista como un formato de archivo de
pantalla, las operaciones READ/WRITE se realizan de modo satisfactorio.
Frase TERMINAL
Cuando se especifica la frase TERMINAL, indica que un dispositivo de programa
específico se va a utilizar para una operación READ, WRITE o REWRITE en un
archivo TRANSACTION.
Para una instrucción READ con la frase TERMINAL y la frase NO DATA especifi-
cadas, se ejecuta la instrucción imperativa en la frase NO DATA sólo si los datos
no están inmediatamente disponibles desde el dispositivo de programa especifi-
cado mediante la frase TERMINAL.
Instrucción READ
La instrucción READ hace que un registro esté disponible desde un dispositivo,
utilizando un formato designado. Si el formato es un subarchivo, la instrucción
READ hace que un registro específico esté disponible desde dicho subarchivo.
╔═════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 55───READ──nomb-arch──┬────────┬──────────────────────────────────────────────5 ║
║ └─RECORD─┘ ║
║ ║
║ 5────┬──────────────────────┬─────────────────────────────────────────────────5 ║
║ └──INTO──identific.-1──┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────┬────────────────────────────────────5 ║
║ └──FORMAT─┬────┬──┬─identific.-2─┬──┘ ║
║ └─IS─┘ └─literal-1────┘ ║
║ ║
║ ║
║ 5────┬─────────────────────────────────────┬──────────────────────────────────5 ║
║ └──TERMINAL─┬────┬──┬─identific.-3─┬──┘ ║
║ └─IS─┘ └─literal-2────┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────────┬────────────────────────────────5 ║
║ └─┬─INDICATOR──┬──┬─────┬──identific.-4─┘ ║
║ ├─INDICATORS─┤ ├─IS──┤ ║
║ └─INDIC──────┘ └─ARE─┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────┬────────────────────────────────────5 ║
║ └──NO DATA──sentencia-imperativa-1──┘ ║
║ ║
║ ║
║ 5────┬────────────────────────────────────┬───────────────────────────────────5 ║
║ └─┬────┬─END──sentencia-imperativa-2─┘ ║
║ └─AT─┘ ║
║ ║
║ ║
║ 5────┬──────────────────────────────────────────┬──┬──────────┬──────────────5% ║
║ └──NOT─┬────┬─END──sentencia-imperativa-3──┘ └─END-READ─┘ ║
║ └─AT─┘ ║
║ ║
╚═════════════════════════════════════════════════════════════════════════════════╝
Este tipo de READ recibe datos del primer dispositivo de programa invitado que
tenga datos disponibles. Los dispositivos de programa invitados son estaciones de
trabajo u otros dispositivos de comunicaciones que han sido invitados para enviar
entradas. La invitación se realiza escribiendo el dispositivo de programa con un
formato que especifique la palabra clave INVITE de DDS. Una vez que se ha leído
un dispositivo de programa invitado, ya no queda invitado por más tiempo. Este
dispositivo de programa no se utilizará para la entradas mediante otra instrucción
READ a menos que se vuelva a invitar, o a menos que se le dirija una instrucción
READ especificando la frase TERMINAL o la frase FORMAT.
2 Si se especifica la frase y el ítem de datos o literal está en blanco, la frase se trata en tiempo de ejecución como si no se hubiera
especificado.
Esta instrucción READ puede completarse sin devolver ningún dato en los casos
siguientes:
Si no hay dispositivos invitados.
Si se produce una cancelación controlada del trabajo. Esto da como resultado
un valor de estado de archivo de 9A y un valor de código de retorno
principal/secundario de 0309.
Si se omite la frase NO DATA y expira el tiempo de espera especificado. Esto
da como resultado un valor de estado de archivo de 00 y un valor de código
de retorno principal/secundario de 0310.
Si el tiempo de espera especificado es el valor entrado en el parámetro
WAITRCD para el archivo.
Si se especifica la frase NO DATA y no hay datos inmediatamente disponibles
cuando se procesa la READ.
Esta función READ puede utilizarse para comprobar periódicamente si los datos
están disponibles desde un dispositivo de programa particular (o bien el dispositivo
de programa por omisión o uno especificado mediante la frase TERMINAL). Esta
comprobación de los datos se realiza de la manera siguiente:
1. El dispositivo de programa se determina de la manera siguiente:
a. Si se ha omitido la frase TERMINAL o contiene espacios en blanco, se
utiliza el dispositivo de programa por omisión. El dispositivo de programa
por omisión es el que se utiliza por la instrucción READ, WRITE,
REWRITE, ACQUIRE o DROP que se intentó por última vez. Si no se
emitió previamente ninguna de estas operaciones de E/S, el dispositivo de
programa por omisión es el primer dispositivo de programa adquirido.
b. Si se especificó la frase TERMINAL, se utiliza el dispositivo de programa
indicado.
2. Se efectúa una comprobación para determinar si los datos están disponibles y
si el dispositivo de programa está invitado.
Esta instrucción READ siempre espera a que los datos estén disponibles. Incluso
si el trabajo recibe una cancelación controlada o se especifica un tiempo
WAITRCD para el archivo, el programa nunca recuperará el control de la instruc-
ción READ. Esta operación READ se realiza de la manera siguiente:
1. El dispositivo de programa se determina así:
a. Si se omite la frase TERMINAL o contiene un valor en blanco, se utiliza el
dispositivo de programa por omisión. El dispositivo de programa por
omisión es el dispositivo de programa que utiliza la instrucción READ,
WRITE, REWRITE, ACQUIRE, DROP o ACCEPT (Datos de Atributo) que
se intentó por última vez. Si no se realizó ninguna de estas operaciones,
se utiliza el dispositivo de programa adquirido implícitamente al abrir el
archivo. Si no hay dispositivos adquiridos, se dará la condición AT END.
b. Si se especifica la frase TERMINAL, se utiliza el dispositivo de programa
indicado.
2. El formato de registro se determina de la manera siguiente:
a. Si se omite la frase FORMAT o contiene espacios en blanco, el formato de
registro devuelto lo determina el sistema. Para obtener información acerca
de cómo se calcula el formato de registro para los dispositivos de estación
de trabajo, consulte la publicación Guía para la Gestión de Datos. Para
obtener información acerca de cómo se determina el formato de registro
para las comunicaciones, consulte la sección del parámetro FMTSLT de
los mandatos ADDICFDEVE y OVRICFDEVE en la publicación ICF
Programmer’s Guide.
b. Si se especifica la frase FORMAT, se devuelve el formato de registro indi-
cado. Si los datos disponibles no coinciden con el formato de registro soli-
citado, se establece un estado de archivo de 9G.
3. El proceso del programa se detiene hasta que los datos están disponibles.
Los datos se devuelven al área de registro después de que se ejecute la ins-
trucción READ. Si el dispositivo de programa se invitó anteriormente, no per-
manecerá invitado por más tiempo después de esta instrucción READ.
Frase INTO
La frase INTO puede especificarse si:
Sólo hay una descripción de registro subordinada a la entrada de descripción
del archivo,
o bien
Todos los nombres de registros asociados al nombre de archivo y el ítem de
datos al que hace referencia el identificador-1 describen un ítem de grupo o un
ítem alfanumérico elemental.
Frase NO DATA
Cuando se especifica la frase NO DATA, la instrucción READ determina si los
datos están inmediatamente disponibles. Si hay datos disponibles, se devuelven al
área de registros. Si no hay datos inmediatamente disponibles, se procesa la ins-
trucción imperativa NO DATA. La frase NO DATA evita que la instrucción READ
espere a que los datos estén disponibles.
Frase TERMINAL
El literal-2 o el identificador-3 especifican el nombre del dispositivo de programa.
Si se especifica el literal-2, debe ser no numérico con una longitud de 10 carac-
teres o menos. Si se especifica el identificador-3, debe referirse a un ítem de
datos alfanuméricos con una longitud de 10 caracteres o menos. El dispositivo de
programa debe haberse adquirido antes de que se procese la instrucción READ.
Si el identificador-3 contiene espacios en blanco, se procesa la instrucción READ
como si se omitiera la frase TERMINAL. Para un archivo de un solo dispositivo,
puede omitirse la frase TERMINAL. Se asume que el dispositivo de programa es
aquel dispositivo único.
Frase AT END
La instrucción imperativa-2 se realiza cuando se detecta la condición AT END.
Nota: Una condición AT END se produce en los casos siguientes:
Durante una instrucción READ para un archivo con acceso secuencial cuando
no hay ningún registro lógico siguiente en el archivo, o cuando el número de
dígitos significativos en el número relativo de registro es mayor que el tamaño
del ítem de datos de clave relativa, o cuando no se presenta ningún archivo de
entrada opcional.
Durante una instrucción RETURN cuando no hay registros lógicos para la clasi-
ficación asociada o el archivo de fusión.
Durante una instrucción SEARCH cuando la operación de búsqueda finaliza sin
satisfacer la condición especificada en cualquier frase WHEN asociada.
╔═════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 55───READ SUBFILE──nomb-arch──────────────────────────────────────────────────5 ║
║ ║
║ ║
║ 5────┬────────────────────┬──┬────────┬───────────────────────────────────────5 ║
║ └─┬──────┬─MODIFIED──┘ └─RECORD─┘ ║
║ └─NEXT─┘ ║
║ ║
║ 5────┬──────────────────────┬─────────────────────────────────────────────────5 ║
║ └──INTO──identific.-1──┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────┬────────────────────────────────────5 ║
║ └──FORMAT─┬────┬──┬─identific.-2─┬──┘ ║
║ └─IS─┘ └─literal-1────┘ ║
║ ║
║ ║
║ 5────TERMINAL─┬────┬──┬─identific.-3─┬────────────────────────────────────────5 ║
║ └─IS─┘ └─literal-2────┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────────┬────────────────────────────────5 ║
║ └─┬─INDICATOR──┬──┬─────┬──identific.-4─┘ ║
║ ├─INDICATORS─┤ ├─IS──┤ ║
║ └─INDIC──────┘ └─ARE─┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────────────┬────────────────────────────5 ║
║ └──INVALID─┬─────┬──sentencia-imperativa-1──┘ ║
║ └─KEY─┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────────────────┬────────────────────────5 ║
║ └──NOT INVALID─┬─────┬──sentencia-imperativa-2──┘ ║
║ └─KEY─┘ ║
║ ║
║ 5────┬────────────────────────────────────┬───────────────────────────────────5 ║
║ └─┬────┬─END──sentencia-imperativa-3─┘ ║
║ └─AT─┘ ║
║ ║
║ ║
║ 5────┬──────────────────────────────────────────┬──┬──────────┬──────────────5% ║
║ └──NOT─┬────┬─END──sentencia-imperativa-4──┘ └─END-READ─┘ ║
║ └─AT─┘ ║
║ ║
╚═════════════════════════════════════════════════════════════════════════════════╝
El formato 5 sólo se utiliza para leer un formato que sea un registro de subarchivo.
La frase AT END sólo puede utilizarse cuando se especifica la frase NEXT
MODIFIED. La frase INVALID KEY no debe utilizarse cuando se especifica la
frase NEXT MODIFIED.
El valor del ítem de datos RELATIVE KEY se actualiza para reflejar el número
relativo de registro del registro disponible para el programa.
Frase FORMAT
Cuando no se especifica un nombre de formato, el formato utilizado es el último
formato de registro grabado en el dispositivo de pantalla que contiene campos de
entrada, campos de entrada/salida o campos ocultos. Si no existe tal formato para
el archivo de pantalla, el formato utilizado es el formato de registro de la última
operación WRITE para el dispositivo de pantalla.
Nota: Un campo de entrada es un campo especificado en un archivo de pantalla
o en un archivo de base de datos que se reserva para la información sumi-
nistrada por el usuario
Para asegurarse de que los resultados sean correctos, especifique siempre la frase
FORMAT para archivos con múltiples formatos. Para más información acerca de
la frase FORMAT, consulte la División de Procedimientos, en “Recursos Comunes
de Proceso” en la página 190.
Frase TERMINAL
Consulte el Formato 4 de la instrucción READ para obtener las consideraciones
generales concernientes a la frase TERMINAL.
| Para una instrucción READ con Formato 5, especifique la frase INVALID KEY si no
se especifica la frase NEXT MODIFIED y si no hay el procedimiento USE perti-
nente especificado para el nombre de archivo.
Frase AT END
Si se especifica la frase NEXT MODIFIED y no hay ningún registro modificado por
el usuario en el subarchivo, existe la condición AT END y la operación READ no es
satisfactoria.
Instrucción REWRITE
La instrucción REWRITE se utiliza para sustituir un registro de subarchivo que ya
existe en el subarchivo.
╔═════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 55───REWRITE SUBFILE──nomb-regist-1─┬──────────────────────┬────────────────5 ║
║ └──FROM──identific.-1──┘ ║
║ ║
║ ║
║ 5───FORMAT─┬────┬──┬─identific.-2─┬───────────────────────────────────────────5 ║
║ └─IS─┘ └─literal-1────┘ ║
║ ║
║ ║
║ 5────┬─────────────────────────────────────┬──────────────────────────────────5 ║
║ └──TERMINAL─┬────┬──┬─identific.-3─┬──┘ ║
║ └─IS─┘ └─literal-2────┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────────┬────────────────────────────────5 ║
║ └─┬─INDICATOR──┬──┬─────┬──identific.-4─┘ ║
║ ├─INDICATORS─┤ ├─IS──┤ ║
║ └─INDIC──────┘ └─ARE─┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────────────┬────────────────────────────5 ║
║ └──INVALID─┬─────┬──sentencia-imperativa-1──┘ ║
║ └─KEY─┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────────────────┬─┬─────────────┬───────5% ║
║ └──NOT INVALID─┬─────┬──sentencia-imperativa-2──┘ └─END-REWRITE─┘ ║
║ └─KEY─┘ ║
║ ║
╚═════════════════════════════════════════════════════════════════════════════════╝
Frase FORMAT
El formato de registro especificado en la frase FORMAT debe ser el formato de
registro accedido en la operación READ anterior. El literal-1 o el contenido del
identificador-2 debe ser el nombre del formato del subarchivo accedido en la ante-
rior instrucción READ. Para más información acerca de la frase FORMAT, con-
sulte el apartado “Recursos Comunes de Proceso” en la página 190.
Frase END-REWRITE
La frase END-REWRITE sirve para delimitar explícitamente el ámbito de la instruc-
ción.
╔═════════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 55───WRITE─nombre-registro-1────────────────────┬─────────────────────────────5 ║
║ └─FROM──identific.-1─┘ ║
║ ║
║ ║
║ 5────FORMAT─┬────┬──┬─identific.-2─┬──────────────────────────────────────────5 ║
║ └─IS─┘ └─literal-1────┘ ║
║ ║
║ 5────┬─────────────────────────────────────┬──────────────────────────────────5 ║
║ └──TERMINAL─┬────┬──┬─identific.-3─┬──┘ ║
║ └─IS─┘ └─literal-2────┘ ║
║ ║
║ 5────┬───────────────────────────────────────────────┬────────────────────────5 ║
║ └──STARTING─┬────┬──┬──────┬──┬─identific.-4─┬──┘ ║
║ └─AT─┘ └─LINE─┘ └─literal-3────┘ ║
║ ║
║ ║
║ 5────┬────────────────────────────────────────────────────────────────────────5 ± ║
║ └──┬─BEFORE─┬──ROLLING──┬───────┬──┬─identific.-5─┬──────────────────────5 ² ║
║ └─AFTER──┘ ├─LINES─┤ └─literal-4────┘ ║
║ └─LINE──┘ ║
║ ║
║ ║
║ ± 5──────────────────────────────────────────────────────────────────────────┬──5 ║
║ ² 5────┬─────────┬──┬─identific.-6─┬──┬─UP───┬──┬─identific.-7─┬──┬───────┬──┘ ║
║ ├─THROUGH─┤ └─literal-5────┘ └─DOWN─┘ └─literal-6────┘ ├─LINES─┤ ║
║ └─THRU────┘ └─LINE──┘ ║
║ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────────┬──┬───────────┬────────────────5% ║
║ └─┬─INDICATOR──┬──┬─────┬──identific.-8─┘ └─END-WRITE─┘ ║
║ ├─INDICATORS─┤ ├─IS──┤ ║
║ └─INDIC──────┘ └─ARE─┘ ║
║ ║
╚═════════════════════════════════════════════════════════════════════════════════════╝
Frase TERMINAL
La frase TERMINAL especifica los dispositivos de programa a los que va a enviar
el registro de salida.
Frase STARTING
La frase STARTING especifica el número inicial de línea para los formatos de
registro que utilicen la palabra clave línea de comienzo variable. Esta frase sólo es
válida para dispositivos de pantalla.
Donde:
Línea real es el número real de línea
Línea inicial es el número de línea inicial especificado en el programa
Línea inicial de las DDS es el número de línea especificado en las posiciones
39 a 41 del formulario Especificaciones de Descripción de Datos.
Si el valor especificado para la frase STARTING está dentro del área de pantalla,
se ignora cualquier campo fuera del área de pantalla.
Vea la publicación DDS Reference para obtener más información acerca de las
palabras clave SLNO(*VAR) y CLRL.
Frase ROLLING
La frase ROLLING le permite mover líneas visualizadas en la pantalla de la
estación de trabajo. Todas o algunas líneas de la pantalla pueden girarse hacia
arriba o hacia abajo. Se borran las líneas que dejan desocupadas las líneas
giradas, y pueden tener otro formato de pantalla escritos en ellas. Esta frase sólo
es válida para dispositivos de pantalla.
Una vez que las líneas se han girado, los campos en estas líneas retienen sus
atributos de pantalla de las DDS (por ejemplo, el subrayado), pero pierden sus atri-
butos de utilización de las DDS (por ejemplo, la posibilidad de entrada). Los
campos en líneas que se graban y después se giran (frase BEFORE ROLLING)
también pierden sus atributos de utilización.
┌─────────────────────────────────────────────────────────────────────┐
│ │
│ ACTUALIZACIÓN DE REGISTRO DE PEDIDO DE CLIENTE │ Línea 3
│ │
│ │
│ PARA FINALIZAR ESTE TRABAJO, PULSE F7 │ Línea 8
│ │
│ │
│ INTRODUZCA SU NUMERO DE OPERADOR: ___ │ Línea 13
│ ─ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ─ %┐
│ │ Línea 14 │
│ ENTRE EL NUMERO CLIENTE: _____ │ Línea 15 │
│ │ │
│ PULSE F3 PARA VISUALIZAR MENU OPCIÓN │ Línea 17 ├───┐
│ │ │ │
│ │ │ │
│ │ Línea 2ð │ │
│ ─ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ─ ── ── ── ── ── ─ %┘ │
│ │ │
│ │ ┌─────────┘
└─────────────────────────────────────────────────────────────────────┘ │
│
│ Estas 7 líneas de
PANTALLA DESPUÉS DEL PROCESO DE LA INSTRUCCIÓN WRITE └5FMT1 se girarán
2 líneas hacia
┌─────────────────────────────────────────────────────────────────────┐ abajo.
│ │
│ ACTUALIZACIÓN DE REGISTRO DE PEDIDO DE CLIENTE │ Línea 3
│ │
│ │
│ PARA FINALIZAR ESTE TRABAJO, PULSE F7 │ Línea 8
│ │
│ │
│ ─ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── %┐
│ NÚMERO ARTÍCULO PEDIDO: ______ │ Línea 12 │
│ │ ├─┐
│ CANTIDAD PEDIDA: ______ │ Línea 14 │ │
│ ─ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── %┘ │
│ │ │
│ ENTRE NÚMERO CLIENTE: XXXXX │ Línea 17 │
│ │ │
│ PULSE F3 PARA VISUALIZAR MENÚ OPCIÓN │ Línea 19 │
│ │ │
│ │ ┌───────┘
│ │ │
└─────────────────────────────────────────────────────────────────────┘ │
│ Estas 3 líneas de
└5FMT2 se han grabado
sobre las líneas
anteriores.
╔════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 55───WRITE SUBFILE─nombre-registro-1──────────────────────┬─────────────5 ║
║ └──FROM──identific.-1──┘ ║
║ ║
║ ║
║ 5────FORMAT─┬────┬──┬─identific.-2─┬────────────────────────────────────5 ║
║ └─IS─┘ └─literal-1────┘ ║
║ ║
║ ║
║ 5────┬─────────────────────────────────────┬────────────────────────────5 ║
║ └──TERMINAL─┬────┬──┬─identific.-3─┬──┘ ║
║ └─IS─┘ └─literal-2────┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────────┬──────────────────────────5 ║
║ └─┬─INDICATOR──┬──┬─────┬──identific.-4─┘ ║
║ ├─INDICATORS─┤ ├─IS──┤ ║
║ └─INDIC──────┘ └─ARE─┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────────────┬──────────────────────5 ║
║ └──INVALID─┬─────┬──sentencia-imperativa-1──┘ ║
║ └─KEY─┘ ║
║ ║
║ ║
║ 5────┬───────────────────────────────────────────────┬─┬───────────┬────5% ║
║ └──NOT INVALID─┬─────┬──sentencia-imperativa-2──┘ └─END-WRITE─┘ ║
║ └─KEY─┘ ║
║ ║
╚════════════════════════════════════════════════════════════════════════════╝
Frase TERMINAL
Consulte la explicación que sigue al Formato 4 para ver las consideraciones gene-
rales concernientes a la frase TERMINAL.
Frase END-WRITE
La frase END-WRITE sirve para delimitar explícitamente el ámbito de la instruc-
ción.
Instrucción USE
La instrucción USE especifica los procedimientos para el manejo de errores de
entrada/salida que existen junto con los procedimientos estándar proporcionados
por el sistema de control de entrada/salida.
Formato
╔═════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 55───USE AFTER──┬──────────┬──┬─EXCEPTION─┬───────────────────────────────────5 ║
║ └─STANDARD─┘ └─ERROR─────┘ ║
║ ║
║ ║
║ ║
║ ┌───────────┐ ║
║ 6 │ ║
║ 5────PROCEDURE──┬────┬────┬────nomb-arch-1─┴──┬──────────────────────────────5% ║
║ └─ON─┘ └────I-O────────────┘ ║
║ ║
╚═════════════════════════════════════════════════════════════════════════════════╝
G X 2 1 - 9 8 9 1 - 0 U M / 0 5 0 *
A S / 4 0 0 E S P E C I F I C A C I O N E S D E D E S C R I P C I O N D E D AT O S Impreso en España
Inter national B usiness Machines
*El número de hojas por área de relleno puede variar ligeramente.
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
Datos/Desplazamiento Teclado
(b/O /I/B/H/M/N/P)
Ubicación
(A/O/*)
Espec
Nombre Condición
Formula rio
And/Or/Coment.
Nú mero d e
U t i l i z a c/i ó n
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
de
No (N)
No (N)
No (N)
Línea P o s
Tipo
Tipo
Tipo
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A * A R C H I VO MA E S T R O D E CO N S U L T A D E C L I E N T E - - C U S M I NQ
A *
A R E F ( CU SMS T P )
A CA 0 3 ( 1 5 ' F I N D E P R OG R A M A ' )
A 1 3 ' CO N S U L T A MA E S T R A CL I E N T E S '
A CU S T R I 3 2 /
0
A T R ADO P U L S E R E S T AUR AR , L U E GO I N T RO +
A D UC I R N UME R O VA L I DO ' 9 9 )
A 5 3 ' U T I L I CE F 3 P AR A F I NA L I Z AR P R OG R A M A , +
A U T I L I CE L A T EC L A I N T RO P AR A VO L V E R +
A A SOL I C I T AR P AN T A L L A '
A R CU S F L D S T E X T ( ' P AN T A L L A D E CL I E N T E ' )
A CA 0 3 ( 1 5 ' F I N D E P R OG R A M A ' )
A OV E R L A Y
A 8 3 ' N OM B R E '
A N AM E R 8 1 1
A 9 3 ' D I R E CC I ON '
A ADD R R 9
/ 1 1
A 1 /
0 3 ' C I U D AD '
A C I T Y R 1 0 1 1
A 1 1 3 ' P R OV I NC I A '
A S T A T E R 1 1 1 1
A Z I P R 1 1 3 1
A 1 2 3 ' B A L A NC E A / R '
A AR B A L R 1 2 1 7
Figura 68. Ejemplo de Programa de Consulta TRANSACTION que Utiliza un Solo Dispositivo de Pantalla
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
Datos/Desplazamiento Teclado
(b/O /I/B/H/M/N/P)
Ubicación
(A/O/*)
Espec
Nombre Condición
Formula rio
And/Or/Coment.
Referencia (R)
Nombre
Nú mero d e
Utilización
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
de
No (N)
No (N)
No (N)
Línea P o s
Tipo
Tipo
Tipo
1 2 3 4 5 6 7 8 9 10 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A * * F I S I CO CU SMS T P A R C H I VO MA E S T R O D E CL I E N T E S
A N AM E 2 5 T E X T ( ' N OM B R E D E C L I E N T E ' )
A S T A T E 2 T E X T ( ' P R OV I NC I A ' )
A S R H C OD 6 T E X T ( ' C O D I GO B U S QU E DA N UM C L I E N T E ' )
A CU S T Y P 1 0 0 / / T E X T ( ' T I PO C L I E N T E 1 = GO B 2 = P L AN +
A 3 = B U S 4 = P V T 5 =O T ' )
A AR B A L 8 0 2 / T E X T ( ' S A L DO CU E N T A S P OR CO B R A R ' )
A L S T AM T 8 0 2 / T E X T ( ' U L T I MO I MP OR T E P AG A D O E N A / R ' )
A S L S Y R 1 0 0 /
2 / T E X T ( ' V E N T A S C L I E N T E E S T E A ÑO ' )
A S L S L Y R 1 0 0 /
2 / T E X T ( ' V E N T A S C L I E N T E A ÑO P A S ADO ' )
A K CU S T
Figura 70 (Parte 1 de 2). Listado Fuente de un Programa de Consulta TRANSACTION que Utiliza un Solo Disposi-
tivo de Pantalla
Figura 70 (Parte 2 de 2). Listado Fuente de un Programa de Consulta TRANSACTION que Utiliza un Solo Disposi-
tivo de Pantalla
Cuando se activa el indicador 15, el programa cierra todos los archivos y procesa
la instrucción EXIT PROGRAM. El programa devuelve el control a la persona que
llamó al programa COBOL.
à ð
Consulta Maestro de Clientes
à ð
Consulta Maestro de Clientes
Número Cliente
XMPLE773 visualiza todos los registros de detalle del pedido para el número de
pedido solicitado. El programa solicita al usuario que entre el número de pedido
que debe revisarse. El número de pedido se comprueba con el archivo de cabe-
cera de pedido, ORDHDRP. Si existe el número de pedido, el número de cliente
accedido desde el archivo de cabecera de pedido se comprueba con el archivo
maestro de clientes, CUSMSTP. Se leen y se graban en el subarchivo todos los
registros de detalle de pedido en ORDDTLP para el pedido solicitado. Se procesa
una grabación para el formato de registro de control de subarchivo, y los registros
de detalle de pedido en el subarchivo se visualizan en la pantalla para que los
revise el usuario. El programa finaliza pulsando F12.
T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )
Condicionamiento
U t i l i z a c/i ó n ( b / O / I / B / H / M / N / P )
And/Or/Com ent. (A/O/*)
Nombre Condición
Tipo de Formula rio
Referencia (R)
Nú mero d e
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea Pos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
A * * P H Y S I CA L OR DD T L P A R C H I VO DE DE TAL L E DE P E D I DO
A T E X T ( ' U B I C AC I ON A L MA C E N ' )
A *
A R OR DD T L T E X T ( ' R EG I S T RO DE TAL L E P E D I DO ' )
A *
A CU S T 5 CH E CK ( MF )
A CO L H D G ( ' C L I E N T E ' ' N UME R O ' )
A *
A OR D E R N 5 /0 CO L H D G ( ' P E D I D O ' ' N UME R O ' )
A *
A L I N N UM 3 /0
A CO L H D G ( ' L I N E A ' ' NO ' )
A T E X T ( ' N UM L I NEA DE L I NEA EN P E D I DO ' +
A )
A *
A I T EM 5 /0 / )
CH E CK ( M1 0
A CO L H D G ( ' I T E M ' ' N UME R O ' )
A Q T YOR D 3 /0
A CO L H D G ( ' C A N T I D A D ' ' P E D I DA ' )
A T E X T ( ' CAN T I D AD P ED I DA ' )
A *
A D E SCR P 3 /0 CO L H D G ( ' D E S C R I P C I ON I T EM ' )
A *
A P R I CE 6 2 CM P ( G T / )
0
A CO L H D G ( ' P R E C I O ' )
A T E X T ( ' PR EC I O VENTA ' )
A E D T CD E ( J )
A E X T ENS 8 2 CO L H D G ( ' E X T E N S I ON ' )
A T E X T ( ' CA L CU L O I MP OR T E DE PR EC I O X+
A Q T Y OR D ' )
A *
A W H S L OC 3 CH E CK ( MF )
A CO L H D G ( ' B I N ' ' NO . ' )
A *
A OR DD A T 6 /0 T E X T ( ' I N T R OD U C I D O E L P E D I DO+
A DE F E CHA ' )
A CU S T Y P 1 /0 R A NG E ( 1 5 )
A CO L H D G ( ' C L I E N ' ' T I PO ' )
A T E X T ( ' T I PO CL I EN T E 1 = GO B 2 = P L AN +
A 3=B U S 4=PV T 5 =O T ' )
A *
A S TA T E 2 CH E CK ( MF )
A CO L H D G ( ' P R O V I NC I A ' )
A *
A *
A AC T M T H 2 /0 CO L H D G ( ' M E S ' ' CO N T ' )
A T E X T ( ' ME S CON T A B L E DE VEN TA ' )
A *
A AC T Y R 2 /0 CO L H D G ( ' A ÑO ' ' CO N T ' )
A T E X T ( ' A ÑO CON T A B L E DE VEN TA ' )
A K OR D E R N
A K L I N N UM
A
Figura 71 (Parte 1 de 3). Especificaciones de Descripción de Datos para un Programa de Consulta de Pedidos
Ub icación
U t i l i z a c/i ó n ( b / O / I / B / H / M / N / P )
And /Or/Coment. (A/O/*)
Nombre Condición
Tipo de Formulario
Referencia ( R)
Nú mero de
Secuencia
Posiciones
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea Pos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
A* * /
O R D I N QD R E V I S I ON DE P E D I DO E X I S T ENT E
A R S UB 1 S F L
A I T EM 5 /0 1 /0 2 T E X T ( ' N UM E R O AR T I CU L O ' )
A Q T Y OR D 3 /0 1 /0 9 T E X T ( ' CA N T I D AD P ED I DA ' )
A D E SCR P /
30 1 /0 1 4 T E X T ( ' D E S C R I P C I ON I T EM ' )
A P R I CE 6 2 1 /0 4 6 T E X T ( ' PR EC I O VENTA ' )
A E X T ENS 8 2 1 /0 5 6 E D T CD E ( J )
A T E X T ( ' CA L CU L O V A L OR DE +
A P E D I DO Q T Y OR D X ' )
A R S UBC T L 1 S F LCT L ( S UB 1 )
A 58 S F LCL R
A 57 S F LDSP
A N5 8 S F L D S PC T L
A S F L S I Z ( 57 )
A S F L P AG ( 1 4 )
A 57 S F L E ND
A OV E R L A Y
A L OC K
A N4 5
AON 4 7 ROL L UP ( 9 7 ' CO N T I N U A R V I S UAL I Z . ' )
A CA 1 2 ( 9 8 ' F I N DE P R OG R AM A ' )
A S E TOF F ( 5 7 ' S U B A R C H I VO DE P AN T A L L A ' )
A S E TOF F ( 5 8 ' D E S AC = V I S U . S UBC T L 1 AC = +
A B OR R A R S U B A R C H I VO ' )
A 1 2 ' CON S U L T A P E D I DO E X I S T ENT E '
A 3 2 ' P E D I DO '
A OR D E R N 5Y /0 B 3 8 T E X T ( ' N UM E R O P E D I DO ' )
A 6 1 E R R M S G ( ' N UM P E D I DO NO E NCON T R AD O ' 6 1 )
A 47 E R RMSG ( ' S I N L I NEA P AR A P E D I DO ' 4 7 )
A 62 E R R M S G ( ' NO S E E NCON T R O R EG I S T RO DE +
A CL I EN T E P AR A E S T E P E D I DO ' 6 2 )
A 4 2 ' F E CHA '
A OR D D A T 6 /0 4 7 T E X T ( ' I N T R OD U C I D O P E D I DO DE F E CHA ' )
A 5 2 ' CL I # '
A CU S T 5 5 9 T E X T ( ' N UM E R O DE CL I ENT E ' )
A N AM E 25 3 1 6 T E X T ( ' N OM B R E DE CL I ENT E ' )
A ADD R 20 4 1 6 T E X T ( ' D I R E CC I ON DE CL I E N T E ' )
A C I T Y 20 5 1 6 T E X T ( ' C I UD AD DE CL I ENT E ' )
A S TAT E 2 6 1 6 T E X T ( ' P R OV I NC I A DE CL I E N T E ' )
A Z I P 5 /0 6 3 1 T E X T ( ' C OD I GO POS T AL ' )
A 1 4 4 ' TOTAL '
A O R D AM T 8 2 1 5 1 T E X T ( ' CA N T I D AD TOTAL DE L P E D I DO EN+
A DO L A R E S ' )
A 2 4 4 ' P R OV I NC I A '
A S T S OR D 12 2 5 1
A 3 4 4 ' AB I E R TO '
A S T S OP N 12 3 5 1
A 4 4 4 ' P E D I DO DE CL I EN T E '
A C U S OR D 15 4 5 9 T E X T ( ' N UM E R O DE P E D I DO DE C OM +
A PRA DE CL I ENT E ' )
A 5 4 4 ' ME D I O E NV I O '
A S HP V I A 15 5 5 9 T E X T ( ' I N S T R U CC I ON E S DE E NV I O ' )
A 6 4 4 ' F E CHA I MP R E S O '
A P R T DA T 6 /0 6 5 7 T E X T ( ' I MP R E S O P E D I DO DE F ECHA ' )
A 7 2 9 ' F AC T U R A '
A I N V N UM 5 /0 7 3 8 T E X T ( ' N UM E R O DE F AC T U R A ' )
A 7 6 4 ' ME S '
A AC T M T H 2 /0 7 6 8 T E X T ( ' ME S CON T A B L E DE VENTA ' )
A 7 7 2 ' A ÑO '
A AC T Y R 2 /0 7 7 7 T E X T ( ' A ÑO CON T A B L E DE VENTA ' )
A 8 2 ' I T EM '
A 8 8 ' CAN T '
A 8 1 4 ' D E S C R I P C I ON I T EM '
A 8 4 6 ' PR EC I O '
A 8 5 5 ' CA L CU L O '
Figura 71 (Parte 2 de 3). Especificaciones de Descripción de Datos para un Programa de Consulta de Pedidos
T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )
Condicionamiento
U t i l i z a c/i ó n ( b / O / I / B / H / M / N / P )
And/Or/Coment. (A/O/*)
Nombre Co ndición
Tipo de Formula rio
N om b re Longitud Funciones
Referencia (R)
Nú mero de
Secuencia
Posiciones
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea Pos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
A* * F I S I CO OR D HD R P A R C H I VO DE CAB E C E R A DE P E D I DO
A R OR D HD R T E X T ( ' R EG I S T RO CA B E C E R A P E D I DO ' )
A CU S T 5 T E X T ( ' N UM E R O DE CL I EN T E ' )
A OR D E R N 5 /0 /0 T E X T ( ' N UM E R O DE P E D I DO ' )
A OR DD A T 6 /0 /0 T E X T ( ' F E CHA I N T R OD U C C I O N P E D I DO ' )
A C U S OR D 15 T E X T ( ' N UM E R O DE P E D I DO COM P R A +
A DE CL I EN T E ' )
A S HPV I A 15 T E X T ( ' I N S T R U CC I ON E S DE E NV I O ' )
A OR D S T S 1 /0 /0 T E X T ( ' E S T ADO P E D I DO 1PCS 2CN T 3CHK +
A 4RDY 5PR T 6 P CK ' )
A O P R N AM 1 /0 T E X T ( ' OP E R ADOR QU E I N T R OD U J O +
A P ED ' )
A O R D AM T 8 /0 2 T E X T ( ' I MP OR T E DE P E D I DO+
A EN DOL AR E S ' )
A CU S T Y P 1 /0 /0 T E X T ( ' T I PO CL I ENT E 1 = GO V 2 = S CH +
A 3=BUS 4=PV T 5 =O T ' )
A I N V N UM 5 /0 /0 T E X T ( ' N UM E R O DE F AC T U R A ' )
A P R T DA T 6 /0 /0 T E X T ( ' F E CHA I MP R E S I ON DE P E D I DO ' )
A OP N S T S 1 /0 /0 T E X T ( ' E S T AP E R T UR A P ED I D 1 =AB R I R +
A 2 =C E R R AR 3 = C A NC E L A R ' )
A TOT L I N 3 /0 /0 T E X T ( ' TOTAL I T EMS L I NEA DE P E D I DO ' )
A AC T M T H 2 /0 /0 T E X T ( ' ME S CON T A B L E DE VENTA ' )
A AC T Y R 2 /0 /0 T E X T ( ' A ÑO CON T A B L E DE VENTA ' )
A S TAT E 2 T E X T ( ' P R OV I NC I A ' )
A AM P A I D 8 /0 2 T E X T ( ' I MP OR T E TOTAL P AG A D O ' )
A K OR D E R N
A
A
A
A
A
A
A
A
A
Figura 71 (Parte 3 de 3). Especificaciones de Descripción de Datos para un Programa de Consulta de Pedidos
Esta pantalla aparece si existen registros de detalle del pedido para el cliente cuyo
número de pedido se ha entrado en la primera pantalla:
á ñ
En este ejemplo, se registran los pagos de los clientes. Se solicita al empleado que
entre uno o más números de clientes y la cantidad de dinero a abonar a cada
cuenta de los clientes. El programa comprueba el número de cliente y acepta
incondicionalmente cualquier pago para un cliente dado que tenga facturas pen-
dientes de pago. Si la cantidad pagada por un cliente resulta excesiva, el
empleado tiene la opción de aceptar o rechazar el pago. Si no existe ningún
registro del cliente, se emite un mensaje de error. Los pagos pueden entrarse
hasta que el empleado finalice el programa pulsando F12.
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
(b/O/I/B/H/M/N/P)
Ubicación
(A/O/*)
Nombre Co ndición
Espec
de Formula rio
And/Or/Coment.
N om b re Longitud Funciones
Referencia (R)
Nombre
Nú mero de
U t i l i z a c/i ó n
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea P os
Tipo
Tipo
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A * * L OG I C O OR D HD R L A R C H I VO D E P E D I DO S D E OR D HD R
A R OR D HD R P F I L E ( OR D HD R P )
A *
A CU S T
A I N V N UM
A OR D E R N
A OR DD A T
A C U S OR D
A S HP V I A
A OR D S T S
A O P R N AM
A O R D AM T
A CU S T Y P
A P R T DA T
A OP N S T S
A T O T L I N
A AC T M T H
A AC T Y R
A S T A T E
A AM P A I D
A K CU S T
A K I N V N UM
Figura 73 (Parte 1 de 3). Ejemplo de una Especificación de Descripción de Datos para un Programa de Actuali-
zación de Pagos
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
(b/O/I/B/H/M/N/P)
Ubicación
(A/O/*)
Nombre Co ndición
Espec
de Formula rio
And/Or/Coment.
N om b re Longitud Funciones
Referencia (R)
Nombre
Nú mero de
U t i l i z a c/i ó n
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea P os
Tipo
Tipo
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A * DD S P AR A A R C H I VO D I S P O S I T I VO P AN T A L /
L A/ P AY UPD T D
A * AC T U A L I Z AC I ON D E P A GO I N T E R AC T I VO D E CU E N T A S P OR CO B R A R
A *
A R S U B F I L E 1 S F L
A *
A AC P P M T 4 A I 5 4 T E X T ( ' AC E P T A R P A GO ' )
A 5 1 D S P A T R ( R I MD T )
A N 5 1 D S P A T R ( ND P R )
A *
A CU S T 5 B 5 1 5 T E X T ( ' N UM E R O D E CL I E N T E ' )
A 5 2 D S P A T R ( R I )
A 5 3 D S P A T R ( ND )
A 5 4 D S P A T R ( P R )
A *
A AM P A I D 8 /
0 2 B 5 2 4 T E X T ( ' I MP OR T E P AG A D O ' )
A CH E CK ( F E )
A AU T O ( R AB )
A CM P ( G T /0 )
A 5 2 D S P A T R ( R I )
A 5 3 D S P A T R ( ND )
A 5 4 D S P A T R ( P R )
A *
A 5 2 D S P A T R ( R I )
A 5 3 D S P A T R ( ND )
A 5 4 D S P A T R ( P R )
A *
A OV R P M T 8 Y 2O 5 7 /0 T E X T ( ' P A GO E X C E S I VO ' )
A E D T CD E ( 1 )
A 5 5 D S P A T R ( B L )
A N 5 6 D S P A T R ( ND )
A *
Figura 73 (Parte 2 de 3). Ejemplo de una Especificación de Descripción de Datos para un Programa de Actuali-
zación de Pagos
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
(b/O/I/B/H/M/N/P)
Ubicación
(A/O/*)
Espec
Nombre Condición
Formula rio
And/Or/Coment.
Referencia (R)
Nombre
Nú mero d e
U t i l i z a c/i ó n
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
de
No (N)
No (N)
No (N)
Línea P os
Tipo
Tipo
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 16 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A * R CO N T R O L 1 T E X T ( ' S U B A R C H I VO D E CO N T R O L ' )
A S F L C T L ( S U B A R C H I VO 1 )
A S F L S I Z ( 1 7 )
A S F L P AG ( 1 7 )
A 6 1 S F L CL R
A 6 2 S F L D S P
A 6 2 S F L D S PC T L
A OV E R L A Y
A L OC K
A *
A CA 1 2 ( 9 8 ' F I N D E AC T U A L I Z AC I ON P A GO ' )
A *
A F 1 2 - F I N D E AC T U A +
A L I Z AC I ON D E P A GO ' )
A *
A 1 7 8 F E CHA E D T CD E ( Y )
A 6 3 3 2 ' AC E P T A R '
A 6 3 4 2 ' P A GO '
A 3 1 4 ' CL I E N T E '
A 3 2 6 ' P A GO '
A 6 4 3 3 7 ' ME N S A J E D E E X C E P C I ON '
A *
A R M E S S AG E 1 T E X T ( ' R EG I S T RO D E ME N S A J E ' )
A OV E R L A Y
A L OC K
A *
A 7 1 2 4 2 ' AC E P T A R V A L OR E S P A GO : ( * NO * S I ) '
A D S P A T R ( R I )
Figura 73 (Parte 3 de 3). Ejemplo de una Especificación de Descripción de Datos para un Programa de Actuali-
zación de Pagos
Cliente Pago
______ __________
______ __________
______ __________
______ __________
______ __________
______ __________
______ __________
______ __________
______ __________
______ __________
______ __________
______ __________
______ __________
______ __________
______ __________
á ñ
El usuario entra los números de cliente y pagos:
à ð
Solicitud de Actualización Pagos de Cliente Fecha ð5/24/94
Cliente Pago
345ðð 2ððð
4ð5ðð 3ðððð
36ððð 25ðð
125ðð 2ðð
22799 45ðð
419ðð 75ðð
1ððð1 5ððð
495ðð 25ðð
133ðð 35ðð
569ðð 4ððð
á ñ
Los pagos excesivos o que tengan números incorrectos de cliente se dejan en la
pantalla y se añaden mensajes adecuados:
á ñ
Indique qué pagos hay que aceptar:
á ñ
Se procesan los pagos aceptados y se visualiza la información de pagos exce-
sivos:
á ñ
Fin de Ampliación de IBM
Debe utilizarse un dispositivo PRINTER (impresora) para los archivos descritos por
programa, y debe utilizarse un dispositivo FORMATFILE para archivos de impre-
sora descritos externamente. El mandato Crear Archivo de Impresión (CRTPRTF)
puede utilizarse para crear un archivo de impresora (consulte el manual CL
Reference para obtener más información sobre el mandato CRTPRTF) o un
archivo de dispositivo de impresora suministrado por IBM, como por ejemplo
QPRINT.
Consulte la publicación DDS Reference para obtener más información sobre DDS
para archivos de impresora descritos externamente. Para obtener más información
acerca de los archivos FORMATFILE, consulte el apartado “Archivos
FORMATFILE” en la página 244.
Cláusula LINAGE
Cuando se especifica la cláusula LINAGE para un archivo asignado a PRINTER,
todos los controles de espaciado y paginación se manejan internamente por el
código generado por el compilador.
Archivos FORMATFILE
Los archivos de impresora descritos externamente deben asignarse a un disposi-
tivo de FORMATFILE. El término FORMATFILE se utiliza porque la frase
FORMAT es válida en instrucciones WRITE para el archivo, y el formato de los
datos se especifica en las DDS para el archivo.
Condicionamiento
U t i l i z a c/i ó n ( b / O / I / B / H / M / N / P )
And/Or/Com ent. (A/O/*)
Nombre Condición
Tipo de Formula rio
Nú mero d e
Secuencia
Posiciones
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea Pos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
A * AR CH I VO F I S I CO DD S P AR A A R CH I VO P E R S ONA L E N E J E MP L O F OR MA T F I L E
A
A * R P E R S R EC
A E MP L NO 6 S
A N AM E 3 0
A ADD R E S S 1 3 5
A ADD R E S S 2 2 0
A B I R T HDA T E 6
A MA R S T A T 1
A S P O U S E N AM E 3 0
A N U MC H I L D 2 S
A K E MP L NO
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
Figura 76 (Parte 1 de 2). Ejemplo de DDS de la Utilización de Archivos de Impresora Descritos Externamente Asig-
nados a un Dispositivo de FORMATFILE
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
Datos/Desplazamiento Teclado
(b/O /I/B/H/M/N/P)
Ubicación
(A/O/*)
Espec
Nombre Condición
Formula rio
And/Or/Coment.
Referencia (R)
Nombre
Nú mero d e
U t i l i z a c/i ó n
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
de
No (N)
No (N)
No (N)
Línea P o s
Tipo
Tipo
Tipo
1 2 3 4 5 6 7 8 9 10 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A * A R C H I VO I MP R E S OR A D D S P A R A E J E MP L O F O R MA T F I L E
A *
A I ND A R A R E F ( P E R S F I L E )
A R H E AD I NG S K I P B ( 1 ) S P AC E A ( 3 )
A 1 5 ' L I S T A DO P E R S ON A L '
A U ND E R L I N E
A 3 3 ' - P E D I DO P O R '
A OR D E R T Y P E 1 5 4 6
A 8 0 D A T E E D T CD E ( Y )
A 9 3 T I M E
A 1 1 5 ' P AG I N A : '
A + 1 P AGN B R E D T CD E ( 3 )
A *
A R D E T A I L S P AC E A ( 3 )
A * L I N E 1
A 1 ' N OM B R E : '
A N AM E R 1 1 U ND E R L I N E
A 5 5 ' N UM E R O E MP L E A DO : '
A E MP L NO R 7 3
A 8 7 ' F E C H A D E N AC I M I E N T O : '
A B I R T H D A T E R 1 0 3 S P AC E A ( 1 )
A * L I N E 2
A 1 ' D I R E CC I ON : '
A A D D R E S S 1 R 1 1
A 5 5 ' E S T AD O C I V I L : '
A MA R S T A T R 7 3
A 0 1 8 7 ' N OM B R E E S P O S A : '
A 0 1 S P O U S E N AM E R 1 0 3
A * L I N E 3
A A D D R E S S 2 R 1 1 S P AC E B ( 1 )
A 5 5 ' H I J O S : '
A N U MC H I L D R 7 3 E D T CD E ( 3 )
Figura 76 (Parte 2 de 2). Ejemplo de DDS de la Utilización de Archivos de Impresora Descritos Externamente Asig-
nados a un Dispositivo de FORMATFILE
Todos los archivos de base de datos se crean mediante los mandatos Crear
Archivo de OS/400. Consulte el manual Guía para la Base de Datos para obtener
una descripción sobre el mandato Crear Archivo para archivos de bases de datos.
Característica Control
El archivo debe ser un archivo físico. El mandato CL CRTPF
El archivo no puede tener registros con La palabra clave UNIQUE de
valores de clave duplicados. las DDS
El archivo no puede ser un archivo compartido El mandato CL CRTPF
Debe definirse una clave para el archivo. DDS
Las claves deben estar en secuencia ascen- DDS
dente.
Las claves han de ser contiguas dentro del DDS
registro.
Los campos de clave deben ser DDS
alfanuméricos. No pueden ser sólo numéricos.
El valor de la clave utilizada para poner en DDS
secuencia debe incluir 8 bits de cada byte.
No puede especificarse una posición inicial El mandato CL OVRDBF
para recuperar registros.
Cuando las DDS especifican sólo un campo clave para el archivo, RECORD KEY
debe ser un sólo campo con la misma longitud que el campo clave definido en las
DDS.
Cuando las DDS especifican múltiples campos clave contiguos, el nombre de clave
RECORD KEY debe ser un campo único cuya longitud sea igual a la suma de las
longitudes de múltiples campos de clave en las DDS. Si se especifica para el
archivo una instrucción COPY de Formato 2, también debe haber una descripción
de registro descrita por programa para el archivo que define el nombre de datos
RECORD KEY con la longitud y ubicación adecuada en el registro.
Figura 77. Instrucciones START que utilizan un archivo descrito por el programa
Figura 78. Instrucciones START Genéricas que Utilizan un archivo Descrito Externamente -- DDS
Figura 79. Instrucciones START Genéricas que Utilizan un Archivo Descrito Externamente
de Grabación
Programador Fecha Tecla
(/b / R / H / J / K / S / O )
Condicionamiento
(b/O/I/B/H/M/N/P)
Ubicación
(A/O/*)
Nombre Co ndición
Espec
Formula rio
And/Or/Coment.
N om b re Longitud Funciones
Referencia (R)
Nombre
Nú mero de
U t i l i z a c/i ó n
Posiciones
Secuencia
Reservado
D ecimales
Indicador
Indicador
Indicador
de
No (N)
No (N)
No (N)
Línea P os
Tipo
Tipo
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 19 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0
A R F O R MA T A P F I L E ( OR D D T L P )
A F L D A 1 4
A OR D E R N 5 S 0
A F L D B 1 0 1
A K OR D E R N
Figura 80. Utilización de Especificaciones de Descripción de Datos para Definir la Vía de Acceso de un Archivo
En las DDS para el formato de registro FORMATA del archivo lógico ORDDTLL, el
campo ORDERN, que tiene una longitud de cinco dígitos, se define como el campo
de clave. La definición de ORDERN como campo de clave establece el acceso
por clave para este archivo. Otros dos campos, FLDA y FLDB, describen las posi-
ciones restantes en este registro como campos de tipo carácter.
T i p o N o m b r e o E s p e c (/b / R / H / J / K / S / O )
Condicionamiento
U t i l i z a c/i ó n ( b / O / I / B / H / M / N / P )
And/Or/Coment. (A/O/*)
Nombre Co ndición
Tipo de Formula rio
N om b re Longitud Funciones
Referencia (R)
Nú mero de
Secuencia
Posiciones
Reservado
D ecimales
Indicador
Indicador
Indicador
No (N)
No (N)
No (N)
Línea Pos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
A R F OR MA T P F I L E ( OR DD T L P )
A T E X T ( ' V I A ACC E S O P AR A ARC I ND E X ADO ' )
A F L DA 1 4
A OR D E R N 5 S 0
A I T EM 5
A F L DB 9 6
A K OR D E R N
A K I T EM
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
Figura 81. Especificaciones de Descripción de Datos para la Definición de la Vía de acceso (una Clave Compuesta)
de un Archivo Indexado
Característica Control
El archivo debe ser un archivo físico. El mandato CL CRTPF
El archivo no puede ser un archivo compartido El mandato CL CRTPF
No puede especificarse ninguna clave en el DDS
archivo.
No puede especificarse una posición inicial El mandato CL OVRDBF
para recuperar registros.
No pueden utilizarse para el archivo palabras DDS
clave a nivel de seleccionar/omitir.
No se pueden volver a utilizar los registros del El mandato CL CRTPF
archivo.
Característica Control
El archivo debe ser un archivo físico. El mandato CL CRTPF
El archivo no puede ser un archivo compartido El mandato CL CRTPF
No puede especificarse ninguna clave en el DDS
archivo.
El archivo debe tener un tipo de archivo de El mandato CL CRTPF
DATA.
No puede utilizarse la edición de campo. DDS
No puede especificarse información de línea DDS
ni posición.
No pueden especificarse palabras clave de DDS
espaciar ni saltar.
No pueden utilizarse los indicadores. DDS
No pueden utilizarse funciones suministradas DDS
por el sistema, tales como fecha, hora y
número de página.
No pueden utilizarse para el archivo palabras DDS
clave a nivel de seleccionar/omitir.
No se pueden volver a utilizar los registros del El mandato CL CRTPF
archivo.
Una archivo con una vía de acceso en secuencia de llegada puede procesarse en
COBOL como un archivo con organización RELATIVE o SEQUENTIAL. El archivo
debe ser un archivo físico o lógico en el que cada miembro del archivo lógico úni-
camente esté basado en un solo miembro del archivo físico.
Se borran todos los archivos de base de datos físicos que se abren para OUTPUT.
Los archivos de bases de datos con organización RELATIVE y con modalidad de
acceso dinámica o al azar, también se inicializan con registros suprimidos.
Los archivos relativos nuevos que se han abierto para OUTPUT en modalidad de
acceso secuencial se tratan de forma diferente. La Tabla 4 en la página 263
resume las condiciones que los afectan.
Para extender el límite de archivo más allá del número actual de registros, pero
permaneciendo dentro del tamaño del archivo, utilice el mandato INZPFM para
añadir registros eliminados antes de procesar el archivo. Es preciso efectuar esta
operación si recibe un estado de archivo de 0Q y todavía quiere añadir más regis-
tros al archivo.
Para recuperar el estado de archivo de 9Q, utilice el mandato CHGPF tal como se
describe en el texto de mensaje en tiempo de ejecución asociado.
Las demoras de larga duración son normales cuando hay gran cantidad de regis-
tros (más de un 1 000 000) que se deben inicializar para registros suprimidos
cuando se ejecuta la instrucción CLOSE.
El parámetro RECORDS del mandato INZPFM debe especificar *DLT. Las alte-
raciones temporales deben aplicarse cuando COBOL procesa las operaciones de
borrado e inicialización, pero no cuando se procesan con mandatos CL.
Las demoras de larga duración son normales en el proceso OPEN OUTPUT para
archivos sumamente grandes (más de 1 000 000 registros) a los que se accede en
modalidad dinámica o al azar.
Por ejemplo, READ FIRST recupera el registro con el valor de campo más alto,
mientras que READ LAST recupera el registro del valor de campo más bajo. Los
archivos que tienen una secuencia de clave descendente también provocan que
los calificadores START se comporten de forma contraria. Por ejemplo, START
GREATER THAN coloca el puntero del registro actual en un registro con una clave
menor que la clave actual.
-A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..
ððð1ðð IDENTIFICATION DIVISION.
ððð2ðð PROGRAM-ID. CMDXMPLE.
ððð3ðð ENVIRONMENT DIVISION.
ððð4ðð CONFIGURATION SECTION.
ððð5ðð SOURCE-COMPUTER. IBM-AS4ðð.
ððð6ðð OBJECT-COMPUTER. IBM-AS4ðð.
ððð7ðð DATA DIVISION.
ððð8ðð WORKING-STORAGE SECTION.
ððð9ðð ð1 PROGRAM-VARIABLES.
ðð1ððð ð5 CL-CMD PIC X(33)
ðð11ðð VALUE "ADDLIBLE COBOLTEST".
ðð12ðð ð5 PACK-VAL PIC 9(1ð)V9(5) COMP-3
ðð13ðð VALUE 18.
ðð14ðð PROCEDURE DIVISION.
ðð15ðð MAINLINE.
ðð16ðð CALL "QCMDEXC" USING CL-CMD PACK-VAL.
ðð17ðð STOP RUN.
Cláusula LIKE
La cláusula LIKE sirve para definir las características PICTURE, USAGE, SIGN y
BLANK WHEN ZERO de un nombre de datos copiándolas de un nombre de datos
definido con anterioridad. LIKE sólo puede referirse a un nombre de datos o un
nombre de índice, y tales nombres deben calificarse únicamente si se han definido
anteriormente. También sirve para cambiar la longitud de los nombres de datos
definidos por el usuario.
Esta cláusula es particularmente útil, ya que el usuario puede utilizarla para definir
los identificadores en la Sección de Almacenamiento del programa que tengan los
mismos atributos como variables definidas utilizando la instrucción COPY.
Para crear el nombre de datos DEPTH con los mismos atributos que el nombre de
datos HEIGHT, escriba:
DEPTH LIKE HEIGHT
Para crear el nombre de datos PROVINCE con los mismos atributos que el nombre
de datos STATE, sólo que con un byte más, escriba:
PROVINCE LIKE STATE (+1)
Este ejemplo le muestra cómo puede crear el ítem de datos WS-KEY3 con los
mismos atributos que el ítem de datos KEY3 en la Sección de Almacenamiento de
Trabajo:
ð1 RATES.
ð5 MONTHLY-RATE PIC 9(3).
66 GROSS-RATE RENAMES MONTHLY-RATE.
ð1 NET-RATE LIKE GROSS-RATE.
\ PICTURE IS 9(3)
ð1 FASTENINGS.
ð5 NAILS PIC 9V99 BLANK WHEN ZERO.
ð5 RIVETS LIKE NAILS.
\ PICTURE IS 9V9(2)
\ BLANK WHEN ZERO
ð1 MORTGAGE-PAYMENT.
ð5 MORTGAGE-TOTAL PIC S999V99 SIGN IS LEADING SEPARATE.
ð5 MORTGAGE-INTEREST LIKE MORTGAGE-TOTAL.
\ PICTURE IS S9(3)V9(2)
\ SIGN IS LEADING SEPARATE
ð1 PROFIT.
ð5 GROSS-PROFIT PIC 999(3)PP(5).
ð5 NET-PROFIT LIKE GROSS-PROFIT.
\ PICTURE IS 9(5)P(6)
La posición inicial debe ser, como mínimo, 1, y no puede ser mayor que la longitud
del ítem de datos referenciado. La longitud debe ser, como mínimo, 1.
Imagine que quiere recuperar la hora actual del sistema y visualizar su valor en un
formato ampliado. Puede recuperarla con la instrucción ACCEPT, que devuelve
las horas, minutos, segundos y centésimas de segundo en el formato:
HHMMSSss
Sin embargo, es posible que quiera visualizar la hora actual en el formato:
HH:MM:SS
Según las reglas para la instrucción MOVE, se sustituirá todo el contenido del
campo de recepción NAME-GROUP. Este problema puede evitarse utilizando la
modificación de referencias en la instrucción MOVE:
MOVE NEW-NAME-GROUP TO NAME-GROUP ( 1 :LENGTH OF NAME-GROUP )
Al especificar la modificación de referencias con la longitud (LENGTH OF) de
registro especial, la longitud de NAME-GROUP queda determinada por el valor de
la variable NAME-LENGTH.
Puede cambiar el tercer y cuarto byte del primer ítem de TABLE-ELEMENT al valor
“??” con la instrucción MOVE siguiente:
MOVE "??" TO TABLE-ELEMENT ( 1 ) ( 3 : 2 )
Deseditar
La acción Deseditar sirve para mover un ítem de datos editados de forma numé-
rica a un ítem de datos de recepción numéricos o editados de forma numérica. El
compilador realiza esta acción estableciendo en primer lugar el valor no editado del
ítem editado de forma numérica. A continuación mueve el valor no editado al
receptor.
Los ítems de datos que utilice para definir este campo tendrían el siguiente
aspecto:
ð1 NUM-EDIT PIC −Z(6).9(2) USAGE IS DISPLAY.
Posteriormente, el operador del sistema podría utilizar este campo para la entrada
de datos. Si el operador inserta ␣␣␣␣123,45 en el campo, el usuario podrá obtener
el valor numérico del campo moviéndolo a un ítem de datos definido como:
ð1 NUMERIC-ITEM PIC S9(6)V9(2) USAGE IS PACKED-DECIMAL.
La instrucción:
MOVE NUM-EDIT TO NUMERIC-ITEM
provoca la acción Deshacer Edición, con lo que el ítem numérico recibe el valor
numérico del campo editado de forma numérica NUM-EDIT. Como resultado, el
ítem numérico contiene el valor +123,45.
Ejemplos de Deseditar
La Tabla 5 y la Tabla 6 en la página 279 muestran ejemplos de la acción des-
editar de COBOL/400.
Prueba de Signo
El compilador valida los signos en ítems fuente editados de forma numérica, según
las reglas que aparecen a continuación.
Prueba de Flotantes
Si el fuente tiene una serie de caracteres flotantes, esta prueba verifica la correc-
ción de caracteres flotantes iniciales en el campo de datos.
Segmentación
La utilización de la segmentación aumenta los tiempos de compilación y ejecución
del programa COBOL. La característica de segmentación sólo se proporciona para
lograr la compatibilidad con otros sistemas. Al utilizar programas COBOL/400 no
tiene que preocuparse por la gestión de almacenamiento.
Notas:
1. ð1 Mgtstruc debe estar en un límite de 16 bytes. Si se produce un error de
límite, añada 77 aa PIC X. delante de ð1.
2. Dado que la llamada a QLRMAIN cambia el programa principal COBOL por un
subprograma, deberá utilizar el mandato EXIT PROGRAM y no STOP RUN, ya
que podrían producirse errores.
3. RCLRSC desactivará el programa principal (ahora un subprograma).
Opción *NORANGE
Esta opción del parámetro GENOPT del mandato CRTCBLPGM suprime las com-
probaciones en tiempo de ejecución para rangos de modificación de subíndices y
referencias.
Opción *DUPKEYCHK
Esta opción de parámetro GENOPT del mandato CRTCBLPGM indica que se efec-
tuará la comprobación de clave duplicada para archivos INDEXED. La utilización
de DUPKEYCHK durante la lectura de archivos INDEXED puede afectar
negativamente al rendimiento.
Archivos Relativos
Pueden producirse retrasos duraderos si se abren o se cierran archivos relativos
en los que se estén inicializando grandes volúmenes de registros para suprimir
registros.
Indicadores
Si utiliza los indicadores en un área de indicadores separada (palabra clave
INDARA especificada en las DDS) en vez de hacerlo en un área de registros, la
utilización de la cláusula OCCURS para especificar una tabla de hasta 99 indi-
cadores puede aumentar el rendimiento. Consulte la Figura 60 en la página 163
para más información.
Inicialización de Variables
Se puede reducir el tiempo de ejecución de un programa eligiendo la posibilidad de
no inicializar variables de programa que no tengan cláusulas de valor asociadas.
Se puede especificar esta no inicialización mediante \NOSTDINZ para el parámetro
GENOPT del mandato CRTCBLPGM, o especificando NOSTDINZ en la instrucción
PROCESS. A continuación, el compilador inicializa únicamente aquellas variables
que tienen cláusulas de valor declaradas. Una ventaja adicional de esta opción
consiste en que el usuario también puede compilar programas más grandes con un
número mayor de variables.
Bloqueo de Registros
Se puede utilizar el bloqueo de registros para mejorar el rendimiento del tiempo de
ejecución. Las ventajas del bloqueo quedan patentes cuando se leen varios regis-
tros de manera secuencial, como una lectura aleatoria seguida de lecturas secuen-
ciales.
Bucles en un Programa
Cuando un programa procesa repetidamente la misma serie de instrucciones, y
parece evidente que así continuará indefinidamente, el programa se encuentra en
un bucle. Para identificar los bucles, puede utilizar la información conocida acerca
del propio programa, de la manera siguiente:
Tiempo: Si el tiempo de ejecución real sobrepasa sustancialmente el tiempo
de ejecución esperado, el programa puede estar en un bucle.
Operaciones de E/S: Si no se dan operaciones de entrada/salida y se espera
que la E/S se produzca repetidamente, es probable que el programa esté en
un bucle.
se produce una variación posible de este caso si existe una instrucción condicional,
pero esta condición no puede cumplirse o la instrucción no se bifurca (mediante
una sentencia GO TO) a un párrafo fuera del rango del bucle.
Cuando una unidad de ejecución consta de varios programas compilados por sepa-
rado que se llaman mutuamente, dichos programas deben ser capaces de comuni-
carse entre sí. Necesitan transferir el control y normalmente necesitan tener
acceso a datos comunes. Este capítulo describe los métodos seguidos por esta
comunicación entre programas compilados por separado.
Puede emitir una instrucción STOP RUN, EXIT PROGRAM o GOBACK para
devolver el control de un programa llamado.
Figura 86. Ejemplo de Varias Unidades de Ejecución que se Ejecutan de Manera Consecu-
tiva
┌─────────────────┐
│ PGMA │
│ │ n
│ │
│ No COBOL │
└────────┬────────┘
│
┌─────────────┴──────────────┐
UNIDAD EJECUCIÓN B │ │
┌── ── ── ── ── ── ──│── ── ── ── ─┐ │
│ ┌────────┴────────┐ │ ┌────────┴────────┐
│ PGMB │ │ PGMC │
│ │ │ │ │ │ n + 1
│ Programa │ │ │
│ │ Principal COBOL │ │ │ No COBOL │
└────────┬────────┘ └────────┬────────┘
│ │ └─ ── ── ── ─┐ │
│ │ │
│ ┌───────────┴─────────┐ ┌─────────┴────────────┐
│ UNIDAD EJECUCIÓN E │ │ UNIDAD EJECUCIÓN F
│ │ ┌─ ── ┼─ ── ── ┼─ ── ┐ ┌─ ── ── ──│── ── ── ┐
┌──────┴───────┐ │ ┌───┴────────┴───┐ │ │ ┌────────┴───────┐ │
│ │ PGMD │ │ PGME │ │ │ PGMF │
│ │ │ │ │ │ │ │ │ │ n + 2
│ │ │ │ │ │ │Programa │
│ No COBOL │ │ │ COBOL │ │ │ │Principal COBOL │ │
│ └──────────────┘ └────────────────┘ │ └────────────────┘
└─ ── ── ── ── ── ── ┘ │ └─ ─ ── ── ── ── ── ┘
└── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ──┘
Figura 87. Ejemplo de una Unidad de Ejecución con un Programa Compartido que es tanto
un subprograma como un programa principal
Inicialización de Almacenamiento
La primera vez que se llama a un programa COBOL en una unidad de ejecución,
se inicializa su almacenamiento. El almacenamiento se inicializa de nuevo con las
condiciones siguientes:
Se termina la unidad de ejecución, luego se vuelve a iniciar.
El programa se cancela (utilizando la instrucción CANCEL para COBOL, la
operación FREE para el lenguaje de programación RPG/400* o el mandato
Reclamar Recurso (RCLRSC), y a continuación se llama de nuevo.
En la Sección de Enlace
El usuario deberá conocer lo que esté pasando desde el programa de llamada y
configurar la Sección de Enlace en el programa llamado para aceptarlo. Al pro-
grama llamado no le importa la cláusula de la instrucción CALL que el usuario
utilice para pasar los datos (BY REFERENCE o BY CONTENT). En cualquiera de
los dos casos, el programa llamado debe describir los datos que está recibiendo,
cosa que realiza en la Sección de Enlace.
El valor del puntero del sistema también cambia si el usuario modifica el valor del
identificador y realiza una llamada utilizando este nuevo valor.
En el sistema AS/400, los punteros tienen una longitud de 16 bytes. Los punteros
COBOL son punteros de espacio de AS/400, dado que se direccionan a objetos
espacio de sistema. Una parte del puntero describe sus atributos (por ejemplo, a
qué objeto espacio del AS/400 se está direccionando). Otra parte del puntero con-
tiene el desplazamiento en el objeto espacio del sistema AS/400.
Para definir un puntero COBOL (llamado ítem de datos puntero), codifique una
cláusula USAGE IS POINTER en el ítem de datos. Un ítem de datos puntero es
un ítem que consta de 16 bytes que se puede comparar por igualdad o utilizar para
establecer el valor de otros ítems de punteros.
Dado que los ítems de datos punteros no son simples números binarios del
sistema AS/400, el manejo de punteros como enteros no funciona.
Los ítems de datos puntero pueden formar parte de un grupo referenciado en una
instrucción MOVE o en una instrucción de entrada/salida; sin embargo, si un ítem
de datos puntero forma parte de un grupo, no se produce la conversión de los
valores del puntero a otra forma de representación interna cuando la instrucción se
ejecuta.
WORKING-STORAGE SECTION.
77 APTR USAGE POINTER.
ð1 AB.
ð5 BPTR USAGE POINTER.
ð5 BVAR PIC S9(3) PACKED-DECIMAL.
LINKAGE SECTION.
ð1 AVAR.
ð5 CVAR PIC X(3ð).
PROCEDURE DIVISION.
SET APTR TO ADDRESS OF AVAR.
Dentro de una estructura de grupos, los ítems de datos de puntero deben estar
también en un límite de 16 bytes. Para asegurarse de ello, el compilador de
COBOL/400 añade ítems FILLER inmediatamente antes de los ítems de datos de
puntero. Para evitar dichos ítems FILLER, deberá colocar los ítems de datos de
puntero al principio del ítem de grupo.
Si el ítem de datos de puntero forma parte de una tabla, el primer ítem de dicha
tabla se sitúa en un límite de 16 bytes. Con el fin de asegurarse de que todas las
apariciones posteriores se sitúen en un límite de 16 bytes, se añade un ítem
FILLER al final de la tabla, siempre que sea necesario.
WORKING-STORAGE SECTION.
77 APTR USAGE POINTER.
ð1 AB.
ð5 ALPHA-NUM PIC X(1ð).
ð5 BPTR USAGE POINTER.
ð1 EF.
ð5 ARRAY-1 OCCURS 3 TIMES.
1ð ALPHA-NUM-TWO PIC X(14).
1ð CPTR USAGE POINTER.
1ð ALPHA-NUM-THREE PIC X(5).
Figura 91. Alineación de Ítems de Datos de Puntero
WORKING-STORAGE SECTION.
ð1 AB.
ð5 ALPHA-NUM PIC X(16).
ð5 APTR REDEFINES ALPHA-NUM USAGE POINTER.
ð5 BPTR USAGE POINTER.
ð5 CPTR REDEFINES BPTR USAGE POINTER.
Figura 92. REDEFINES e Ítems Alineados de Datos Puntero
En el ejemplo anterior, tanto APTR como CPTR son ítems de datos puntero que
vuelven a definir ítems alineados de 16 bytes. En el ejemplo siguiente, el ítem
redefinido daría como resultado un error grave de compilador:
WORKING-STORAGE SECTION.
ð1 EF.
ð5 ALPHA-NUM PIC X(5).
ð5 HI.
1ð ALPHA-NUM-TWO PIC X(11).
1ð APTR USAGE POINTER.
ð5 BPTR REDEFINES HI USAGE POINTER.
Figura 93. REDEFINES e Ítems Alineados de Datos Puntero - Método Incorrecto
WORKING-STORAGE SECTION.
ð1 EF.
ð5 ALPHA-NUM PIC X(5).
ð5 HI.
1ð ALPHA-NUM-TWO PIC X(11).
1ð APTR USAGE POINTER.
1ð ALPHA-NUM-THREE PIC X(5).
ð5 KL REDEFINES HI.
1ð BPTR USAGE POINTER.
Figura 94. REDEFINES e Ítems no Alineados de Datos Puntero - Método Correcto
WORKING-STORAGE SECTION.
77 APTR USAGE POINTER VALUE NULL.
PROCEDURE DIVISION.
IF APTR = NULL THEN
DISPLAY 'APTR IS NULL'
END-IF.
Figura 95. Utilización de NULL para Inicializar un Puntero
Si los ítems que se trasladan son ítems de nivel 01, o forman parte de un ítem de
nivel 01, deben encontrarse en el mismo desplazamiento en relación a un límite de
16 bytes para que se produzca un puntero MOVE. (Se envía un mensaje de aviso
si no es verdadero). El ejemplo siguiente muestra tres estructuras de datos, así
como los resultados cuando se envía una instrucción MOVE:
PROCEDURE DIVISION.
MOVE A to A2. .1/
MOVE A to A3. .1/
MOVE C to C2. .2/
MOVE C2 to C3. .3/
Deberá prestarse una especial atención cuando se utilice una instrucción CALL con
la frase BY CONTENT para pasar punteros e ítems de grupos que contengan
punteros. Es un caso parecido al de la instrucción MOVE. Para una instrucción
CALL BY CONTENT, se efectúa una instrucción MOVE implícita de un ítem para
crearlo en un área temporal. Si el compilador puede determinar el desplazamiento
de un ítem relativo a un límite de 16 bytes, este mismo desplazamiento se utiliza
cuando la instrucción implícita MOVE del ítem BY CONTENT se realiza en un área
temporal. Cuando el compilador no puede determinar el desplazamiento de un
ítem relativo a un límite de 16 bytes, la instrucción implícita MOVE del ítem BY
CONTENT se realiza en un área temporal que se alinea en un límite de 16 bytes.
Para evitar problemas con la alineación del puntero, pase los ítems por referencia.
WORKING-STORAGE SECTION.
ð1 A. .1/
ð5 B PIC X(3).
ð5 C..2/
1ð FILLER PIC X(13).
1ð D POINTER.
PROCEDURE DIVISION.
ð1 E.
ð5 F PIC X(16).
ð5 G POINTER.
77 K PIC S9(3) VALUE 8.
LINKAGE SECTION.
ð1 A. .3/
ð5 B PIC X(3).
ð5 C.
1ð FILLER PIC X(13).
1ð D POINTER.
ð1 C2..4/
ð5 FILLER PIC X(13).
ð5 D2 POINTER.
El programa B pasa cinco ítems a otro programa, C. Los ítems se pasan, por
contenido, al Programa C. Puesto que se pasan por contenido, el Programa C
recibe una copia de los ítems, y la integridad del puntero no se mantiene en todos
los casos.
.3/ Dado que este ítem está definido en la Sección de Enlace, tiene un des-
plazamiento desconocido. El compilador asume que se alinea a 16 bytes; en
este caso, cuando A se pasa, la integridad del puntero de D se mantiene, pero
se envía un mensaje de aviso del compilador en la instrucción CALL.
.4/ Este ítem contiene un puntero, y un movimiento del puntero se realiza
mediante .5/. Sin embargo, puesto que el ítem está definido en la Sección de
Enlace y el desplazamiento es desconocido, la integridad del puntero no se
mantiene. El compilador intenta mover C2 a un área de alineación de 16
bytes, y se envía un mensaje de aviso del compilador.
.6/ Puesto que E contiene un puntero, se produce un movimiento de puntero.
El desplazamiento se puede calcular porque la posición de inicio de la modifi-
cación de referencia es un literal numérico. En este caso, la integridad del
puntero se mantiene y el ítem se sitúa en un desplazamiento de 4 desde el
límite de 16 bytes.
.7/ Dado que E contiene un puntero, se intenta un movimiento de puntero. Ya
que E está modificado por referencia con una posición de inicio desconocida
(K), el compilador no puede calcular el desplazamiento y asume que está ali-
neado en un límite de 16 bytes. Se envía un mensaje de aviso del compilador.
Figura 99. Ejemplo de Utilización de Punteros para Acceder a Espacios de Usuario -- DDS
Figura 100 (Parte 1 de 7). Ejemplo de Utilización de Punteros para Acceder a Espacios de Usuario
Figura 100 (Parte 2 de 7). Ejemplo de Utilización de Punteros para Acceder a Espacios de Usuario
Figura 100 (Parte 3 de 7). Ejemplo de Utilización de Punteros para Acceder a Espacios de Usuario
Figura 100 (Parte 4 de 7). Ejemplo de Utilización de Punteros para Acceder a Espacios de Usuario
Figura 100 (Parte 5 de 7). Ejemplo de Utilización de Punteros para Acceder a Espacios de Usuario
Figura 100 (Parte 6 de 7). Ejemplo de Utilización de Punteros para Acceder a Espacios de Usuario
Figura 100 (Parte 7 de 7). Ejemplo de Utilización de Punteros para Acceder a Espacios de Usuario
.1/ La directriz del compilador TITLE se utiliza para crear el título que
aparece al principio de cada página.
.3/ CRT STATUS IS especifica un nombre de datos en el que se coloca un
valor de estado después de la finalización de una instrucción ACCEPT
ampliada. En este ejemplo, el valor de STATUS se utiliza para deter-
minar la tecla de función que se ha pulsado.
.4/ fs-cust-address es un campo de longitud variable. Para ver nombres
con significado real, en lugar de una instrucción FILLER, especifique
*VARCHAR para el parámetro CVTOPT del mandato CRTCBLPGM, o
VARCHAR en la instrucción PROCESS, tal como se muestra en el
apartado .2/. Para más información acerca de los campos de longitud
variable, consulte el apartado “Declaración de Ítems de Datos utilizando
Tipos de Datos de CVTOPT” en la página 137.
.5/ En este apartado se define CRT STATUS tal como se menciona en el
apartado .3/.
.6/ La estructura ws-params contiene los parámetros utilizados al llamar a
las API para acceder a espacios de usuario.
.7/ ws-err-data es la estructura del parámetro de error para las API del
espacio de usuario. Observe que ws-input-l es cero, lo que significa
que toda excepción está señalada y no se pasa en el parámetro de
códigos de error. Para más información acerca de los parámetros de
códigos de error, consulte la publicación System Programmer’s Interface
Reference.
.8/ ws-space-ptr define un ítem de datos puntero establecido por la API
QUSPTRUS. Esta estructura se direcciona al inicio del espacio de
usuario y se utiliza para configurar las direcciones de los ítems en la
Sección de Enlace.
.9/ La primera estructura de datos (ls-header-record) que se va a definir en
el espacio de usuario.
.1ð/ FILLER se utiliza para mantener la alineación del puntero, porque con-
vierte a Is-header-record en un múltiplo de 16 bytes de longitud.
.11/ La segunda estructura de datos (ls-user-space) que se va a definir en el
espacio de usuario.
.12/ initial-display muestra la pantalla Create Customer Information Area
(Crear área de información del cliente). Esta pantalla aparece en la
Figura 101 en la página 314.
F3=Salir
á ñ
Figura 101. Crear Pantalla del Área de Información del Cliente
á ñ
Figura 102. Pantalla del Área de Información del Cliente
á ñ
Figura 103. Pantalla de Información del Cliente (Segunda Pantalla)
F3=Salir
á ñ
Figura 104. Suprimir Pantalla de Información del Cliente
┌─────────┐ ┌───────────┐
│ │ │ │
REGISTRO SALARIO6 │ 6 │ 6
┌───────────┴─┐ ┌──────────┴─┐ ┌─────────────┐
PTR─SIG.─REG │dir. de reg. │ │ │ │NULL─dir. │
│siguiente │ │ │ │no válida │
NOMBRE ├─────────────┤ ├────────────┤ . . . ├─────────────┤
│ │ │ │ │ │
SALARIO ├─────────────┤ ├────────────┤ ├─────────────┤
│ │ │ │ │ │
└─────────────┘ └────────────┘ └─────────────┘
La lógica de nivel superior de una aplicación que procesa estos registros puede
tener un aspecto parecido a éste:
OBTAIN ADDRESS OF FIRST RECORD IN CHAINED LIST FROM ROUTINE
CHECK FOR END OF THE CHAINED LIST
DO UNTIL END OF THE CHAINED LIST
PROCESS RECORD
GO ON TO THE NEXT RECORD
END
En el caso de una lista encadenada en la que el puntero del último registro con-
tenga un valor nulo, el código para comprobar la finalización de la lista sería:
IF PTR-NEXT-REC = NULL
..
.
En el programa LISTS, esta prueba del final de la lista encadenada se realiza con
una estructura “do while”:
PERFORM WITH TEST BEFORE UNTIL ADDRESS OF SALARY-REC = NULL
IF DEPT = DEPT-X
THEN ADD SALARY TO DEPT-TOTAL
ELSE CONTINUE
END-IF
SET ADDRESS OF SALARY-REC TO PTR-NEXT-REC
END-PERFORM
Dado que los ítems de datos puntero no son numéricos, el usuario no podrá efec-
tuar aritmética directamente sobre ellos. No obstante, podrá utilizar el verbo SET
para incrementar la dirección pasada para ignorar la información de cabecera.
Áreas de Datos
Un área de datos es un objeto utilizado para comunicar datos tales como valores
de variables entre programas dentro de un trabajo y entre trabajos. Un área de
datos puede crearse y declararse en un programa antes de que se utilice en dicho
programa o trabajo. Para más información acerca de la creación y declaración de
un área de datos, consulte la publicación CL Guía del Programador.
Cuando se somete un trabajo, el área de datos local del trabajo que se somete se
copia al área de datos local del trabajo sometido. Si no hay ningún trabajo que se
someta, el área de datos local se inicializa a espacios en blanco.
Un programa COBOL puede acceder al área de datos local para su trabajo con las
instrucciones ACCEPT y DISPLAY, utilizando un nombre mnemotécnico asociado
al nombre de función LOCAL-DATA.
Sólo hay un área de datos local asociada a cada trabajo. Incluso si se adquieren
varias estaciones de trabajo mediante un único trabajo, sólo existe un área de
datos local para dicho trabajo. No hay un área de datos local para cada estación
de trabajo.
Un programa COBOL puede acceder al área de datos PIP para su trabajo con la
instrucción ACCEPT, utilizando un nombre mnemotécnico asociado con el nombre
de función PIP-DATA.
El área de datos PIP es un ítem alfanumérico de 2000 bytes que contiene paráme-
tros recibidos desde un programa de llamada. Proporciona los parámetros de
inicialización que, en trabajos que no son de prearranque, se ofrece mediante los
parámetros COBOL estándar.
Utilice una instrucción ACCEPT de Formato 5 para acceder al área de datos PIP,
similar a la manera en que utiliza la instrucción ACCEPT de Formato 4 para leer
desde el área de datos local. Observe que no puede actualizar el área de datos
PIP utilizando COBOL. Consulte la publicación COBOL/400 Reference para
obtener información de sintaxis detallada.
Para más información acerca de los trabajos de prearranque y del área de datos
PIP, consulte la publicación Guía para la Gestión de Trabajos y la publicación CL
Guía del Programador.
Ampliación de IBM
Segmentos de Programa
Hay tres tipos de segmentos de programa: permanente fijo, recubrible fijo e inde-
pendiente.
Segmentos Fijos
Los segmentos permanentes fijos y los segmentos recubribles fijos componen la
parte fija, la parte de la División de Procedimientos que se trata lógicamente como
si estuviese siempre presente físicamente en almacenamiento principal. Los
números de segmento de la parte fija han de ser enteros del 0 al 49.
Lógica de segmentación
En un programa segmentado, las secciones se clasifican por un sistema de
números de segmento de acuerdo con los criterios siguientes:
Frecuencia de Referencia–Las secciones más utilizadas, o aquéllas que han
de estar disponibles en todo momento como referencia, deben estar nor-
malmente dentro de segmentos fijos permanentes. Las secciones que se uti-
lizan con menor frecuencia pueden estar en segmentos fijos recubribles o en
segmentos independientes, según la lógica del programa.
Frecuencia de Utilización–Cuanto mayor sea la frecuencia con la que se utilice
una sección, menor será su número de segmento; cuanto menor sea la fre-
cuencia con la que se la referencie, mayor será su número de segmento.
Relaciones Lógicas–A las secciones que se comunican más frecuentemente
entre ellas habría que darles números de segmento idénticos.
Formato
55───SEGMENT-LIMIT──┬────┬──nombr-segmento───────────── . ───────────────────5%
└─IS─┘
El número-segmento debe ser un entero con un valor dentro del rango de 1 a 49.
Segmentación–División de Procedimientos
En la División de Procedimientos de un programa segmentado, la clasificación de
secciones se especifica mediante los números de segmento en los encabe-
zamientos de sección. El número de segmento ha de ser un entero del 0 al 99.
Formato
55───nomb-sección──SECTION──┬────────────────┬──.────────────────────────────5%
└─nombr-segmento─┘
Los segmentos con números de segmento del 0 al 49 están en la parte fija del
programa. Sólo es posible asignar estos números a las secciones declarativas.
Los segmentos con números de segmento del 50 al 99 son segmentos indepen-
dientes. Si se omite el número de segmento del encabezamiento de la sección, se
asume que el número de segmento es 0.
Segmentación–Consideraciones Especiales
Cuando se utiliza la segmentación, existen una serie de restricciones en las ins-
trucciones ALTER, PERFORM, SORT y MERGE. También hay consideraciones
especiales para los programas de llamada y programas llamados.
Instrucción ALTER
No debe hacerse referencia a una instrucción GO TO en un segmento indepen-
diente por medio de una instrucción ALTER en un segmento distinto. Todas las
otras utilizaciones de la instrucción ALTER son válidas y se realizan, incluso si la
instrucción GO TO a la que se haga referencia está en un segmento recubrible fijo.
Instrucción PERFORM
Una instrucción PERFORM en la parte fija puede tener en su rango, además de
cualquier procedimiento Declarativo, cuya ejecución tenga lugar dentro de ese
rango, sólo uno de los elementos siguientes:
Secciones y/o párrafos en la parte fija
Secciones y/o párrafos dentro de un único segmento independiente.
Formato
55───SOURCE-COMPUTER.─┬─────────────────────────────────────────────┬─.──────5%
└─nombr-sistema─┬──────────────────────────┬──┘
└─┬──────┬──DEBUGGING MODE─┘
└─WITH─┘
Programa . . . . . . . . . . . . Nombre
Biblioteca.. . . . . . . . . . \LIBL Nombre, \LIBL, \CURLIB
Final
F3=Salir F4=Solicitud F5=Renovar F12=Cancelar F13=Cómo util. esta pantalla
F24=Más teclas
á ñ
55──STRCBLDBG──┬────────────────────────────────────────────┬─────────────────5%
└─PGM──(─┬─────────────────┬──nombre-prgm.─)─┘
├──\LIBL/─────────┤
├──\CURLIB/───────┤
└──nombre-bibl./──┘
┌───────────────────────────────────┐
│Job: B,I Pgm: B,I REXX: B,I Exec│
└───────────────────────────────────┘
Se permite utilizar este mandato tanto en procesos interactivos y por lotes como en
programas CL.
Programa . . . . . . . . . . . . Nombre
Biblioteca.. . . . . . . . . . \LIBL Nombre, \LIBL, \CURLIB
Final
F3=Salir F4=Solicitud F5=Renovar F12=Cancelar F13=Cómo util. esta pantalla
F24=Más teclas
á ñ
55──ENDCBLDBG ─┬────────────────────────────────────────────┬─────────────────5%
└─PGM──(─┬─────────────────┬─ nombre-prgm.─)─┘
├─ \LIBL/─────────┤
├─ \CURLIB/───────┤
└─ nombre-bibl./──┘
┌───────────────────────────────────┐
│Job: B,I Pgm: B,I REXX: B,I Exec│
└───────────────────────────────────┘
Se permite utilizar este mandato tanto en procesos interactivos y por lotes como en
programas CL.
Formato
┌────────────────────────────────────────┐
6 │
55───USE─┬─────┬─DEBUGGING─┬────┬─┬─┬───────────────────────┬─identific.-1─┼─5%
└─FOR─┘ └─ON─┘ │ └─ALL─┬───────────────┬─┘ │
│ └─REFERENCES OF─┘ │
├─nomb-arch-1────────────────────────────┤
├─nombre-proced.-1───────────────────────┤
└─ALL PROCEDURES─────────────────────────┘
Una sección de depuración para un operando específico se procesa una sola vez
como resultado de la ejecución de una única instrucción, sin importar cuántas
veces se especifica el operando en la instrucción. Una excepción a esta regla es
que cada especificación de un identificador subindexado o indexado en la que los
subíndices o índices sean distintos, provoca la invocación de la Declarativa de
depuración. Para una instrucción PERFORM que cause la ejecución repetida de
un procedimiento, cualquier nombre del procedimiento asociado a una sección
Declarativa de depuración, se ejecuta una vez por cada ejecución del proce-
dimiento.
Excepto para la propia sentencia USE FOR DEBUGGING, las instrucciones dentro
de una sección Declarativa de depuración sólo puede hacer referencia a nombres
de procedimientos definidos en un procedimiento USE distinto mediante la instruc-
ción PERFORM. Los nombres de Procedimientos dentro de las secciones Decla-
rativas de depuración no deben aparecer en las sentencias USE FOR
DEBUGGING.
Nota: Los operandos sobre los que actúe pero no se nombren explícitamente en
las instrucciones tales como ADD, MOVE, o SUBTRACT
CORRESPONDING nunca causan la activación de un procedimiento USE
FOR DEBUGGING cuando se ejecutan dichas instrucciones. Si se especi-
fica el identificador-n en una frase que no se procesa, no se ejecuta la
sección de depuración asociada.
ð1 DEBUG-ITEM.
ð2 DEBUG-LINE PICTURE IS X(6).
ð2 FILLER PICTURE IS X VALUE SPACE.
ð2 DEBUG-NAME PICTURE IS X(3ð).
ð2 FILLER PICTURE IS X VALUE SPACE.
ð2 DEBUG-SUB-1 PICTURE IS S9999 SIGN IS
LEADING SEPARATE CHARACTER.
ð2 FILLER PICTURE IS X VALUE SPACE.
ð2 DEBUG-SUB-2 PICTURE IS S9999 SIGN IS
LEADING SEPARATE CHARACTER.
ð2 FILLER PICTURE IS X VALUE SPACE.
ð2 DEBUG-SUB-3 PICTURE IS S9999 SIGN IS
LEADING SEPARATE CHARACTER.
ð2 FILLER PICTURE IS X VALUE SPACE.
ð2 DEBUG-CONTENTS PICTURE IS X(n).
Cada línea de depuración debe escribirse de tal forma que el resultado sea un
programa sintácticamente correcto, ya sea mediante la compilación de las líneas
de depuración o mediante una corrección sintáctica, aunque se traten como docu-
mentación.
Los siete módulos necesarios son: Núcleo, E-S Secuencial, E-S Relativa, E-S
Indexada, Comunicación Entre Programas, Clasificación Fusión y Manipulación de
Texto Fuente. Los cuatro módulos opcionales son: Transcriptor de Informes,
Comunicaciones, Depuración y Segmentación.
Los elementos del lenguaje dentro de los módulos pueden clasificarse como ele-
mentos del nivel 1 y elementos de nivel 2. Los elementos de nueve de los
módulos se dividen en elementos del nivel 1 y elementos del nivel 2. Dos de los
módulos (SORT-MERGE y REPORT WRITER) sólo contienen elementos del nivel
1. Por ejemplo, los elementos del nivel 1 del Núcleo realizan operaciones internas
básicas. Los elementos del nivel 2 del Núcleo proporcionan elementos para pro-
cesos internos más amplios y sofisticados.
│
│
6
┌───┐
2 SEG ð,2
└─┘ └───┘
& &
│ │
│ │
Mensajes COBOL/400
Este apéndice proporciona una descripción general de los mensajes que IBM sumi-
nistra con el programa bajo licencia COBOL/400.
Mensajes Interactivos
En un entorno interactivo, los mensajes se visualizan en la pantalla de la estación
de trabajo. Pueden aparecer en la pantalla actual como resultado de la ejecución
del programa o como respuesta a las entradas introducidas desde la línea de man-
datos, menús, pantalla de entrada de mandatos o Herramientas para el Desarrollo
de Aplicaciones (Appl Dev Tools). Los mensajes también pueden aparecer si se
solicitan mediante un mandato de visualización o de una opción del menú.
Los mensajes para el programa bajo licencia COBOL/400 empiezan con un prefijo
LSC, LBE, o LBL.
à Columna . . . : 1 71 Editar
ð
XMPLIB/QLBLSRC
SEU==> TESTPR
FMT CB ......-A+++B+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\\\\\\\\\\\\\\\ Inicio de datos \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
ðððð.1ð IDENTIFICATION DIVISION.
ðððð.2ð PROGRAM-ID. #TESTPR.
ðððð.7ð ENVIRONMENT DIVISION.
ðððð.9ð SOURCE-COMPUTER. IBM-AS4ðð.
\\\\\\\\\\\\\\\\\\ Fin de datos \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
F3=Salir F12=Cancelar
á ñ
Figura 110. Mensaje de Error en Tiempo de Ejecución
Los mensajes LBE 7900 a 7999 se utilizan como encabezamientos para la infor-
mación impresa durante un vuelco con formato COBOL/400.
Mensajes de Compilación
Los mensajes LBL se imprimen en el listado del programa cuando se detectan
errores durante la compilación del programa. Los mensajes LBL incluyen el
mensaje emitido cuando se solicita la señalización de Federal Information
Processing Standard (FIPS); para obtener más información acerca de los mensajes
FIPS, vea la página 347 de este apéndice.
Listados de Programas
En la salida del compilador, el listado de mensajes COBOL/400 sigue al listado
fuente. El listado de mensajes COBOL/400 muestra el identificador del mensaje, la
gravedad, el texto, normalmente la ubicación del error y el resumen de los men-
sajes.
Respuestas a Mensajes
En un entorno interactivo, se indica un mensaje mediante una o varias de las con-
diciones siguientes:
Un mensaje escueto (llamado texto de primer nivel) en la línea de mensajes
Una imagen invertida resaltando el campo de entrada con error
Un teclado bloqueado
El sonido de una alarma (si se instaló la opción de alarma).
Si el mensaje indica que debe elegir una respuesta (como por ejemplo C para can-
celar, D para volcar los identificadores COBOL, F para volcar todas las variables, o
G para reanudar el proceso en la siguiente instrucción COBOL), las opciones de
respuesta se muestran entre paréntesis en el texto de mensaje de primer nivel.
Para ver un ejemplo, consulte la Figura 110 en la página 344.
Niveles de Gravedad
El programa bajo licencia COBOL/400 proporciona los siguientes niveles de gra-
vedad de mensajes:
Gravedad Significado
00 Informativo: Este nivel se utiliza para comunicar información al
usuario. No se ha producido ningún error. Los mensajes infor-
mativos sólo se listan cuando se especifica la opción FLAG (00).
10 Aviso: Este nivel indica que se ha detectado un error pero no es lo
suficientemente grave como para interrumpir la ejecución del pro-
grama.
20 Error: Este nivel indica que se ha producido un error, pero el compi-
lador está efectuando una operación que podría producir el código
deseado.
30 Error Grave: Este nivel indica que se ha detectado un error grave.
La compilación ha finalizado, pero el programa no se puede ejecutar.
40 Irrecuperable: Este nivel indica generalmente un error del usuario
que provoca la finalización del proceso.
50 Irrecuperable: Este nivel indica generalmente un error del compi-
lador que provoca la finalización del proceso.
El servicio de mensajes OS/400 se utiliza para producir todos los mensajes. Los
mensajes del compilador COBOL/400 residen en el archivo de mensajes
QLBLMSG, mientras que los mensajes en tiempo de ejecución lo hacen en el
archivo QLBLMSGE.
1 Si es preciso modificar y sustituir un mensaje suministrado por IBM en su archivo de mensajes, póngase en contacto con su
representante de servicio.
Las especificaciones 1986 FIPS COBOL son las especificaciones de lenguaje con-
tenidas en ANSI X3.23-1985 COBOL. FIPS COBOL se subdivide en tres
subconjuntos y en cuatro módulos opcionales. Los tres subconjuntos se identifican
como Inferior, Intermedio y Superior. Los cuatro módulos opcionales son el
Transcriptor de Informes, Comunicaciones, Depuración y Segmentación. Estos
cuatro módulos opcionales no son parte integral de ninguno de los subconjuntos:
sin embargo, ninguna, todas, o cualquier combinación de los módulos opcionales
pueden asociarse a cualquier subconjunto. Cualquier programa grabado que se
ajuste al estándar FIPS debe ajustarse a uno de los subcampos de 1986 FIPS
COBOL. La Tabla 10 muestra los módulos de proceso estándar 1985 ANSI
Standard COBOL que se incluyen en cada uno de los subcampos de 1986 FIPS
COBOL.
│
│
6
┌───┐
2 SEG ð,2
└─┘ └───┘
& &
│ │
│ │
Tabla 10 (Página 1 de 2). Estándar 1985 American National COBOL y Niveles FIPS 1986
Nombre de
Módulo FIPS FIPS FIPS
1985 ANSI Superior Intermedio Inferior
Núcleo 2 NUC 1,2 1 NUC 1,2 1 NUC 1,2
E-S Secuencial 2 SEQ 1,2 1 SEQ 1,2 1 SEQ 1,2
E-S Relativa 2 REL 0,2 1 REL 0,2 0 REL 0,2
E-S Indexada 2 INX 0,2 1 INX 0,2 0 INX 0,2
Manipulación del
Texto Fuente 2 STM 0,2 1 STM 0,2 0 STM 0,2
Señalización SAA
Puede escoger la realización de la señalización SAA para determinar si las fun-
ciones COBOL/400 que utiliza son portables o no a otros entornos SAA COBOL.
Para obtener información acerca de los límites del compilador, consulte el apéndice
Límites del Compilador en la publicación COBOL/400 Reference.
Ampliación de IBM
En concreto, este apéndice describe dónde se pueden utilizar los caracteres del
Juego de Doble Byte (DBCS) en cada parte de un programa COBOL y las conside-
raciones que hay que saber para trabajar con datos DBCS en el lenguaje
COBOL/400.
De este modo, el usuario ya puede utilizar las descripciones DDS que definen los
campos de datos DBCS gráficos con los programas COBOL/400. Los caracteres
DBCS gráficos pertenecen a una serie de caracteres en la que cada carácter está
representado por dos bytes. Esta serie de caracteres no contiene ni caracteres de
desplazamiento a teclado ideográfico ni caracteres de desplazamiento a teclado
estándar. No es posible utilizar programas que contengan datos gráficos. Para
obtener más información sobre cómo especificar ítems de datos gráficos mediante
los programas COBOL/400, consulte el apartado “Campos Gráficos DBCS” en la
página 139.
Tipos de Literales
Hay dos tipos de literales en los que se pueden utilizar los caracteres DBCS: el
literal DBCS y el literal mixto. Un literal mixto está compuesto por los caracteres
del Juego de Caracteres de Doble Byte (DBCS) y el Juego de Caracteres de un
Sólo Byte (SBCS).
Literales DBCS: El compilador COBOL reconoce los caracteres DBCS en los lite-
rales DBCS cuando se utiliza la opción GRAPHIC en la instrucción PROCESS.
Nota: La opción GRAPHIC en la instrucción PROCESS no debe confundirse con
el valor *GRAPHIC del parámetro CVTOPT del mandato CRTCBLPGM ni
con la opción CVTGRAPHIC en la instrucción PROCESS, que se utilizan
Los caracteres de control de desplazamiento son parte del literal y toman parte en
todas las operaciones.
Otras Consideraciones
Apéndice F. Soporte del Juego de Caracteres de Idiomas Internacionales de Doble Byte 357
Para cada literal DBCS o SBCS que no es válido, el compilador genera un
mensaje de error y acepta o ignora el literal.
Por ejemplo:
-A 1 B
..
.
ð1 DBCS1 PIC X(12) VALUE "ðEK1K2K3ðF
- "ðEK4K5ðF".
..
.
El valor de DBCS1 es "0EK1K2K3K4K50F".
División de Identificaciones
Se pueden colocar entradas de comentarios que contengan caracteres DBCS en
cualquier parte de la División de Identificaciones excepto en el párrafo
PROGRAM-ID. El nombre del programa especificado en el párrafo PROGRAM-ID
debe ser alfanumérico.
División de Entornos
Sección de Configuración
Es posible utilizar los caracteres DBCS en las entradas de comentarios sólo en el
párrafo de la Sección de Configuración. Todos los nombres de función, nombres
mnemotécnicos, nombres de condición y nombres del alfabeto deben especificarse
con los caracteres alfanuméricos. Para las entradas SOURCE-COMPUTER y
OBJECT-COMPUTER, utilice el nombre del sistema alfanumérico:
IBM-AS400
Sección Entrada-Salida
Especifique todos los nombres de datos, nombres de archivos y nombres de asig-
nación que utilicen caracteres alfanuméricos. Puede utilizar los caracteres DBCS
en los comentarios.
Apéndice F. Soporte del Juego de Caracteres de Idiomas Internacionales de Doble Byte 359
Párrafo de Control de Archivos
Cláusula ASSIGN: No puede utilizar los literales que contengan caracteres DBCS
en la cláusula ASSIGN para especificar un medio externo como una impresora o
una base de datos.
División de Datos
Sección de Archivos
Para la entrada FD (Descripción de Archivo), se puede utilizar ítems de datos
DBCS o DBCS/SBCS o literales en la cláusula VALUE OF. La cláusula DATA
RECORDS puede referirse sólo a ítems de datos. Debido a que el compilador
COBOL/400 trata la cláusula VALUE OF y la cláusula DATA RECORDS en la
Sección de Archivos como documentación, ninguna cláusula tiene efecto alguno
cuando ejecuta el programa. No obstante, el compilador COBOL comprueba todos
los literales de la cláusula VALUE OF para asegurarse de que son válidos.
Para cintas magnéticas, el sistema sólo puede leer caracteres DBCS o bien grabar
a caracteres DBCS a la cinta en el formato EBCDIC. El sistema no puede realizar
funciones de cinta que involucren una cinta con formato ASCII. Defina el nombre
del alfabeto en la cláusula CODE-SET como NATIVE. Utilice los caracteres
alfanuméricos para especificar el nombre del alfabeto.
Asegúrese también de que los ítems de datos redefinidos contengan los caracteres
de control de desplazamiento cuando y donde sea necesario.
Cláusula OCCURS: Utilice esta cláusula para definir las tabla para el almace-
namiento de datos DBCS o DBCS/SBCS. Si especifica la frase
ASCENDING/DESCENDING KEY, el COBOL asume que los contenidos de la tabla
están en la secuencia de clasificación EBCDIC del programa. Los caracteres de
control de desplazamiento en los datos DBCS y DBCS/SBCS forman parte del
orden de clasificación.
Para obtener más información sobre el manejo de tablas que contienen caracteres
DBCS, consulte el apartado “Manejo de Tablas–Instrucción SEARCH” en la
página 367.
Puede utilizar todos los símbolos PICTURE alfanuméricos editados para los ítems
de datos DBCS y DBCS/SBCS. Los símbolos de edición causan el mismo efecto
en los datos DBCS de estos ítems que en los ítems de datos alfanuméricos. Com-
pruebe que haya obtenido los resultados deseados.
División de Procedimientos
Declarativas
Un identificador en la sentencia USE FOR DEBUGGING de la sección
DECLARATIVES puede referirse a un ítem de datos DBCS o DBCS/SBCS.
No puede utilizar los caracteres DBCS para los nombres de archivos o de proce-
dimientos en la sentencia USE FOR DEBUGGING.
Apéndice F. Soporte del Juego de Caracteres de Idiomas Internacionales de Doble Byte 361
Expresiones Condicionales
Debido a que los nombres de condición (entradas de nivel 88) pueden referirse a
los ítems de datos que contienen caracteres DBCS, puede utilizar la condición de
nombre de condición para comprobar estos datos. (Consulte el apartado “Cláusula
VALUE” en la página 361). Siga las normas que se listan en el manual
COBOL/400 Reference para conocer mejor el uso de las variables condicionales y
de los nombres de condición.
Puede utilizar los ítems de datos DBCS o DBCS/SBCS o los literales como
operandos en una condición de relación. Debido a que COBOL trata los datos
DBCS como alfanuméricos, todas las comparaciones se producen de acuerdo con
las normas de los operandos alfanuméricos. Tenga siempre presente que:
El sistema no reconoce el contenido mixto.
El sistema utiliza los códigos de desplazamiento en las comparaciones de
datos DBCS y DBCS/SBCS.
El sistema compara los datos utilizando la secuencia de clasificación EBCDIC,
o una secuencia definida por el usuario.
En una comparación de ítem DBCS o DBCS/SBCS con ítems similares de
tamaño desigual, se llena el ítem más pequeño de la derecha con espacios
EBCDIC.
Instrucciones de Entrada/Salida
Instrucción ACCEPT: Los datos de entrada recibidos desde un dispositivo utili-
zando la instrucción ACCEPT de Formato 1 pueden incluir datos DBCS o
DBCS/SBCS. Todos los datos DBCS y DBCS/SBCS deben identificarse mediante
la sintaxis adecuada. Los datos de entrada, incluyendo los caracteres de control
de desplazamiento, sustituyen los contenidos existentes del identificador. COBOL
no realiza la edición ni la comprobación de error en los datos.
La información que se recibe desde el área de datos local por medio de una ins-
trucción ACCEPT de Formato 4 puede incluir series de caracteres DBCS o
DBCS/SBCS. La información recibida sustituye los contenidos existentes. COBOL
no realiza ninguna edición o comprobación de errores. Esto también se aplica a la
información recibida desde el área de datos PIP por medio de una instrucción
ACCEPT de Formato 5.
Debido a que COBOL ignora las características del dispositivo en que se visualizan
los datos, debe asegurarse de que los datos DBCS y DBCS/SBCS sean correctos.
| Es posible que sea preciso especificar la opción de visualización ampliada
| *NOUNDSPCHAR (o la opción del parámetro de instrucción del proceso equi-
| valente) cuando se compile el programa, para asegurarse de que la estación de
| trabajo puede manejar correctamente los datos DBCS.
Nota: ALL es una opción válida para literales mixtos.
Instrucción READ: Puede utilizar los ítems de datos DBCS o DBCS/SBCS como
la RECORD KEY para un archivo indexado. Consulte el apartado “Sección
Entrada-Salida” en la página 359 para obtener más información.
Puede especificar los operadores válidos (como por ejemplo EQUAL, GREATER
THAN, NOT LESS THAN) en la frase KEY. El sistema puede seguir la secuencia
de clasificación EBCDIC o la secuencia definida por el usuario.
Apéndice F. Soporte del Juego de Caracteres de Idiomas Internacionales de Doble Byte 363
Instrucción WRITE: Utilice la frase FROM de esta instrucción para grabar los
datos DBCS o DBCS/SBCS en un registro. Esta frase mueve los datos de la
misma manera que la instrucción REWRITE. (Consulte el apartado “Instrucción
REWRITE”).
Debe incluir los caracteres de control de desplazamiento cuando grabe los datos
en un archivo de dispositivo.
No puede sustituir una serie de caracteres por otra de una longitud distinta.
Téngalo presente cuando sustituya caracteres alfanuméricos por caracteres DBCS,
o viceversa.
El ejemplo siguiente muestra cómo puede utilizar la instrucción INSPECT para sus-
tituir un carácter DBCS por otro.
ð1 SUBJECT-ITEM PICTURE X(5ð).
ð1 DBCS-CHARACTERS VALUE "ðEK1K2ðF".
ð5 SHIFT-OUT PICTURE X.
ð5 DBCS-CHARACTER-1 PICTURE XX.
ð5 DBCS-CHARACTER-2 PICTURE XX.
ð5 SHIFT-IN PICTURE X.
Si la longitud del campo receptor es distinta a la del campo emisor, COBOL realiza
una de las acciones siguientes:
Trunca los caracteres del ítem emisor si es más largo que el ítem receptor.
Esta operación puede reducir la integridad de los datos.
Llena el ítem emisor con espacios en blanco si es más corto que el ítem
receptor.
Los ítems de datos pueden contener caracteres alfanuméricos y DBCS dentro del
mismo campo.
Apéndice F. Soporte del Juego de Caracteres de Idiomas Internacionales de Doble Byte 365
contengan caracteres de control de desplazamiento, y utilícelos como identifi-
cadores en la frase DELIMITED BY. Observe con detenimiento los ejemplos
siguientes para comprender mejor cómo se lleva a cabo lo expuesto anteriormente.
Utilice la variable POINTER para continuar examinando los subcampos del campo
emisor.
El ejemplo siguiente muestra cómo puede establecer los campos para preparar la
operación no de serie en la serie de caracteres que contienen datos DBCS/SBCS:
ð1 SUBJECT-FIELD PICTURE X(4ð)
ð1 FILLER.
ð5 UNSTRING-TABLE OCCURS 4 TIMES.
1ð RECEIVER PICTURE X(4ð).
1ð DELIMTR PICTURE X.
1ð COUNTS PICTURE 99 COMP.
ð1 SHIFTS VALUE "ðEðF".
ð5 SHIFT-OUT PICTURE X.
ð5 SHIFT-IN PICTURE X.
SUBJECT-FIELD = ðEK1K2K3ðFABCðEK4ðF
RECEIVER (1) = (blanks) DELIMTR (1) = ðE COUNTS (1) = ð
RECEIVER (2) = K1K2K3 DELIMTR (2) = ðF COUNTS (2) = 6
RECEIVER (3) = ABC DELIMTR (3) = ðE COUNTS (3) = 3
RECEIVER (4) = K4 DELIMTR (4) = ðF COUNTS (4) = 2
SORT/MERGE
No se puede realizar una clasificación alfabética DBCS utilizando COBOL. Sin
embargo, puede utilizar ítems de datos DBCS o DBCS/SBCS como claves en una
instrucción SORT o MERGE. La operación de clasificación ordena los datos de
acuerdo con la secuencia de clasificación especificada en el párrafo SORT,
MERGE o SPECIAL NAMES. El sistema ordena cualquier carácter de control de
desplazamiento que se encuentre dentro de las claves DBCS y DBCS/SBCS.
Apéndice F. Soporte del Juego de Caracteres de Idiomas Internacionales de Doble Byte 367
Instrucciones Dirigidas al Compilador
Instrucciones COPY
Puede utilizar la instrucción COPY para copiar el texto fuente que contiene carac-
teres DBCS en un programa COBOL. Cuando lo haga, asegúrese de que especi-
fica el nombre de miembro, nombre de archivo y el nombre de la biblioteca
utilizando datos alfanuméricos y de que los especifica de acuerdo con las normas
establecidas en la COBOL/400 Reference
Puede colocar los caracteres DBCS en los comentarios del texto que se copian de
las DDS si el campo de las DDS asociado tiene comentarios.
Instrucción TITLE
Puede utilizar literales DBCS/SBCS como el literal de la instrucción TITLE.
Los caracteres DBCS que aparecen en un listado de programa tienen como origen
un archivo fuente, un texto fuente generado por una instrucción COPY o un
mensaje del compilador COBOL.
Apéndice F. Soporte del Juego de Caracteres de Idiomas Internacionales de Doble Byte 369
370 COBOL/400 Guía del usuario
Apéndice G. Ejemplos de Procesos de Archivos AS/400
Este apéndice contiene programas ejemplo que ilustran las técnicas básicas de
programación asociadas con cada tipo de organización de archivos AS/400. Estos
ejemplos se han concebido para que sirvan únicamente como pautas de planifi-
cación, así como para ilustrar las sentencias de entrada/salida que se necesitan
para determinados métodos de acceso. Se utilizan de forma casual otras carac-
terísticas COBOL (como por ejemplo la instrucción PERFORM). Los programas
que se indican son:
Creación de archivos secuenciales
Actualización y ampliación de archivos secuenciales
Creación de archivos indexados
Actualización de archivos indexados
Creación de archivos relativos
Actualización de archivos relativos
Recuperación de archivos relativos.
Figura 112 (Parte 1 de 2). Ejemplo de un Archivo Secuencial de Registros del Salario de un Empleado
\ \ \ \ \ F I N D E M E N S A J E S \ \ \ \ \
Resumen de mensajes
Total Info(ð-4) Aviso(5-19) Error(2ð-29) Grave(3ð-39) Terminal(4ð-99)
3 3 ð ð ð ð
Registros fuente leídos. . . . . . . : 97
Registros copia leídos . . . . . . . : ð
Miembros copia procesados . . . . . : ð
Errores secuencia . . . . . . . . . : ð
Mensaje gravedad más alta enviado . : ð
LBLð9ð1 ðð Programa CRTSEQ creado en biblioteca XMPLIB.
\ \ \ \ \ F I N D E C O M P I L A C I Ó N \ \ \ \ \
Figura 112 (Parte 2 de 2). Ejemplo de un Archivo Secuencial de Registros del Salario de un Empleado
\ \ \ \ \ F I N D E M E N S A J E S \ \ \ \ \
Resumen de mensajes
Total Info(ð-4) Aviso(5-19) Error(2ð-29) Grave(3ð-39) Terminal(4ð-99)
1 1 ð ð ð ð
Registros fuente leídos. . . . . . . : 1ð7
Registros copia leídos . . . . . . . : ð
Miembros copia procesados . . . . . : ð
Errores secuencia . . . . . . . . . : ð
Mensaje gravedad más alta enviado . : ð
LBLð9ð1 ðð Programa UPDTSEQ creado en biblioteca XMPLIB.
\ \ \ \ \ F I N D E C O M P I L A C I Ó N \ \ \ \ \
\ \ \ \ \ F I N D E M E N S A J E S \ \ \ \ \
Resumen de mensajes
Total Info(ð-4) Aviso(5-19) Error(2ð-29) Grave(3ð-39) Terminal(4ð-99)
2 2 ð ð ð ð
Registros fuente leídos. . . . . . . : 84
Registros copia leídos . . . . . . . : ð
Miembros copia procesados . . . . . : ð
Errores secuencia . . . . . . . . . : ð
Mensaje gravedad más alta enviado . : ð
LBLð9ð1 ðð Programa CRTIND creado en biblioteca XMPLIB.
\ \ \ \ \ F I N D E C O M P I L A C I Ó N \ \ \ \ \
El acceso al azar se utiliza para actualizar e imprimir los registros de las transac-
ciones. El acceso secuencial se utiliza para la recuperación e impresión de todos
los registros dentro de una clase genérica.
\ \ \ \ \ F I N D E M E N S A J E S \ \ \ \ \
Resumen de mensajes
Total Info(ð-4) Aviso(5-19) Error(2ð-29) Grave(3ð-39) Terminal(4ð-99)
1 1 ð ð ð ð
Registros fuente leídos. . . . . . . : 226
Registros copia leídos . . . . . . . : ð
Miembros copia procesados . . . . . : ð
Errores secuencia . . . . . . . . . : ð
Mensaje gravedad más alta enviado . : ð
LBLð9ð1 ðð Programa UPDTIND creado en biblioteca XMPLIB.
\ \ \ \ \ F I N D E C O M P I L A C I Ó N \ \ \ \ \
Cada registro de entrada contiene un resumen de las ventas de una semana. Los
registros de la primera semana de los cinco últimos años (en orden ascendente)
son los primeros cinco registros de entrada. Los siguientes cinco registros de
entrada corresponden a los registros de la segunda semana de los últimos cinco
años. Así pues, cinco registros de entrada llenan un registro de salida.
\ \ \ \ \ F I N D E M E N S A J E S \ \ \ \ \
Resumen de mensajes
Total Info(ð-4) Aviso(5-19) Error(2ð-29) Grave(3ð-39) Terminal(4ð-99)
3 2 1 ð ð ð
Registros fuente leídos. . . . . . . : 1ð2
Registros copia leídos . . . . . . . : ð
Miembros copia procesados . . . . . : ð
Errores secuencia . . . . . . . . . : ð
Mensaje gravedad más alta enviado . : 1ð
LBLð9ð1 ðð Programa CRTREL creado en biblioteca XMPLIB.
\ \ \ \ \ F I N D E C O M P I L A C I Ó N \ \ \ \ \
\ \ \ \ \ F I N D E M E N S A J E S \ \ \ \ \
Resumen de mensajes
Total Info(ð-4) Aviso(5-19) Error(2ð-29) Grave(3ð-39) Terminal(4ð-99)
1 1 ð ð ð ð
Registros fuente leídos. . . . . . . : 88
Registros copia leídos . . . . . . . : ð
Miembros copia procesados . . . . . : ð
Errores secuencia . . . . . . . . . : ð
Mensaje gravedad más alta enviado . : ð
LBLð9ð1 ðð Programa UPDTREL creado en biblioteca XMPLIB.
\ \ \ \ \ F I N D E C O M P I L A C I Ó N \ \ \ \ \
\ \ \ \ \ F I N D E M E N S A J E S \ \ \ \ \
Resumen de mensajes
Total Info(ð-4) Aviso(5-19) Error(2ð-29) Grave(3ð-39) Terminal(4ð-99)
1 1 ð ð ð ð
Registros fuente leídos. . . . . . . : 124
Registros copia leídos . . . . . . . : ð
Miembros copia procesados . . . . . : ð
Errores secuencia . . . . . . . . . : ð
Mensaje gravedad más alta enviado . : ð
LBLð9ð1 ðð Programa RTRVREL creado en biblioteca XMPLIB.
\ \ \ \ \ F I N D E C O M P I L A C I Ó N \ \ \ \
Ante todo se ejecuta la instrucción SORT para las ventas actuales. El proce-
dimiento de entrada para esta operación de clasificación es SCREEN-DEPT. Los
registros se clasifican en orden ascendente por departamento, y dentro de cada
departamento, en orden descendente por ventas netas. Después se imprime la
salida para esta clasificación.
3 La Tabla Global de Módulos (MGT) define un área común para el módulo. La tabla se utiliza para pasar información a las
subrutinas en tiempo de ejecución.
4 La Tabla Global del Programa (PGT) es un área de comunicaciones para la unidad de ejecución COBOL entera. Sólo hay una
PGT para la unidad de ejecución.
Índice 413
campo fuente (continuación) caracteres sustituidos en el nombre de
longitud de registro 10 campo 119
por omisión 10 características principales 2, 371
programa, supresión del listado de 42 CCSIDs (Identificadores de Juego de
campo NAMES 49 Caracteres) 143
campo REFERENCES 49 CDRA (Arquitectura de Representación de Datos
campo SECTION 46 de Tipo Carácter) 143
campo SOURCE NAME 46 cierre de archivos con la instrucción
campos CANCEL 352
atributo BLANK WHEN ZERO 272 cláusula ASSIGN 93, 150, 181
atributos nombre de dispositivo 94
BLANK WHEN ZERO 272 cláusula CONTROL-AREA 183—184
SIGN IS TRAILING 272 cláusula FILE STATUS 109
USAGE IS DISPLAY 272 cláusula JUSTIFIED 360
valor por omisión 272 cláusula LIKE
coma flotante 133 descripción 270
fecha 138 formato de 271
hora 138 parte PICTURE 271
indicación de la hora 138 cláusula LINAGE 243
longitud fija 138 cláusula OCCURS 360
longitud variable 137 cláusula ORGANIZATION 181
carácter 137, 138 cláusula ORGANIZATION IS INDEXED 252
gráfico 138, 140 cláusula PICTURE 279, 361
longitud máxima 137 definición con cláusula LIKE 270
longitud, ejemplo de 138 y rendimiento 280
restricciones 137 cláusula RECORD KEY 135
Posibilidad de nulos 139 EXTERNALLY-DESCRIBED-KEY 135
separador de la hora 39 Cláusula REDEFINES 360
campos con posibilidad de nulos 139 elemento de datos del puntero como sujeto u
campos de clave objeto 297
claves descendentes 265 para frases ALL-FORMATS o E/S 125
claves parciales 253 cláusula RELATIVE KEY 182
contiguos, varios 252 cláusula RENAMES 361
definido por programa 257 cláusula SEGMENT-LIMIT 325
nombre -DDS añadido a 129, 131 cláusula USAGE
para archivos indexados 252 con archivos transaction 152
campos de clave definidos por el programa 257 definición con la cláusula LIKE 270
campos de coma flotante 133 numérico 122
campos de desplazamiento (DISP) 46 USAGE IS POINTER 295
campos de longitud variable 137 cláusula VALUE 361
definición 137 cláusulas
ejemplo de 137, 140, 141 ACCESS MODE 182
longitud máxima de 137 ASSIGN 150, 181
longitud, ejemplo de longitud 138 cláusula CURRENCY 12
restricciones 137 cláusula DECIMAL-POINT 12
campos gráficos de longitud fija 140 cláusula REPLACING identificador-1 BY
carácter de sustitución (X’3F’) en los datos 143 identificador-2 13
caracteres de doble byte 355 CONTROL-AREA 183
caracteres no válidos 119 FILE STATUS 109, 182
opciones DDR y DDSR 119 INDICATOR 152
Índice 415
consideraciones acerca de la comunicación entre datos, traspaso de
programas 285 BY CONTENT y BY REFERENCE 292
consideraciones acerca de la programación 267 en grupos 293
consideraciones sobre archivos DDS
descendentes 265 Véase especificaciones de descripción de datos
consideraciones sobre archivos lógicos 257 declarativa USE FOR DEBUGGING 332, 333
consideraciones sobre el archivo 93, 251, 321 en la División de Procedimientos 332
consideraciones sobre el rendimiento 280 utilización de procedimientos 333
operaciones de E/S 107 definiciones PICTURE 122
consideraciones sobre la eficacia 280 delimitación de instrucciones SQL 13
consideraciones sobre la portabilidad dependencia de dispositivo 93
Véase segmentación ejemplo 94
consideraciones sobre las alteraciones temporales depuración de lenguaje fuente 329
del sistema 97 desatendida, ejecutar el programa en
constante figurativa NULL 299 modalidad 347
constante figurativa NULL 299 desbloquear registros de entrada 107
constante figurativa QUOTE 20 descendente, definición de la secuencia de
contaje de verbos de un programa fuente 20, 45, clave 265
51 descripción-texto 19
contenido del registro especial descripción externa
DEBUG-ITEM 335 alteración temporal a 136
contiguos, definición de ítems 253 añadir funciones a 136
contiguos, varios campos de clave 252 descripción y campos señalizados de números de
control referencia 48
devolver 286 descripciones de archivo 114, 184
transferencia 285 deshacer edición 277
control de compromiso 86, 99, 103 definición 277
ejemplo 102 ejemplos 278
nivel de bloqueo 100 desplazamiento a teclado estándar, definición de
control de segmentación 325 carácter de 356
control del programa desplazamiento a teclado ideográfico, definición
devolución 286 de carácter de 356
transferencia 285 desplazamiento relativo al límite de 16 bytes 303
control, devolver desde un programa destino de la salida del compilador 37
llamado 286 devolver control desde un programa llamado 286
control, transferencia a otro programa 285 diagramas, sintaxis de 30
copias disponibles de ANSI estándar xiii dinámico, definición del proceso 182
correspondientes, opciones PROCESS y direccionar archivos
CRTCBLPGM 33 Véase archivos relativos
creación de archivos direcciones
archivos indexados 371, 376 incremento mediante punteros 319
archivos relativos 371, 382 paso entre programas 317
archivos secuenciales 371 diseño del programa 9
creación dinámica de archivos 23 dispositivo de pantalla
DDS para 146
formato de registro 146, 148
D distintivos de E-S 393
datos no referenciados, ítems de 22
División de Datos
datos, deshacer edición con manejo de errores
archivos transaction 182, 184
de 279
argumentos para programa llamados 293
Índice 417
ejemplos (continuación) errores (continuación)
punteros (continuación) frase ADVANCING con archivos
y registro especial LENGTH OF 299 FORMATFILE 245
y resultados de MOVE 301 errores de codificación 58
punto de interrupción 60 errores de duplicación 270
rastreo 66 errores de sintaxis
recuperación de errores 86 Véase errores de sintaxis
registro especial LENGTH con punteros 299 errores en tiempo de compilación 58
resultados COPY DDS 116, 125 errores en tiempo de ejecución, comprobación
START genérico 253, 254 para deshacer edición 279
unidades de ejecución errores que conviene evitar 58
con programa compartido 289 espaciado cuádruple 39
unidad única 287 espacio, definición de punteros de 295
varias de ejecución consecutiva 287 espacios del usuario
varias, de ejecución simultánea 290 acceso mediante API 305
uso de verbos mediante listado de la especificaciones de descripción de datos (DDS)
cuenta 45 archivos descritos externamente 252
utilización de punteros en una lista en archivos descritos por programa 110
cadena 316 archivos FORMATFILE 244
varios archivos de dispositivo 174 archivos múltiples de dispositivo 170
vía de acceso de un archivo indexado 258 archivos TRANSACTION 145
vuelco con formato 393 campos clave 252
elecciones mostradas en la sintaxis 3 campos de datos 138
elementos de datos del puntero campos de datos gráficos 139
definición 295 campos de hora 138
elementos fundamentales 301 campos de indicación de la hora 138
elementos de lenguaje campos de longitud variable 137
Véase estructura de programas campos SAA 138
eliminados, inicialización de archivos con campos SST 132
registros 23, 263 claves de atención de mandatos (CA) 146
enlace, configuración de la dirección de ítems claves de función 146
de 300 comprobación de validez de la estación de
Entorno de Desarrollo Cooperativo/400 trabajo 146
entrada de control de archivo 93 DD, descripción de la opción 119
de la División de Entorno 180 DDR, descripción de la opción 119
entrada de proceso de archivo DDS, descripción de la opción 119
TRANSACTION 180 DDSR, descripción de la opción 119
entrada de descripción de datos para datos definición 146
booleanos 151 descripción 112
entrada-salida, proceso de verbos de ejemplos
desde la Versión 1, Release 3 84 especificación de un formato de
entrada, proceso de verbos de entrada registro 115
desde la Versión 1, Release 3 84 especificaciones para un archivo de bases
entrar CRTCBLPGM desde la línea de de datos 116
mandatos 29 formatos, estructuras de datos generadas
entrar CRTCBLPGM desde un programa CL 29 por 214
entrar programas fuente 9, 11 generación de claves 127
error, ejemplo de recuperación de 86 palabra clave CONCAT 128
errores palabra clave RENAME 130
duplicación 270 palabra clave SST 132
para un archivo de dispositivo de
pantalla 148
Índice 419
formato de codificación 6, 11 frases (continuación)
formato de registro ADVANCING PAGE 352
campos 146 AT END 197, 200
composición para el dispositivo de CORRESPONDING 20
pantalla 146 END-OF-PAGE 352
DDS para subarchivos 167, 169 END-REWRITE 202
ejemplo de especificación de formato de END-WRITE 209
registro 110, 113, 116 FOOTING 352
especificación, utilización de palabras clave FORMAT 190, 197, 199, 201
DDS en 112 GIVING 351, 352
indicadores 149 INDICATORS 152, 191
subarchivos 165 INTO 196, 351
formato, notas adicionales sobre el nombre INVALID KEY 200, 202, 209
de 133 NEXT MODIFIED 199
formatos de codificación proporcionados por NO DATA 197
SEU 11 NO REWIND 352
formatos de E/S 125 NOT AT END 197, 200
formatos de entrada/salida 125 NOT INVALID KEY 200, 202, 209
formatos que utilizan el SEU REEL/UNIT 352
Véase programa de utilidad para la entrada del RELATIVE KEY 351
fuente REMAINDER 352
frase ADVANCING PAGE 352 ROLLING 205
frase CORRESPONDING 268 STARTING 204
frase END-OF-PAGE 352 SUBFILE 191
frase END-READ 198, 201 TERMINAL 191, 197, 200, 202, 203, 208
frase END-REWRITE 202 USING 352
frase END-WRITE 209 fuente, ejemplo de listado fuente 42
frase FOOTING 352
frase FORMAT 190, 197, 199, 201
frase GIVING 351, 352
G
generación de claves 127
frase INTO 196, 351
generación de formatos de E/S 125
frase INVALID KEY 200, 202, 209
generación de la supervisión de mensajes 76
función desde la Versión 1, Release 3 84
gestión de datos distribuido (DDM) 409
frase NEXT MODIFIED 199
gestión de memoria
frase NO DATA 197
función desde la Versión 1, Release 3 84
Véase segmentación
Gestor para el Desarrollo de Aplicaciones/400
frase NO REWIND 352
grupo, alineación de punteros dentro de estruc-
frase NOT AT END 197, 200
turas de 297
función desde Versión 1, Release 3 84
guión generado al copiar nombres ALIAS 119
frase NOT INVALID KEY 200, 202, 209
función desde Versión 1, Release 3 84
frase REEL/UNIT 352 H
frase RELATIVE KEY 351 herramientas para instalar programas fuente 9
frase REMAINDER 352 hora, caracteres de separación de la 39
frase ROLLING 205 hora, recuperación de valores de 274
frase STARTING 204
frase TERMINAL 191, 197, 200, 202, 203, 208
frase USING 352 I
frases ICF
ADVANCING 243 Véase archivo de función de comunicaciones
intersistemas
Índice 421
instrucción CALL (continuación) instrucción GO TO 326
identificador BY CONTENT LENGTH OF 292 instrucción GOBACK 321
identificador BY REFERENCE 292 instrucción INSPECT 364
literal BY CONTENT 292 instrucción MERGE 327, 351, 367, 389
nombre de registro BY REFERENCE instrucción MOVE 335, 365
ADDRESS OF 292 frase CORRESPONDING 268
por identificador 294 utilización de punteros 301
recursivo, descripción de 285 instrucción OPEN 189
uso de punteros 303 instrucción PERFORM 326, 352
instrucción CANCEL 294, 321, 352 instrucción PROCESS 356
con programas no COBOL 291 ámbito de las opciones con el mandato
instrucción *CBL 39 CRTCBLPGM 38
instrucción CLOSE 188, 352 consideraciones
instrucción COMMIT 99, 101 alteración temporal de archivos especifi-
instrucción *CONTROL 39 cados por el programa 97
COPY DDS, utilización con indicadores 124 archivos DATABASE 251
instrucción COPY archivos descritos por el programa y exter-
cambios con el COBOL ANSI 74 352 namente 109
campos clave 252 archivos DISK 251
con ALL-FORMATS 120 bloqueo de archivos y registros 97
DD, DDR, DDS o DDSR 118 bloqueo de registros de salida 107
descripción 118 consideraciones sobre el control de compro-
ejemplo de estructuras de datos generadas miso 99
por 214 dependencia de dispositivo 93
ejemplos de generaciones de claves 127 desbloqueo de registros de entrada 107
en Sección de Archivos 120 métodos de proceso para los tipos DISK y
estructuras de campos de datos 122 DATABASE 251
instrucción COPY de formato-1 37 spooling 95
instrucción PROCESS que contiene una ins- visión general 267
trucción COPY 38 COPY, utilización con la instrucción 37, 38
listado de instrucciones fuente 39 descripción 33
resultados DDS 116, 124 especificación de las opciones del
Sección de Archivo exterior 120 compilador 41
supresión de instrucciones fuente 39 formato de 33
utilizar con archivos TRANSACTION 145 normas para 33
utilizar con instrucciones PROCESS 37 opciones 37
y caracteres DBCS 368 opciones del compilador especificadas en 33
y coma flotante 133 opciones disponibles para 33
y datos descritos externamente 119 posición de la instrucción 33
instrucción COPY de formato-1 37 salida del compilador 38
instrucción COPY de formato-2 16 técnicas
instrucción DISPLAY 363 actualización de archivos indexados 378
instrucción DIVIDE 352 actualización de archivos relativos 384
instrucción DROP 189 Actualización y ampliación de archivos
instrucción EJECT 39 secuenciales 373
instrucción EXIT PROGRAM 286, 321 creación de archivos indexados 376
instrucción generada por compilador (STMT), creación de archivos relativos 382
número de 44 creación de archivos secuenciales 371
instrucción genérica START 253 proceso de archivos 371
recuperación de archivos relativos 386
Índice 423
literales DBCS 356—358, 367, 368
L literales no numéricos 20
LDA (área de datos local) 319
literales, delimitación de 20
lectura en clave
local (LDA), definición del área de datos 319
liberación de un registro leído para la actuali-
lógica de segmentación 324
zación 98
longitud de registros en archivo fuente 10
limitaciones
longitud de registros en archivo fuentee 10
parámetro TGTRLS 32
longitud máxima de instrucción 11, 12
limitations 93
longitud máxima de instrucción fuente 11, 12
límite
definición 100
registro 23 LL
violación 77, 263 llamada al compilador COBOL 15
límite de registro 23 llamadas entre programas que utilizan
límites de archivo 263 punteros 303
límites de tamaño interno 15 llamar por identificador 294
límites, interno, tamaño 15
lista de palabras reservadas y ACCEPT/DISPLAY
ampliada 23 M
lista de respuestas al sistema 54 mandato ADDMSGD (Añadir Descripción de
listado de resumen de mandatos 40 Mensaje) 347
listado OPTIONS 41 mandato ALCOBJ (Asignar Objeto) 97
listados mandato ALterar Temporalmente a Archivo de
archivo de salida por omisión 25 Disquete (OVRDKTF) 94
búsqueda de errores de sintaxis 40 mandato Alterar Temporalmente Archivo de Men-
caracteres DBCS en 369 sajes (OVRMSGF) 347
correlación de la División de Datos 45, 63 mandato Asignar Objeto (ALCOBJ) 97
ejemplo, listado fuente de 19, 42, 44 mandato Cambiar Depuración (CHGDBG) 57
ejemplos de 41 mandato Cambiar Variable de Programa
especificación del archivo de salida para 25 (CHGPGMVAR) 65
examinar mandato Crear Lista de Autorizaciones
Véase programa de utilidad de entrada (CRTAUTL) 28
fuente mandato Crear Programa COBOL (CRTCBLPGM)
longitud mínima de registro 25 descripción de 6
mensajes entrar desde la línea de mandatos 29
descripción 50 entrar desde un programa CL 29
desde el compilador COBOL/400 345 parámetro AUT 28
ejemplo 49 parámetro CVTOPT 24, 35
mensajes FIPS 47 parámetro DUMP 28
opciones 41 parámetro EXTDSPOPT 36
opciones del compilador activas 20 parámetro FLAG 27, 36
referencias cruzadas 49 parámetro FLAGSTD 25, 36, 38
resumen de mandatos 40 parámetro GENLVL 19, 33
utilización de verbos por medio de la parámetro GENOPT 21, 35
cuenta 20, 45 parámetro ITDUMP (n) 28
listados de referencias cruzadas parámetro MSGLMT 24
descripción del listado 49 parámetro OPTION 19, 34, 38
ejemplo 49 parámetro PGM 18
opciones CRTCBLPGM 19, 21 parámetro PRTFILE 25
prueba, utilización en 63 parámetro REPLACE 27
y puntos de interrupción 59 parámetro SAAFLAG 26, 36, 38
Índice 425
mensajes módulos (MGT), definición de tabla global
campo en el listado de mensajes de diagnós- de 393
tico 50 módulos de proceso funcional 340
compilación 345 módulos de proceso opcional 341
diagnóstico 49 módulos E-S secuencial 340
estadísticas 50 módulos E/S indexados 341
FIPS 345 MSGID y campo de nivel de gravedad 50
Herramientas para el Desarrollo de Apli-
caciones 343
interactivo 343
N
name, assignment 93, 150, 181, 359
niveles de gravedad 19, 25, 346
necesario
respuesta en un entorno interactivo 345
cláusulas 3
SAA, señalización 48
divisiones 10
tiempo de compilación 343
elementos en la sintaxis 3
tiempo de ejecución 344
nivel de bloqueo
y manejo de errores estándar 71
(*CS), bajo control de compromiso 100
tipos 343
máximo, bajo control de compromiso 100
mensajes de diagnóstico 49
mínimo, bajo control de compromiso 100
metodología para la instalación de programas 9
nivel de campo de ítems de datos (LVL) 46
métodos de proceso para archivos
nivel-gravedad 19, 27
DATABASE 251
nivel de gravedad de los mensajes 19, 25, 346
métodos de proceso para archivos DISK 251
opción nivel-gravedad-máxima 25
miembros 97
nivel de soporte de lenguaje 339, 340, 341, 348
migración
niveles de diagnóstico 346
a COBOL ANSI 85 351
no coincidentes, reducir aparición de
a lenguaje COBOL/400 351
registros 293
programas COBOL ANSI 74 351
NO LOCK, rendimiento de frase 98, 283
modalidad de acceso 182, 251, 260
nombre DD 119
DYNAMIC 257
nombre DDR 119
RANDOM 257
nombre DDS 119
modalidad de acceso dinámica 166, 182, 260,
nombre DDSR 119
264
nombre de alias 119
modalidad de acceso secuencial 23, 182, 197,
nombre de asignación 93, 150, 181, 359
199, 261, 262
opción-nombre-lista-autorización 28
modalidades de respuesta 54
nombre-programa 18
modificación de referencia
nombre-archivo-fuente 18
calcular desplazamiento 303
nombre-miembro-archivo-fuente 19
descripción 274
nombres de campo
e instrucción INSPECT 276
-DDS añadidas a 129, 131
justificación a la izquierda 276
construcción de 122
recuperar valor de hora 274
notas adicionales 133
y opción *RANGE 22
nombres de nivel de grupo 122
módulo clasificar-fusionar 341
nombres de objeto OS/400 16
módulo de comunicaciones 341
nombres definidos al especificar
módulo de E-S relativo 340
GENOPT(*NOUNREF) 16
módulo de manipulación del texto fuente 341
notación, sintaxis de 2
módulo de núcleo 340
notas acerca de la programación
módulo del transcriptor de informes 341
número de entradas en la tabla de definición de
módulo entre programas 341
objetos (ODT) 15, 22
Índice 427
opción *NOVBSUM 20 opciones del compilador
opción *NOXREF 19, 21 Véase también instrucción PROCESS
opción *NUMBER 20 parámetros de mandato CRTCBLPGM
opción *OBSOLETE 26 *ACCUPDALL 26
opción *OPTIMIZE 22 *ACCUPDNE 26
opción *OPTIONS 20, 34, 38 *ALL 28
opción *OWNER 27 *APOST 20
opción *PGM 18 *ATR 22
opción *PGMID 18 *BLANK 19
opción *PRINT 21 *BLK 23
opción *PRTCORR 20 como se especifica en la instrucción
listado de ejemplo 268 PROCESS 33
opción *PRV 27, 32 compilación por lotes 37
opción QSYSPRT (archivo de impresora por comprobar errores de secuencia 19
omisión) 25 comprobar rangos de subíndice en tiempo de
opción *QUOTE 20 ejecución 22
opción *RANGE 22 contaje de utilización de verbos 20
modificación de referencia 274 crear código objeto 19
opción REUSEDLT crear correlación de División de Datos 20
Véase volver a utilizar registros eliminados crear listado de referencias cruzadas 19, 21,
opción *SECLVL 20 49
opción *SEG1 26 crear listado fuente 19, 42
opción *SEG2 26 *CRTF 23
opción *SEQUENCE 19 *CURLIB 18, 25
opción *SOURCE 19, 38 *CURRENT 27, 32
opción *SRCDBG 21 *CHANGE 28
opción *SRCMBRTXT 19 *DATETIME 24
opción *STDERR 23 *DDSFILLER 22
opción *STDINZ 24 *DEB1 26
opción *SYNC 23 *DEB2 26
opción *UNDSPCHR 26 delimitador para literales booleanos y no numé-
opción *UNREF 22 ricos 20
opción *USE 28 descripción-texto 19
opción *USER 27 *DFRWRT 26
opción V2R1M0 32 *DUMP 22
opción V2R1M1 32 *DUPKEYCHK 23
opción V2R2M0 32 especificación
opción *VARCHAR 24 *EXCLUDE 28
opción *VBSUM 20, 38 *EXTACCDSP 23
opción *XREF 19, 21, 38 *FLAG 26, 38
opcionales, ítems de sintaxis 3 *FS21DUPKY 24
opciones *GEN 19
datos, opciones *NORANGE de formato opción *GRAPHIC 24
de 282 *HIGH 25
de parámetros del mandato incluir atributos para el IRP 22
CRTCBLPGM 18—32 *INTERMEDIATE 25
listado 41 *INZDLT 23
para la instrucción PROCESS 37 *LIBCRTAUT 28
segmentación 325 *LIBL 18, 25
opción límite-mensaje
Índice 429
opciones del compilador (continuación) pantallas (continuación)
valor V2R1M0 para la opción nivel-release 32 para programas de ejemplo (continuación)
valor V2R1M1 para la opción nivel-release 32 consulta de transacciones 215
valor V2R2M0 para la opción nivel-release 32 subarchivos 165
*VARCHAR 24 visualizar mensajes de programa 344
*VBSUM 20, 38 parámetro AUT para el mandato
visión general 6 CRTCBLPGM 28
*XREF 19, 21, 38 parámetro CVTOPT 24, 35
y comprobación de sintaxis con SEU 12 parámetro DUMP para el mandato
OPEN-FEEDBACK 362 CRTCBLPGM 28
OPEN, aumento de velocidad en operación 99 parámetro EXTDSPOPT del mandato
operación CLOSE 23 CRTCBLPGM 36
operación de E-S 393 parámetro FLAG para el mandato
operación más eficaz 22 CRTCBLPGM 27, 36
operaciones de archivo para el archivo de impre- parámetro FLAGSTD para el mandato
sora 243 CRTCBLPGM 25, 36, 47
operaciones de cálculo parámetro GENLVL para el mandato
en campos de longitud fija 138 CRTCBLPGM 19, 33
operadores aritméticos 3 parámetro GENOPT para el mandato
operadores aritméticos y lógicos 3 CRTCBLPGM 21, 35
operadores lógicos 3 parámetro ITDUMP para el mandato
optimización del almacenamiento CRTCBLPGM 28
Véase segmentación parámetro MSGLMT 24
optimización del código 22 parámetro OPTION para el mandato
orden de las cláusulas 3 CRTCBLPGM 19, 38
organización de archivo 262 parámetro PGM para el mandato
CRTCBLPGM 18
parámetro PRTFILE para el mandato
P CRTCBLPGM 25
palabra clave ALIAS 117
parámetro REPLACE para el mandato
palabra clave CONCAT 128
CRTCBLPGM 27
palabra clave INDARA 124
parámetro SAAFLAG para el mandato
palabra clave RENAME 130
CRTCBLPGM 26, 36
palabra clave SST 132
parámetro SRCFILE para el mandato
palabra reservada -DDS se añade a 129, 133
CRTCBLPGM 18
palabras clave
parámetro SRCMBR para el mandato
DDS 117, 128, 130, 132
CRTCBLPGM 18
en diagramas de sintaxis 2
parámetro TEXT para el mandato
INDARA 124
CRTCBLPGM 19
pantalla, definición de los datos de formato
parámetro TGTRLS para el mandato
de 146
CRTCBLPGM 27, 32
pantallas
parámetro USRPRF para el mandato
Véase también pantallas CRTCBLPGM 27
especificaciones de descripción de datos (DDS)
parámetros del mandato CRTCBLPGM 18
para 146
Véase también mandato Crear Programa
Mensajes de visualización SEU 343
COBOL (CRTCBLPGM)
Pantalla de solicitud CRTCBLPGM 17
parámetros, descripción en el programa
pantalla de solicitud STRCBLDBG 330
llamado 293
pantalla de visualización ENDCBLDBG 331
párrafo SPECIAL-NAMES 12, 243, 351
para programas de ejemplo
actualización de pagos 238, 239, 240
consulta de pedidos 226, 227
Índice 431
punteros (continuación)
alineación en los límites (continuación)
R
rango de subíndices 22
ítems de nivel 01 297
rastreo de un bucle 284
ítems de nivel 77 297
rastreos
asignación de valor nulo 318
como una función OS/400 57
definición 295, 296
consideraciones 68
definición de alineación 296
descripción 66
descripción 295
ejemplo 66
desplazamiento entre ítems de grupo 303
utilización 66
ejemplos
READ WITH NO LOCK 97, 100
acceso al espacio de usuario 305
realimentación de E-S 57, 108, 109
proceso de lista en cadena 316
realimentación de E-S 362
en el almacenamiento de trabajo 297
RECORD KEYS válida 252
en la instrucción CALL 303
recuperación 86
en la instrucción MOVE 301
archivos transaction 87
restricciones 301
con control de compromiso 86
en la sección de archivos 297
ejemplo 88
en la sección de Enlace 293
procedimiento en el programa 87
en los registros 299
con un dispositivo adquirido 87
en tablas 297
con varios dispositivos adquiridos 88
escritura 298
recursiva, definición de llamada 285
inicialización 299
redefinición de formatos 125
lectura 298
redefinición, nombre de nivel de grupo 122
longitud de 295
redirección de archivos 94, 97
manipulación de ítems de datos 296
referencia a otros manuales xi
proceso de una lista en cadena 316
referencia a una clave parcial 253
valor nulo 318
registro 335
y cláusula REDEFINES 297
registro especial ADDRESS OF 292, 300
punteros de inicialización 299
descripción 300
con constante figurativa NULL 299
diferencia con ADDRESS OF calculado 300
puntos de interrupción
registro especial LENGTH OF 292, 299
como en la función OS/400 57
registros
consideraciones para el uso 65
bloqueo
descripción 59
actualizar registros de bases de datos 97
ejemplo 60
por COBOL 97
rastreo, diferencias entren 66
y E/S anómala 99
utilización de 59, 64
y rendimiento 283
visualización de elementos de tabla 62
bloqueo de la salida 107
visualización de variables 62
desbloquear entrada 107
puntuación 3
que contienen punteros 299
reducción de no coincidencias 293
Q salvaguarda de secuencia de 261
QCMDEXC, utilización en un programa 29, 267 registros compartidos 97
QLBLSRC (archivo fuente por omisión) 10, 18 registros de entrada 107
QRLMAIN registros especiales
MGTFUNC 281 ADDRESS OF 292
QUOTE, valor de la constante figurativa 20 LENGTH OF 292
definición implícita 299
en División de Procedimientos 299
Índice 433
sintaxis (continuación) soporte del juego de caracteres de doble byte
comprobación, unidad de 12 (DBCS) (continuación)
del mandato CRTCBLPGM 30 habilitar programas COBOL 356
diagramas, uso de 3 instrucción ACCEPT 362
elementos necesarios 3 instrucción PROCESS 355, 364
elementos opcionales 3 representación de datos DBCS en trabajos por
flechas 3 lotes 367
líneas de depuración 337 y datos alfanuméricos 365
notación 2 soporte para el ANSI X3.23-1985 estándar 340
palabras clave en 2 soporte SAA CPI (Interfaz Común de Progra-
pilas 3 mación) 341
puntuación 3 soporte SAA de la Interfaz Común de Progra-
símbolos 3 mación (CPI) 341
sintaxis del programa, línea de depuración 337 soprte CPI (Interfaz Común de
sistema operativo OS/400 Programación) 341
entrada/salida 149 spacing 39
funciones para la depuración 57 spool de entrada 95, 96
independencia y dependencia de spool de salida 95
dispositivos 93 spooling 95, 96
información de control de dispositivos 149 SQL incluido 13
límites de tamaño interno 15 subcampo 164—166, 191
mandatos de punto de interrupción 60 subcampo, contenido del registro especial
nombres de objeto 16 DEBUG-ITEM 335
prueba, funciones para 57 subíndice 277
seguridad, mantenimiento durante la subíndice, especificar comprobación de rango
prueba 57 de 22
y mensajes 347 subprograma 37, 286
solicitudes mediante SEU enlace 293
Véase programa de utilidad para la entrada del subrayados convertidos en guiones 119
fuente subrayados eliminados del final del nombre de
soporte DBCS archivo 119
Véase soporte del conjunto de caracteres de sufijo -DDS
doble byte añadido a la palabra reservada 129, 133
soporte de la Interfaz Común de Programación añadido al nombre de campo de clave 129,
(CPI) 341 131
soporte del juego de caracteres de doble byte supervisión de excepciones 16
(DBCS) 355—369 supervisión, mensaje de 76
abrir 368 supresión de mensajes 347
búsqueda en una tabla 367 supresión del listado fuente 42
clasificación 367
comentarios con caracteres DBCS 359
comprobación 357
T
Tabla de Definición de Objetos (ODT) 22
comunicaciones entre programas 368
tabla, atributos de los ítems de 47
definición 408
tabla, modificación de referencia 275
en la División de Datos 360
tablas de codificación 275
en la División de Entorno 359
tamaño del programa 22
en la División de Identificación 359
tamaño interno, límite de 15
en la División de Procedimientos 361—367
terminación anómala del programa 54
especificación de literales DBCS 356
gráfico 368
Índice 435
varios campos de clave contiguos 252
varios miembros 97
verbos de E/S, proceso de
desde la Versión 1, Release 3 84
vía de acceso
descripción 134
ejemplo de archivos indexados 258
especificaciones 110
proceso de archivos 262
visión general 6
visualización de un listado del compilador 40
volver a utilizar registros eliminados
archivos indexados 252
archivos relativos 260
archivos secuenciales 261
vuelco con formato 57, 69, 393
X
X’3F’ (carácter de sustitución) en los datos 143
Comentarios y sugerencias:
Nombre Dirección
Compañía u Organización
Teléfono
IBM
Hoja de Comentarios Corte o Doble
Por la Línea
SC10-9424-00
Dóblese por la línea de puntos Por favor no lo grape Dóblese por la línea de puntos
PONER
EL
SELLO
AQUI
Dóblese por la línea de puntos Por favor no lo grape Dóblese por la línea de puntos
Corte o Doble
SC10-9424-00 Por la Línea
IBM
SC1ð-9424-ðð